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()
|
endif()
|
||||||
|
|
||||||
include(cmake/git.cmake)
|
include(cmake/git.cmake)
|
||||||
|
include(cmake/util.cmake)
|
||||||
|
|
||||||
include(cmake/config.cmake)
|
include(cmake/config.cmake)
|
||||||
configure_file(
|
configure_file(
|
||||||
|
@ -28,10 +29,17 @@ configure_file(
|
||||||
|
|
||||||
include("arch/${ARCH}/config/toolchain.cmake")
|
include("arch/${ARCH}/config/toolchain.cmake")
|
||||||
|
|
||||||
# Used by the KASSERT macro for printing the filename relative to the source root
|
gay_append_cmake_c_flags(
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
|
-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")
|
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -pipe -D_ASM_SOURCE")
|
||||||
if(DEBUG)
|
if(DEBUG)
|
||||||
# -Og on gcc optimizes for the best debugging experience, but apparently this
|
# -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
|
# you're supposed to use -O0 in order to get the most submissive and debuggable
|
||||||
# code instead:
|
# code instead:
|
||||||
# <https://clang.llvm.org/docs/CommandGuide/clang.html#code-generation-options>
|
# <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
|
# 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)
|
# 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()
|
else()
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -ggdb")
|
gay_append_cmake_c_flags(-O2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# --whole-archive ensures no (seemingly) unused symbols
|
# --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