From 1a973285f71d0eea34bb87297b792fdbd714e317 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Thu, 17 Aug 2017 11:38:45 +0200 Subject: [PATCH] Fixed Apple Clang detection --- CMakeLists.txt | 94 +++++++++++++++++++++++++++----------------------- 1 file changed, 50 insertions(+), 44 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1336f83d..b52b8841 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,6 @@ cmake_policy(VERSION 3.2) set(GLM_VERSION "0.9.9") project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) -message("Compiler: ${CMAKE_CXX_COMPILER_ID}") - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(GNUInstallDirs) @@ -66,15 +64,15 @@ option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF) if(GLM_TEST_ENABLE_FAST_MATH) message(STATUS "GLM: Build with fast math optimizations") - if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")) - add_compiler_options(-ffast-math) + if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU")) + add_compile_options(-ffast-math) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_compiler_options(/fp:fast) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/fp:fast) endif() else() - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_compiler_options(/fp:precise) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/fp:precise) endif() endif() @@ -87,66 +85,74 @@ option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF) if(GLM_TEST_FORCE_PURE) add_definitions(-DGLM_FORCE_PURE) - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - add_compiler_options(-mfpmath=387) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + add_compile_options(-mfpmath=387) endif() message(STATUS "GLM: No SIMD instruction set") elseif(GLM_TEST_ENABLE_SIMD_AVX2) - if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - add_compiler_options(-mavx2) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - add_compiler_options(/QxAVX2) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_compiler_options(/arch:AVX2) + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-mavx2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxAVX2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/arch:AVX2) endif() message(STATUS "GLM: AVX2 instruction set") elseif(GLM_TEST_ENABLE_SIMD_AVX) - if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - add_compiler_options(-mavx) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - add_compiler_options(/QxAVX) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_compiler_options(/arch:AVX) + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-mavx) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxAVX) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/arch:AVX) endif() message(STATUS "GLM: AVX instruction set") elseif(GLM_TEST_ENABLE_SIMD_SSE3) - if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - add_compiler_options(-msse3) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - add_compiler_options(/QxSSE3) - elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") AND NOT CMAKE_CL_64) - add_compiler_options(/arch:SSE2) # VC doesn't support /arch:SSE3 + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse3) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE3) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) # VC doesn't support /arch:SSE3 endif() message(STATUS "GLM: SSE3 instruction set") elseif(GLM_TEST_ENABLE_SIMD_SSE2) - if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) - add_compiler_options(-msse2) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - add_compiler_options(/QxSSE2) - elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") AND NOT CMAKE_CL_64) - add_compiler_options(/arch:SSE2) + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE2) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) endif() message(STATUS "GLM: SSE2 instruction set") endif() -# Additional compiler options +# Compiler and default options + +if((CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + message("GLM: Clang - ${CMAKE_CXX_COMPILER_ID} compiler") + + add_compile_options(-Werror -Weverything) + add_compile_options(-Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++11-long-long -Wno-padded -Wno-gnu-anonymous-struct -Wno-nested-anon-types) + add_compile_options(-Wno-undefined-reinterpret-cast -Wno-sign-conversion -Wno-unused-variable -Wno-missing-prototypes -Wno-unreachable-code -Wno-missing-variable-declarations -Wno-sign-compare -Wno-global-constructors -Wno-unused-macros -Wno-format-nonliteral) + +elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + message("GLM: GCC - ${CMAKE_CXX_COMPILER_ID} compiler") -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - add_compiler_options(-Werror -Weverything) + add_compile_options(-O2) + add_compile_options(-Wno-long-long) - add_compiler_options(-Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++11-long-long -Wno-padded -Wno-documentation -Wno-gnu-anonymous-struct -Wno-nested-anon-types) - add_compiler_options(-Wno-undefined-reinterpret-cast -Wno-sign-conversion -Wno-unused-variable -Wno-missing-prototypes -Wno-unreachable-code -Wno-missing-variable-declarations -Wno-sign-compare -Wno-global-constructors -Wno-unused-macros -Wno-format-nonliteral) +elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + message("GLM: Intel - ${CMAKE_CXX_COMPILER_ID} compiler") -elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - add_compiler_options(-O2) - add_compiler_options(-Wno-long-long) +elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + message("GLM: Visual C++ - ${CMAKE_CXX_COMPILER_ID} compiler") -elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - add_compiler_options(/FAs) + add_compile_options(/FAs) add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif()