From 6a00d4b282410a5be915e89736098bd25d14e710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= Date: Mon, 21 Aug 2017 22:39:26 +0200 Subject: [PATCH] Move code from CMake_msvc.txt to config/compilerFlags.cmake --- CMake_msvc.txt | 56 ---------------------- config/compilerFlags.cmake | 97 +++++++++++++++++++++++++++++++------- samples/CMakeLists.txt | 5 -- src/CMakeLists.txt | 10 ---- 4 files changed, 79 insertions(+), 89 deletions(-) delete mode 100644 CMake_msvc.txt diff --git a/CMake_msvc.txt b/CMake_msvc.txt deleted file mode 100644 index eb2857bd..00000000 --- a/CMake_msvc.txt +++ /dev/null @@ -1,56 +0,0 @@ -## -# msvc tuning macros -macro(msvc_runtime_set_static_ignores bDynamic bDynamicRuntime) - if(MSVC) - # don't link msvcrt for .exe which use shared libraries (use default libcmt) - if ( ${bDynamic} STREQUAL "OFF" AND ${bDynamicRuntime} STREQUAL "OFF") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRTD") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:MSVCRT") - set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/NODEFAULTLIB:MSVCRT") - set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:MSVCRT") - endif() - endif() -endmacro() - -# http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake -macro(msvc_runtime_configure bDynamic bDynamicRuntime) - if(MSVC) - set(variables - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_MINSIZEREL - CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_RELWITHDEBINFO - ) - if( ${bDynamic} STREQUAL "ON" OR ${bDynamicRuntime} STREQUAL "ON") - message(STATUS "MSVC -> forcing use of dynamically-linked runtime." ) - foreach(variable ${variables}) - if(${variable} MATCHES "/MT") - string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}") - endif() - endforeach() - else() - message(STATUS "MSVC -> forcing use of statically-linked runtime." ) - foreach(variable ${variables}) - if(${variable} MATCHES "/MD") - string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}") - endif() - set(${variable} "${${variable}} /DXML_STATIC /D_LIB") - endforeach() - endif() - - # remove /Ob2 and /Ob1 - they cause linker issues - set(obs /Ob2 /Ob1) - foreach(ob ${obs}) - foreach(variable ${variables}) - if(${variable} MATCHES ${ob} ) - string(REGEX REPLACE ${ob} "" ${variable} "${${variable}}") - endif() - endforeach() - endforeach() - msvc_runtime_set_static_ignores(${bDynamic} ${bDynamicRuntime}) - endif() -endmacro() diff --git a/config/compilerFlags.cmake b/config/compilerFlags.cmake index 03ae4bef..9a79a1fa 100644 --- a/config/compilerFlags.cmake +++ b/config/compilerFlags.cmake @@ -1,18 +1,79 @@ -if ( MINGW OR UNIX ) # MINGW, Linux, APPLE, CYGWIN - if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) - set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall - -Wcast-align - -Wpointer-arith - -Wformat-security - -Wmissing-format-attribute - -Woverloaded-virtual - -W - ) - endif() - - if ( CYGWIN OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)) - set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=gnu++98 ) # to support snprintf - else() - set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++98 ) - endif() -endif () +if ( MINGW OR UNIX ) # MINGW, Linux, APPLE, CYGWIN + if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall + -Wcast-align + -Wpointer-arith + -Wformat-security + -Wmissing-format-attribute + -Woverloaded-virtual + -W + ) + endif() + + if ( CYGWIN OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0)) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=gnu++98 ) # to support snprintf + else() + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++98 ) + endif() +endif () + + +## +# msvc tuning macros +macro(msvc_runtime_set_static_ignores bDynamic bDynamicRuntime) + if(MSVC) + # don't link msvcrt for .exe which use shared libraries (use default libcmt) + if ( ${bDynamic} STREQUAL "OFF" AND ${bDynamicRuntime} STREQUAL "OFF") + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRTD") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:MSVCRT") + set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/NODEFAULTLIB:MSVCRT") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:MSVCRT") + endif() + endif() +endmacro() + +# http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake +macro(msvc_runtime_configure bDynamic bDynamicRuntime) + if(MSVC) + set(variables + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + ) + + if( ${bDynamic} STREQUAL "ON" OR ${bDynamicRuntime} STREQUAL "ON") + message(STATUS "MSVC -> forcing use of dynamically-linked runtime." ) + foreach(variable ${variables}) + if(${variable} MATCHES "/MT") + string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}") + endif() + endforeach() + else() + message(STATUS "MSVC -> forcing use of statically-linked runtime." ) + foreach(variable ${variables}) + if(${variable} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}") + endif() + set(${variable} "${${variable}} /DXML_STATIC /D_LIB") + endforeach() + endif() + + # remove /Ob2 and /Ob1 - they cause linker issues + set(obs /Ob2 /Ob1) + foreach(ob ${obs}) + foreach(variable ${variables}) + if(${variable} MATCHES ${ob} ) + string(REGEX REPLACE ${ob} "" ${variable} "${${variable}}") + endif() + endforeach() + endforeach() + msvc_runtime_set_static_ignores(${bDynamic} ${bDynamicRuntime}) + endif() +endmacro() + +msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 7837d034..50e49f23 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -37,11 +37,6 @@ SET( SAMPLES addmoddel.cpp xmpsample.cpp ) -## -# msvn tuning -include(../CMake_msvc.txt) -msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) - foreach(entry ${SAMPLES}) string( REPLACE ".cpp" "" target ${entry}) add_executable( ${target} ${target}.cpp ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1cdf6455..1a97b3d5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -171,13 +171,6 @@ ENDIF( EXIV2_ENABLE_PNG ) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) -## -# msvn tuning -IF( MSVC ) - include(../CMake_msvc.txt) - msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) -ENDIF( MSVC ) - # ****************************************************************************** # exiv2lib library @@ -273,9 +266,6 @@ install(FILES ${LIBEXIV2_HDR} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/exiv2 ) -include(../CMake_msvc.txt) -msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME}) - # ****************************************************************************** # exiv2 application