|
|
|
cmake_minimum_required(VERSION 3.9)
|
|
|
|
|
|
|
|
# Make sure the user doesn't play dirty with symlinks
|
|
|
|
get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH)
|
|
|
|
get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
|
|
|
|
|
|
|
|
# Disallow in-source builds
|
|
|
|
if(${srcdir} STREQUAL ${bindir})
|
|
|
|
message(FATAL_ERROR "In-source builds are not allowed."
|
|
|
|
" Please create a directory and run cmake from there, passing the path"
|
|
|
|
" to this source directory as the last argument. This process created"
|
|
|
|
" the file `CMakeCache.txt' and the directory `CMakeFiles' in ${srcdir}."
|
|
|
|
" Please remove them.")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
string(ASCII 27 Esc)
|
|
|
|
set(ColorReset "${Esc}[m")
|
|
|
|
set(ColorBold "${Esc}[1m")
|
|
|
|
set(Red "${Esc}[31m")
|
|
|
|
set(Green "${Esc}[32m")
|
|
|
|
set(Yellow "${Esc}[33m")
|
|
|
|
set(Blue "${Esc}[34m")
|
|
|
|
set(Magenta "${Esc}[35m")
|
|
|
|
set(Cyan "${Esc}[36m")
|
|
|
|
set(White "${Esc}[37m")
|
|
|
|
set(BoldRed "${Esc}[1;31m")
|
|
|
|
set(BoldGreen "${Esc}[1;32m")
|
|
|
|
set(BoldYellow "${Esc}[1;33m")
|
|
|
|
set(BoldBlue "${Esc}[1;34m")
|
|
|
|
set(BoldMagenta "${Esc}[1;35m")
|
|
|
|
set(BoldCyan "${Esc}[1;36m")
|
|
|
|
set(BoldWhite "${Esc}[1;37m")
|
|
|
|
|
|
|
|
set(STATIC_ANALYZER OFF CACHE BOOL "Using GCC static analyzer if available")
|
|
|
|
|
|
|
|
project(odm C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
|
|
|
|
|
|
|
|
include_directories(include sources sources-add GSW-C)
|
|
|
|
add_compile_options(-Wall -Wno-deprecated-declarations)
|
|
|
|
|
|
|
|
# Dwarf-4 support check
|
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
CHECK_CXX_COMPILER_FLAG(-gdwarf-4 COMPILER_SUPPORTS_DWARF4)
|
|
|
|
if(COMPILER_SUPPORTS_DWARF4 AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
|
|
add_compile_options(-gdwarf-4)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# GCC static analyzer support check
|
|
|
|
CHECK_CXX_COMPILER_FLAG(-fanalyzer COMPILER_SUPPORTS_ANALYZER)
|
|
|
|
if(COMPILER_SUPPORTS_ANALYZER AND STATIC_ANALYZER)
|
|
|
|
add_compile_options(-fanalyzer)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Disable michlib warnings
|
|
|
|
add_compile_options(-Wno-deprecated-declarations)
|
|
|
|
CHECK_CXX_COMPILER_FLAG(-Wno-class-memaccess COMPILER_SUPPORTS_CLASSMEMACCESS)
|
|
|
|
if(COMPILER_SUPPORTS_CLASSMEMACCESS)
|
|
|
|
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-class-memaccess>)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_library(teos STATIC GSW-C/gsw_oceanographic_toolbox.c GSW-C/gsw_saar.c)
|
|
|
|
set_target_properties(teos PROPERTIES LINKER_LANGUAGE C)
|
|
|
|
|
|
|
|
add_subdirectory(src)
|