diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..abe2c7db --- /dev/null +++ b/.travis.yml @@ -0,0 +1,233 @@ +language: cpp + +matrix: + include: + + - os: osx + compiler: gcc + name: macOS - gcc@5 - opencv@2 + env: + - MATRIX_EVAL="brew update && brew install gcc@5 gcc opencv@2 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: gcc + name: macOS - gcc@5 - opencv@3 + env: + - MATRIX_EVAL="brew update && brew install gcc@5 gcc opencv@3 && CC=gcc-5 && CXX=g++-5 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: osx + compiler: gcc + name: macOS - native gcc (llvm backend) - opencv@2 + env: + - MATRIX_EVAL="brew update && brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: gcc + name: macOS - native gcc (llvm backend) - opencv@3 + env: + - MATRIX_EVAL="brew update && brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: osx + compiler: clang + name: macOS - native clang - opencv@2 + env: + - MATRIX_EVAL="brew update && brew install opencv@2 && OpenCV_DIR=/usr/local/opt/opencv@2" + + - os: osx + compiler: clang + name: macOS - native clang - opencv@3 + env: + - MATRIX_EVAL="brew update && brew install opencv@3 && OpenCV_DIR=/usr/local/opt/opencv@3" + + - os: linux + compiler: clang + name: ubuntu - native clang + addons: + apt: + update: true + packages: + - libopencv-dev + env: + - MATRIX_EVAL="" + + - os: linux + compiler: clang + name: ubuntu - clang@3.6 + addons: + apt: + update: true + packages: + - libopencv-dev + - clang-3.6 + env: + - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6" + + - os: linux + compiler: clang + name: ubuntu - clang@3.8 + addons: + apt: + update: true + sources: + - llvm-toolchain-precise-3.8 + packages: + - libopencv-dev + - clang-3.8 + env: + - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" + + - os: linux + compiler: clang + name: ubuntu - clang@3.9 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-3.9 + packages: + - libopencv-dev + - clang-3.9 + env: + - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9" + + - os: linux + compiler: clang + name: ubuntu - clang@4.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-4.0 + packages: + - libopencv-dev + - clang-4.0 + env: + - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0" + + - os: linux + compiler: clang + name: ubuntu - clang@5.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-5.0 + packages: + - libopencv-dev + - clang-5.0 + env: + - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0" + + - os: linux + compiler: clang + name: ubuntu - clang@6.0 + addons: + apt: + update: true + sources: + - llvm-toolchain-trusty-6.0 + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - clang-6.0 + env: + - MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0" + + - os: linux + compiler: gcc + name: ubuntu - native gcc + addons: + apt: + update: true + packages: + - libopencv-dev + - gfortran + env: + - MATRIX_EVAL="" + + - os: linux + compiler: gcc + name: ubuntu - gcc@4.9 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-4.9 + env: + - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9" + + - os: linux + compiler: gcc + name: ubuntu - gcc@5.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-5 + env: + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + + - os: linux + compiler: gcc + name: ubuntu - gcc@6.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - g++-6 + - libopencv-dev + env: + - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" + + - os: linux + compiler: gcc + name: ubuntu - gcc@7.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-7 + env: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + + - os: linux + compiler: gcc + name: ubuntu - gcc@8.0 + addons: + apt: + update: true + sources: + - ubuntu-toolchain-r-test + packages: + - libopencv-dev + - g++-8 + env: + - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + +before_install: + - eval "${MATRIX_EVAL}" + +before_script: + - mkdir build_debug + - cd build_debug + - cmake .. -DCMAKE_BUILD_TYPE="Debug" + - cd .. + - mkdir build_release + - cd build_release + - cmake .. -DCMAKE_BUILD_TYPE="Release" + - cd .. + +script: + - cd build_debug && cmake --build . --target install && cd .. + - cd build_release && cmake --build . --target install && cd .. diff --git a/CMakeLists.txt b/CMakeLists.txt index 401c74bd..932a166e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ # To use your libs, launch cmake with -DUSE_INTEGRATED_LIBS:BOOL=FALSE -cmake_minimum_required(VERSION 3.8 FATAL_ERROR) +cmake_minimum_required(VERSION 3.4) #set(CMAKE_VERBOSE_MAKEFILE 1) @@ -21,12 +21,17 @@ enable_language(CXX) set(ENABLE_CUDA "TRUE" CACHE BOOL "Enable CUDA build") -include(CheckLanguage) -check_language(CUDA) -if(CMAKE_CUDA_COMPILER) - enable_language(CUDA) +if(${CMAKE_VERSION} VERSION_LESS "3.8.0") + set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE) + message(WARNING "To build with CUDA support you need CMake 3.8.0+") else() - set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build") + include(CheckLanguage) + check_language(CUDA) + if(CMAKE_CUDA_COMPILER) + enable_language(CUDA) + else() + set(ENABLE_CUDA "FALSE" CACHE BOOL "Enable CUDA build" FORCE) + endif() endif() set(CMAKE_CXX_STANDARD 11) @@ -112,9 +117,6 @@ endif() if(ENABLE_CUDA) add_definitions(-DGPU) - if(NOT WIN32) - include_directories("${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}") - endif() if(CUDA_COMPUTE_MODEL VERSION_GREATER_EQUAL ${CUDA_COMPUTE_MODEL_75} AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS_EQUAL 9) message(STATUS "CUDA 10 is required for Compute Model 7.5 - Lowering settings to 7.0") set(CUDA_COMPUTE_MODEL ${CUDA_COMPUTE_MODEL_70}) @@ -226,7 +228,7 @@ endif() target_compile_definitions(darklib PRIVATE LIB_EXPORTS=1) set_target_properties(darklib PROPERTIES LINKER_LANGUAGE CXX) -if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3) +if(OpenCV_VERSION VERSION_GREATER "3.0") add_executable(uselib_track ${CMAKE_CURRENT_LIST_DIR}/src/yolo_console_dll.cpp) target_compile_definitions(uselib_track PRIVATE TRACK_OPTFLOW=1) set_target_properties(uselib_track PROPERTIES LINKER_LANGUAGE CXX) @@ -275,7 +277,7 @@ if(ENABLE_CUDA) endif() target_link_libraries(uselib darklib) -if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3) +if(OpenCV_VERSION VERSION_GREATER "3.0") target_link_libraries(uselib_track darklib) install(TARGETS uselib_track DESTINATION ${CMAKE_SOURCE_DIR}/) endif() diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..9f6d32ce --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,48 @@ +image: Visual Studio 2017 +clone_folder: c:\projects\darknet +configuration: Release + +environment: + WORKSPACE: C:\projects + matrix: + - platform: Cygwin64 + COMPILER: cygwin + CYGWIN_NOWINPATH: yes + CYGSH: C:\cygwin64\bin\bash -c + - platform: Win64 + COMPILER: vs + VCPKG_ROOT: C:\projects\vcpkg + VCPKG_DEFAULT_TRIPLET: x64-windows + + +install: + - if [%COMPILER%]==[vs] cinst cmake ninja + - if [%COMPILER%]==[vs] SET "PATH=C:\Program Files\CMake\bin;%PATH%" + - if [%COMPILER%]==[vs] call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 + - if [%COMPILER%]==[cygwin] SET "PATH=C:\cygwin64\bin;C:\cygwin64\usr\bin;%PATH%" + - if [%COMPILER%]==[cygwin] SET PATH=%PATH:C:\Program Files\Git\usr\bin;=% + - git submodule -q update --init --recursive + - cd %WORKSPACE%\ + - mkdir cygwin-downloads + - ps: if($env:COMPILER -eq "cygwin") { Invoke-WebRequest https://cygwin.com/setup-x86_64.exe -OutFile $env:WORKSPACE\cygwin-setup.exe } + - if [%COMPILER%]==[cygwin] %WORKSPACE%\cygwin-setup.exe --quiet-mode --no-shortcuts --no-startmenu --no-desktop --upgrade-also --root C:\cygwin64 --local-package-dir %WORKSPACE%\cygwin-downloads --packages gcc-g++,cmake,libopencv-devel + - if [%COMPILER%]==[vs] git clone https://github.com/Microsoft/vcpkg + - if [%COMPILER%]==[vs] cd %VCPKG_ROOT% + - if [%COMPILER%]==[vs] bootstrap-vcpkg.bat + - if [%COMPILER%]==[vs] vcpkg integrate install + - if [%COMPILER%]==[vs] vcpkg install opencv pthreads + - cd %WORKSPACE%\darknet\ + - mkdir build_debug && cd build_debug + - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug"' + - if [%COMPILER%]==[vs] cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_BUILD_TYPE="Debug" .. + - cd .. + - mkdir build_release && cd build_release + - if [%COMPILER%]==[cygwin] %CYGSH% 'cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release"' + - if [%COMPILER%]==[vs] cmake -G "Visual Studio 15 2017" -T "host=x64" -A "x64" "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" "-DVCPKG_TARGET_TRIPLET=%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_BUILD_TYPE="Release" .. + - cd .. + +build_script: + - if [%COMPILER%]==[cygwin] cd build_debug && %CYGSH% 'cmake --build .' && cd .. + - if [%COMPILER%]==[cygwin] cd build_release && %CYGSH% 'cmake --build .' && cd .. + - if [%COMPILER%]==[vs] cd build_debug && cmake --build . --config Debug && cd .. + - if [%COMPILER%]==[vs] cd build_release && cmake --build . --config Release && cd .. diff --git a/src/yolo_console_dll.cpp b/src/yolo_console_dll.cpp index c4554fba..be84f4d5 100644 --- a/src/yolo_console_dll.cpp +++ b/src/yolo_console_dll.cpp @@ -36,7 +36,7 @@ #endif // TRACK_OPTFLOW #endif // USE_CMAKE_LIBS #else -#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)""CVAUX_STR(CV_VERSION_MAJOR)""CVAUX_STR(CV_VERSION_MINOR) +#define OPENCV_VERSION CVAUX_STR(CV_VERSION_EPOCH)"" CVAUX_STR(CV_VERSION_MAJOR)"" CVAUX_STR(CV_VERSION_MINOR) #ifndef USE_CMAKE_LIBS #pragma comment(lib, "opencv_core" OPENCV_VERSION ".lib") #pragma comment(lib, "opencv_imgproc" OPENCV_VERSION ".lib")