mingw64 build fixes
This commit is contained in:
		| @@ -12,9 +12,16 @@ set(CMAKE_CXX_STANDARD 20) | |||||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||||
| set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | ||||||
| set(CMAKE_MODULE_PATH  | set(CMAKE_MODULE_PATH  | ||||||
|   ${CMAKE_MODULE_PATH} |  | ||||||
|   ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules |   ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules | ||||||
|  |   ${CMAKE_MODULE_PATH} | ||||||
| ) | ) | ||||||
|  | if (MINGW) | ||||||
|  |   set(CMAKE_MODULE_PATH  | ||||||
|  |     /mingw64/lib/cmake | ||||||
|  |     /mingw64/lib64/cmake | ||||||
|  |     ${CMAKE_MODULE_PATH} | ||||||
|  |   ) | ||||||
|  | endif() | ||||||
| set(THREADS_PREFER_PTHREAD_FLAG ON) | set(THREADS_PREFER_PTHREAD_FLAG ON) | ||||||
|  |  | ||||||
| if (NOT CMAKE_BUILD_TYPE) | if (NOT CMAKE_BUILD_TYPE) | ||||||
|   | |||||||
| @@ -2,6 +2,19 @@ | |||||||
| if (REPERTORY_ENABLE_TESTING) | if (REPERTORY_ENABLE_TESTING) | ||||||
|   enable_testing() |   enable_testing() | ||||||
|  |  | ||||||
|  |   file(GLOB_RECURSE UNITTEST_SOURCES | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.hpp | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/tests/fixtures/*.hpp | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/tests/mocks/*.hpp | ||||||
|  |     ${CMAKE_CURRENT_SOURCE_DIR}/tests/utils/*.hpp | ||||||
|  |   ) | ||||||
|  |  | ||||||
|  |   add_project_executable(unittests "${UNITTEST_SOURCES}") | ||||||
|  |  | ||||||
|  |   if (MINGW) | ||||||
|  |     find_package(GTest REQUIRED) | ||||||
|  |   else() | ||||||
|     set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION}) |     set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION}) | ||||||
|     set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME}) |     set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME}) | ||||||
|     if (MACOS) |     if (MACOS) | ||||||
| @@ -30,23 +43,12 @@ if (REPERTORY_ENABLE_TESTING) | |||||||
|       ${GTEST_BUILD_ROOT}/src/gtest_project/googlemock/include |       ${GTEST_BUILD_ROOT}/src/gtest_project/googlemock/include | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|   if(UNIX) |  | ||||||
|     set(GTEST_LIBRARIES |     set(GTEST_LIBRARIES | ||||||
|       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgmock.a |       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgmock.a | ||||||
|       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest.a |       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest.a | ||||||
|       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest_main.a |       ${GTEST_BUILD_ROOT}/src/gtest_project-build/lib/libgtest_main.a | ||||||
|     ) |     ) | ||||||
|   endif() |  | ||||||
|  |  | ||||||
|   file(GLOB_RECURSE UNITTEST_SOURCES |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.hpp |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests/fixtures/*.hpp |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests/mocks/*.hpp |  | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests/utils/*.hpp |  | ||||||
|   ) |  | ||||||
|  |  | ||||||
|   add_project_executable(unittests "${UNITTEST_SOURCES}") |  | ||||||
|     add_dependencies(unittests  |     add_dependencies(unittests  | ||||||
|       gtest_project |       gtest_project | ||||||
|       zlib_project  |       zlib_project  | ||||||
| @@ -56,6 +58,8 @@ if (REPERTORY_ENABLE_TESTING) | |||||||
|       GTEST_LINKED_AS_SHARED_LIBRARY=1 |       GTEST_LINKED_AS_SHARED_LIBRARY=1 | ||||||
|       REPERTORY_TESTING |       REPERTORY_TESTING | ||||||
|     ) |     ) | ||||||
|  |   endif() | ||||||
|  |  | ||||||
|   target_include_directories(unittests PUBLIC |   target_include_directories(unittests PUBLIC | ||||||
|     ${GTEST_INCLUDE_DIRS} |     ${GTEST_INCLUDE_DIRS} | ||||||
|     ${CMAKE_CURRENT_SOURCE_DIR}/tests |     ${CMAKE_CURRENT_SOURCE_DIR}/tests | ||||||
|   | |||||||
| @@ -938,8 +938,25 @@ RUN set -ex \ | |||||||
|     && cd ${MY_WORKDIR} \ |     && cd ${MY_WORKDIR} \ | ||||||
|     && rm -r wxWidgets-${MY_WXWIDGETS_VERSION}  |     && rm -r wxWidgets-${MY_WXWIDGETS_VERSION}  | ||||||
|  |  | ||||||
|  | ARG GTEST_VERSION=1.14.0 | ||||||
|  | ENV MY_GTEST_VERSION=${GTEST_VERSION} | ||||||
|  | RUN set -ex \ | ||||||
|  |     \ | ||||||
|  |     && wget -q https://github.com/google/googletest/archive/refs/tags/v${GTEST_VERSION}.tar.gz -O - | tar -xz \ | ||||||
|  |     && cd googletest-${MY_GTEST_VERSION} \ | ||||||
|  |     && mkdir build \ | ||||||
|  |     && cd build \ | ||||||
|  |     && cmake .. -DCMAKE_TOOLCHAIN_FILE=${MY_TOOLCHAIN_FILE_CMAKE} \ | ||||||
|  |       -DCMAKE_BUILD_TYPE=Release \ | ||||||
|  |       -DBUILD_SHARED_LIBS=ON \ | ||||||
|  |       -DBUILD_STATIC_LIBS=ON \ | ||||||
|  |       -DCMAKE_INSTALL_PREFIX=${MY_MINGW} \ | ||||||
|  |     && make -j${MY_NUM_JOBS} \ | ||||||
|  |     && make install \ | ||||||
|  |     && cd ${MY_WORKDIR} \ | ||||||
|  |     && rm -r googletest-${MY_GTEST_VERSION}  | ||||||
|  |  | ||||||
| RUN set -ex \ | RUN set -ex \ | ||||||
|     \ |     \ | ||||||
|     && mv ${MY_MINGW}/lib/*.dll ${MY_MINGW}/bin \ |     && mv ${MY_MINGW}/lib/*.dll ${MY_MINGW}/bin \ | ||||||
|     && chmod 0777 -R ${MY_MINGW} |     && chmod 0777 -R ${MY_MINGW} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,13 +3,12 @@ | |||||||
| BUILD_TYPE=$1 | BUILD_TYPE=$1 | ||||||
| BUILD_CLEAN=$2 | BUILD_CLEAN=$2 | ||||||
| IS_MINGW=$3 | IS_MINGW=$3 | ||||||
| IS_WIN32=$4 |  | ||||||
|  |  | ||||||
| if [ "${BUILD_TYPE}" == "" ]; then | if [ "${BUILD_TYPE}" == "" ]; then | ||||||
|   BUILD_TYPE=Release |   BUILD_TYPE=Release | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then | if [ "${IS_MINGW}" == "1" ]; then | ||||||
|   BUILD_ROOT=build2 |   BUILD_ROOT=build2 | ||||||
| else | else | ||||||
|   BUILD_ROOT=build |   BUILD_ROOT=build | ||||||
| @@ -41,7 +40,7 @@ if [ "${IS_MINGW}" == "1" ]; then | |||||||
|   CMAKE_ADDITIONAL_OPTS=-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} |   CMAKE_ADDITIONAL_OPTS=-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then | if [ "${IS_MINGW}" == "1" ]; then | ||||||
|   EXE_EXT=.exe |   EXE_EXT=.exe | ||||||
| fi | fi | ||||||
|  |  | ||||||
| @@ -55,7 +54,7 @@ pushd .. | |||||||
| ln -sf ${BUILD_FOLDER}/compile_commands.json . | ln -sf ${BUILD_FOLDER}/compile_commands.json . | ||||||
| ln -sf ${BUILD_FOLDER}/repertory${EXE_EXT} . | ln -sf ${BUILD_FOLDER}/repertory${EXE_EXT} . | ||||||
| ln -sf ${BUILD_FOLDER}/unittests${EXE_EXT} . | ln -sf ${BUILD_FOLDER}/unittests${EXE_EXT} . | ||||||
| if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then | if [ "${IS_MINGW}" == "1" ]; then | ||||||
|   ln -sf ${BUILD_FOLDER}/winfsp-x64.dll . |   ln -sf ${BUILD_FOLDER}/winfsp-x64.dll . | ||||||
| fi | fi | ||||||
| popd | popd | ||||||
| @@ -71,7 +70,7 @@ pushd ../${BUILD_ROOT} | |||||||
| ln -sf ${BUILD_FOLDER}/compile_commands.json . | ln -sf ${BUILD_FOLDER}/compile_commands.json . | ||||||
| ln -sf ${BUILD_FOLDER}/repertory${EXE_EXT} . | ln -sf ${BUILD_FOLDER}/repertory${EXE_EXT} . | ||||||
| ln -sf ${BUILD_FOLDER}/unittests${EXE_EXT} . | ln -sf ${BUILD_FOLDER}/unittests${EXE_EXT} . | ||||||
| if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then | if [ "${IS_MINGW}" == "1" ]; then | ||||||
|   ln -sf ${BUILD_FOLDER}/winfsp-x64.dll . |   ln -sf ${BUILD_FOLDER}/winfsp-x64.dll . | ||||||
| fi | fi | ||||||
| popd | popd | ||||||
|   | |||||||
| @@ -1,10 +1,15 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # #!/bin/bash |  | ||||||
| # |  | ||||||
| # pushd "$(dirname "$0")/.." |  | ||||||
| # scripts/make_common.sh "${1}" "${2}" 1 |  | ||||||
| # popd |  | ||||||
| # | # | ||||||
|  | NUM_JOBS=${MY_NUM_JOBS} | ||||||
|  | if [[ -z "${NUM_JOBS}" ]]; then | ||||||
|  |   NUM_JOBS=$(getconf _NPROCESSORS_ONLN 2> /dev/null || getconf NPROCESSORS_ONLN 2> /dev/null || echo 1) | ||||||
|  |   if [ "${NUM_JOBS}" -gt "2" ]; then | ||||||
|  |     NUM_JOBS=$(expr ${NUM_JOBS} - 2) | ||||||
|  |   elif [ "${NUM_JOBS}" -gt "1" ]; then | ||||||
|  |     NUM_JOBS=$(expr ${NUM_JOBS} - 1) | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
| BUILD_TYPE=$1 | BUILD_TYPE=$1 | ||||||
| BUILD_CLEAN=$2 | BUILD_CLEAN=$2 | ||||||
| 
 | 
 | ||||||
| @@ -18,6 +23,6 @@ docker stop repertory_${NAME} | |||||||
| docker rm repertory_${NAME} | docker rm repertory_${NAME} | ||||||
| docker build --build-arg NUM_JOBS=${MY_NUM_JOBS} -t repertory:${NAME} - < ${SOURCE_DIR}/docker/${BUILD_ARCH}/${NAME} && | docker build --build-arg NUM_JOBS=${MY_NUM_JOBS} -t repertory:${NAME} - < ${SOURCE_DIR}/docker/${BUILD_ARCH}/${NAME} && | ||||||
|   docker run -td -u $(id -u):$(id -g) --name repertory_${NAME} -w ${SOURCE_DIR} -v ${SOURCE_DIR}:${SOURCE_DIR}:rw,z repertory:${NAME} && |   docker run -td -u $(id -u):$(id -g) --name repertory_${NAME} -w ${SOURCE_DIR} -v ${SOURCE_DIR}:${SOURCE_DIR}:rw,z repertory:${NAME} && | ||||||
|   docker exec repertory_${NAME} /bin/bash -c "${SOURCE_DIR}/scripts/make_common.sh ${BUILD_TYPE} "${BUILD_CLEAN}" 1" |   docker exec repertory_${NAME} /bin/bash -c "${SOURCE_DIR}/scripts/make_common.sh ${BUILD_TYPE} \"${BUILD_CLEAN}\" 1" | ||||||
| docker stop repertory_${NAME} | docker stop repertory_${NAME} | ||||||
| docker rm repertory_${NAME} | docker rm repertory_${NAME} | ||||||
		Reference in New Issue
	
	Block a user