0
0
Fork 0
AdventOfCode2023/CMakeLists.txt

60 lines
1.9 KiB
CMake

cmake_minimum_required(VERSION 3.27)
project(AdventOfCode2023 CXX)
set(CMAKE_CXX_STANDARD 20)
find_package(PkgConfig REQUIRED)
pkg_check_modules(Jemalloc REQUIRED jemalloc)
set(LINKER_OPTIONS -Wl,--sort-common,--as-needed,--gc-sections,--strip-all)
set(COMPILE_FLAGS
-pipe
-march=native
-mtune=native
-mrdrnd
-mrdseed
-Wall
-Wextra
-Wpedantic
-ffunction-sections
-fdata-sections
-funroll-loops
-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
)
set(LINKER_OPTIONS
${LINKER_OPTIONS}
-fuse-ld=gold
)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set(COMPILE_FLAGS -stdlib=libc++ -Wmove ${COMPILE_FLAGS} -fwhole-program-vtables)
set(LINKER_OPTIONS ${LINKER_OPTIONS} -fwhole-program-vtables)
set(LINKER_FLAGS ${LINKER_FLAGS} c++)
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(COMPILE_FLAGS ${COMPILE_FLAGS} -fuse-ld=gold -fdevirtualize-at-ltrans)
set(LINKER_OPTIONS ${LINKER_OPTIONS} -fdevirtualize-at-ltrans)
set(LINKER_FLAGS ${LINKER_FLAGS} stdc++)
endif ()
add_executable(AdventOfCode2023 main.cpp)
add_library(pb_1 STATIC pb_1/problem_1.cpp pb_1/problem_1.hpp)
set_target_properties(AdventOfCode2023 pb_1 PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
INTERPROCEDURAL_OPTIMIZATION ON
UNITY_BUILD ON
)
target_compile_definitions(AdventOfCode2023 PUBLIC $<$<AND:$<CONFIG:Debug>,$<STREQUAL:$<CXX_COMPILER_ID>,GNU>>:_GLIBCXX_DEBUG>)
target_compile_definitions(pb_1 PUBLIC $<$<AND:$<CONFIG:Debug>,$<STREQUAL:$<CXX_COMPILER_ID>,GNU>>:_GLIBCXX_DEBUG>)
target_compile_options(AdventOfCode2023 PUBLIC ${COMPILE_OPTIONS})
target_link_options(AdventOfCode2023 PUBLIC ${LINKER_OPTIONS})
target_link_libraries(AdventOfCode2023 PUBLIC pb_1 ${Jemalloc_LIBRARIES})
target_link_libraries(pb_1 PUBLIC ${Jemalloc_LIBRARIES})