60 lines
1.9 KiB
CMake
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})
|