diff options
author | David Neto <dneto@google.com> | 2019-01-14 11:42:26 -0500 |
---|---|---|
committer | David Neto <dneto@google.com> | 2019-01-15 09:45:13 -0500 |
commit | 5ae6e4a82f3e740a4462390e318ada6f680faa9d (patch) | |
tree | 4d7fcf1a76f664ece2543dd6e96ee0e6e31f6937 | |
parent | 8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b (diff) | |
download | effcee-5ae6e4a82f3e740a4462390e318ada6f680faa9d.tar.gz |
Fix effcee-example MinGW cross-compile
For MinGW:
- Don't try to use pthreads
- Statically link the C++ runtime
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | cmake/utils.cmake | 7 | ||||
-rw-r--r-- | examples/CMakeLists.txt | 12 |
3 files changed, 16 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ed230aa..67087b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,10 @@ else() message(STATUS "Configuring Effcee to avoid building samples.") endif() +# RE2 needs Pthreads on non-WIN32 +set(CMAKE_THREAD_LIBS_INIT "") +find_package(Threads) + include(cmake/setup_build.cmake) include(cmake/utils.cmake) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 727b7ea..291be3c 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -17,9 +17,6 @@ function(effcee_default_c_compile_options TARGET) if (NOT "${MSVC}") target_compile_options(${TARGET} PRIVATE -Wall -Werror) - if (UNIX) - target_compile_options(${TARGET} PUBLIC -pthread) - endif(UNIX) if (ENABLE_CODE_COVERAGE) # The --coverage option is a synonym for -fprofile-arcs -ftest-coverage # when compiling. @@ -37,7 +34,9 @@ function(effcee_default_c_compile_options TARGET) LINK_FLAGS "-static -static-libgcc") endif(WIN32) endif(NOT EFFCEE_ENABLE_SHARED_CRT) - target_link_libraries(${TARGET} PUBLIC ${CMAKE_THREAD_LIBS_INIT}) + if (UNIX AND NOT MINGW) + target_link_libraries(${TARGET} PUBLIC -pthread) + endif() else() # disable warning C4800: 'int' : forcing value to bool 'true' or 'false' # (performance warning) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 47a326c..32cdd29 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,9 +1,15 @@ add_executable(effcee-example main.cc) target_link_libraries(effcee-example effcee) -if(UNIX) - target_link_libraries(effcee-example -pthread) -endif(UNIX) +if(UNIX AND NOT MINGW) + set_target_properties(effcee-example PROPERTIES LINK_FLAGS -pthread) +endif() +if (WIN32 AND NOT MSVC) + # For MinGW cross-compile, statically link to the C++ runtime + set_target_properties(effcee-example PROPERTIES + LINK_FLAGS "-static -static-libgcc -static-libstdc++") +endif(WIN32 AND NOT MSVC) + if(EFFCEE_BUILD_TESTING) add_test(NAME effcee-example |