mingw64 build fixes
This commit is contained in:
parent
7698a62c1f
commit
f6cdf2914c
@ -12,9 +12,16 @@ set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
set(CMAKE_MODULE_PATH
|
||||
${CMAKE_MODULE_PATH}
|
||||
${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)
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE)
|
||||
|
@ -2,42 +2,6 @@
|
||||
if (REPERTORY_ENABLE_TESTING)
|
||||
enable_testing()
|
||||
|
||||
set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION})
|
||||
set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME})
|
||||
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/v${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(UNIX)
|
||||
set(GTEST_LIBRARIES
|
||||
${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_main.a
|
||||
)
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE UNITTEST_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tests/*.hpp
|
||||
@ -47,15 +11,55 @@ if (REPERTORY_ENABLE_TESTING)
|
||||
)
|
||||
|
||||
add_project_executable(unittests "${UNITTEST_SOURCES}")
|
||||
add_dependencies(unittests
|
||||
gtest_project
|
||||
zlib_project
|
||||
)
|
||||
|
||||
target_compile_definitions(unittests PUBLIC
|
||||
GTEST_LINKED_AS_SHARED_LIBRARY=1
|
||||
REPERTORY_TESTING
|
||||
)
|
||||
if (MINGW)
|
||||
find_package(GTest REQUIRED)
|
||||
else()
|
||||
set(GTEST_PROJECT_NAME gtest_${GTEST_VERSION})
|
||||
set(GTEST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${GTEST_PROJECT_NAME})
|
||||
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/v${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
|
||||
)
|
||||
|
||||
set(GTEST_LIBRARIES
|
||||
${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_main.a
|
||||
)
|
||||
|
||||
add_dependencies(unittests
|
||||
gtest_project
|
||||
zlib_project
|
||||
)
|
||||
|
||||
target_compile_definitions(unittests PUBLIC
|
||||
GTEST_LINKED_AS_SHARED_LIBRARY=1
|
||||
REPERTORY_TESTING
|
||||
)
|
||||
endif()
|
||||
|
||||
target_include_directories(unittests PUBLIC
|
||||
${GTEST_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tests
|
||||
|
@ -938,8 +938,25 @@ RUN set -ex \
|
||||
&& cd ${MY_WORKDIR} \
|
||||
&& 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 \
|
||||
\
|
||||
&& mv ${MY_MINGW}/lib/*.dll ${MY_MINGW}/bin \
|
||||
&& chmod 0777 -R ${MY_MINGW}
|
||||
|
||||
|
@ -3,13 +3,12 @@
|
||||
BUILD_TYPE=$1
|
||||
BUILD_CLEAN=$2
|
||||
IS_MINGW=$3
|
||||
IS_WIN32=$4
|
||||
|
||||
if [ "${BUILD_TYPE}" == "" ]; then
|
||||
BUILD_TYPE=Release
|
||||
fi
|
||||
|
||||
if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then
|
||||
if [ "${IS_MINGW}" == "1" ]; then
|
||||
BUILD_ROOT=build2
|
||||
else
|
||||
BUILD_ROOT=build
|
||||
@ -41,7 +40,7 @@ if [ "${IS_MINGW}" == "1" ]; then
|
||||
CMAKE_ADDITIONAL_OPTS=-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
|
||||
fi
|
||||
|
||||
if [ "${IS_MINGW}" == "1" ] || [ "${IS_WIN32}" == "1" ]; then
|
||||
if [ "${IS_MINGW}" == "1" ]; then
|
||||
EXE_EXT=.exe
|
||||
fi
|
||||
|
||||
@ -55,7 +54,7 @@ pushd ..
|
||||
ln -sf ${BUILD_FOLDER}/compile_commands.json .
|
||||
ln -sf ${BUILD_FOLDER}/repertory${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 .
|
||||
fi
|
||||
popd
|
||||
@ -71,7 +70,7 @@ pushd ../${BUILD_ROOT}
|
||||
ln -sf ${BUILD_FOLDER}/compile_commands.json .
|
||||
ln -sf ${BUILD_FOLDER}/repertory${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 .
|
||||
fi
|
||||
popd
|
||||
|
@ -1,10 +1,15 @@
|
||||
#!/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_CLEAN=$2
|
||||
|
||||
@ -18,6 +23,6 @@ docker stop 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 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 rm repertory_${NAME}
|
Loading…
x
Reference in New Issue
Block a user