From 40ec83de63893bf64d2eb28ffcfc11dd3e800d03 Mon Sep 17 00:00:00 2001 From: Pavel Kisliak Date: Mon, 5 Sep 2022 11:43:25 +0300 Subject: [PATCH 1/2] fix: build with Ninja generator --- src/CMakeLists.txt | 22 ++++++---------------- src/modules/crc32c.cmake | 28 +++++++++++++++++++++------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5cb3f5d..b31978e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -206,19 +206,7 @@ if ( ENABLE_STATIC ) set(CRC32C_LIBRARY Crc32c::crc32c) set(CRC32C_FROM_VCPKG ON) else() - include(crc32c) - # include libcrc32 - if(CRC32CLIB_DIR) - if(NOT WIN32) - include(GNUInstallDirs) - - include_directories(${CRC32CLIB_DIR}/include) - set(CRC32C_LIBRARY ${CRC32CLIB_DIR}/${CMAKE_INSTALL_LIBDIR}/libcrc32c.a) - else() - include_directories(${CRC32CLIB_DIR}/include) - set(CRC32C_LIBRARY ${CRC32CLIB_DIR}/lib/crc32c.lib) - endif() - endif() + include(crc32c) endif() # includes @@ -440,6 +428,9 @@ endif() # build shared library add_library (sdapi SHARED ${SOURCES} ${VersionFilesOutputVariable}) +if(NOT CRC32C_FROM_VCPKG) + add_dependencies(sdapi crc32c) +endif() if(NOT WIN32) target_link_libraries(sdapi PRIVATE ${CURL_LIBRARY} @@ -585,10 +576,9 @@ endif() # build static library add_library (sdapi_static STATIC ${SOURCES}) -if(NOT CRC32C_FROM_VCPKG) - add_dependencies( sdapi crc32c ) +if (NOT CRC32C_FROM_VCPKG) + add_dependencies(sdapi_static crc32c) endif() - if(NOT WIN32) set_target_properties(sdapi_static PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/src/modules/crc32c.cmake b/src/modules/crc32c.cmake index 93a3df4..9bbfc2f 100644 --- a/src/modules/crc32c.cmake +++ b/src/modules/crc32c.cmake @@ -17,21 +17,33 @@ if( NOT CRC32CLIB_DIR ) include(ExternalProject) - + include(GNUInstallDirs) + if(NOT WIN32) + SET(CRC32C_LIBRARY "${CMAKE_BINARY_DIR}/crc32c/${CMAKE_INSTALL_LIBDIR}/libcrc32c.a") + ExternalProject_add( crc32c PREFIX "${CMAKE_BINARY_DIR}/crc32c" URL "${CMAKE_SOURCE_DIR}/third-party/crc32c" PATCH_COMMAND patch --binary -N -p0 -i "${CMAKE_SOURCE_DIR}/third-party/crc32c_reloc_static.patch" CMAKE_ARGS -DCRC32C_BUILD_TESTS=OFF -DCRC32C_BUILD_BENCHMARKS=OFF -DCRC32C_USE_GLOG=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + BUILD_BYPRODUCTS ${CRC32C_LIBRARY} ) else() - ExternalProject_add( crc32c - PREFIX "${CMAKE_BINARY_DIR}/crc32c" - URL "${CMAKE_SOURCE_DIR}/third-party/crc32c" - PATCH_COMMAND patch -N -p0 -i "${CMAKE_SOURCE_DIR}/third-party/crc32c_reloc_static.patch" - CMAKE_ARGS -DCRC32C_BUILD_TESTS=OFF -DCRC32C_BUILD_BENCHMARKS=OFF -DCRC32C_USE_GLOG=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - ) + set(CRC32C_LIBRARY "${CMAKE_BINARY_DIR}/crc32c/${CMAKE_INSTALL_LIBDIR}/crc32c.lib") + + find_program(PATCH_EXE NAMES patch.exe PATHS "c:/Program Files/Git/usr/bin/" "c:/MinGW/git/usr/bin/") + if(PATCH_EXE) + ExternalProject_add( crc32c + PREFIX "${CMAKE_BINARY_DIR}/crc32c" + URL "${CMAKE_SOURCE_DIR}/third-party/crc32c" + PATCH_COMMAND ${PATCH_EXE} -N -p0 -i "${CMAKE_SOURCE_DIR}/third-party/crc32c_reloc_static.patch" + CMAKE_ARGS -DCRC32C_BUILD_TESTS=OFF -DCRC32C_BUILD_BENCHMARKS=OFF -DCRC32C_USE_GLOG=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + BUILD_BYPRODUCTS ${CRC32C_LIBRARY} + ) + else() + message("Can't find 'patch.exe' program") + endif() endif() ExternalProject_Get_Property( crc32c SOURCE_DIR INSTALL_DIR ) @@ -39,6 +51,8 @@ if( NOT CRC32CLIB_DIR ) message( STATUS "Install directory of crc32c ${INSTALL_DIR}" ) set( CRC32CLIB_DIR ${INSTALL_DIR} ) + include_directories(${CRC32CLIB_DIR}/include) + else() add_custom_target( crc32c ) endif() -- GitLab From 1320b5e43b3e71221cba0a8544bec5a1ee12da9d Mon Sep 17 00:00:00 2001 From: Pavel Kisliak Date: Mon, 5 Sep 2022 15:56:59 +0300 Subject: [PATCH 2/2] fix: add condition in the dependency declaration for 'Crc32c' lib (use from VCPKG or from internal build) --- src/test/seismic-store-lib/CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/test/seismic-store-lib/CMakeLists.txt b/src/test/seismic-store-lib/CMakeLists.txt index dd79a29..828cc7b 100644 --- a/src/test/seismic-store-lib/CMakeLists.txt +++ b/src/test/seismic-store-lib/CMakeLists.txt @@ -20,7 +20,9 @@ target_link_libraries(http_request ${CURL_LIBRARY} ${CMAKE_DL_LIBS}) # GCS ACCESSOR TEST add_executable(gcs_accessor gcs_accessor.cc ../shared/utils.cc) -add_dependencies(gcs_accessor crc32c) +if (NOT CRC32C_FROM_VCPKG) + add_dependencies(gcs_accessor crc32c) +endif() target_include_directories(gcs_accessor PRIVATE ${CRC32CLIB_DIR}/include) target_link_libraries(gcs_accessor ${CURL_LIBRARY} ${OPENSSL_LIBRARY} ${CRC32C_LIBRARY} ${CMAKE_DL_LIBS}) @@ -168,13 +170,17 @@ endif(GCS_PROVIDER_ENABLED) # GCS XML 2 JSON add_executable(gcs_xml_vs_json gcs_xml_vs_json.cc ../shared/utils.cc) -add_dependencies(gcs_xml_vs_json crc32c) +if (NOT CRC32C_FROM_VCPKG) + add_dependencies(gcs_xml_vs_json crc32c) +endif() target_include_directories(gcs_xml_vs_json PRIVATE ${CRC32CLIB_DIR}/include) target_link_libraries(gcs_xml_vs_json ${CURL_LIBRARY} ${OPENSSL_LIBRARY} ${CRC32C_LIBRARY} ${CMAKE_DL_LIBS}) # GCS BATCH MULTITHREAD add_executable(gcs_batch_multithread gcs_batch_multithread.cc ../shared/utils.cc) -add_dependencies(gcs_batch_multithread crc32c) +if (NOT CRC32C_FROM_VCPKG) + add_dependencies(gcs_batch_multithread crc32c) +endif() if(NOT WIN32) target_link_libraries(gcs_batch_multithread ${CURL_LIBRARY} ${OPENSSL_LIBRARY} ${CRC32C_LIBRARY} ${CMAKE_DL_LIBS} pthread) else() -- GitLab