cmake: add cflags utility macros
This commit is contained in:
parent
205326bccd
commit
baf03e97a4
2 changed files with 27 additions and 6 deletions
|
@ -19,6 +19,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
|||
endif()
|
||||
|
||||
include(cmake/git.cmake)
|
||||
include(cmake/util.cmake)
|
||||
|
||||
include(cmake/config.cmake)
|
||||
configure_file(
|
||||
|
@ -28,10 +29,17 @@ configure_file(
|
|||
|
||||
include("arch/${ARCH}/config/toolchain.cmake")
|
||||
|
||||
# Used by the KASSERT macro for printing the filename relative to the source root
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
|
||||
gay_append_cmake_c_flags(
|
||||
-ggdb
|
||||
-pipe
|
||||
-nostdinc
|
||||
-ffreestanding
|
||||
-fno-stack-protector
|
||||
-Wused-but-marked-unused
|
||||
# Used by the KASSERT macro for printing the filename relative to the source root
|
||||
"-D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'"
|
||||
)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -nostdinc -ffreestanding -fno-stack-protector")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -pipe -D_ASM_SOURCE")
|
||||
if(DEBUG)
|
||||
# -Og on gcc optimizes for the best debugging experience, but apparently this
|
||||
|
@ -39,12 +47,12 @@ if(DEBUG)
|
|||
# you're supposed to use -O0 in order to get the most submissive and debuggable
|
||||
# code instead:
|
||||
# <https://clang.llvm.org/docs/CommandGuide/clang.html#code-generation-options>
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb")
|
||||
gay_append_cmake_c_flags(-O0)
|
||||
# i don't think -O0 does anything for assembly code, but it can't hurt to
|
||||
# have it in there just in case (somebody check on this at some point plz)
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -O0 -ggdb")
|
||||
gay_append_cmake_asm_flags(-O0)
|
||||
else()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -ggdb")
|
||||
gay_append_cmake_c_flags(-O2)
|
||||
endif()
|
||||
|
||||
# --whole-archive ensures no (seemingly) unused symbols
|
||||
|
|
13
cmake/util.cmake
Normal file
13
cmake/util.cmake
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Copyright (C) 2021 fef <owo@fef.moe>. All rights reserved.
|
||||
|
||||
macro(gay_append_cmake_c_flags)
|
||||
foreach(flag IN ITEMS ${ARGN})
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(gay_append_cmake_asm_flags)
|
||||
foreach(flag IN ITEMS ${ARGN})
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${flag}")
|
||||
endforeach()
|
||||
endmacro()
|
Loading…
Reference in a new issue