All checks were successful
continuous-integration/drone/push Build is passing
the find "query" is a little naive but hey, we're looking at the usual place. the purpose of this change is iteration speedup and as lld is the quickest kid on the block, we're using it.
79 lines
3.1 KiB
CMake
79 lines
3.1 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(fortuna LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
# Produce debugging information in the operating system's native format.
|
|
# Level 3 includes extra information, such as all the macro definitions
|
|
# present in the program. Some debuggers support macro expansion when you
|
|
# use -g3
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-g")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-g")
|
|
|
|
if(NOT $ENV{VALGRIND} MATCHES "true")
|
|
# If DWARF debugging information is enabled, separate as much debugging
|
|
# information as possible into a separate output file with the extension
|
|
# .dwo. This option allows the build system to avoid linking files with
|
|
# debug information.
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-gsplit-dwarf")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gsplit-dwarf")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-gsplit-dwarf")
|
|
else()
|
|
message(STATUS "VALGRIND=true, not setting '-gsplit-dwarf'")
|
|
endif(NOT $ENV{VALGRIND} MATCHES "true")
|
|
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
|
|
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-Wextra")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-Wextra")
|
|
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-Wpedantic")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-Wpedantic")
|
|
|
|
endif(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "Release")
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
|
|
|
|
# Optimize yet more.
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-O3")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-O3")
|
|
|
|
if(NOT CMAKE_CXX_FLAGS MATCHES "-DNDEBUG")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG")
|
|
endif(NOT CMAKE_CXX_FLAGS MATCHES "-DNDEBUG")
|
|
endif(CMAKE_BUILD_TYPE MATCHES "Release")
|
|
|
|
# inspired by https://medium.com/@alasher/colored-c-compiler-output-with-ninja-clang-gcc-10bfe7f2b949
|
|
option (COLORS_FOREVER "Always produce ANSI-colored output (GNU/Clang only)." TRUE)
|
|
if (${COLORS_FOREVER})
|
|
message(STATUS "COLORS_FOREVER: ${COLORS_FOREVER}")
|
|
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
|
add_compile_options (-fdiagnostics-color=always)
|
|
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
|
add_compile_options (-fcolor-diagnostics)
|
|
endif ()
|
|
endif ()
|
|
|
|
message(STATUS "Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
|
|
message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
|
|
|
find_program(LLD lld)
|
|
if(LLD)
|
|
if(NOT CMAKE_EXE_LINKER_FLAGS MATCHES "-fuse-ld=lld")
|
|
message(STATUS "Linker: lld: ${LLD}")
|
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld")
|
|
endif(NOT CMAKE_EXE_LINKER_FLAGS MATCHES "-fuse-ld=lld")
|
|
endif()
|
|
|
|
add_executable(fortuna main.cpp generator.cpp generator.h)
|