105 lines
2.6 KiB
CMake
105 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(m2dev-server-src)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_C_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# ASan support
|
|
option(ENABLE_ASAN "Enable AddressSanitizer" OFF)
|
|
|
|
set(CMAKE_MODULE_PATH
|
|
${CMAKE_MODULE_PATH}
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/buildtool"
|
|
)
|
|
|
|
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/_install")
|
|
|
|
if(WIN32)
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
|
|
add_compile_options(
|
|
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<COMPILE_LANGUAGE:CXX>>:/utf-8>
|
|
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<COMPILE_LANGUAGE:CXX>>:/Zc:preprocessor>
|
|
)
|
|
|
|
if (MSVC)
|
|
add_compile_options(/MP)
|
|
endif()
|
|
else()
|
|
include_directories(${MARIADB_INCLUDE_DIR})
|
|
|
|
add_compile_options("$<$<CXX_COMPILER_ID:GNU>:-finput-charset=UTF-8>")
|
|
endif()
|
|
|
|
add_compile_definitions(
|
|
$<$<PLATFORM_ID:Windows>:OS_WINDOWS>
|
|
$<$<PLATFORM_ID:FreeBSD>:OS_FREEBSD>
|
|
$<$<PLATFORM_ID:Linux>:OS_LINUX>
|
|
$<$<PLATFORM_ID:Darwin>:OS_MACOS>
|
|
)
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
# Derive a version string from git for the db target
|
|
find_package(Git QUIET)
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} describe --always --dirty --tags
|
|
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
endif()
|
|
|
|
if(NOT GIT_DESCRIBE_VERSION)
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} rev-parse --short HEAD
|
|
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
else()
|
|
set(GIT_DESCRIBE_VERSION "unknown")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT GIT_DESCRIBE_VERSION)
|
|
set(GIT_DESCRIBE_VERSION "unknown")
|
|
endif()
|
|
|
|
# ASan flags
|
|
if(ENABLE_ASAN)
|
|
if(MSVC)
|
|
add_compile_options(/fsanitize=address)
|
|
add_link_options(/fsanitize=address)
|
|
add_definitions(-D_DISABLE_VECTOR_ANNOTATION)
|
|
add_definitions(-D_DISABLE_STRING_ANNOTATION)
|
|
else()
|
|
add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
|
|
add_link_options(-fsanitize=address)
|
|
endif()
|
|
endif()
|
|
|
|
add_definitions(-DNOMINMAX)
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
|
|
include_directories(src)
|
|
include_directories(include)
|
|
|
|
# MariDB includes
|
|
include_directories(${CMAKE_BINARY_DIR}/vendor/mariadb-connector-c-3.4.5/include)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/vendor/mariadb-connector-c-3.4.5/include)
|
|
|
|
add_subdirectory(src)
|
|
add_subdirectory(vendor)
|
|
|
|
enable_testing()
|
|
add_subdirectory(tests)
|