From 1c9f1e603be18a130066a2b68d3dd9267ea0f8bf Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 28 Oct 2014 00:49:27 +0000 Subject: [PATCH] Fix Fortran options on Mac and CMake 3 adjustments The minimum OS X version supported and SDK selection compiler options were not being set for Fortran compiles on Mac. As CMake 3.0.2 is the current release the facilities obsoleted by CMake 3.0 have been removed. This also entails making CMake 2.8.10 the minimum supported version. Merged from wsjtx-1.4 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4560 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- CMakeLists.txt | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b9277df0..f9ac0e7ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,19 @@ -cmake_minimum_required (VERSION 2.8.9 FATAL_ERROR) +cmake_minimum_required (VERSION 2.8.10 FATAL_ERROR) project (wsjtx C CXX Fortran) +# +# CMake policies +# +if (POLICY CMP0020) + cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows +endif (POLICY CMP0020) + +if (POLICY CMP0043) + cmake_policy (SET CMP0043 NEW) # ignore COMPILE_DEFINITIONS_ +endif (POLICY CMP0043) + + # # project information # @@ -372,8 +384,9 @@ endif (APPLE) set_source_files_properties (${WSJTX_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) if (NOT WSJT_QDEBUG_IN_RELEASE) - set_directory_properties (PROPERTIES COMPILE_DEFINITIONS_RELEASE "QT_NO_DEBUG_OUTPUT;QT_NO_WARNING_OUTPUT") - set_directory_properties (PROPERTIES COMPILE_DEFINITIONS_MINSIZEREL "QT_NO_DEBUG_OUTPUT;QT_NO_WARNING_OUTPUT") + set_property (DIRECTORY APPEND PROPERTY + COMPILE_DEFINITIONS $<$>:QT_NO_DEBUG_OUTPUT;QT_NO_WARNING_OUTPUT> + ) endif (NOT WSJT_QDEBUG_IN_RELEASE) set_property (SOURCE ${all_C_and_CXXSRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -include wsjtx_config.h") @@ -398,10 +411,6 @@ if (WIN32) file (TO_CMAKE_PATH ${AXSERVER} AXSERVERSRCS) endif (WIN32) -if (POLICY CMP0020) - cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows -endif (POLICY CMP0020) - # # decide on platform specifc packing and fixing up @@ -456,22 +465,31 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) if (Fortran_COMPILER_NAME MATCHES "gfortran.*") # gfortran - set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3 ${General_FFLAGS}") - set (CMAKE_Fortran_FLAGS_DEBUG "-fno-f2c -O0 -g ${General_FFLAGS}") + + # CMake compiler test is supposed to do this but doesn't yet + if (CMAKE_OSX_DEPLOYMENT_TARGET) + set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + endif (CMAKE_OSX_DEPLOYMENT_TARGET) + if (CMAKE_OSX_SYSROOT) + set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") + endif (CMAKE_OSX_SYSROOT) + + set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -funroll-all-loops -fno-f2c ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -fno-f2c ${General_FFLAGS}") elseif (Fortran_COMPILER_NAME MATCHES "ifort.*") # ifort (untested) - set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O3 ${General_FFLAGS}") - set (CMAKE_Fortran_FLAGS_DEBUG "-f77rtl -O0 -g ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -f77rtl ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -f77rtl ${General_FFLAGS}") elseif (Fortran_COMPILER_NAME MATCHES "g77") # g77 - set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3 -m32 ${General_FFLAGS}") - set (CMAKE_Fortran_FLAGS_DEBUG "-fno-f2c -O0 -g -m32 ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -funroll-all-loops -fno-f2c -m32 ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -fno-f2c -m32 ${General_FFLAGS}") else (Fortran_COMPILER_NAME MATCHES "gfortran.*") message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER}) message ("Fortran compiler: " ${Fortran_COMPILER_NAME}) message ("No optimized Fortran compiler flags are known, we just try -O2...") - set (CMAKE_Fortran_FLAGS_RELEASE "-O2 ${General_FFLAGS}") - set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O2 ${General_FFLAGS}") + set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${General_FFLAGS}") endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")