From 0150c57b4400a588c13cf8650a4064e588519760 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Wed, 4 Apr 2018 01:12:17 +0300 Subject: Allow using of older CMake builds --- CMakeLists.txt | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f2a9cf..7c5ba58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,26 @@ IF(NOT WIN32 AND NOT DJGPP AND NOT MSDOS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") ENDIF() + +if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.2) + message("==Legacy CMake detected! Turning C++11 for everything==") + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + # Turn on C++11 for everything + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + endif() +endif() + +function(set_legacy_standard destTarget) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + # Turn on warnings and legacy C/C++ standards to support more compilers + target_compile_options(${destTarget} PRIVATE + $<$:-Wall -pedantic -std=c90> + $<$:-Wall -pedantic -std=gnu++98> + ) + endif() + endif() +endfunction() #=========================================================================================== option(WITH_MIDIPLAY "Build also demo MIDI player" OFF) @@ -92,8 +112,10 @@ if(WITH_EMBEDDED_BANKS) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - message("Turned on C++11 on GCC/CLang/Intel") - target_compile_options(gen_adldata PUBLIC $<$:-std=c++11>) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) + message("Turned on C++11 on GCC/CLang/Intel") + target_compile_options(gen_adldata PUBLIC $<$:-std=c++11>) + endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") message("Turned on C++11 on MSVC") target_compile_options(gen_adldata PUBLIC "/std:c++latest") @@ -172,6 +194,7 @@ if(libADLMIDI_STATIC) add_library(ADLMIDI_static STATIC ${libADLMIDI_SOURCES}) set_target_properties(ADLMIDI_static PROPERTIES OUTPUT_NAME ADLMIDI) target_include_directories(ADLMIDI_static PUBLIC ${SDLMixerX_SOURCE_DIR}/include) + set_legacy_standard(ADLMIDI_static) list(APPEND libADLMIDI_INSTALLS ADLMIDI_static) if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA) add_dependencies(ADLMIDI_static gen-adldata-run) @@ -182,6 +205,7 @@ if(libADLMIDI_SHARED) add_library(ADLMIDI_shared SHARED ${libADLMIDI_SOURCES}) set_target_properties(ADLMIDI_shared PROPERTIES OUTPUT_NAME ADLMIDI) target_include_directories(ADLMIDI_shared PUBLIC ${SDLMixerX_SOURCE_DIR}/include) + set_legacy_standard(ADLMIDI_shared) list(APPEND libADLMIDI_INSTALLS ADLMIDI_shared) if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA) add_dependencies(ADLMIDI_shared gen-adldata-run) @@ -295,8 +319,10 @@ if(WITH_ADLMIDI2) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") - message("Turned on C++11 on GCC/CLang/Intel") - target_compile_options(adlmidi2 PUBLIC $<$:-std=c++11>) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.2) + message("Turned on C++11 on GCC/CLang/Intel") + target_compile_options(adlmidi2 PUBLIC $<$:-std=c++11>) + endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") message("Turned on C++11 on MSVC") target_compile_options(adlmidi2 PUBLIC "/std:c++latest") -- cgit v1.2.3