Modify CFLAGS handling
- Remove `-rdynamic` from "CFLAGS" and count on CMake to pass it to the compiler at the link phase (Issue #450). - Move the definition of "CFLAGS" from `awesomeConfig.cmake` to `CMakeLists.txt` and give it a name, `AWESOME_C_FLAGS`, so that the relation between the target and the flags is made clearer and manageable. - Make `AWESOME_C_FLAGS` a cached variable so that the developers can tweak the flags promptly in accordance with their necessities without changing the prescribed value. - Add a logic to cope with the case where CMake fails to set `-rdynamic`. Closes https://github.com/awesomeWM/awesome/pull/453.
This commit is contained in:
parent
d96c4d61a9
commit
998a20514a
|
@ -92,6 +92,30 @@ endif()
|
||||||
add_executable(${PROJECT_AWE_NAME}
|
add_executable(${PROJECT_AWE_NAME}
|
||||||
${AWE_SRCS})
|
${AWE_SRCS})
|
||||||
|
|
||||||
|
# CFLAGS
|
||||||
|
set(AWESOME_C_FLAGS
|
||||||
|
-O1 -std=gnu99 -ggdb3 -fno-strict-aliasing -Wall -Wextra
|
||||||
|
-Wchar-subscripts -Wundef -Wshadow -Wcast-align -Wwrite-strings
|
||||||
|
-Wsign-compare -Wunused -Wno-unused-parameter -Wuninitialized -Winit-self
|
||||||
|
-Wpointer-arith -Wformat-nonliteral
|
||||||
|
-Wno-format-zero-length -Wmissing-format-attribute -Wmissing-prototypes
|
||||||
|
-Wstrict-prototypes
|
||||||
|
CACHE STRING "CFLAGS used to compile ${PROJECT_AWE_NAME}")
|
||||||
|
mark_as_advanced(AWESOME_C_FLAGS)
|
||||||
|
target_compile_options(${PROJECT_AWE_NAME} PRIVATE ${AWESOME_C_FLAGS})
|
||||||
|
|
||||||
|
# Linux w/ GCC requires -rdynamic to get backtrace to fully work.
|
||||||
|
#
|
||||||
|
# For "historical reasons", CMake adds the option to the linker flags
|
||||||
|
# unnoticeably for Linux w/ GCC through its modules Linux-GNU.cmake
|
||||||
|
# and Linux-GNU-C.cmake. Our build system has counted on that. But
|
||||||
|
# just in case CMake should do away with the convention suddenly...
|
||||||
|
if(DEFINED CMAKE_SHARED_LIBRARY_LINK_C_FLAGS AND
|
||||||
|
NOT CMAKE_SHARED_LIBRARY_LINK_C_FLAGS MATCHES "-rdynamic")
|
||||||
|
target_link_libraries(${PROJECT_AWE_NAME}
|
||||||
|
$<$<AND:$<PLATFORM_ID:Linux>,$<C_COMPILER_ID:GNU>>:-rdynamic>)
|
||||||
|
endif()
|
||||||
|
|
||||||
# FreeBSD requires dynamic linking
|
# FreeBSD requires dynamic linking
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||||
set_target_properties(${PROJECT_AWE_NAME}
|
set_target_properties(${PROJECT_AWE_NAME}
|
||||||
|
|
|
@ -15,15 +15,6 @@ option(GENERATE_MANPAGES "generate manpages" ON)
|
||||||
option(COMPRESS_MANPAGES "compress manpages" ON)
|
option(COMPRESS_MANPAGES "compress manpages" ON)
|
||||||
option(GENERATE_DOC "generate API documentation" ON)
|
option(GENERATE_DOC "generate API documentation" ON)
|
||||||
|
|
||||||
# {{{ CFLAGS
|
|
||||||
add_definitions(-O1 -std=gnu99 -ggdb3 -rdynamic -fno-strict-aliasing -Wall -Wextra
|
|
||||||
-Wchar-subscripts -Wundef -Wshadow -Wcast-align -Wwrite-strings
|
|
||||||
-Wsign-compare -Wunused -Wno-unused-parameter -Wuninitialized -Winit-self
|
|
||||||
-Wpointer-arith -Wformat-nonliteral
|
|
||||||
-Wno-format-zero-length -Wmissing-format-attribute -Wmissing-prototypes
|
|
||||||
-Wstrict-prototypes)
|
|
||||||
# }}}
|
|
||||||
|
|
||||||
# {{{ Endianness
|
# {{{ Endianness
|
||||||
include(TestBigEndian)
|
include(TestBigEndian)
|
||||||
TEST_BIG_ENDIAN(AWESOME_IS_BIG_ENDIAN)
|
TEST_BIG_ENDIAN(AWESOME_IS_BIG_ENDIAN)
|
||||||
|
|
Loading…
Reference in New Issue