diff --git a/.jenkins_windows b/.jenkins_windows deleted file mode 100644 index fd72f057..00000000 --- a/.jenkins_windows +++ /dev/null @@ -1,39 +0,0 @@ -#!groovy - -pipeline { - agent any - - environment { - REPERTORY_TEST_DIR = "C:\\.ci\\cfg" - } - - options { - disableConcurrentBuilds() - retry(2) - } - - stages { - stage('clean') { - steps { - bat 'del /q build\\Release\\librepertory.lib || exit 0' - bat 'del /q build\\Release\\unittests.exe || exit 0' - bat 'del /q build\\Release\\repertory.exe || exit 0' - } - } - - stage('configure') { - steps { - cmake arguments: '.. -DCMAKE_BUILD_TYPE=Release -DREPERTORY_ENABLE_S3=ON', installation: 'InSearchPath', workingDir: 'build' - } - } - - stage('build') { - steps { - retry(2) { - sleep time: 5, unit: 'SECONDS' - cmake arguments: '--build . --target ALL_BUILD --config Release -j 4', installation: 'InSearchPath', workingDir: 'build' - } - } - } - } -} diff --git a/CHANGELOG.md b/CHANGELOG.md index 97078cbd..fbf7fd59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Changes from v2.0.0-rc +* Removed MSVC compilation support (MinGW-64 should be used) * Upgraded `boost` to v1.83.0 * Upgraded `curl` to v8.4.0 * Upgraded `libsodium` to v1.0.19 diff --git a/CMakeLists.txt b/CMakeLists.txt index 632e0e07..ba8b2e93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ if (UNIX) endif() endif() -if (MSVC OR MINGW) +if (MINGW) set(WINFSP_LIBRARY_BASENAME winfsp-x64) include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/3rd_party/winfsp-${WINFSP_VERSION}/inc) @@ -163,17 +163,7 @@ elseif (MACOS) "-framework SystemConfiguration" ) elseif (MSVC) - set(OPENSSL_USE_STATIC_LIBS TRUE) - if (NOT OPENSSL_ROOT_DIR) - set (OPENSSL_ROOT_DIR "$ENV{USERPROFILE}\\scoop\\apps\\openssl\\current") - endif() - find_package(OpenSSL 1.1.1 REQUIRED) - set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) - set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING) - - if (NOT CMAKE_GENERATOR_LOWER STREQUAL "nmake makefiles") - set(REPERTORY_OUTPUT_DIR ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}) - endif() + message(FATAL_ERROR "MSVC is currently not supported [MinGW-64 should be used]") endif() if (MINGW) @@ -183,7 +173,7 @@ if (MINGW) ) endif() -if (MSVC OR MINGW) +if (MINGW) set(REPERTORY_VER_FILEVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_FILEVERSION_STR ${REPERTORY_MAJOR}.${REPERTORY_MINOR}.${REPERTORY_REV}.${REPERTORY_RELEASE_NUM}) set(REPERTORY_VER_PRODUCTVERSION ${REPERTORY_MAJOR},${REPERTORY_MINOR},${REPERTORY_REV},${REPERTORY_RELEASE_NUM}) @@ -195,10 +185,6 @@ if (MSVC OR MINGW) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc @ONLY) set(WINDOWS_VERSION_RC ${CMAKE_CURRENT_SOURCE_DIR}/src/version.rc) - if (MSVC) - set(LIB_EXT .lib) - endif() - set(REPERTORY_LINK_LIBRARIES ${REPERTORY_LINK_LIBRARIES} advapi32${LIB_EXT} diff --git a/cmake/boost.cmake b/cmake/boost.cmake index 6d8c6bf4..c7acfc51 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -87,55 +87,6 @@ if (UNIX OR MINGW) libboost_serialization${BOOST_LIB_EXTRA}.a libboost_thread${BOOST_LIB_EXTRA}.a ) -elseif(MSVC) - set (BOOST_COMMON_ARGS - --with-date_time - --with-regex - --with-serialization - --with-system - --with-filesystem - --prefix=${EXTERNAL_BUILD_ROOT} - runtime-link=shared - threading=multi - address-model=${BOOST_ADDRESS_MODEL} - architecture=x86 - toolset=${BOOST_MSVC_TOOLSET} - variant=${CMAKE_BUILD_TYPE_LOWER} - -sZLIB_BINARY=zlibstatic${DEBUG_EXTRA} - -sZLIB_LIBPATH="${EXTERNAL_BUILD_ROOT}/lib" - -sZLIB_INCLUDE="${EXTERNAL_BUILD_ROOT}/include" - ) - - ExternalProject_Add(boost_project - DOWNLOAD_NO_PROGRESS 1 - URL ${BOOST_DOWNLOAD_URL} - PREFIX ${BOOST_BUILD_ROOT} - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND - bootstrap.bat - --with-date_time - --with-regex - --with-system - --with-serialization - --with-filesystem - BUILD_COMMAND - b2.exe - ${BOOST_COMMON_ARGS} - INSTALL_COMMAND - b2.exe - install - ${BOOST_COMMON_ARGS} - ) - - set(BOOST_ROOT ${BOOST_BUILD_ROOT}/src/boost_project) - set(Boost_INCLUDE_DIR ${EXTERNAL_BUILD_ROOT}/include/boost-${BOOST_VERSION_DLL}) - set(Boost_LIBRARIES - ${EXTERNAL_BUILD_ROOT}/lib/libboost_date_time-vc${BOOST_MSVC_TOOLSET_DLL}-mt-${BOOST_DEBUG_EXTRA}${BOOST_DLL_ARCH}-${BOOST_VERSION_DLL}.lib - ${EXTERNAL_BUILD_ROOT}/lib/libboost_filesystem-vc${BOOST_MSVC_TOOLSET_DLL}-mt-${BOOST_DEBUG_EXTRA}${BOOST_DLL_ARCH}-${BOOST_VERSION_DLL}.lib - ${EXTERNAL_BUILD_ROOT}/lib/libboost_regex-vc${BOOST_MSVC_TOOLSET_DLL}-mt-${BOOST_DEBUG_EXTRA}${BOOST_DLL_ARCH}-${BOOST_VERSION_DLL}.lib - ${EXTERNAL_BUILD_ROOT}/lib/libboost_serialization-vc${BOOST_MSVC_TOOLSET_DLL}-mt-${BOOST_DEBUG_EXTRA}${BOOST_DLL_ARCH}-${BOOST_VERSION_DLL}.lib - ${EXTERNAL_BUILD_ROOT}/lib/libboost_system-vc${BOOST_MSVC_TOOLSET_DLL}-mt-${BOOST_DEBUG_EXTRA}${BOOST_DLL_ARCH}-${BOOST_VERSION_DLL}.lib - ) endif() add_dependencies(boost_project zlib_project) diff --git a/cmake/curl.cmake b/cmake/curl.cmake index f7f73d08..240c920f 100644 --- a/cmake/curl.cmake +++ b/cmake/curl.cmake @@ -54,11 +54,8 @@ ExternalProject_Add(curl_project set(REPERTORY_DEFINITIONS ${REPERTORY_DEFINITIONS} -DCURL_STATICLIB=ON -DCURL_DISABLE_LDAP=ON) -if (MSVC) - set(CURL_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libcurl${DEBUG_EXTRA2}${CMAKE_STATIC_LIBRARY_SUFFIX}) -else() - set(CURL_LIBRARIES libcurl${DEBUG_EXTRA2}${CMAKE_STATIC_LIBRARY_SUFFIX}) - add_dependencies(curl_project openssl_project) -endif() - -add_dependencies(curl_project zlib_project) +set(CURL_LIBRARIES libcurl${DEBUG_EXTRA2}${CMAKE_STATIC_LIBRARY_SUFFIX}) +add_dependencies(curl_project + openssl_project + zlib_project +) diff --git a/cmake/flags.cmake b/cmake/flags.cmake index bc875368..3ca0afa1 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -73,41 +73,6 @@ if (UNIX OR MINGW) ${REPERTORY_COMMON_FLAG_LIST} -std=c++${CMAKE_CXX_STANDARD} ) -elseif (MSVC) - set(REPERTORY_C_FLAGS_LIST - ${REPERTORY_C_FLAGS_LIST} - /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING - /DNOMINMAX - /bigobj - /Zi - ) - - set(REPERTORY_CXX_FLAGS_LIST - ${REPERTORY_CXX_FLAGS_LIST} - /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING - /DNOMINMAX - /bigobj - /Zi - ) - - if (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(REPERTORY_C_FLAGS_LIST - ${REPERTORY_C_FLAGS_LIST} - /DEBUG - ) - - set(REPERTORY_CXX_FLAGS_LIST - ${REPERTORY_CXX_FLAGS_LIST} - /DEBUG - ) - - set(REPERTORY_SHARED_LINKER_FLAGS_LIST - ${REPERTORY_SHARED_LINKER_FLAGS_LIST} - /DEBUG - /OPT:REF - /OPT:ICF - ) - endif() endif() list(JOIN REPERTORY_CXX_FLAGS_LIST " " REPERTORY_CXX_FLAGS_LIST) diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake index eec9b11d..2cdbce53 100644 --- a/cmake/helpers.cmake +++ b/cmake/helpers.cmake @@ -1,5 +1,5 @@ function(copy_support_files target) - if (MSVC OR MINGW) + if (MINGW) add_custom_command( TARGET ${target} POST_BUILD diff --git a/cmake/librepertory.cmake b/cmake/librepertory.cmake index 7bf3d800..beca34bc 100644 --- a/cmake/librepertory.cmake +++ b/cmake/librepertory.cmake @@ -16,6 +16,7 @@ add_dependencies(librepertory boost_project curl_project libsodium_project + openssl_project rocksdb_project zlib_project ) @@ -23,7 +24,3 @@ add_dependencies(librepertory if (LINUX) add_dependencies(librepertory libuuid_project) endif() - -if (NOT WIN32) - add_dependencies(librepertory openssl_project) -endif() diff --git a/cmake/libsodium.cmake b/cmake/libsodium.cmake index 80ced833..badc9926 100644 --- a/cmake/libsodium.cmake +++ b/cmake/libsodium.cmake @@ -2,48 +2,26 @@ set(LIBSODIUM_PROJECT_NAME libsodium_${LIBSODIUM_VERSION}) set(LIBSODIUM_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${LIBSODIUM_PROJECT_NAME}) set(LIBSODIUM_BUILD_TYPE ${EXTERNAL_BUILD_TYPE}) -if (MSVC) - ExternalProject_Add(libsodium_project - DOWNLOAD_NO_PROGRESS 1 - PREFIX ${LIBSODIUM_BUILD_ROOT} - BUILD_IN_SOURCE 1 - URL https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VERSION}-RELEASE/libsodium-${LIBSODIUM_VERSION}.tar.gz - CONFIGURE_COMMAND echo "Skipping Configure" - BUILD_COMMAND cd builds\\msvc\\vs2019 && msbuild - libsodium.sln - /p:Configuration=Static${LIBSODIUM_BUILD_TYPE} - /p:Platform=x64 - /t:libsodium - INSTALL_COMMAND echo "Skipping Install" - ) - link_directories(PRIVATE ${LIBSODIUM_BUILD_ROOT}/src/libsodium_project/bin/x64/${LIBSODIUM_BUILD_TYPE}/v142/static) - set(LIBSODIUM_LIBRARIES libsodium.lib) - add_definitions(-DSODIUM_STATIC) - include_directories(SYSTEM - ${LIBSODIUM_BUILD_ROOT}/src/libsodium_project/src/libsodium/include - ${LIBSODIUM_BUILD_ROOT}/src/libsodium_project/builds/msvc - ) -else() - if (MINGW) - set(LIBSODIUM_HOST --host=x86_64-w64-mingw32) - endif() - - ExternalProject_Add(libsodium_project - DOWNLOAD_NO_PROGRESS 1 - PREFIX ${LIBSODIUM_BUILD_ROOT} - BUILD_IN_SOURCE 1 - URL https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VERSION}-RELEASE/libsodium-${LIBSODIUM_VERSION}.tar.gz - CONFIGURE_COMMAND - ./configure - ${LIBSODIUM_HOST} - --prefix=${EXTERNAL_BUILD_ROOT} - --enable-shared=no - --enable-static=yes - --disable-asm - BUILD_COMMAND make - INSTALL_COMMAND make install - ) - set(LIBSODIUM_LIBRARIES libsodium.a) +if (MINGW) + set(LIBSODIUM_HOST --host=x86_64-w64-mingw32) endif() +ExternalProject_Add(libsodium_project + DOWNLOAD_NO_PROGRESS 1 + PREFIX ${LIBSODIUM_BUILD_ROOT} + BUILD_IN_SOURCE 1 + URL https://github.com/jedisct1/libsodium/releases/download/${LIBSODIUM_VERSION}-RELEASE/libsodium-${LIBSODIUM_VERSION}.tar.gz + CONFIGURE_COMMAND + ./configure + ${LIBSODIUM_HOST} + --prefix=${EXTERNAL_BUILD_ROOT} + --enable-shared=no + --enable-static=yes + --disable-asm + BUILD_COMMAND make + INSTALL_COMMAND make install +) + +set(LIBSODIUM_LIBRARIES libsodium.a) + add_dependencies(libsodium_project zlib_project) diff --git a/cmake/openssl.cmake b/cmake/openssl.cmake index 0fc59862..38461461 100644 --- a/cmake/openssl.cmake +++ b/cmake/openssl.cmake @@ -1,45 +1,43 @@ -if (MACOS OR LINUX OR MINGW) - if (IS_CLANG_COMPILER) - set(OPENSSL_COMPILE_TYPE_EXTRA -clang) - endif() - - if (MACOS) - set(OPENSSL_COMPILE_TYPE darwin64-x86_64-cc) - elseif(IS_ARM64) - set(OPENSSL_COMPILE_TYPE linux-aarch64${OPENSSL_COMPILE_TYPE_EXTRA}) - elseif(MINGW) - if (CMAKE_TOOLCHAIN_FILE) - set(OPENSSL_COMPILE_TYPE --cross-compile-prefix=x86_64-w64-mingw32- mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) - else() - set(OPENSSL_COMPILE_TYPE mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) - endif() - else() - set(OPENSSL_COMPILE_TYPE linux-x86_64${OPENSSL_COMPILE_TYPE_EXTRA}) - endif() - - set(OPENSSL_PROJECT_NAME openssl_${OPENSSL_VERSION}) - set(OPENSSL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${OPENSSL_PROJECT_NAME}) - ExternalProject_Add(openssl_project - DOWNLOAD_NO_PROGRESS 1 - URL https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_${OPENSSL_VERSION}.tar.gz - PREFIX ${OPENSSL_BUILD_ROOT} - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND ./Configure no-shared ${OPENSSL_COMPILE_TYPE} --openssldir=${EXTERNAL_BUILD_ROOT}/ssl --prefix=${EXTERNAL_BUILD_ROOT} - BUILD_COMMAND make -j1 - INSTALL_COMMAND make install - ) - - if (MACOS) - set(OPENSSL_LIBRARIES - ${EXTERNAL_BUILD_ROOT}/lib/libssl.a - ${EXTERNAL_BUILD_ROOT}/lib/libcrypto.a - ) - else() - set(OPENSSL_LIBRARIES - libssl.a - libcrypto.a - ) - endif() - - add_dependencies(openssl_project zlib_project) +if (IS_CLANG_COMPILER) + set(OPENSSL_COMPILE_TYPE_EXTRA -clang) endif() + +if (MACOS) + set(OPENSSL_COMPILE_TYPE darwin64-x86_64-cc) +elseif(IS_ARM64) + set(OPENSSL_COMPILE_TYPE linux-aarch64${OPENSSL_COMPILE_TYPE_EXTRA}) +elseif(MINGW) + if (CMAKE_TOOLCHAIN_FILE) + set(OPENSSL_COMPILE_TYPE --cross-compile-prefix=x86_64-w64-mingw32- mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) + else() + set(OPENSSL_COMPILE_TYPE mingw64${OPENSSL_COMPILE_TYPE_EXTRA}) + endif() +else() + set(OPENSSL_COMPILE_TYPE linux-x86_64${OPENSSL_COMPILE_TYPE_EXTRA}) +endif() + +set(OPENSSL_PROJECT_NAME openssl_${OPENSSL_VERSION}) +set(OPENSSL_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${OPENSSL_PROJECT_NAME}) +ExternalProject_Add(openssl_project + DOWNLOAD_NO_PROGRESS 1 + URL https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_${OPENSSL_VERSION}.tar.gz + PREFIX ${OPENSSL_BUILD_ROOT} + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND ./Configure no-shared ${OPENSSL_COMPILE_TYPE} --openssldir=${EXTERNAL_BUILD_ROOT}/ssl --prefix=${EXTERNAL_BUILD_ROOT} + BUILD_COMMAND make -j1 + INSTALL_COMMAND make install +) + +if (MACOS) + set(OPENSSL_LIBRARIES + ${EXTERNAL_BUILD_ROOT}/lib/libssl.a + ${EXTERNAL_BUILD_ROOT}/lib/libcrypto.a + ) +else() + set(OPENSSL_LIBRARIES + libssl.a + libcrypto.a + ) +endif() + +add_dependencies(openssl_project zlib_project) diff --git a/cmake/rocksdb.cmake b/cmake/rocksdb.cmake index d6ef6bea..33afe290 100644 --- a/cmake/rocksdb.cmake +++ b/cmake/rocksdb.cmake @@ -26,58 +26,40 @@ set(ROCKSDB_CMAKE_ARGS -DWITH_TOOLS=OFF ) -if(MSVC) +if (MINGW) + if (CMAKE_TOOLCHAIN_FILE) + set(ROCKSDB_CMAKE_ARGS + ${ROCKSDB_CMAKE_ARGS} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + ) + endif() + ExternalProject_Add(rocksdb_project DOWNLOAD_NO_PROGRESS 1 URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz PREFIX ${ROCKSDB_BUILD_ROOT} - CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} + CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} -DWITH_GFLAGS=OFF INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." ) - set(ROCKSDB_INCLUDE_DIRS ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project/include) - - if (CMAKE_GENERATOR_LOWER STREQUAL "nmake makefiles") - set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/rocksdb.lib) - else () - set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/${CMAKE_BUILD_TYPE}/rocksdb.lib) - endif () + set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/librocksdb.a) + include_directories(SYSTEM ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project/include) else() - if (MINGW) - if (CMAKE_TOOLCHAIN_FILE) - set(ROCKSDB_CMAKE_ARGS - ${ROCKSDB_CMAKE_ARGS} - -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - ) - endif() + ExternalProject_Add(rocksdb_project + DOWNLOAD_NO_PROGRESS 1 + URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz + PREFIX ${ROCKSDB_BUILD_ROOT} + CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} -DWITH_GFLAGS=OFF + ) - ExternalProject_Add(rocksdb_project - DOWNLOAD_NO_PROGRESS 1 - URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz - PREFIX ${ROCKSDB_BUILD_ROOT} - CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} -DWITH_GFLAGS=OFF - INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." - ) - - set(ROCKSDB_LIBRARIES ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project-build/librocksdb.a) - include_directories(SYSTEM ${ROCKSDB_BUILD_ROOT}/src/rocksdb_project/include) + if (MACOS) + set(ROCKSDB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/librocksdb.a) else() - ExternalProject_Add(rocksdb_project - DOWNLOAD_NO_PROGRESS 1 - URL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz - PREFIX ${ROCKSDB_BUILD_ROOT} - CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} -DWITH_GFLAGS=OFF - ) - - if (MACOS) - set(ROCKSDB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/librocksdb.a) - else() - set(ROCKSDB_LIBRARIES librocksdb.a) - endif() + set(ROCKSDB_LIBRARIES librocksdb.a) endif() endif() -if (MSVC OR LINUX OR MINGW) +if (LINUX OR MINGW) add_dependencies(rocksdb_project curl_project) endif() diff --git a/cmake/unittests.cmake b/cmake/unittests.cmake index adf9dcea..00a24ce9 100644 --- a/cmake/unittests.cmake +++ b/cmake/unittests.cmake @@ -4,58 +4,33 @@ if (REPERTORY_ENABLE_TESTING) set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION}) set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME}) - if (MSVC) - ExternalProject_Add(gtest_project - DOWNLOAD_NO_PROGRESS 1 - URL https://github.com/google/googletest/archive/refs/tags/${GTEST_VERSION}.tar.gz - PREFIX ${GTEST_BUILD_ROOT} - CMAKE_ARGS - -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} - -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} - -Dgtest_force_shared_crt=OFF - -DBUILD_SHARED_LIBS=ON - -DCMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING - INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." - ) + if (MACOS) + set(GTEST_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") + set(GTEST_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") else() - if (MACOS) - set(GTEST_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") - set(GTEST_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") - else() - set(GTEST_C_FLAGS ${CMAKE_C_FLAGS}) - set(GTEST_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - endif() - ExternalProject_Add(gtest_project - DOWNLOAD_NO_PROGRESS 1 - URL https://github.com/google/googletest/archive/refs/tags/${GTEST_VERSION}.tar.gz - PREFIX ${GTEST_BUILD_ROOT} - CMAKE_ARGS - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${GTEST_C_FLAGS} - -DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS} - -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} - -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." - ) + set(GTEST_C_FLAGS ${CMAKE_C_FLAGS}) + set(GTEST_CXX_FLAGS ${CMAKE_CXX_FLAGS}) endif() + ExternalProject_Add(gtest_project + DOWNLOAD_NO_PROGRESS 1 + URL https://github.com/google/googletest/archive/refs/tags/${GTEST_VERSION}.tar.gz + PREFIX ${GTEST_BUILD_ROOT} + CMAKE_ARGS + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_C_FLAGS=${GTEST_C_FLAGS} + -DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS} + -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} + -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} + INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step." + ) set(GTEST_INCLUDE_DIRS ${GTEST_BUILD_ROOT}/src/gtest_project/googletest/include ${GTEST_BUILD_ROOT}/src/gtest_project/googlemock/include ) - if (MSVC) - if (NOT CMAKE_GENERATOR_LOWER STREQUAL "nmake makefiles") - set (GTEST_PATH_EXTRA ${CMAKE_BUILD_TYPE}/) - endif() - set(GTEST_LIBRARIES - ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/${GTEST_PATH_EXTRA}gmock${DEBUG_EXTRA}.lib - ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/${GTEST_PATH_EXTRA}gmock_main${DEBUG_EXTRA}.lib - ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/${GTEST_PATH_EXTRA}gtest${DEBUG_EXTRA}.lib - ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/${GTEST_PATH_EXTRA}gtest_main${DEBUG_EXTRA}.lib - ) - elseif (UNIX OR MINGW) + if(UNIX OR MINGW) set(GTEST_LIBRARIES ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgmock.a ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest.a @@ -87,28 +62,5 @@ if (REPERTORY_ENABLE_TESTING) ) target_link_libraries(unittests PRIVATE ${GTEST_LIBRARIES}) - if (MSVC) - add_custom_command(TARGET unittests - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${GTEST_BUILD_ROOT}/src/gtest_project-build/bin/${GTEST_PATH_EXTRA}gmock${DEBUG_EXTRA}.dll ${CMAKE_CURRENT_BINARY_DIR}/${GTEST_PATH_EXTRA} - ) - add_custom_command(TARGET unittests - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${GTEST_BUILD_ROOT}/src/gtest_project-build/bin/${GTEST_PATH_EXTRA}gmock_main${DEBUG_EXTRA}.dll ${CMAKE_CURRENT_BINARY_DIR}/${GTEST_PATH_EXTRA} - ) - add_custom_command(TARGET unittests - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${GTEST_BUILD_ROOT}/src/gtest_project-build/bin/${GTEST_PATH_EXTRA}gtest${DEBUG_EXTRA}.dll ${CMAKE_CURRENT_BINARY_DIR}/${GTEST_PATH_EXTRA} - ) - add_custom_command(TARGET unittests - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${GTEST_BUILD_ROOT}/src/gtest_project-build/bin/${GTEST_PATH_EXTRA}gtest_main${DEBUG_EXTRA}.dll ${CMAKE_CURRENT_BINARY_DIR}/${GTEST_PATH_EXTRA} - ) - endif() - - if (CMAKE_GENERATOR_LOWER STREQUAL "nmake makefiles") - add_test(NAME AllTests COMMAND unittests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - else() - add_test(NAME AllTests COMMAND unittests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}) - endif() + add_test(NAME AllTests COMMAND unittests WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}) endif() diff --git a/cmake/versions.cmake b/cmake/versions.cmake index 56e0b95e..fbd7ec24 100644 --- a/cmake/versions.cmake +++ b/cmake/versions.cmake @@ -1,7 +1,5 @@ set(BOOST_MAJOR_VERSION 1) set(BOOST_MINOR_VERSION 83) -set(BOOST_MSVC_TOOLSET msvc-14.2) -set(BOOST_MSVC_TOOLSET_DLL 142) set(BOOST_REVISION 0) set(BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_REVISION}) set(BOOST_VERSION_DL ${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_REVISION}) diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index af808f2e..d56f1159 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -24,9 +24,7 @@ ExternalProject_Add(zlib_project CMAKE_ARGS ${ZLIB_CMAKE_ARGS} ) -if (MSVC) - set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/zlibstatic${DEBUG_EXTRA}${CMAKE_STATIC_LIBRARY_SUFFIX}) -elseif(MINGW) +if(MINGW) set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libzlibstatic${CMAKE_STATIC_LIBRARY_SUFFIX}) else() set(ZLIB_LIBRARIES ${EXTERNAL_BUILD_ROOT}/lib/libz${CMAKE_STATIC_LIBRARY_SUFFIX}) diff --git a/scripts/make_package.cmd b/scripts/make_package.cmd deleted file mode 100644 index 99b4f8f4..00000000 --- a/scripts/make_package.cmd +++ /dev/null @@ -1,115 +0,0 @@ -@echo off -setlocal -setlocal enabledelayedexpansion - -set SIGNING_FOLDER=%1 -set BINARY_FOLDER=%2 -set SOURCE_FOLDER=%3 -set OUTPUT_FOLDER=%4 - -set PATH=%~dp0%..\bin;!PATH! - -if "%SIGNING_FOLDER%" == "" ( - call :EXIT_SCRIPT "'SIGNING_FOLDER' is not set (arg1)" -) - -if "%BINARY_FOLDER%" == "" ( - call :EXIT_SCRIPT "'BINARY_FOLDER' is not set (arg2)" -) - -if "%SOURCE_FOLDER%" == "" ( - call :EXIT_SCRIPT "'SOURCE_FOLDER' is not set (arg3)" -) - -if "%OUTPUT_FOLDER%" == "" ( - call :EXIT_SCRIPT "'OUTPUT_FOLDER' is not set (arg4)" -) - -call :NORMALIZE "%SIGNING_FOLDER%" -set SIGNING_FOLDER=%RETVAL% - -call :NORMALIZE "%BINARY_FOLDER%" -set BINARY_FOLDER=%RETVAL% - -call :NORMALIZE "%SOURCE_FOLDER%" -set SOURCE_FOLDER=%RETVAL% - -set BUILD_ARCH=Win64 -set OPENSSL_BIN="c:\OpenSSL-%BUILD_ARCH%\bin\openssl.exe" -if NOT EXIST %OPENSSL_BIN% ( - set OPENSSL_BIN="c:\Program Files\OpenSSL-%BUILD_ARCH%\bin\openssl.exe" - set REPERTORY_OPENSSL_ROOT="c:\Program Files\OpenSSL-%BUILD_ARCH%" -) - -pushd "%SOURCE_FOLDER%" - for /F "tokens=*" %%f in ('git rev-parse --short HEAD') do (set GIT_REV=%%f) - for /F "tokens=*" %%f in ('git branch --show-current') do (set GIT_BRANCH=%%f) - for /F "tokens=*" %%f in ('grep set(REPERTORY_MAJOR .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%%f) - for /F "tokens=*" %%f in ('grep set(REPERTORY_MINOR .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%.%%f) - for /F "tokens=*" %%f in ('grep set(REPERTORY_REV .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%.%%f) - for /F "tokens=*" %%f in ('grep set(REPERTORY_RELEASE_ITER .\CMakeLists.txt ^| sed "s/)//g" ^| awk "{print $2}"') do (set REPERTORY_VERSION=%REPERTORY_VERSION%-%%f) -popd - -if "%GIT_BRANCH%" == "development" ( - set RELEASE_FOLDER=nightly -) else ( - set RELEASE_FOLDER=%REPERTORY_RELEASE_ITER% -) - -call :NORMALIZE "%OUTPUT_FOLDER%\!RELEASE_FOLDER!" -set OUTPUT_FOLDER=%RETVAL% - -set OUT_FILE=repertory_%REPERTORY_VERSION%_%GIT_REV%_windows_amd64.zip -set OUT_ZIP=%BINARY_FOLDER%\%OUT_FILE% -set FILE_LIST=repertory.exe repertory.exe.sha256 repertory.exe.sig winfsp-x64.dll winfsp-x64.dll.sha256 winfsp-x64.dll.sig cacert.pem cacert.pem.sha256 cacert.pem.sig - -pushd "%BINARY_FOLDER%" - call :CLEANUP - - call :CREATE_HASH "%BINARY_FOLDER%\repertory.exe" - call :CREATE_HASH "%BINARY_FOLDER%\winfsp-x64.dll" - call :CREATE_HASH "%BINARY_FOLDER%\cacert.pem" - - (7za u "%OUT_FILE%" %FILE_LIST%) || (7z u "%OUT_FILE%" %FILE_LIST%) || (call :EXIT_SCRIPT "Create repertory zip failed") - - call :CREATE_HASH "%OUT_FILE%" - - copy /y "%OUT_ZIP%" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP% to %OUTPUT_FOLDER% failed" - copy /y "%OUT_ZIP%.sha256" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP%.sha256 to %OUTPUT_FOLDER% failed" - copy /y "%OUT_ZIP%.sig" "%OUTPUT_FOLDER%" || call :EXIT_SCRIPT "Copy %OUT_ZIP%.sig to %OUTPUT_FOLDER% failed" - - call :CLEANUP -popd -goto :END - -:CREATE_HASH - call :NORMALIZE %1 - set HASH_FILE=%RETVAL% - - (%OPENSSL_BIN% dgst -sha256 -sign "%SIGNING_FOLDER%\blockstorage_dev_private.pem" -out "%HASH_FILE%.sig" "%HASH_FILE%") || (call :EXIT_SCRIPT "Create %HASH_FILE% signature failed") - (%OPENSSL_BIN% dgst -sha256 -verify "%SIGNING_FOLDER%\blockstorage_dev_public.pem" -signature "%HASH_FILE%.sig" "%HASH_FILE%") || (call :EXIT_SCRIPT "Verify %HASH_FILE% signature failed") - ((certutil -hashfile "%HASH_FILE%" SHA256 | sed -e "1d" -e "$d" -e "s/\ //g") > "%HASH_FILE%.sha256") || (call :EXIT_SCRIPT "Create %HASH_FILE% sha-256 failed") - EXIT /B - -:CLEANUP - del /q "%OUT_ZIP%" 1>NUL 2>&1 - del /q "%OUT_ZIP%.sha256" 1>NUL 2>&1 - del /q "%OUT_ZIP%.sig" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\cacert.pem.sha256" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\cacert.pem.sig" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\repertory.exe.sha256" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\repertory.exe.sig" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\winfsp-x64.dll.sha256" 1>NUL 2>&1 - del /q "%BINARY_FOLDER%\winfsp-x64.dll.sig" 1>NUL 2>&1 - EXIT /B - -:NORMALIZE - SET RETVAL=%~f1 - exit /B - -:EXIT_SCRIPT - echo %1 - exit 1 - -:END - echo Done diff --git a/scripts/make_win32.cmd b/scripts/make_win32.cmd deleted file mode 100644 index 9a93c99b..00000000 --- a/scripts/make_win32.cmd +++ /dev/null @@ -1,44 +0,0 @@ -@echo off - -set MSVC_BUILD_TYPE=%1 -set BUILD_CLEAN=%2 - -if "%MSVC_BUILD_TYPE%" == "" ( - echo "Build type not set" - exit 1 -) - -if "%MSVC_BUILD_TYPE%" == "Debug" ( - set BUILD_FOLDER=debug -) else ( - if "%MSVC_BUILD_TYPE%" == "Release" ( - set BUILD_FOLDER=release - ) else ( - set BUILD_FOLDER=%MSVC_BUILD_TYPE% - ) - set MSVC_BUILD_TYPE=Release -) - -if EXIST "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" ( - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" -) else ( - if EXIST "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat" ( - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat" - ) -) - -pushd "%~dp0%" - md ..\build2\%BUILD_FOLDER% - del /q ..\build2\%BUILD_FOLDER%\librepertory.lib - del /q ..\build2\%BUILD_FOLDER%\repertory.exe - del /q ..\build2\%BUILD_FOLDER%\unittests.exe - - pushd "..\build2\%BUILD_FOLDER%" - cmake ..\.. -G "NMake Makefiles" -DREPERTORY_ENABLE_S3_TESTING=ON -DREPERTORY_ENABLE_S3=ON -DCMAKE_BUILD_TYPE=%MSVC_BUILD_TYPE% || exit 1 - copy /y compile_commands.json .. - if "%BUILD_CLEAN%" == "clean" ( - nmake clean || exit 1 - ) - nmake || exit 1 - popd -popd