Newer
Older
add_definitions(-DQT_NO_FOREACH)
################
set ( CONFIGURE_HEADERS_SRC_DIR ${{CMAKE_SOURCE_DIR}}/CMake/headers )
set ( CONFIGURE_HEADERS_DST_DIR ${{CMAKE_BINARY_DIR}}/generated )
include_directories ( ${{CONFIGURE_HEADERS_DST_DIR}} )
################
# Immediately fail if not UNIX
# TODO: Add suport for other platforms
# FIXME: Apple is subset of UNIX, check.
if (NOT UNIX)
message(FATAL_ERROR "Unavailable if not Unix")
endif ()
Tomáš Pecka
committed
####################
# CMake include path
set(CMAKE_MODULE_PATH ${{CMAKE_SOURCE_DIR}}/CMake/Modules)
Tomáš Pecka
committed
# set(CMAKE_TEMPLATE_PATH ${{CMAKE_SOURCE_DIR}}/CMakeTemplates)
Jan Trávníček
committed
#########################################################
# If not specified whether Debug or Release, select debug
# cmake -DCMAKE_BUILD_TYPE=Release
# cmake -DCMAKE_BUILD_TYPE=Debug
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif ()
Jan Trávníček
committed
Tomáš Pecka
committed
#################
# versioning
include(git)
include(versioning)
if ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
set_git_version()
endif ( )
Tomáš Pecka
committed
set_version({alib_versioning_major} {alib_versioning_minor} {alib_versioning_patch})
Jan Trávníček
committed
######################
# Some Makefile tuning
set(CMAKE_COLOR_MAKEFILE ON)
# set(CMAKE_VERBOSE_MAKEFILE ON)
###########################################
# Flags according to Debug/Release decision
# - CMake uses -g on Debug implicitly
# - fPIC for libraries will be enabled explicitly
# - add sanitizer? -DSANITIZE=<sanitizer>
include(sanitizer)
set(ALIB_BUILD_FLAGS_COMMON -Wall -pedantic -pipe -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls)
set(ALIB_BUILD_FLAGS_DEBUG ${{ALIB_BUILD_FLAGS_COMMON}} -Og)
set(ALIB_BUILD_FLAGS_RELEASE ${{ALIB_BUILD_FLAGS_COMMON}} -O3)
set(CMAKE_EXE_LINKER_FLAGS "${{CMAKE_EXE_LINKER_FLAGS}} -Wl,-no-as-needed")
if (${{CMAKE_CXX_COMPILER_ID}} STREQUAL "Clang")
set(ALIB_BUILD_FLAGS_DEBUG ${{ALIB_BUILD_FLAGS_COMMON}} -O0)
endif ()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDEBUG)
add_compile_options(${{ALIB_BUILD_FLAGS_DEBUG}})
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
remove_definitions(-DNDEBUG)
add_definitions(-DRELEASE)
add_compile_options(${{ALIB_BUILD_FLAGS_RELEASE}})
endif ()
# TODO set CMAKE_INSTALL_PREFIX in release only
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set (CMAKE_INSTALL_PREFIX /usr)
endif()
message ( "[Install] Install directory prefix is ${{CMAKE_INSTALL_PREFIX}}" )
set(CMAKE_INSTALL_RPATH "${{CMAKE_INSTALL_PREFIX}}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(ALIB_MODULES_LIB
{alib_modules_lib}
)
set(ALIB_MODULES_EXE
{alib_modules_exe}
)
set(ALIB_MODULES_TEST
{alib_modules_test}
)
Tomáš Pecka
committed
##################
# configure version
configure_file (
${{CONFIGURE_HEADERS_SRC_DIR}}/version.hpp.in
${{CONFIGURE_HEADERS_DST_DIR}}/version.hpp
Tomáš Pecka
committed
)
#################
# backtrace support
find_package(Backtrace)
if(BACKTRACE_EXISTS)
add_definitions(-DBACKTRACE)
endif()
enable_testing()
add_subdirectory ( contrib/catch2 )
##################
# Register modules
foreach (module ${{ALIB_MODULES_LIB}} ${{ALIB_MODULES_EXE}} ${{ALIB_MODULES_TEST}})
add_subdirectory(${{module}})
endforeach ()