diff --git a/compilers/Clang.C.cmake b/compilers/Clang.C.cmake index ef1483e..8f3f3af 100644 --- a/compilers/Clang.C.cmake +++ b/compilers/Clang.C.cmake @@ -1,5 +1,7 @@ -if(CMAKE_C_COMPILER_ID MATCHES Clang) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "-O3 -Wno-unused") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CFLAGS}) + if(CMAKE_C_COMPILER_ID MATCHES Clang) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/Clang.CXX.cmake b/compilers/Clang.CXX.cmake index 0d0998a..5f13571 100644 --- a/compilers/Clang.CXX.cmake +++ b/compilers/Clang.CXX.cmake @@ -1,5 +1,7 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES Clang) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused") - set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -march=native -DNDEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG -g") +if(NOT DEFINED ENV{CXXFLAGS}) + if(CMAKE_CXX_COMPILER_ID MATCHES Clang) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-Ofast") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/GNU.C.cmake b/compilers/GNU.C.cmake index ce8384c..282d243 100644 --- a/compilers/GNU.C.cmake +++ b/compilers/GNU.C.cmake @@ -1,5 +1,7 @@ -if(CMAKE_C_COMPILER_ID MATCHES GNU) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "-O3 -Wno-unused") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CFLAGS}) + if(CMAKE_C_COMPILER_ID MATCHES GNU) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/GNU.CXX.cmake b/compilers/GNU.CXX.cmake index 768abd1..6d0ad14 100644 --- a/compilers/GNU.CXX.cmake +++ b/compilers/GNU.CXX.cmake @@ -1,5 +1,7 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES GNU) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wno-sign-compare -Woverloaded-virtual -Wwrite-strings -Wno-unused") - set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -march=native -DNDEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG -g") +if(NOT DEFINED ENV{CXXFLAGS}) + if(CMAKE_CXX_COMPILER_ID MATCHES GNU) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-Ofast") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/GNU.Fortran.cmake b/compilers/GNU.Fortran.cmake index cab129e..99a8a69 100644 --- a/compilers/GNU.Fortran.cmake +++ b/compilers/GNU.Fortran.cmake @@ -1,7 +1,7 @@ if(NOT DEFINED ENV{FCFLAGS}) if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}") - set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -funroll-all-loops -w") + set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -funroll-all-loops") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -fbacktrace") endif() endif() diff --git a/compilers/Intel.C.cmake b/compilers/Intel.C.cmake index b2c1847..1f2a529 100644 --- a/compilers/Intel.C.cmake +++ b/compilers/Intel.C.cmake @@ -1,5 +1,7 @@ -if(CMAKE_C_COMPILER_ID MATCHES Intel) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "-O3") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CFLAGS}) + if(CMAKE_C_COMPILER_ID MATCHES Intel) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/Intel.CXX.cmake b/compilers/Intel.CXX.cmake index 363ff39..e4700b5 100644 --- a/compilers/Intel.CXX.cmake +++ b/compilers/Intel.CXX.cmake @@ -1,5 +1,7 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES Intel) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas") - set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -debug -DDEBUG") +if(NOT DEFINED ENV{CXXFLAGS}) + if(CMAKE_CXX_COMPILER_ID MATCHES Intel) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/Intel.Fortran.cmake b/compilers/Intel.Fortran.cmake index 6b4ce35..7b7c57c 100644 --- a/compilers/Intel.Fortran.cmake +++ b/compilers/Intel.Fortran.cmake @@ -1,6 +1,6 @@ if(NOT DEFINED ENV{FCFLAGS}) if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w -assume byterecl") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}") set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -ip") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -traceback") endif() diff --git a/compilers/PGI.C.cmake b/compilers/PGI.C.cmake index 8f7e460..27f82b3 100644 --- a/compilers/PGI.C.cmake +++ b/compilers/PGI.C.cmake @@ -1,5 +1,7 @@ -if(CMAKE_C_COMPILER_ID MATCHES PGI) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "-O3") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CFLAGS}) + if(CMAKE_C_COMPILER_ID MATCHES PGI) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/PGI.CXX.cmake b/compilers/PGI.CXX.cmake index 09815be..bd62763 100644 --- a/compilers/PGI.CXX.cmake +++ b/compilers/PGI.CXX.cmake @@ -1,5 +1,7 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES PGI) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CXXFLAGS}) + if(CMAKE_CXX_COMPILER_ID MATCHES PGI) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/XL.C.cmake b/compilers/XL.C.cmake index 5afd485..f70cf62 100644 --- a/compilers/XL.C.cmake +++ b/compilers/XL.C.cmake @@ -1,5 +1,7 @@ -if(CMAKE_C_COMPILER_ID MATCHES XL) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qcpluscmt") - set(CMAKE_C_FLAGS_RELEASE "-O3") - set(CMAKE_C_FLAGS_DEBUG "-O0") +if(NOT DEFINED ENV{CFLAGS}) + if(CMAKE_C_COMPILER_ID MATCHES XL) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qcpluscmt") + set(CMAKE_C_FLAGS_RELEASE "-O3") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/XL.CXX.cmake b/compilers/XL.CXX.cmake index 69f974f..ff73459 100644 --- a/compilers/XL.CXX.cmake +++ b/compilers/XL.CXX.cmake @@ -1,5 +1,7 @@ -if(CMAKE_CXX_COMPILER_ID MATCHES XL) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") +if(NOT DEFINED ENV{CXXFLAGS}) + if(CMAKE_CXX_COMPILER_ID MATCHES XL) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") + endif() endif() diff --git a/compilers/XL.Fortran.cmake b/compilers/XL.Fortran.cmake index 23f9a4b..637fa5f 100644 --- a/compilers/XL.Fortran.cmake +++ b/compilers/XL.Fortran.cmake @@ -1,6 +1,6 @@ if(NOT DEFINED ENV{FCFLAGS}) if(CMAKE_Fortran_COMPILER_ID MATCHES XL) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qzerosize -qextname -qsuppress=cmpmsg") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}") set(CMAKE_Fortran_FLAGS_RELEASE "-O3") set(CMAKE_Fortran_FLAGS_DEBUG "-g") endif() diff --git a/modules/cc.cmake b/modules/cc.cmake index a4affc6..e7ae618 100644 --- a/modules/cc.cmake +++ b/modules/cc.cmake @@ -1,3 +1,31 @@ +#.rst: +# +# Adds C support. +# Appends EXTRA_CFLAGS to CMAKE_C_FLAGS. +# If environment variable CFLAGS is set, then the CFLAGS are used +# and no other flags are used or appended. +# +# Variables used:: +# +# EXTRA_CFLAGS +# +# Variables modified:: +# +# CMAKE_C_FLAGS +# +# Environment variables used:: +# +# CFLAGS +# +# Example autocmake.cfg entry:: +# +# [cc] +# source: https://github.com/scisoft/autocmake/raw/master/modules/cc.cmake +# docopt: --cc= C compiler [default: gcc]. +# --extra-cc-flags= Extra C compiler flags [default: '']. +# export: 'CC=%s' % arguments['--cc'] +# define: '-DEXTRA_CFLAGS="%s"' % arguments['--extra-cc-flags'] + enable_language(C) if(NOT DEFINED CMAKE_C_COMPILER_ID) @@ -8,6 +36,11 @@ if(NOT CMAKE_C_COMPILER_WORKS) message(FATAL_ERROR "CMAKE_C_COMPILER_WORKS is false!") endif() -if(DEFINED EXTRA_C_FLAGS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS}") +if(DEFINED EXTRA_CFLAGS) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +endif() + +if(DEFINED ENV{CFLAGS}) + message(STATUS "CFLAGS is set to '$ENV{CFLAGS}'.") + set(CMAKE_C_FLAGS "$ENV{CFLAGS}") endif() diff --git a/modules/cxx.cmake b/modules/cxx.cmake index 086c27a..21cc4ca 100644 --- a/modules/cxx.cmake +++ b/modules/cxx.cmake @@ -1,13 +1,46 @@ +#.rst: +# +# Adds C++ support. +# Appends EXTRA_CXXFLAGS to CMAKE_CXX_FLAGS. +# If environment variable CXXFLAGS is set, then the CXXFLAGS are used +# and no other flags are used or appended. +# +# Variables used:: +# +# EXTRA_CXXFLAGS +# +# Variables modified:: +# +# CMAKE_CXX_FLAGS +# +# Environment variables used:: +# +# CXXFLAGS +# +# Example autocmake.cfg entry:: +# +# [cxx] +# source: https://github.com/scisoft/autocmake/raw/master/modules/cxx.cmake +# docopt: --cxx= C++ compiler [default: g++]. +# --extra-cxx-flags= Extra C++ compiler flags [default: '']. +# export: 'CXX=%s' % arguments['--cxx'] +# define: '-DEXTRA_CXXFLAGS="%s"' % arguments['--extra-cxx-flags'] + enable_language(CXX) -if(NOT DEFINED CMAKE_CXX_COMPILER_ID) - message(FATAL_ERROR "CMAKE_CXX_COMPILER_ID variable is not defined!") +if(NOT DEFINED CMAKE_C_COMPILER_ID) + message(FATAL_ERROR "CMAKE_C_COMPILER_ID variable is not defined!") endif() -if(NOT CMAKE_CXX_COMPILER_WORKS) - message(FATAL_ERROR "CMAKE_CXX_COMPILER_WORKS is false!") +if(NOT CMAKE_C_COMPILER_WORKS) + message(FATAL_ERROR "CMAKE_C_COMPILER_WORKS is false!") endif() -if(DEFINED EXTRA_CXX_FLAGS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}") +if(DEFINED EXTRA_CXXFLAGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}") +endif() + +if(DEFINED ENV{CXXFLAGS}) + message(STATUS "CXXFLAGS is set to '$ENV{CXXFLAGS}'.") + set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS}") endif() diff --git a/modules/fc.cmake b/modules/fc.cmake index a9048b4..c4b005f 100644 --- a/modules/fc.cmake +++ b/modules/fc.cmake @@ -5,10 +5,6 @@ # If environment variable FCFLAGS is set, then the FCFLAGS are used # and no other flags are used or appended. # -# Environment variables used:: -# -# FCFLAGS -# # Variables used:: # # EXTRA_FCFLAGS @@ -21,6 +17,10 @@ # # CMAKE_Fortran_FLAGS # +# Environment variables used:: +# +# FCFLAGS +# # Example autocmake.cfg entry:: # # [fc] diff --git a/test/cxx/cmake/autocmake.cfg b/test/cxx/cmake/autocmake.cfg index 876cdc3..0d0494b 100644 --- a/test/cxx/cmake/autocmake.cfg +++ b/test/cxx/cmake/autocmake.cfg @@ -4,7 +4,9 @@ name: example [cxx] source: https://github.com/scisoft/autocmake/raw/master/modules/cxx.cmake docopt: --cxx= C++ compiler [default: g++]. + --extra-cxx-flags= Extra C++ compiler flags [default: '']. export: 'CXX=%s' % arguments['--cxx'] +define: '-DEXTRA_CXXFLAGS="%s"' % arguments['--extra-cxx-flags'] [default_build_paths] source: https://github.com/scisoft/autocmake/raw/master/modules/default_build_paths.cmake