summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRolf Eike Beer <eb@emlix.com>2017-08-02 13:13:53 +0200
committerRolf Eike Beer <eike@sf-mail.de>2017-08-05 15:05:51 +0200
commit45a9b99af9683facdaa576690f1e2d2e04999281 (patch)
tree9b653d31bb4d8f5f235c28a6a5fe189d56e5ec9f
parent65fb9a04069c87dd36bd03e453d2e9b2e5c515d6 (diff)
downloadlibexpat-git-45a9b99af9683facdaa576690f1e2d2e04999281.tar.gz
CMake: set -fno-strict-aliasing only if the compiler supports it
-rw-r--r--expat/CMakeLists.txt5
-rw-r--r--expat/ConfigureChecks.cmake3
2 files changed, 7 insertions, 1 deletions
diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt
index 9ba93f40..76e99c39 100644
--- a/expat/CMakeLists.txt
+++ b/expat/CMakeLists.txt
@@ -39,7 +39,10 @@ endif(BUILD_tests)
include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)
-set(EXTRA_LINK_AND_COMPILE_FLAGS "-fno-strict-aliasing")
+set(EXTRA_LINK_AND_COMPILE_FLAGS)
+if(FLAG_NO_STRICT_ALIASING)
+ set(EXTRA_LINK_AND_COMPILE_FLAGS "${EXTRA_LINK_AND_COMPILE_FLAGS} -fno-strict-aliasing")
+endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINK_AND_COMPILE_FLAGS}")
diff --git a/expat/ConfigureChecks.cmake b/expat/ConfigureChecks.cmake
index 2771a743..6e440ca0 100644
--- a/expat/ConfigureChecks.cmake
+++ b/expat/ConfigureChecks.cmake
@@ -1,3 +1,4 @@
+include(CheckCCompilerFlag)
include(CheckIncludeFile)
include(CheckIncludeFiles)
include(CheckFunctionExists)
@@ -42,3 +43,5 @@ endif(HAVE_SYS_TYPES_H)
configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h")
add_definitions(-DHAVE_EXPAT_CONFIG_H)
+
+check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING)