From 1df74189f3d209cec5682af99b32c3f5158914fc Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 3 May 2019 12:14:14 +0200 Subject: [PATCH 1/8] [lz4, flann] port patches from #5169 --- ports/flann/CONTROL | 3 +- .../export-all-symbols-of-flann-cpp.patch | 12 -- ports/flann/flann-linux.patch | 22 -- ports/flann/no-write-src-dir.patch | 19 -- ports/flann/portfile.cmake | 36 +--- ports/flann/use_lz4_targets.patch | 196 ++++++++++++++++++ ports/lz4/CMakeLists.txt | 47 +++-- ports/lz4/CONTROL | 6 +- ports/lz4/portfile.cmake | 77 ++++--- 9 files changed, 289 insertions(+), 129 deletions(-) delete mode 100644 ports/flann/export-all-symbols-of-flann-cpp.patch delete mode 100644 ports/flann/flann-linux.patch delete mode 100644 ports/flann/no-write-src-dir.patch create mode 100644 ports/flann/use_lz4_targets.patch diff --git a/ports/flann/CONTROL b/ports/flann/CONTROL index 5fdc23b2ea6ccd..316ac10be8eb04 100644 --- a/ports/flann/CONTROL +++ b/ports/flann/CONTROL @@ -1,3 +1,4 @@ Source: flann -Version: 1.9.1-9 +Version: jan2019 +Build-Depends: lz4 Description: Fast Library for Approximate Nearest Neighbors diff --git a/ports/flann/export-all-symbols-of-flann-cpp.patch b/ports/flann/export-all-symbols-of-flann-cpp.patch deleted file mode 100644 index 86f172ff3760ad..00000000000000 --- a/ports/flann/export-all-symbols-of-flann-cpp.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt -index 49c53f0..b9cf76b 100644 ---- a/src/cpp/CMakeLists.txt -+++ b/src/cpp/CMakeLists.txt -@@ -52,6 +52,7 @@ set_target_properties(flann_cpp PROPERTIES - VERSION ${FLANN_VERSION} - SOVERSION ${FLANN_SOVERSION} - DEFINE_SYMBOL FLANN_EXPORTS -+ WINDOWS_EXPORT_ALL_SYMBOLS ON - ) - - if (BUILD_CUDA_LIB) diff --git a/ports/flann/flann-linux.patch b/ports/flann/flann-linux.patch deleted file mode 100644 index da95aa7a2c77a0..00000000000000 --- a/ports/flann/flann-linux.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/src/cpp/CMakeLists b/src/cpp/CMakeLists.txt -index e6c8ae06..c15a8e90 100644 ---- a/src/cpp/CMakeLists.txt -+++ b/src/cpp/CMakeLists.txt -@@ -35,7 +35,7 @@ if (BUILD_CUDA_LIB) - endif() - - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) -- add_library(flann_cpp SHARED "") -+ add_library(flann_cpp SHARED ${CPP_SOURCES}) - set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) - target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) - -@@ -90,7 +90,7 @@ if (BUILD_C_BINDINGS) - set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) - - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) -- add_library(flann SHARED "") -+ add_library(flann SHARED ${C_SOURCES}) - set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) - target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) - else() diff --git a/ports/flann/no-write-src-dir.patch b/ports/flann/no-write-src-dir.patch deleted file mode 100644 index c44c869ccffcf0..00000000000000 --- a/ports/flann/no-write-src-dir.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt -index eb84c8a..e6c8ae0 100644 ---- a/src/cpp/CMakeLists.txt -+++ b/src/cpp/CMakeLists.txt -@@ -2,7 +2,13 @@ - - add_definitions(-D_FLANN_VERSION=${FLANN_VERSION}) - --configure_file(${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h) -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/flann/config.h) -+include_directories(${CMAKE_CURRENT_BINARY_DIR}/flann) -+ -+install ( -+ FILES ${CMAKE_CURRENT_BINARY_DIR}/flann/config.h -+ DESTINATION include/flann -+) - - file(GLOB_RECURSE C_SOURCES flann.cpp lz4.c lz4hc.c) - file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp lz4.c lz4hc.c) diff --git a/ports/flann/portfile.cmake b/ports/flann/portfile.cmake index f8c6b96d422ac0..0115e84ecc378f 100644 --- a/ports/flann/portfile.cmake +++ b/ports/flann/portfile.cmake @@ -1,15 +1,15 @@ include(vcpkg_common_functions) +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO mariusmuja/flann - REF 1.9.1 - SHA512 0da78bb14111013318160dd3dee1f93eb6ed077b18439fd6496017b62a8a6070cc859cfb3e08dad4c614e48d9dc1da5f7c4a21726ee45896d360506da074a6f7 + REF aa40936816f4feaa714d3a09f92a495da017d95c + SHA512 f6f2e75f4ce4bc4bc4cc1feab27fe683b8a5f9f5dcea35de4df5136a683b5dff5e68776008821a16ccf1a52a9807cb053c0062deba4fe121948248acd52864ef HEAD_REF master PATCHES - export-all-symbols-of-flann-cpp.patch - no-write-src-dir.patch - flann-linux.patch + use_lz4_targets.patch ) vcpkg_configure_cmake( @@ -21,35 +21,15 @@ vcpkg_configure_cmake( -DBUILD_DOC=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_MATLAB_BINDINGS=OFF - -DCMAKE_DEBUG_POSTFIX=-gd + -DCMAKE_DEBUG_POSTFIX=d -DHDF5_NO_FIND_PACKAGE_CONFIG_FILE=ON ) vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT}) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) - -if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - set(LIB_PREFIX "") - set(LIB_SUFFIX ".lib") -else() - set(LIB_PREFIX "lib") - set(LIB_SUFFIX ".a") -endif() - -if(VCPKG_LIBRARY_LINKAGE STREQUAL static) - file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) - file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann-gd${LIB_SUFFIX}) - file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_cpp${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_cpp-gd${LIB_SUFFIX}) - - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_s${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann${LIB_SUFFIX}) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_s-gd${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann-gd${LIB_SUFFIX}) - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_cpp_s${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_cpp${LIB_SUFFIX}) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_cpp_s-gd${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_cpp-gd${LIB_SUFFIX}) -elseif(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_s${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_s-gd${LIB_SUFFIX}) - file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/${LIB_PREFIX}flann_cpp_s${LIB_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/${LIB_PREFIX}flann_cpp_s-gd${LIB_SUFFIX}) -endif() +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) # Handle copyright file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/flann) diff --git a/ports/flann/use_lz4_targets.patch b/ports/flann/use_lz4_targets.patch new file mode 100644 index 00000000000000..f3b6dc21f73667 --- /dev/null +++ b/ports/flann/use_lz4_targets.patch @@ -0,0 +1,196 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f4b94d2..7ff331a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -146,8 +146,7 @@ if (BUILD_CUDA_LIB) + endif(CUDA_FOUND) + endif(BUILD_CUDA_LIB) + +-find_package(PkgConfig REQUIRED) +-pkg_check_modules(LZ4 REQUIRED liblz4) ++find_package(lz4 REQUIRED) + + #set the C/C++ include path to the "include" directory + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/cpp) +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +index b30f3da..73392b2 100644 +--- a/src/cpp/CMakeLists.txt ++++ b/src/cpp/CMakeLists.txt +@@ -8,12 +8,14 @@ file(GLOB_RECURSE C_SOURCES flann.cpp) + file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp) + file(GLOB_RECURSE CU_SOURCES *.cu) + ++if(NOT BUILD_SHARED_LIBS) + add_library(flann_cpp_s STATIC ${CPP_SOURCES}) +-target_link_libraries(flann_cpp_s ${LZ4_LIBRARIES}) ++target_link_libraries(flann_cpp_s PRIVATE lz4::lz4) + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) + set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC) + endif() + set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC FLANN_USE_CUDA) ++endif() + + if (BUILD_CUDA_LIB) + SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-DFLANN_USE_CUDA") +@@ -29,42 +31,44 @@ if (BUILD_CUDA_LIB) + set_property(TARGET flann_cuda_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + endif() + ++if(BUILD_SHARED_LIBS) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann_cpp SHARED "") ++ add_library(flann_cpp SHARED ${CPP_SOURCES}) + set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) ++ target_link_libraries(flann_cpp PRIVATE lz4::lz4) ++ target_link_libraries(flann_cpp PRIVATE -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) + + if (BUILD_CUDA_LIB) +- cuda_add_library(flann_cuda SHARED "") ++ cuda_add_library(flann_cuda SHARED ${CPP_SOURCES}) + set_target_properties(flann_cuda PROPERTIES LINKER_LANGUAGE CXX) + target_link_libraries(flann_cuda -Wl,-whole-archive flann_cuda_s -Wl,-no-whole-archive) + set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) + # target_link_libraries(flann_cuda cudpp_x86_64) + endif() ++ if (BUILD_CUDA_LIB) ++ set_target_properties(flann_cuda PROPERTIES ++ VERSION ${FLANN_VERSION} ++ SOVERSION ${FLANN_SOVERSION} ++ DEFINE_SYMBOL FLANN_EXPORTS ++ ) ++ endif() + else() + add_library(flann_cpp SHARED ${CPP_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) ++ target_link_libraries(flann_cpp PRIVATE lz4::lz4) ++ target_link_libraries(flann_cpp PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) + # export lz4 headers, so that MSVC to creates flann_cpp.lib + set_target_properties(flann_cpp PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) + if (BUILD_CUDA_LIB) + cuda_add_library(flann_cuda SHARED ${CPP_SOURCES}) + set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) + endif() +-endif() +- +-set_target_properties(flann_cpp PROPERTIES +- VERSION ${FLANN_VERSION} +- SOVERSION ${FLANN_SOVERSION} +- DEFINE_SYMBOL FLANN_EXPORTS +-) +- +-if (BUILD_CUDA_LIB) +- set_target_properties(flann_cuda PROPERTIES ++ set_target_properties(flann_cpp PROPERTIES + VERSION ${FLANN_VERSION} + SOVERSION ${FLANN_SOVERSION} + DEFINE_SYMBOL FLANN_EXPORTS + ) + endif() ++endif() + + + if (USE_MPI AND HDF5_IS_PARALLEL) +@@ -80,31 +84,38 @@ endif() + + + if (BUILD_C_BINDINGS) +- add_library(flann_s STATIC ${C_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) +- if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) +- set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC) ++ if(NOT BUILD_SHARED_LIBS) ++ add_library(flann_s STATIC ${C_SOURCES}) ++ target_link_libraries(flann_s PRIVATE lz4::lz4) ++ target_link_libraries(flann_s PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) ++ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) ++ set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC) ++ endif() ++ set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + endif() +- set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + ++ if(BUILD_SHARED_LIBS) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann SHARED "") ++ add_library(flann SHARED ${C_SOURCES}) + set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) ++ target_link_libraries(flann PRIVATE lz4::lz4) ++ target_link_libraries(flann PRIVATE -Wl,-whole-archive flann_s -Wl,-no-whole-archive) + else() + add_library(flann SHARED ${C_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) ++ target_link_libraries(flann PRIVATE lz4::lz4) ++ target_link_libraries(flann PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) + + if(MINGW AND OPENMP_FOUND) + target_link_libraries(flann gomp) + endif() + endif() +- + set_target_properties(flann PROPERTIES + VERSION ${FLANN_VERSION} + SOVERSION ${FLANN_SOVERSION} + DEFINE_SYMBOL FLANN_EXPORTS + ) ++ endif() ++ + endif() + + if(WIN32) +@@ -116,15 +127,25 @@ if (BUILD_C_BINDINGS AND BUILD_MATLAB_BINDINGS) + endif() + endif(WIN32) + +- ++if(NOT BUILD_SHARED_LIBS) ++install ( ++ TARGETS flann_cpp_s ++ EXPORT ${targets_export_name} ++ INCLUDES DESTINATION include ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} ++ ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} ++) ++else() + install ( +- TARGETS flann_cpp flann_cpp_s ++ TARGETS flann_cpp + EXPORT ${targets_export_name} + INCLUDES DESTINATION include + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} + ) ++endif() + + if (BUILD_CUDA_LIB) + install ( +@@ -138,14 +159,25 @@ if (BUILD_CUDA_LIB) + endif() + + if (BUILD_C_BINDINGS) ++ if(NOT BUILD_SHARED_LIBS) + install ( +- TARGETS flann flann_s ++ TARGETS flann_s + EXPORT ${targets_export_name} + INCLUDES DESTINATION include + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} + ) ++ else() ++ install ( ++ TARGETS flann ++ EXPORT ${targets_export_name} ++ INCLUDES DESTINATION include ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} ++ ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} ++ ) ++ endif() + endif() + + install ( diff --git a/ports/lz4/CMakeLists.txt b/ports/lz4/CMakeLists.txt index b082ab3745660b..38fd083b05ba9c 100644 --- a/ports/lz4/CMakeLists.txt +++ b/ports/lz4/CMakeLists.txt @@ -6,21 +6,44 @@ if(BUILD_SHARED_LIBS) endif() add_definitions(-DXXH_NAMESPACE=LZ4_) +set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}" CACHE PATH "Install prefix") +set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed") +set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed") +set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Path where headers will be installed") +set(INSTALL_CMAKE_DIR "share/lz4" CACHE PATH "Path where cmake configs will be installed") + +file(GLOB LZ4_HEADERS lib/*.h) +message(STATUS "${LZ4_HEADERS}") + add_library(lz4 + ${LZ4_HEADERS} lib/lz4.c lib/lz4frame.c lib/lz4hc.c - lib/xxhash.c) + lib/xxhash.c +) + +target_include_directories(lz4 PUBLIC $ $) +set_target_properties(lz4 PROPERTIES PUBLIC_HEADER ${LZ4_HEADERS}) install(TARGETS lz4 - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) - -if(NOT LZ4_SKIP_INCLUDES) - install(FILES - lib/lz4.h - lib/lz4frame.h - lib/lz4hc.h - DESTINATION include) -endif() + EXPORT lz4Config + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" + PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}" + PRIVATE_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}" + COMPONENT dev +) + +FILE(GLOB lz4h "${CMAKE_CURRENT_LIST_DIR}/lib/*.h") +INSTALL(FILES ${lz4h} DESTINATION "${INSTALL_INCLUDE_DIR}") + +install(EXPORT lz4Config + FILE lz4Config.cmake + NAMESPACE lz4:: + DESTINATION "${INSTALL_CMAKE_DIR}" +) + +# Export the package for use from the build-tree (this registers the build-tree with a global CMake-registry) +export(PACKAGE lz4) diff --git a/ports/lz4/CONTROL b/ports/lz4/CONTROL index 68fe1eff24b9c6..25cd70c1e0fbfb 100644 --- a/ports/lz4/CONTROL +++ b/ports/lz4/CONTROL @@ -1,3 +1,3 @@ -Source: lz4 -Version: 1.9.0 -Description: Lossless compression algorithm, providing compression speed at 400 MB/s per core. +Source: lz4 +Version: 1.8.3-1 +Description: Lossless compression algorithm, providing compression speed at 400 MB/s per core. diff --git a/ports/lz4/portfile.cmake b/ports/lz4/portfile.cmake index b28d3b93974d81..fecb157f88d9ee 100644 --- a/ports/lz4/portfile.cmake +++ b/ports/lz4/portfile.cmake @@ -1,32 +1,45 @@ -include(vcpkg_common_functions) -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO lz4/lz4 - REF v1.9.0 - SHA512 f9e78df262818192800157d6ed64d42c06e918062afc93e3098d00f5f49fd3279b5709486a7d8841708a4ce1c539381225f0813e6a342f49d13b576eb61eb444 - HEAD_REF dev) - -file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) - -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA - OPTIONS_DEBUG - -DLZ4_SKIP_INCLUDES=ON - -DCMAKE_DEBUG_POSTFIX=d) - -vcpkg_install_cmake() -vcpkg_copy_pdbs() - -foreach(FILE lz4.h lz4frame.h) - file(READ ${CURRENT_PACKAGES_DIR}/include/${FILE} LZ4_HEADER) - if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "1" LZ4_HEADER "${LZ4_HEADER}") - else() - string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "0" LZ4_HEADER "${LZ4_HEADER}") - endif() - file(WRITE ${CURRENT_PACKAGES_DIR}/include/${FILE} "${LZ4_HEADER}") -endforeach() - -file(COPY ${SOURCE_PATH}/lib/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/lz4) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/lz4/LICENSE ${CURRENT_PACKAGES_DIR}/share/lz4/copyright) +include(vcpkg_common_functions) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO lz4/lz4 + REF v1.8.3 + SHA512 5d284f75a0c4ad11ebc4abb4394d98c863436da0718d62f648ef2e2cda8e5adf47617a4b43594375f7b0b673541a9ccfaf73880a55fd240986594558214dbf9f + HEAD_REF dev +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS_DEBUG + -DCMAKE_DEBUG_POSTFIX=d +) + +vcpkg_install_cmake() + +file(GLOB_RECURSE LZ4_HEADERS "${SOURCE_PATH}/*.h") + +foreach(FILE ${LZ4_HEADERS}) + file(READ ${FILE} LZ4_HEADER) + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "1" LZ4_HEADER "${LZ4_HEADER}") + else() + string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "0" LZ4_HEADER "${LZ4_HEADER}") + endif() + file(WRITE ${FILE} "${LZ4_HEADER}") +endforeach() + +file(RENAME ${CURRENT_PACKAGES_DIR}/debug/share/lz4/lz4Config-debug.cmake ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake) +file(READ ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake LZ4_TARGET_DEBUG) +string(REPLACE "/lib/" + "/debug/lib/" LZ4_TARGET_DEBUG "${LZ4_TARGET_DEBUG}") +file(WRITE ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake "${LZ4_TARGET_DEBUG}") + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +vcpkg_copy_pdbs() + +file(COPY ${SOURCE_PATH}/lib/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/lz4) +file(RENAME ${CURRENT_PACKAGES_DIR}/share/lz4/LICENSE ${CURRENT_PACKAGES_DIR}/share/lz4/copyright) From 41c17467ca3acdcd51f161f1070b8c0e526ba432 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Wed, 8 May 2019 18:37:53 +0200 Subject: [PATCH 2/8] [lz4] use vcpkg_fixup_cmake_targets --- ports/lz4/CONTROL | 2 +- ports/lz4/portfile.cmake | 23 ++++++++--------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/ports/lz4/CONTROL b/ports/lz4/CONTROL index 25cd70c1e0fbfb..d5dd36a964f662 100644 --- a/ports/lz4/CONTROL +++ b/ports/lz4/CONTROL @@ -1,3 +1,3 @@ Source: lz4 -Version: 1.8.3-1 +Version: 1.9.0-1 Description: Lossless compression algorithm, providing compression speed at 400 MB/s per core. diff --git a/ports/lz4/portfile.cmake b/ports/lz4/portfile.cmake index fecb157f88d9ee..345de692164e46 100644 --- a/ports/lz4/portfile.cmake +++ b/ports/lz4/portfile.cmake @@ -1,9 +1,10 @@ include(vcpkg_common_functions) + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO lz4/lz4 - REF v1.8.3 - SHA512 5d284f75a0c4ad11ebc4abb4394d98c863436da0718d62f648ef2e2cda8e5adf47617a4b43594375f7b0b673541a9ccfaf73880a55fd240986594558214dbf9f + REF v1.9.0 + SHA512 f9e78df262818192800157d6ed64d42c06e918062afc93e3098d00f5f49fd3279b5709486a7d8841708a4ce1c539381225f0813e6a342f49d13b576eb61eb444 HEAD_REF dev ) @@ -17,29 +18,21 @@ vcpkg_configure_cmake( ) vcpkg_install_cmake() +vcpkg_copy_pdbs() -file(GLOB_RECURSE LZ4_HEADERS "${SOURCE_PATH}/*.h") - -foreach(FILE ${LZ4_HEADERS}) - file(READ ${FILE} LZ4_HEADER) +foreach(FILE lz4.h lz4frame.h) + file(READ ${CURRENT_PACKAGES_DIR}/include/${FILE} LZ4_HEADER) if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "1" LZ4_HEADER "${LZ4_HEADER}") else() string(REPLACE "defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1)" "0" LZ4_HEADER "${LZ4_HEADER}") endif() - file(WRITE ${FILE} "${LZ4_HEADER}") + file(WRITE ${CURRENT_PACKAGES_DIR}/include/${FILE} "${LZ4_HEADER}") endforeach() -file(RENAME ${CURRENT_PACKAGES_DIR}/debug/share/lz4/lz4Config-debug.cmake ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake) -file(READ ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake LZ4_TARGET_DEBUG) -string(REPLACE "/lib/" - "/debug/lib/" LZ4_TARGET_DEBUG "${LZ4_TARGET_DEBUG}") -file(WRITE ${CURRENT_PACKAGES_DIR}/share/lz4/lz4Config-debug.cmake "${LZ4_TARGET_DEBUG}") +vcpkg_fixup_cmake_targets() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) - -vcpkg_copy_pdbs() file(COPY ${SOURCE_PATH}/lib/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/lz4) file(RENAME ${CURRENT_PACKAGES_DIR}/share/lz4/LICENSE ${CURRENT_PACKAGES_DIR}/share/lz4/copyright) From 36959a5c5070ea5131d4c4f3fd442a4521bff59d Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 10 May 2019 16:38:59 +0200 Subject: [PATCH 3/8] [flann] improve target handling --- ports/flann/fix_targets.patch | 243 ++++++++++++++++++++++++++++++ ports/flann/portfile.cmake | 5 +- ports/flann/use_lz4_targets.patch | 196 ------------------------ 3 files changed, 246 insertions(+), 198 deletions(-) create mode 100644 ports/flann/fix_targets.patch delete mode 100644 ports/flann/use_lz4_targets.patch diff --git a/ports/flann/fix_targets.patch b/ports/flann/fix_targets.patch new file mode 100644 index 00000000000000..b9ebe7cb7d60c2 --- /dev/null +++ b/ports/flann/fix_targets.patch @@ -0,0 +1,243 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f4b94d2..e55195b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -146,9 +146,6 @@ if (BUILD_CUDA_LIB) + endif(CUDA_FOUND) + endif(BUILD_CUDA_LIB) + +-find_package(PkgConfig REQUIRED) +-pkg_check_modules(LZ4 REQUIRED liblz4) +- + #set the C/C++ include path to the "include" directory + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/cpp) + +diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in +index 6b95a71..2c95b6e 100644 +--- a/cmake/Config.cmake.in ++++ b/cmake/Config.cmake.in +@@ -3,3 +3,5 @@ + include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") + check_required_components("flann") + ++include(CMakeFindDependencyMacro) ++find_dependency(lz4) +diff --git a/cmake/flann_utils.cmake b/cmake/flann_utils.cmake +index afe4742..0cf8289 100644 +--- a/cmake/flann_utils.cmake ++++ b/cmake/flann_utils.cmake +@@ -1,8 +1,7 @@ + macro(GET_OS_INFO) + string(REGEX MATCH "Linux" OS_IS_LINUX ${CMAKE_SYSTEM_NAME}) +- set(FLANN_LIB_INSTALL_DIR "lib${LIB_SUFFIX}") +- set(FLANN_INCLUDE_INSTALL_DIR +- "include/${PROJECT_NAME_LOWER}-${FLANN_MAJOR_VERSION}.${FLANN_MINOR_VERSION}") ++ set(FLANN_LIB_INSTALL_DIR "lib") ++ set(FLANN_INCLUDE_INSTALL_DIR "include") + endmacro(GET_OS_INFO) + + +@@ -27,7 +26,7 @@ macro(find_hdf5) + set( HDF5_IS_PARALLEL FALSE ) + foreach( _dir ${HDF5_INCLUDE_DIRS} ) + if( EXISTS "${_dir}/H5pubconf.h" ) +- file( STRINGS "${_dir}/H5pubconf.h" ++ file( STRINGS "${_dir}/H5pubconf.h" + HDF5_HAVE_PARALLEL_DEFINE + REGEX "HAVE_PARALLEL 1" ) + if( HDF5_HAVE_PARALLEL_DEFINE ) +@@ -106,7 +105,7 @@ endmacro(flann_add_pyunit) + + macro(flann_download_test_data _name _md5) + string(REPLACE "/" "_" _dataset_name dataset_${_name}) +- ++ + add_custom_target(${_dataset_name} + COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin/download_checkmd5.py http://people.cs.ubc.ca/~mariusm/uploads/FLANN/datasets/${_name} ${TEST_OUTPUT_PATH}/${_name} ${_md5} + VERBATIM) +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 3f4655a..918b94a 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -1,9 +1,10 @@ + add_custom_target(examples ALL) + ++find_package(lz4 REQUIRED) + + if (BUILD_C_BINDINGS) + add_executable(flann_example_c flann_example.c) +- target_link_libraries(flann_example_c -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) ++ target_link_libraries(flann_example_c lz4::lz4) + target_link_libraries(flann_example_c flann) + set_target_properties(flann_example_c PROPERTIES COMPILE_FLAGS -std=c99) + +@@ -15,7 +16,7 @@ if (HDF5_FOUND) + include_directories(${HDF5_INCLUDE_DIR}) + + add_executable(flann_example_cpp flann_example.cpp) +- target_link_libraries(flann_example_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) ++ target_link_libraries(flann_example_cpp lz4::lz4) + target_link_libraries(flann_example_cpp ${HDF5_LIBRARIES} flann_cpp) + if (HDF5_IS_PARALLEL) + target_link_libraries(flann_example_cpp ${MPI_LIBRARIES}) +@@ -27,7 +28,7 @@ if (HDF5_FOUND) + + if (USE_MPI AND HDF5_IS_PARALLEL) + add_executable(flann_example_mpi flann_example_mpi.cpp) +- target_link_libraries(flann_example_mpi -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) ++ target_link_libraries(flann_example_mpi lz4::lz4) + target_link_libraries(flann_example_mpi flann_cpp ${HDF5_LIBRARIES} ${MPI_LIBRARIES} ${Boost_LIBRARIES}) + + add_dependencies(examples flann_example_mpi) +@@ -36,7 +37,3 @@ if (HDF5_FOUND) + else() + message("hdf5 library not found, not compiling flann_example.cpp") + endif() +- +- +- +- +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +index b30f3da..1535d37 100644 +--- a/src/cpp/CMakeLists.txt ++++ b/src/cpp/CMakeLists.txt +@@ -8,12 +8,13 @@ file(GLOB_RECURSE C_SOURCES flann.cpp) + file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp) + file(GLOB_RECURSE CU_SOURCES *.cu) + +-add_library(flann_cpp_s STATIC ${CPP_SOURCES}) +-target_link_libraries(flann_cpp_s ${LZ4_LIBRARIES}) +-if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) +- set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC) +-endif() +-set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC FLANN_USE_CUDA) ++find_package(lz4 REQUIRED) ++ ++set(CMAKE_POSITION_INDEPENDENT_CODE ON) ++ ++add_library(flann_cpp STATIC ${CPP_SOURCES}) ++target_link_libraries(flann_cpp PRIVATE lz4::lz4) ++set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + + if (BUILD_CUDA_LIB) + SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-DFLANN_USE_CUDA") +@@ -25,48 +26,11 @@ if (BUILD_CUDA_LIB) + else() + set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};" ) + endif() +- cuda_add_library(flann_cuda_s STATIC ${CU_SOURCES}) +- set_property(TARGET flann_cuda_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) +-endif() +- +-if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann_cpp SHARED "") +- set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) +- +- if (BUILD_CUDA_LIB) +- cuda_add_library(flann_cuda SHARED "") +- set_target_properties(flann_cuda PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(flann_cuda -Wl,-whole-archive flann_cuda_s -Wl,-no-whole-archive) +- set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) +- # target_link_libraries(flann_cuda cudpp_x86_64) +- endif() +-else() +- add_library(flann_cpp SHARED ${CPP_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) +- # export lz4 headers, so that MSVC to creates flann_cpp.lib +- set_target_properties(flann_cpp PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) +- if (BUILD_CUDA_LIB) +- cuda_add_library(flann_cuda SHARED ${CPP_SOURCES}) +- set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) +- endif() +-endif() +- +-set_target_properties(flann_cpp PROPERTIES +- VERSION ${FLANN_VERSION} +- SOVERSION ${FLANN_SOVERSION} +- DEFINE_SYMBOL FLANN_EXPORTS +-) +- +-if (BUILD_CUDA_LIB) +- set_target_properties(flann_cuda PROPERTIES +- VERSION ${FLANN_VERSION} +- SOVERSION ${FLANN_SOVERSION} +- DEFINE_SYMBOL FLANN_EXPORTS +- ) ++ cuda_add_library(flann_cuda STATIC ${CU_SOURCES}) ++ set_property(TARGET flann_cuda PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) ++ set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) + endif() + +- + if (USE_MPI AND HDF5_IS_PARALLEL) + add_executable(flann_mpi_server flann/mpi/flann_mpi_server.cpp) + target_link_libraries(flann_mpi_server flann_cpp ${HDF5_LIBRARIES} ${MPI_LIBRARIES} ${Boost_LIBRARIES}) +@@ -80,31 +44,9 @@ endif() + + + if (BUILD_C_BINDINGS) +- add_library(flann_s STATIC ${C_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) +- if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) +- set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC) +- endif() +- set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) +- +- if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann SHARED "") +- set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) +- target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) +- else() +- add_library(flann SHARED ${C_SOURCES}) +- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) +- +- if(MINGW AND OPENMP_FOUND) +- target_link_libraries(flann gomp) +- endif() +- endif() +- +- set_target_properties(flann PROPERTIES +- VERSION ${FLANN_VERSION} +- SOVERSION ${FLANN_SOVERSION} +- DEFINE_SYMBOL FLANN_EXPORTS +- ) ++ add_library(flann STATIC ${C_SOURCES}) ++ target_link_libraries(flann PRIVATE lz4::lz4) ++ set_property(TARGET flann PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + endif() + + if(WIN32) +@@ -118,9 +60,9 @@ endif(WIN32) + + + install ( +- TARGETS flann_cpp flann_cpp_s ++ TARGETS flann_cpp + EXPORT ${targets_export_name} +- INCLUDES DESTINATION include ++ INCLUDES DESTINATION ${FLANN_INCLUDE_INSTALL_DIR} + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} +@@ -128,9 +70,9 @@ install ( + + if (BUILD_CUDA_LIB) + install ( +- TARGETS flann_cuda flann_cuda_s ++ TARGETS flann_cuda + EXPORT ${targets_export_name} +- INCLUDES DESTINATION include ++ INCLUDES DESTINATION ${FLANN_INCLUDE_INSTALL_DIR} + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} +@@ -139,7 +81,7 @@ endif() + + if (BUILD_C_BINDINGS) + install ( +- TARGETS flann flann_s ++ TARGETS flann + EXPORT ${targets_export_name} + INCLUDES DESTINATION include + RUNTIME DESTINATION bin diff --git a/ports/flann/portfile.cmake b/ports/flann/portfile.cmake index 0115e84ecc378f..17770bd29b34dd 100644 --- a/ports/flann/portfile.cmake +++ b/ports/flann/portfile.cmake @@ -1,5 +1,7 @@ include(vcpkg_common_functions) +#the port uses inside the CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS, which is discouraged by vcpkg. +#Since it's its author choice, we should not disallow it, but unfortunately looks like it's broken, so we block it anyway... vcpkg_check_linkage(ONLY_STATIC_LIBRARY) vcpkg_from_github( @@ -9,7 +11,7 @@ vcpkg_from_github( SHA512 f6f2e75f4ce4bc4bc4cc1feab27fe683b8a5f9f5dcea35de4df5136a683b5dff5e68776008821a16ccf1a52a9807cb053c0062deba4fe121948248acd52864ef HEAD_REF master PATCHES - use_lz4_targets.patch + fix_targets.patch ) vcpkg_configure_cmake( @@ -29,7 +31,6 @@ vcpkg_install_cmake() vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT}) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) # Handle copyright file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/flann) diff --git a/ports/flann/use_lz4_targets.patch b/ports/flann/use_lz4_targets.patch deleted file mode 100644 index f3b6dc21f73667..00000000000000 --- a/ports/flann/use_lz4_targets.patch +++ /dev/null @@ -1,196 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f4b94d2..7ff331a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -146,8 +146,7 @@ if (BUILD_CUDA_LIB) - endif(CUDA_FOUND) - endif(BUILD_CUDA_LIB) - --find_package(PkgConfig REQUIRED) --pkg_check_modules(LZ4 REQUIRED liblz4) -+find_package(lz4 REQUIRED) - - #set the C/C++ include path to the "include" directory - include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/cpp) -diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt -index b30f3da..73392b2 100644 ---- a/src/cpp/CMakeLists.txt -+++ b/src/cpp/CMakeLists.txt -@@ -8,12 +8,14 @@ file(GLOB_RECURSE C_SOURCES flann.cpp) - file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp) - file(GLOB_RECURSE CU_SOURCES *.cu) - -+if(NOT BUILD_SHARED_LIBS) - add_library(flann_cpp_s STATIC ${CPP_SOURCES}) --target_link_libraries(flann_cpp_s ${LZ4_LIBRARIES}) -+target_link_libraries(flann_cpp_s PRIVATE lz4::lz4) - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) - set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC) - endif() - set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC FLANN_USE_CUDA) -+endif() - - if (BUILD_CUDA_LIB) - SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-DFLANN_USE_CUDA") -@@ -29,42 +31,44 @@ if (BUILD_CUDA_LIB) - set_property(TARGET flann_cuda_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) - endif() - -+if(BUILD_SHARED_LIBS) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) -- add_library(flann_cpp SHARED "") -+ add_library(flann_cpp SHARED ${CPP_SOURCES}) - set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) -- target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) -+ target_link_libraries(flann_cpp PRIVATE lz4::lz4) -+ target_link_libraries(flann_cpp PRIVATE -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) - - if (BUILD_CUDA_LIB) -- cuda_add_library(flann_cuda SHARED "") -+ cuda_add_library(flann_cuda SHARED ${CPP_SOURCES}) - set_target_properties(flann_cuda PROPERTIES LINKER_LANGUAGE CXX) - target_link_libraries(flann_cuda -Wl,-whole-archive flann_cuda_s -Wl,-no-whole-archive) - set_property(TARGET flann_cpp_s PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) - # target_link_libraries(flann_cuda cudpp_x86_64) - endif() -+ if (BUILD_CUDA_LIB) -+ set_target_properties(flann_cuda PROPERTIES -+ VERSION ${FLANN_VERSION} -+ SOVERSION ${FLANN_SOVERSION} -+ DEFINE_SYMBOL FLANN_EXPORTS -+ ) -+ endif() - else() - add_library(flann_cpp SHARED ${CPP_SOURCES}) -- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) -+ target_link_libraries(flann_cpp PRIVATE lz4::lz4) -+ target_link_libraries(flann_cpp PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) - # export lz4 headers, so that MSVC to creates flann_cpp.lib - set_target_properties(flann_cpp PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS YES) - if (BUILD_CUDA_LIB) - cuda_add_library(flann_cuda SHARED ${CPP_SOURCES}) - set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA) - endif() --endif() -- --set_target_properties(flann_cpp PROPERTIES -- VERSION ${FLANN_VERSION} -- SOVERSION ${FLANN_SOVERSION} -- DEFINE_SYMBOL FLANN_EXPORTS --) -- --if (BUILD_CUDA_LIB) -- set_target_properties(flann_cuda PROPERTIES -+ set_target_properties(flann_cpp PROPERTIES - VERSION ${FLANN_VERSION} - SOVERSION ${FLANN_SOVERSION} - DEFINE_SYMBOL FLANN_EXPORTS - ) - endif() -+endif() - - - if (USE_MPI AND HDF5_IS_PARALLEL) -@@ -80,31 +84,38 @@ endif() - - - if (BUILD_C_BINDINGS) -- add_library(flann_s STATIC ${C_SOURCES}) -- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) -- if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) -- set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC) -+ if(NOT BUILD_SHARED_LIBS) -+ add_library(flann_s STATIC ${C_SOURCES}) -+ target_link_libraries(flann_s PRIVATE lz4::lz4) -+ target_link_libraries(flann_s PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) -+ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) -+ set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC) -+ endif() -+ set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) - endif() -- set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) - -+ if(BUILD_SHARED_LIBS) - if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) -- add_library(flann SHARED "") -+ add_library(flann SHARED ${C_SOURCES}) - set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) -- target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) -+ target_link_libraries(flann PRIVATE lz4::lz4) -+ target_link_libraries(flann PRIVATE -Wl,-whole-archive flann_s -Wl,-no-whole-archive) - else() - add_library(flann SHARED ${C_SOURCES}) -- target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state) -+ target_link_libraries(flann PRIVATE lz4::lz4) -+ target_link_libraries(flann PRIVATE -Wl,--push-state,--no-as-needed -Wl,--pop-state) - - if(MINGW AND OPENMP_FOUND) - target_link_libraries(flann gomp) - endif() - endif() -- - set_target_properties(flann PROPERTIES - VERSION ${FLANN_VERSION} - SOVERSION ${FLANN_SOVERSION} - DEFINE_SYMBOL FLANN_EXPORTS - ) -+ endif() -+ - endif() - - if(WIN32) -@@ -116,15 +127,25 @@ if (BUILD_C_BINDINGS AND BUILD_MATLAB_BINDINGS) - endif() - endif(WIN32) - -- -+if(NOT BUILD_SHARED_LIBS) -+install ( -+ TARGETS flann_cpp_s -+ EXPORT ${targets_export_name} -+ INCLUDES DESTINATION include -+ RUNTIME DESTINATION bin -+ LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} -+ ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} -+) -+else() - install ( -- TARGETS flann_cpp flann_cpp_s -+ TARGETS flann_cpp - EXPORT ${targets_export_name} - INCLUDES DESTINATION include - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} - ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} - ) -+endif() - - if (BUILD_CUDA_LIB) - install ( -@@ -138,14 +159,25 @@ if (BUILD_CUDA_LIB) - endif() - - if (BUILD_C_BINDINGS) -+ if(NOT BUILD_SHARED_LIBS) - install ( -- TARGETS flann flann_s -+ TARGETS flann_s - EXPORT ${targets_export_name} - INCLUDES DESTINATION include - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} - ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} - ) -+ else() -+ install ( -+ TARGETS flann -+ EXPORT ${targets_export_name} -+ INCLUDES DESTINATION include -+ RUNTIME DESTINATION bin -+ LIBRARY DESTINATION ${FLANN_LIB_INSTALL_DIR} -+ ARCHIVE DESTINATION ${FLANN_LIB_INSTALL_DIR} -+ ) -+ endif() - endif() - - install ( From 44cb7ef83261595b0b0e400a0757c90a0a986e73 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 10 May 2019 16:39:39 +0200 Subject: [PATCH 4/8] [lz4] remove unnecessary debug message --- ports/lz4/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/lz4/CMakeLists.txt b/ports/lz4/CMakeLists.txt index 38fd083b05ba9c..8f94cbeb6779cb 100644 --- a/ports/lz4/CMakeLists.txt +++ b/ports/lz4/CMakeLists.txt @@ -13,7 +13,6 @@ set(INSTALL_INCLUDE_DIR "include" CACHE PATH "Path where head set(INSTALL_CMAKE_DIR "share/lz4" CACHE PATH "Path where cmake configs will be installed") file(GLOB LZ4_HEADERS lib/*.h) -message(STATUS "${LZ4_HEADERS}") add_library(lz4 ${LZ4_HEADERS} From 78894aabe2f5e8ac053ca169dc1fca90bd46311a Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Fri, 10 May 2019 16:40:00 +0200 Subject: [PATCH 5/8] [openmvg] many many fixes to build it on windows --- ports/openmvg/CONTROL | 15 +- ports/openmvg/fixcmake.patch | 540 +++++++++++++++++++++++++++-------- ports/openmvg/portfile.cmake | 212 +++++++------- 3 files changed, 535 insertions(+), 232 deletions(-) diff --git a/ports/openmvg/CONTROL b/ports/openmvg/CONTROL index ce974a9d6510bc..5006dc8dd4e170 100644 --- a/ports/openmvg/CONTROL +++ b/ports/openmvg/CONTROL @@ -1,4 +1,11 @@ -Source: openmvg -Version: 1.4-1 -Description: open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion. -Build-Depends: coinutils, clp, osi, liblemon, flann, eigen3, ceres, cereal, libjpeg-turbo, tiff, libpng, zlib +Source: openmvg +Version: 1.4-2 +Description: open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion. +Build-Depends: coinutils, clp, osi, liblemon, flann, eigen3, ceres, cereal, libjpeg-turbo, tiff, libpng, zlib + +Feature: opencv +Build-Depends: opencv[contrib] +Description: opencv support for openmvg + +Feature: openmp +Description: openmp support for openmvg diff --git a/ports/openmvg/fixcmake.patch b/ports/openmvg/fixcmake.patch index 2ee976dd54d2c7..66eff4fd335bdb 100644 --- a/ports/openmvg/fixcmake.patch +++ b/ports/openmvg/fixcmake.patch @@ -1,119 +1,421 @@ -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 654bebd..6d1c671 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -39,6 +39,10 @@ option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF) - # ============================================================================== - option(OpenMVG_USE_OCVSIFT "Add or not OpenCV SIFT in available features" OFF) - -+if(OpenMVG_BUILD_SHARED AND MSVC) -+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) -+endif(OpenMVG_BUILD_SHARED AND MSVC) -+ - # ============================================================================== - # OpenMVG version - # ============================================================================== -@@ -88,11 +92,11 @@ endif() - # ============================================================================== - # Check that submodule have been initialized and updated - # ============================================================================== --if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include) -- message(FATAL_ERROR -- "\n submodule(s) are missing, please update your repository:\n" -- " > git submodule update -i\n") --endif() -+# if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include) -+# message(FATAL_ERROR -+# "\n submodule(s) are missing, please update your repository:\n" -+# " > git submodule update -i\n") -+# endif() - - # ============================================================================== - # Additional cmake find modules -@@ -184,12 +188,12 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES) - endif (OpenMVG_BUILD_OPENGL_EXAMPLES) - - # Dependencies install rules --install( -- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/ -- DESTINATION include/openMVG_dependencies -- COMPONENT headers -- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" --) -+# install( -+# DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/ -+# DESTINATION include/openMVG_dependencies -+# COMPONENT headers -+# FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" -+# ) - - # ============================================================================== - # --END-- SUBMODULE CONFIGURATION -diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake -index c997b87..74c3aae 100644 ---- a/src/cmakeFindModules/FindClp.cmake -+++ b/src/cmakeFindModules/FindClp.cmake -@@ -51,8 +51,8 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "") - SET(CLP_INCLUDE_DIR ${CLP_DIR}) - - FIND_LIBRARY(CLP_LIBRARY NAMES Clp) -- FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver) -- FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp) -+ FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver Clp) -+ FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp Clp) - - # locate Clp libraries - IF(DEFINED CLP_LIBRARY AND DEFINED CLPSOLVER_LIBRARY AND DEFINED OSICLP_LIBRARY) -diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt -index 80b1fe6..cb396c7 100644 ---- a/src/openMVG/matching/CMakeLists.txt -+++ b/src/openMVG/matching/CMakeLists.txt -@@ -38,7 +38,7 @@ target_link_libraries(openMVG_matching - openMVG_features - Threads::Threads - ) --if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN) -+if (NOT OpenMVG_USE_INTERNAL_FLANN) - target_link_libraries(openMVG_matching - PUBLIC - ${FLANN_LIBRARIES} -diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt -index 816a941..f0b7145 100644 ---- a/src/third_party/CMakeLists.txt -+++ b/src/third_party/CMakeLists.txt -@@ -18,7 +18,7 @@ add_subdirectory(stlplus3) - set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE) - - # Add graph library --if(DEFINED OpenMVG_USE_INTERNAL_LEMON) -+if(OpenMVG_USE_INTERNAL_LEMON) - add_subdirectory(lemon) - set_property(TARGET openMVG_lemon PROPERTY FOLDER OpenMVG/3rdParty/lemon) - set_property(TARGET check PROPERTY FOLDER OpenMVG/3rdParty/lemon) -@@ -68,7 +68,7 @@ endif (NOT TIFF_FOUND) - add_subdirectory(vectorGraphics) - - # Add ceres-solver (A Nonlinear Least Squares Minimizer) --if (DEFINED OpenMVG_USE_INTERNAL_CERES) -+if (OpenMVG_USE_INTERNAL_CERES) - add_subdirectory(cxsparse) - add_subdirectory(ceres-solver) - set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres) -@@ -76,7 +76,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES) - endif() - - # Add an Approximate Nearest Neighbor library --if (DEFINED OpenMVG_USE_INTERNAL_FLANN) -+if (OpenMVG_USE_INTERNAL_FLANN) - set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp) - add_subdirectory(flann) - endif() -@@ -90,7 +90,7 @@ add_subdirectory(fast) - ## - # Install Header only libraries if necessary - ## --if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) -+if (OpenMVG_USE_INTERNAL_EIGEN) - #Configure Eigen install - set(EIGEN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen) - add_subdirectory(eigen) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 654bebd..5264bfc 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -17,27 +17,16 @@ endif() + # ============================================================================== + # OpenMVG build options + # ============================================================================== +-option(OpenMVG_BUILD_SHARED "Build OpenMVG shared libs" OFF) +-option(OpenMVG_BUILD_TESTS "Build OpenMVG tests" OFF) +-option(OpenMVG_BUILD_DOC "Build OpenMVG documentation" ON) +-option(OpenMVG_BUILD_EXAMPLES "Build OpenMVG samples applications." ON) +-option(OpenMVG_BUILD_OPENGL_EXAMPLES "Build OpenMVG openGL examples" OFF) +-option(OpenMVG_BUILD_SOFTWARES "Build OpenMVG softwares" ON) +-option(OpenMVG_BUILD_GUI_SOFTWARES "Build OpenMVG GUI softwares (QT5)" ON) +-option(OpenMVG_BUILD_COVERAGE "Enable code coverage generation (gcc only)" OFF) +-option(OpenMVG_USE_OPENMP "Enable OpenMP parallelization" ON) + # ============================================================================== + # Opencv is not used by openMVG but some samples show how to use openCV + # and openMVG simultaneously + # ============================================================================== +-option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF) + + # ============================================================================== + # Since OpenCV 3, SIFT is no longer in the default modules. See + # https://github.com/itseez/opencv_contrib for more informations. + # Enable this to be able to use OpenCV SIFT in main_ComputeFeatures_OpenCV. + # ============================================================================== +-option(OpenMVG_USE_OCVSIFT "Add or not OpenCV SIFT in available features" OFF) + + # ============================================================================== + # OpenMVG version +@@ -85,15 +74,6 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + register_definitions(-DOPENMVG_STD_UNORDERED_MAP) + endif() + +-# ============================================================================== +-# Check that submodule have been initialized and updated +-# ============================================================================== +-if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include) +- message(FATAL_ERROR +- "\n submodule(s) are missing, please update your repository:\n" +- " > git submodule update -i\n") +-endif() +- + # ============================================================================== + # Additional cmake find modules + # ============================================================================== +@@ -129,7 +109,6 @@ if (OpenMVG_USE_OPENMP) + find_package(OpenMP) + if (OPENMP_FOUND) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" ON) + register_definitions(-DOPENMVG_USE_OPENMP) + if (NOT MSVC) + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +@@ -140,11 +119,6 @@ if (OpenMVG_USE_OPENMP) + endif() + endif (NOT MSVC) + endif (OPENMP_FOUND) +-else (OpenMVG_USE_OPENMP) +- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" OFF) +- include(UpdateCacheVariable) +- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENMP OFF) +- remove_definitions(-DOPENMVG_USE_OPENMP) + endif (OpenMVG_USE_OPENMP) + + # ============================================================================== +@@ -183,14 +157,6 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES) + set_property(TARGET glfw PROPERTY FOLDER OpenMVG/3rdParty/glfw) + endif (OpenMVG_BUILD_OPENGL_EXAMPLES) + +-# Dependencies install rules +-install( +- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/ +- DESTINATION include/openMVG_dependencies +- COMPONENT headers +- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" +-) +- + # ============================================================================== + # --END-- SUBMODULE CONFIGURATION + # ============================================================================== +@@ -226,14 +192,8 @@ ENDMACRO(UNIT_TEST) + # - external by default + # - internal if cereal not found + # ============================================================================== +-find_package(cereal QUIET CONFIG) +-if (NOT cereal_FOUND) +- set(CEREAL_INCLUDE_DIRS +- ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/cereal/include) +- set(OpenMVG_USE_INTERNAL_CEREAL ON) +-else() +- get_target_property(CEREAL_INCLUDE_DIRS cereal INTERFACE_INCLUDE_DIRECTORIES) +-endif() ++find_package(cereal REQUIRED CONFIG) ++get_target_property(CEREAL_INCLUDE_DIRS cereal INTERFACE_INCLUDE_DIRECTORIES) + + # ============================================================================== + # Eigen +@@ -242,14 +202,8 @@ endif() + # - external if EIGEN_INCLUDE_DIR_HINTS is defined + # - internal if Eigen not found + # ============================================================================== +-find_package(eigen3 QUIET) +-if (NOT eigen3_FOUND) +- set(EIGEN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/eigen) +- set(OpenMVG_USE_INTERNAL_EIGEN ON) +- find_package(Eigen QUIET) +-else() +- set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) +-endif() ++find_package(eigen3 REQUIRED) ++set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) + + # ============================================================================== + # Ceres +@@ -257,17 +211,7 @@ endif() + # - external by default if CERES_DIR_HINTS or find_package found a valid Ceres + # - internal if ceres not found (ceres-solver+cxsparse+miniglog) + # ============================================================================== +-find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS}) +-if (NOT Ceres_FOUND) +- set(OpenMVG_USE_INTERNAL_CERES ON) +- set(CERES_INCLUDE_DIRS +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/include +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/internal/ceres/miniglog +- ${PROJECT_BINARY_DIR}/third_party/ceres-solver/config) +- FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/VERSION" CERES_CONFIG) +- STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG}) +- set(CERES_LIBRARIES openMVG_ceres) +-endif() ++find_package(Ceres REQUIRED) + + # ============================================================================== + # Flann +@@ -275,14 +219,7 @@ endif() + # - internal by default (flann), + # - external if FLANN_INCLUDE_DIR_HINTS and a valid Flann setup is found + # ============================================================================== +-if (NOT DEFINED FLANN_INCLUDE_DIR_HINTS) +- set(FLANN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp) +- set(OpenMVG_USE_INTERNAL_FLANN ON) +-endif() +-find_package(Flann QUIET) +-if (NOT FLANN_FOUND OR OpenMVG_USE_INTERNAL_FLANN) +- set(FLANN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp) +-endif() ++find_package(flann REQUIRED) + + # ============================================================================== + # CoinUtils +@@ -290,15 +227,7 @@ endif() + # - internal by default (CoinUtils), + # - external if COINUTILS_INCLUDE_DIR_HINTS and a valid CoinUtils setup is found + # ============================================================================== +-if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS) +- set(COINUTILS_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/CoinUtils/src/) +- set(OpenMVG_USE_INTERNAL_COINUTILS ON) +-endif() +-find_package(CoinUtils QUIET) +-if (NOT COINUTILS_FOUND OR OpenMVG_USE_INTERNAL_COINUTILS) +- set(COINUTILS_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/CoinUtils/src/) +- set(COINUTILS_LIBRARY lib_CoinUtils) +-endif() ++find_package(CoinUtils REQUIRED) + + ## ============================================================================== + ## Clp +@@ -306,17 +235,7 @@ endif() + ## - internal by default (Clp), + ## - external if CLP_INCLUDE_DIR_HINTS and a valid Clp setup is found + ## ============================================================================== +-if (NOT DEFINED CLP_INCLUDE_DIR_HINTS) +- set(CLP_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/) +- set(OpenMVG_USE_INTERNAL_CLP ON) +-endif() +-find_package(Clp QUIET) +-if (NOT CLP_FOUND OR OpenMVG_USE_INTERNAL_CLP) +- set(CLP_INCLUDE_DIRS +- ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/ +- ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/OsiClp/) +- set(CLP_LIBRARIES lib_clp lib_OsiClpSolver) +-endif() ++find_package(Clp REQUIRED) + + # ============================================================================== + # Osi +@@ -324,15 +243,7 @@ endif() + # - internal by default (Osi), + # - external if OSI_INCLUDE_DIR_HINTS and a valid Osi setup is found + # ============================================================================== +-if (NOT DEFINED OSI_INCLUDE_DIR_HINTS) +- set(OSI_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Osi/src/) +- set(OpenMVG_USE_INTERNAL_OSI ON) +-endif() +-find_package(Osi QUIET) +-if (NOT OSI_FOUND OR OpenMVG_USE_INTERNAL_OSI) +- set(OSI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Osi/src/Osi/) +- set(OSI_LIBRARY lib_Osi) +-endif() ++find_package(Osi REQUIRED) + + # ============================================================================== + # Internal CLP/OSI/COINUTILS libraries: +@@ -351,17 +262,7 @@ endif() + # - internal by default (Lemon), + # - external if LEMON_INCLUDE_DIR_HINTS and a valid Lemon setup is found + # ============================================================================== +-if (NOT DEFINED LEMON_INCLUDE_DIR_HINTS) +- set(LEMON_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon) +- set(OpenMVG_USE_INTERNAL_LEMON ON) +-endif() +-find_package(Lemon QUIET) +-if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON) +- set(LEMON_INCLUDE_DIRS +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon +- ${PROJECT_BINARY_DIR}/third_party/lemon) +- set(LEMON_LIBRARY openMVG_lemon) +-endif() ++find_package(Lemon REQUIRED) + + # ============================================================================== + # OpenCV +@@ -369,12 +270,7 @@ endif() + # - only external and enabled only if OpenMVG_USE_OPENCV is set to ON + # ============================================================================== + if (OpenMVG_USE_OPENCV) +- find_package( OpenCV QUIET ) +- if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0") +- message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.") +- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENCV OFF) +- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OCVSIFT OFF) +- endif() ++ find_package( OpenCV REQUIRED ) + endif() + + +@@ -469,67 +365,67 @@ message("** Use OpenCV SIFT features: " ${OpenMVG_USE_OCVSIFT}) + + message("\n") + +-if (DEFINED OpenMVG_USE_INTERNAL_CEREAL) ++if (OpenMVG_USE_INTERNAL_CEREAL) + message(STATUS "CEREAL: (internal)") + else() + message(STATUS "CEREAL: (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) ++if (OpenMVG_USE_INTERNAL_EIGEN) + message(STATUS "EIGEN: " ${EIGEN_VERSION} " (internal)") + else() + message(STATUS "EIGEN: " ${EIGEN_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_CERES) ++if (OpenMVG_USE_INTERNAL_CERES) + message(STATUS "CERES: " ${CERES_VERSION} " (internal)") + else() + message(STATUS "CERES: " ${CERES_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_FLANN) ++if (OpenMVG_USE_INTERNAL_FLANN) + message(STATUS "FLANN: " ${FLANN_VERSION} " (internal)") + else() + message(STATUS "FLANN: " ${FLANN_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_TIFF) ++if (OpenMVG_USE_INTERNAL_TIFF) + message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (internal)") + else() + message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_PNG) ++if (OpenMVG_USE_INTERNAL_PNG) + message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (internal)") + else() + message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_JPEG) ++if (OpenMVG_USE_INTERNAL_JPEG) + message(STATUS "LIBJPEG (internal)") + else() + message(STATUS "LIBJPEG (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_CLP) ++if (OpenMVG_USE_INTERNAL_CLP) + message(STATUS "CLP: " ${CLP_VERSION} " (internal)") + else() + message(STATUS "CLP: " ${CLP_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_COINUTILS) ++if (OpenMVG_USE_INTERNAL_COINUTILS) + message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (internal)") + else() + message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_OSI) ++if (OpenMVG_USE_INTERNAL_OSI) + message(STATUS "OSI: " ${OSI_VERSION} " (internal)") + else() + message(STATUS "OSI: " ${OSI_VERSION} " (external)") + endif() + +-if (DEFINED OpenMVG_USE_INTERNAL_LEMON) ++if (OpenMVG_USE_INTERNAL_LEMON) + message(STATUS "LEMON: " ${LEMON_VERSION} " (internal)") + else() + message(STATUS "LEMON: " ${LEMON_VERSION} " (external)") +diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake +index c997b87..74c3aae 100644 +--- a/src/cmakeFindModules/FindClp.cmake ++++ b/src/cmakeFindModules/FindClp.cmake +@@ -51,8 +51,8 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "") + SET(CLP_INCLUDE_DIR ${CLP_DIR}) + + FIND_LIBRARY(CLP_LIBRARY NAMES Clp) +- FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver) +- FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp) ++ FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver Clp) ++ FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp Clp) + + # locate Clp libraries + IF(DEFINED CLP_LIBRARY AND DEFINED CLPSOLVER_LIBRARY AND DEFINED OSICLP_LIBRARY) +diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt +index cc5212f..acc57dd 100644 +--- a/src/openMVG/linearProgramming/CMakeLists.txt ++++ b/src/openMVG/linearProgramming/CMakeLists.txt +@@ -15,16 +15,12 @@ target_link_libraries(openMVG_linearProgramming + PUBLIC + openMVG_numeric + PRIVATE +- ${CLP_LIBRARIES} # clp + solver wrapper +- ${COINUTILS_LIBRARY} # container tools +- ${OSI_LIBRARY} # generic LP ++ Coin::Clp # clp + solver wrapper ++ Coin::CoinUtils # container tools ++ Coin::Osi # generic LP + ) + + target_include_directories(openMVG_linearProgramming +- PRIVATE +- ${CLP_INCLUDE_DIRS} +- ${COINUTILS_INCLUDE_DIRS} +- ${OSI_INCLUDE_DIRS} + PUBLIC + $ + ) +diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt +index 80b1fe6..a091b47 100644 +--- a/src/openMVG/matching/CMakeLists.txt ++++ b/src/openMVG/matching/CMakeLists.txt +@@ -18,6 +18,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST}) + + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) ++find_package(flann REQUIRED) + + set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX) + add_library(openMVG_matching +@@ -38,10 +39,10 @@ target_link_libraries(openMVG_matching + openMVG_features + Threads::Threads + ) +-if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN) ++if (NOT OpenMVG_USE_INTERNAL_FLANN) + target_link_libraries(openMVG_matching + PUBLIC +- ${FLANN_LIBRARIES} ++ flann::flann + ) + endif() + set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}") +diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt +index 816a941..f0b7145 100644 +--- a/src/third_party/CMakeLists.txt ++++ b/src/third_party/CMakeLists.txt +@@ -18,7 +18,7 @@ add_subdirectory(stlplus3) + set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE) + + # Add graph library +-if(DEFINED OpenMVG_USE_INTERNAL_LEMON) ++if(OpenMVG_USE_INTERNAL_LEMON) + add_subdirectory(lemon) + set_property(TARGET openMVG_lemon PROPERTY FOLDER OpenMVG/3rdParty/lemon) + set_property(TARGET check PROPERTY FOLDER OpenMVG/3rdParty/lemon) +@@ -68,7 +68,7 @@ endif (NOT TIFF_FOUND) + add_subdirectory(vectorGraphics) + + # Add ceres-solver (A Nonlinear Least Squares Minimizer) +-if (DEFINED OpenMVG_USE_INTERNAL_CERES) ++if (OpenMVG_USE_INTERNAL_CERES) + add_subdirectory(cxsparse) + add_subdirectory(ceres-solver) + set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres) +@@ -76,7 +76,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES) + endif() + + # Add an Approximate Nearest Neighbor library +-if (DEFINED OpenMVG_USE_INTERNAL_FLANN) ++if (OpenMVG_USE_INTERNAL_FLANN) + set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp) + add_subdirectory(flann) + endif() +@@ -90,7 +90,7 @@ add_subdirectory(fast) + ## + # Install Header only libraries if necessary + ## +-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN) ++if (OpenMVG_USE_INTERNAL_EIGEN) + #Configure Eigen install + set(EIGEN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen) + add_subdirectory(eigen) diff --git a/ports/openmvg/portfile.cmake b/ports/openmvg/portfile.cmake index 26480bb3dbe43b..04a7e57ee47ec8 100644 --- a/ports/openmvg/portfile.cmake +++ b/ports/openmvg/portfile.cmake @@ -1,109 +1,103 @@ -# Common Ambient Variables: -# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT} -# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET} -# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT} -# PORT = current port name (zlib, etc) -# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc) -# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic) -# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic) -# VCPKG_ROOT_DIR = -# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm) -# - -include(vcpkg_common_functions) - -string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH) -if(BUILDTREES_PATH_LENGTH GREATER 37 AND CMAKE_HOST_WIN32) - message(WARNING "Openmvg's buildsystem uses very long paths and may fail on your system.\n" - "We recommend moving vcpkg to a short path such as 'C:\\src\\vcpkg' or using the subst command." - ) -endif() - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO openMVG/openMVG - REF v1.4 - SHA512 949cf3680375c87b06db0f4713c846422c98d1979d49e9db65761f63f6f3212f0fcd8425f23c6112f04fbbb90b241638c2fd9329bb6b8b612c1d073aac55759a -) - -vcpkg_apply_patches( - SOURCE_PATH ${SOURCE_PATH} - PATCHES ${CMAKE_CURRENT_LIST_DIR} fixcmake.patch) - - -# remove some deps to prevent conflict -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/ceres-solver) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/cxsparse) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/eigen) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/flann) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/jpeg) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/lemon) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/png) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/tiff) -file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/zlib) - -if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - set(OpenMVG_BUILD_SHARED ON) -else() - set(OpenMVG_BUILD_SHARED OFF) -endif() - - -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH}/src - # PREFER_NINJA # Disable this option if project cannot be built with Ninja - # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2 - OPTIONS - -DOpenMVG_BUILD_SHARED=${OpenMVG_BUILD_SHARED} - -DOpenMVG_BUILD_DOC=OFF - -DOpenMVG_BUILD_EXAMPLES=OFF - -DOpenMVG_BUILD_SOFTWARES=OFF - -DOpenMVG_BUILD_GUI_SOFTWARES=OFF - # TODO, use packgeconfig.cmake file instead - -DEIGEN_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/include/ - -DCERES_DIR_HINTS=${CURRENT_INSTALLED_DIR}/ceres - -DFLANN_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/flann - -DLEMON_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/include/lemon - -DCOINUTILS_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/include/coin - -DCLP_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/include/coin - -DOSI_INCLUDE_DIR_HINTS=${CURRENT_INSTALLED_DIR}/include/coin - -DOpenMVG_USE_INTERNAL_CLP=OFF - -DOpenMVG_USE_INTERNAL_COINUTILS=OFF - -DOpenMVG_USE_INTERNAL_OSI=OFF - -DOpenMVG_USE_INTERNAL_EIGEN=OFF - -DOpenMVG_USE_INTERNAL_CEREAL=OFF - -DOpenMVG_USE_INTERNAL_CERES=OFF - -DOpenMVG_USE_INTERNAL_FLANN=OFF - -DTARGET_ARCHITECTURE=core # disable instruction like avx - # OPTIONS_RELEASE -DOPTIMIZE=1 - OPTIONS_RELEASE - -DFLANN_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/flann_cpp.lib - OPTIONS_DEBUG - -DFLANN_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/flann_cpp-gd.lib -) - -vcpkg_install_cmake() -vcpkg_fixup_cmake_targets(CONFIG_PATH "share/openMVG/cmake") -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/openMVG/image/image_test) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data) -file(GLOB REMOVE_CMAKE ${CURRENT_PACKAGES_DIR}/lib/*.cmake) -file(REMOVE_RECURSE ${REMOVE_CMAKE}) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) -if(OpenMVG_BUILD_SHARED) - # release - file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/lib/*.dll) - file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/bin) - file(REMOVE_RECURSE ${DLL_FILES}) - # debug - file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll) - file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) - file(REMOVE_RECURSE ${DLL_FILES}) -endif() -vcpkg_copy_pdbs() - -# Handle copyright -file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmvg RENAME copyright) - -# Post-build test for cmake libraries -# vcpkg_test_cmake(PACKAGE_NAME openmvg) +include(vcpkg_common_functions) + +string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH) +if(BUILDTREES_PATH_LENGTH GREATER 37 AND CMAKE_HOST_WIN32) + message(WARNING "${PORT}'s buildsystem uses very long paths and may fail on your system.\n" + "We recommend moving vcpkg to a short path such as 'C:\\src\\vcpkg' or using the subst command." + ) +endif() + +#the port produces some empty dlls when building shared libraries, since some components do not export anything, breaking the internal build itself +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO openMVG/openMVG + REF v1.4 + SHA512 949cf3680375c87b06db0f4713c846422c98d1979d49e9db65761f63f6f3212f0fcd8425f23c6112f04fbbb90b241638c2fd9329bb6b8b612c1d073aac55759a + PATCHES + fixcmake.patch +) + +set(ENABLE_OPENCV OFF) +if("opencv" IN_LIST FEATURES) + set(ENABLE_OPENCV ON) +endif() + +set(ENABLE_OPENMP OFF) +if("openmp" IN_LIST FEATURES) + set(ENABLE_OPENMP ON) +endif() + +# remove some deps to prevent conflict +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/ceres-solver) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/cxsparse) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/eigen) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/flann) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/jpeg) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/lemon) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/png) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/tiff) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/third_party/zlib) + +# remove some cmake modules to force using our configs +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindEigen.cmake) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindLemon.cmake) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindFlann.cmake) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindCoinUtils.cmake) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindClp.cmake) +file(REMOVE_RECURSE ${SOURCE_PATH}/src/cmakeFindModules/FindOsi.cmake) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH}/src + PREFER_NINJA + OPTIONS + -DOpenMVG_BUILD_SHARED=OFF + -DOpenMVG_BUILD_TESTS=OFF + -DOpenMVG_BUILD_DOC=OFF + -DOpenMVG_BUILD_EXAMPLES=OFF + -DOpenMVG_BUILD_OPENGL_EXAMPLES=OFF + -DOpenMVG_BUILD_SOFTWARES=OFF + -DOpenMVG_BUILD_GUI_SOFTWARES=OFF + -DOpenMVG_BUILD_COVERAGE=OFF + -DOpenMVG_USE_OPENMP=${ENABLE_OPENMP} + -DOpenMVG_USE_OPENCV=${ENABLE_OPENCV} + -DOpenMVG_USE_OCVSIFT=${ENABLE_OPENCV} + -DOpenMVG_USE_INTERNAL_CLP=OFF + -DOpenMVG_USE_INTERNAL_COINUTILS=OFF + -DOpenMVG_USE_INTERNAL_OSI=OFF + -DOpenMVG_USE_INTERNAL_EIGEN=OFF + -DOpenMVG_USE_INTERNAL_CEREAL=OFF + -DOpenMVG_USE_INTERNAL_CERES=OFF + -DOpenMVG_USE_INTERNAL_FLANN=OFF + -DOpenMVG_USE_INTERNAL_LEMON=OFF +) + +vcpkg_install_cmake() +vcpkg_fixup_cmake_targets(CONFIG_PATH "share/openMVG/cmake") +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +#remove extra deprecated cmake target files left in unappropriate folders +file(GLOB REMOVE_CMAKE ${CURRENT_PACKAGES_DIR}/lib/*.cmake) +file(REMOVE_RECURSE ${REMOVE_CMAKE}) +file(GLOB REMOVE_CMAKE ${CURRENT_PACKAGES_DIR}/debug/lib/*.cmake) +file(REMOVE_RECURSE ${REMOVE_CMAKE}) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/openMVG/image/image_test) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/openMVG/exif/image_data) + +if(OpenMVG_BUILD_SHARED) + # release + file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/lib/*.dll) + file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/bin) + file(REMOVE_RECURSE ${DLL_FILES}) + # debug + file(GLOB DLL_FILES ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll) + file(COPY ${DLL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) + file(REMOVE_RECURSE ${DLL_FILES}) +endif() +vcpkg_copy_pdbs() + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmvg RENAME copyright) From a62e14dd9fc4c6a327cc89aad4a3ef98c5bab945 Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Wed, 15 May 2019 10:32:37 +0200 Subject: [PATCH 6/8] [pcl] use official FLANN cmake config file instead of custom module --- ports/pcl/find_flann.patch | 15 --- ports/pcl/portfile.cmake | 9 +- ports/pcl/use_flann_targets.patch | 155 ++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+), 18 deletions(-) delete mode 100644 ports/pcl/find_flann.patch create mode 100644 ports/pcl/use_flann_targets.patch diff --git a/ports/pcl/find_flann.patch b/ports/pcl/find_flann.patch deleted file mode 100644 index 263be292619eb4..00000000000000 --- a/ports/pcl/find_flann.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/cmake/Modules/FindFLANN.cmake b/cmake/Modules/FindFLANN.cmake -index 1cecacfa9..3169d6d7b 100644 ---- a/cmake/Modules/FindFLANN.cmake -+++ b/cmake/Modules/FindFLANN.cmake -@@ -10,8 +10,8 @@ - # look for shared ones - - if(FLANN_USE_STATIC) -- set(FLANN_RELEASE_NAME flann_cpp_s) -- set(FLANN_DEBUG_NAME flann_cpp_s-gd) -+ set(FLANN_RELEASE_NAME flann_cpp) -+ set(FLANN_DEBUG_NAME flann_cpp-gd) - else(FLANN_USE_STATIC) - set(FLANN_RELEASE_NAME flann_cpp) - set(FLANN_DEBUG_NAME flann_cpp-gd) diff --git a/ports/pcl/portfile.cmake b/ports/pcl/portfile.cmake index 4036d534680e9c..e3203b7a560d2e 100644 --- a/ports/pcl/portfile.cmake +++ b/ports/pcl/portfile.cmake @@ -6,11 +6,14 @@ vcpkg_from_github( REF pcl-1.9.1 SHA512 ca95028c23861ac2df0fa7e18fdd0202255cb2e49ab714325eb36c35289442c6eedbf489e6f9f232b30fa2a93eff4c9619f8a14d3fdfe58f353a4a6e26206bdf HEAD_REF master - PATCHES pcl_utils.patch - pcl_config.patch - find_flann.patch + PATCHES + pcl_utils.patch + pcl_config.patch + use_flann_targets.patch ) +file(REMOVE ${SOURCE_PATH}/cmake/Modules/FindFLANN.cmake) + string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" PCL_SHARED_LIBS) set(WITH_OPENNI2 OFF) diff --git a/ports/pcl/use_flann_targets.patch b/ports/pcl/use_flann_targets.patch new file mode 100644 index 00000000000000..c0e96f7fd8302d --- /dev/null +++ b/ports/pcl/use_flann_targets.patch @@ -0,0 +1,155 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0b4c1a3..94bb484 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -280,11 +280,9 @@ find_package(Eigen REQUIRED) + include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS}) + + # FLANN (required) +-if(NOT PCL_SHARED_LIBS OR ((WIN32 AND NOT MINGW) AND NOT PCL_BUILD_WITH_FLANN_DYNAMIC_LINKING_WIN32)) +- set(FLANN_USE_STATIC ON) +-endif() ++set(FLANN_USE_STATIC ON) + find_package(FLANN 1.7.0 REQUIRED) +-include_directories(${FLANN_INCLUDE_DIRS}) ++find_package(lz4) + + # libusb-1.0 + option(WITH_LIBUSB "Build USB RGBD-Camera drivers" TRUE) +diff --git a/PCLConfig.cmake.in b/PCLConfig.cmake.in +index 6fadb59..6a9c5b7 100755 +--- a/PCLConfig.cmake.in ++++ b/PCLConfig.cmake.in +@@ -226,12 +226,6 @@ endmacro(find_rssdk) + + #remove this as soon as flann is shipped with FindFlann.cmake + macro(find_flann) +- if(PCL_ALL_IN_ONE_INSTALLER) +- set(FLANN_ROOT "${PCL_ROOT}/3rdParty/Flann") +- elseif(NOT FLANN_ROOT) +- get_filename_component(FLANN_ROOT "@FLANN_INCLUDE_DIRS@" PATH) +- endif(PCL_ALL_IN_ONE_INSTALLER) +- + set(FLANN_USE_STATIC @FLANN_USE_STATIC@) + find_package(FLANN) + endmacro(find_flann) +@@ -651,7 +645,7 @@ endif(NOT "${PCL_DEFINITIONS}" STREQUAL "") + pcl_remove_duplicate_libraries(PCL_COMPONENTS PCL_LIBRARIES) + + # Add 3rd party libraries, as user code might include our .HPP implementations +-list(APPEND PCL_LIBRARIES ${BOOST_LIBRARIES} ${QHULL_LIBRARIES} ${OPENNI_LIBRARIES} ${OPENNI2_LIBRARIES} ${ENSENSO_LIBRARIES} ${davidSDK_LIBRARIES} ${DSSDK_LIBRARIES} ${RSSDK_LIBRARIES} ${FLANN_LIBRARIES} ${VTK_LIBRARIES}) ++list(APPEND PCL_LIBRARIES ${BOOST_LIBRARIES} ${QHULL_LIBRARIES} ${OPENNI_LIBRARIES} ${OPENNI2_LIBRARIES} ${ENSENSO_LIBRARIES} ${davidSDK_LIBRARIES} ${DSSDK_LIBRARIES} ${RSSDK_LIBRARIES} flann::flann_cpp_s ${VTK_LIBRARIES}) + + find_package_handle_standard_args(PCL DEFAULT_MSG PCL_LIBRARIES PCL_INCLUDE_DIRS) + mark_as_advanced(PCL_LIBRARIES PCL_INCLUDE_DIRS PCL_LIBRARY_DIRS) +diff --git a/doc/tutorials/content/sources/vfh_recognition/CMakeLists.txt b/doc/tutorials/content/sources/vfh_recognition/CMakeLists.txt +index 9693792..dcd4373 100755 +--- a/doc/tutorials/content/sources/vfh_recognition/CMakeLists.txt ++++ b/doc/tutorials/content/sources/vfh_recognition/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.8 FATAL_ERROR) + +-# we need FindFLANN.cmake ++# we need FindFLANN.cmake + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) + + project(vfh_cluster_classifier) +@@ -14,16 +14,15 @@ find_package(HDF5) + if(HDF5_FOUND) + + find_package(FLANN) +- include_directories(${FLANN_INCLUDE_DIRS}) + + include_directories(${HDF5_INCLUDE_DIR}) + + add_executable(build_tree build_tree.cpp) + target_link_libraries(build_tree ${PCL_LIBRARIES} ${Boost_LIBRARIES} +- ${FLANN_LIBRARIES} ${HDF5_hdf5_LIBRARY}) ++ flann::flann_cpp_s ${HDF5_hdf5_LIBRARY}) + + add_executable(nearest_neighbors nearest_neighbors.cpp) +- target_link_libraries(nearest_neighbors ${PCL_LIBRARIES} +- ${Boost_LIBRARIES} ${FLANN_LIBRARIES} ${HDF5_hdf5_LIBRARY} ++ target_link_libraries(nearest_neighbors ${PCL_LIBRARIES} ++ ${Boost_LIBRARIES} flann::flann_cpp_s ${HDF5_hdf5_LIBRARY} + ) + endif(HDF5_FOUND) +diff --git a/kdtree/CMakeLists.txt b/kdtree/CMakeLists.txt +index 311dffc..1a7712f 100755 +--- a/kdtree/CMakeLists.txt ++++ b/kdtree/CMakeLists.txt +@@ -9,18 +9,18 @@ PCL_SUBSYS_DEPEND(build "${SUBSYS_NAME}" DEPS ${SUBSYS_DEPS} EXT_DEPS flann) + PCL_ADD_DOC("${SUBSYS_NAME}") + + if(build) +- set(srcs ++ set(srcs + src/kdtree_flann.cpp + ) + +- set(incs ++ set(incs + "include/pcl/${SUBSYS_NAME}/kdtree.h" + "include/pcl/${SUBSYS_NAME}/io.h" + "include/pcl/${SUBSYS_NAME}/flann.h" + "include/pcl/${SUBSYS_NAME}/kdtree_flann.h" + ) + +- set(impl_incs ++ set(impl_incs + "include/pcl/${SUBSYS_NAME}/impl/io.hpp" + "include/pcl/${SUBSYS_NAME}/impl/kdtree_flann.hpp" + ) +@@ -28,7 +28,7 @@ if(build) + set(LIB_NAME "pcl_${SUBSYS_NAME}") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") + PCL_ADD_LIBRARY("${LIB_NAME}" "${SUBSYS_NAME}" ${srcs} ${incs} ${impl_incs}) +- target_link_libraries("${LIB_NAME}" pcl_common ${FLANN_LIBRARIES}) ++ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp_s) + set(EXT_DEPS flann) + PCL_MAKE_PKGCONFIG("${LIB_NAME}" "${SUBSYS_NAME}" "${SUBSYS_DESC}" + "${SUBSYS_DEPS}" "${EXT_DEPS}" "" "" "") +@@ -38,4 +38,3 @@ if(build) + PCL_ADD_INCLUDES("${SUBSYS_NAME}" "${SUBSYS_NAME}/impl" ${impl_incs}) + + endif(build) +- +diff --git a/search/CMakeLists.txt b/search/CMakeLists.txt +index cd82a0e..1d15241 100755 +--- a/search/CMakeLists.txt ++++ b/search/CMakeLists.txt +@@ -38,7 +38,7 @@ if(build) + set(LIB_NAME "pcl_${SUBSYS_NAME}") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") + PCL_ADD_LIBRARY("${LIB_NAME}" "${SUBSYS_NAME}" ${srcs} ${incs} ${impl_incs}) +- target_link_libraries("${LIB_NAME}" pcl_common ${FLANN_LIBRARIES} pcl_octree pcl_kdtree) ++ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp_s pcl_octree pcl_kdtree) + list(APPEND EXT_DEPS flann) + PCL_MAKE_PKGCONFIG("${LIB_NAME}" "${SUBSYS_NAME}" "${SUBSYS_DESC}" "${SUBSYS_DEPS}" "" "" "" "") + +@@ -46,4 +46,3 @@ if(build) + PCL_ADD_INCLUDES("${SUBSYS_NAME}" "${SUBSYS_NAME}/impl" ${impl_incs}) + + endif(build) +- +diff --git a/test/features/CMakeLists.txt b/test/features/CMakeLists.txt +index cedb0cb..4b37c73 100755 +--- a/test/features/CMakeLists.txt ++++ b/test/features/CMakeLists.txt +@@ -81,14 +81,14 @@ if (build) + PCL_ADD_TEST(feature_flare_estimation test_flare_estimation + FILES test_flare_estimation.cpp + LINK_WITH pcl_gtest pcl_features pcl_io +- ARGUMENTS "${PCL_SOURCE_DIR}/test/bun0.pcd") ++ ARGUMENTS "${PCL_SOURCE_DIR}/test/bun0.pcd") + PCL_ADD_TEST(feature_shot_lrf_estimation test_shot_lrf_estimation + FILES test_shot_lrf_estimation.cpp + LINK_WITH pcl_gtest pcl_features pcl_io + ARGUMENTS "${PCL_SOURCE_DIR}/test/bun0.pcd") + PCL_ADD_TEST(features_narf test_narf + FILES test_narf.cpp +- LINK_WITH pcl_gtest pcl_features ${FLANN_LIBRARIES}) ++ LINK_WITH pcl_gtest pcl_features flann::flann_cpp_s) + PCL_ADD_TEST(a_ii_normals_test test_ii_normals + FILES test_ii_normals.cpp + LINK_WITH pcl_gtest pcl_io pcl_features From c88add0907f6d28e3c2158bd0458baa9ed45149c Mon Sep 17 00:00:00 2001 From: Stefano Sinigardi Date: Sat, 18 May 2019 23:09:15 +0200 Subject: [PATCH 7/8] [pcl] fix patch for flann targets --- ports/pcl/use_flann_targets.patch | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ports/pcl/use_flann_targets.patch b/ports/pcl/use_flann_targets.patch index c0e96f7fd8302d..7e6289267a7eb5 100644 --- a/ports/pcl/use_flann_targets.patch +++ b/ports/pcl/use_flann_targets.patch @@ -38,7 +38,7 @@ index 6fadb59..6a9c5b7 100755 # Add 3rd party libraries, as user code might include our .HPP implementations -list(APPEND PCL_LIBRARIES ${BOOST_LIBRARIES} ${QHULL_LIBRARIES} ${OPENNI_LIBRARIES} ${OPENNI2_LIBRARIES} ${ENSENSO_LIBRARIES} ${davidSDK_LIBRARIES} ${DSSDK_LIBRARIES} ${RSSDK_LIBRARIES} ${FLANN_LIBRARIES} ${VTK_LIBRARIES}) -+list(APPEND PCL_LIBRARIES ${BOOST_LIBRARIES} ${QHULL_LIBRARIES} ${OPENNI_LIBRARIES} ${OPENNI2_LIBRARIES} ${ENSENSO_LIBRARIES} ${davidSDK_LIBRARIES} ${DSSDK_LIBRARIES} ${RSSDK_LIBRARIES} flann::flann_cpp_s ${VTK_LIBRARIES}) ++list(APPEND PCL_LIBRARIES ${BOOST_LIBRARIES} ${QHULL_LIBRARIES} ${OPENNI_LIBRARIES} ${OPENNI2_LIBRARIES} ${ENSENSO_LIBRARIES} ${davidSDK_LIBRARIES} ${DSSDK_LIBRARIES} ${RSSDK_LIBRARIES} flann::flann_cpp ${VTK_LIBRARIES}) find_package_handle_standard_args(PCL DEFAULT_MSG PCL_LIBRARIES PCL_INCLUDE_DIRS) mark_as_advanced(PCL_LIBRARIES PCL_INCLUDE_DIRS PCL_LIBRARY_DIRS) @@ -65,13 +65,13 @@ index 9693792..dcd4373 100755 add_executable(build_tree build_tree.cpp) target_link_libraries(build_tree ${PCL_LIBRARIES} ${Boost_LIBRARIES} - ${FLANN_LIBRARIES} ${HDF5_hdf5_LIBRARY}) -+ flann::flann_cpp_s ${HDF5_hdf5_LIBRARY}) ++ flann::flann_cpp ${HDF5_hdf5_LIBRARY}) add_executable(nearest_neighbors nearest_neighbors.cpp) - target_link_libraries(nearest_neighbors ${PCL_LIBRARIES} - ${Boost_LIBRARIES} ${FLANN_LIBRARIES} ${HDF5_hdf5_LIBRARY} + target_link_libraries(nearest_neighbors ${PCL_LIBRARIES} -+ ${Boost_LIBRARIES} flann::flann_cpp_s ${HDF5_hdf5_LIBRARY} ++ ${Boost_LIBRARIES} flann::flann_cpp ${HDF5_hdf5_LIBRARY} ) endif(HDF5_FOUND) diff --git a/kdtree/CMakeLists.txt b/kdtree/CMakeLists.txt @@ -105,7 +105,7 @@ index 311dffc..1a7712f 100755 include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") PCL_ADD_LIBRARY("${LIB_NAME}" "${SUBSYS_NAME}" ${srcs} ${incs} ${impl_incs}) - target_link_libraries("${LIB_NAME}" pcl_common ${FLANN_LIBRARIES}) -+ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp_s) ++ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp) set(EXT_DEPS flann) PCL_MAKE_PKGCONFIG("${LIB_NAME}" "${SUBSYS_NAME}" "${SUBSYS_DESC}" "${SUBSYS_DEPS}" "${EXT_DEPS}" "" "" "") @@ -123,7 +123,7 @@ index cd82a0e..1d15241 100755 include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") PCL_ADD_LIBRARY("${LIB_NAME}" "${SUBSYS_NAME}" ${srcs} ${incs} ${impl_incs}) - target_link_libraries("${LIB_NAME}" pcl_common ${FLANN_LIBRARIES} pcl_octree pcl_kdtree) -+ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp_s pcl_octree pcl_kdtree) ++ target_link_libraries("${LIB_NAME}" pcl_common flann::flann_cpp pcl_octree pcl_kdtree) list(APPEND EXT_DEPS flann) PCL_MAKE_PKGCONFIG("${LIB_NAME}" "${SUBSYS_NAME}" "${SUBSYS_DESC}" "${SUBSYS_DEPS}" "" "" "" "") @@ -149,7 +149,7 @@ index cedb0cb..4b37c73 100755 PCL_ADD_TEST(features_narf test_narf FILES test_narf.cpp - LINK_WITH pcl_gtest pcl_features ${FLANN_LIBRARIES}) -+ LINK_WITH pcl_gtest pcl_features flann::flann_cpp_s) ++ LINK_WITH pcl_gtest pcl_features flann::flann_cpp) PCL_ADD_TEST(a_ii_normals_test test_ii_normals FILES test_ii_normals.cpp LINK_WITH pcl_gtest pcl_io pcl_features From 5a96420f03667402a1182af3af25ad5b28b20e9e Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Sat, 18 May 2019 19:12:36 -0700 Subject: [PATCH 8/8] [pcl] Bump CONTROL version --- ports/pcl/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/pcl/CONTROL b/ports/pcl/CONTROL index 0c28ee654987ac..3e3884c4842623 100644 --- a/ports/pcl/CONTROL +++ b/ports/pcl/CONTROL @@ -1,5 +1,5 @@ Source: pcl -Version: 1.9.1-2 +Version: 1.9.1-3 Description: Point Cloud Library (PCL) is open source library for 2D/3D image and point cloud processing. Build-Depends: eigen3, flann, qhull, vtk, libpng, boost-system, boost-filesystem, boost-thread, boost-date-time, boost-iostreams, boost-random, boost-foreach, boost-dynamic-bitset, boost-property-map, boost-graph, boost-multi-array, boost-signals2, boost-ptr-container, boost-uuid, boost-interprocess, boost-asio