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 -funroll-loops -fuse-ld=gold ) set(LINKER_OPTIONS ${LINKER_OPTIONS} -fuse-ld=gold ) set(LINKER_FLAGS stdc++) if (${CMAKE_BUILD_TYPE} STREQUAL "Release") set(COMPILE_FLAGS ${COMPILE_FLAGS} -ffunction-sections -fdata-sections -fdevirtualize-at-ltrans -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free ) set(LINKER_OPTIONS ${LINKER_OPTIONS} -fdevirtualize-at-ltrans) set(LINKER_FLAGS ${LINKER_FLAGS} ${Jemalloc_LIBRARIES}) endif () add_executable(AdventOfCode2023 main.cpp) add_subdirectory(common) add_subdirectory(pb_1) add_subdirectory(pb_2) add_subdirectory(pb_4) set_target_properties(AdventOfCode2023 pb_1 pb_2 pb_4 PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF # INTERPROCEDURAL_OPTIMIZATION ON # UNITY_BUILD ON ) #target_compile_definitions(AdventOfCode2023 PUBLIC $<$,$,GNU>>:_GLIBCXX_DEBUG>) #target_compile_options(AdventOfCode2023 PUBLIC ${COMPILE_FLAGS}) #target_link_options(AdventOfCode2023 PUBLIC ${LINKER_OPTIONS}) target_link_libraries(AdventOfCode2023 PUBLIC pb_1 pb_2 pb_4 ${LINKER_FLAGS})