Skip to content

Commit 2ade8e0

Browse files
committed
CMake: add add_nostdlib() and apply to all targets (MSVC-gated); drop prior exec gating and purity flags
1 parent b3e3387 commit 2ade8e0

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

CMakeLists.txt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ set(LIBGITLEDGER_HEADERS
5353
add_library(gitledger STATIC ${LIBGITLEDGER_SOURCES} ${LIBGITLEDGER_HEADERS})
5454
target_compile_options(gitledger PRIVATE ${PROJECT_WARNING_FLAGS})
5555
target_compile_definitions(gitledger PRIVATE GITLEDGER_BUILD=1)
56-
if(NOT MSVC)
57-
target_link_options(gitledger PRIVATE -nostdlib)
58-
endif()
56+
function(add_nostdlib target)
57+
if(NOT MSVC)
58+
target_link_options(${target} PRIVATE -nostdlib)
59+
endif()
60+
endfunction()
5961

6062
if(GITLEDGER_VENDOR_LIBGIT2)
6163
message(FATAL_ERROR "Vendored libgit2 support is not implemented yet.\n"
@@ -109,36 +111,27 @@ target_include_directories(gitledger
109111
add_executable(gitledger_version_test tests/version_test.c)
110112
target_compile_options(gitledger_version_test PRIVATE ${PROJECT_WARNING_FLAGS})
111113
target_link_libraries(gitledger_version_test PRIVATE gitledger)
112-
if(GITLEDGER_EXEC_NOSTDLIB AND NOT MSVC)
113-
target_link_options(gitledger_version_test PRIVATE -nostdlib)
114-
endif()
115114

116115
add_executable(gitledger_tests libgitledger/tests/main.c)
117116
target_compile_options(gitledger_tests PRIVATE ${PROJECT_WARNING_FLAGS})
118117
target_link_libraries(gitledger_tests PRIVATE gitledger)
119-
if(GITLEDGER_EXEC_NOSTDLIB AND NOT MSVC)
120-
target_link_options(gitledger_tests PRIVATE -nostdlib)
121-
endif()
122118

123119
add_executable(mg-ledger libgitledger/cli/mg-ledger.c)
124120
target_compile_options(mg-ledger PRIVATE ${PROJECT_WARNING_FLAGS})
125121
target_link_libraries(mg-ledger PRIVATE gitledger)
126-
if(GITLEDGER_EXEC_NOSTDLIB AND NOT MSVC)
127-
target_link_options(mg-ledger PRIVATE -nostdlib)
128-
endif()
129122

130123
add_executable(gitledger_error_test tests/error_test.c)
131124
target_compile_options(gitledger_error_test PRIVATE ${PROJECT_WARNING_FLAGS})
132125
target_link_libraries(gitledger_error_test PRIVATE gitledger)
133-
if(GITLEDGER_EXEC_NOSTDLIB AND NOT MSVC)
134-
target_link_options(gitledger_error_test PRIVATE -nostdlib)
135-
endif()
136126

137127
include(CTest)
138128
if(BUILD_TESTING)
139129
add_test(NAME version COMMAND gitledger_version_test)
140130
add_test(NAME gitledger_cli_smoke COMMAND gitledger_tests)
141131
add_test(NAME error COMMAND gitledger_error_test)
142132
endif()
143-
# Optionally link executables with -nostdlib (non-MSVC); OFF by default to allow tests to run
144-
option(GITLEDGER_EXEC_NOSTDLIB "Link executables with -nostdlib on non-MSVC" OFF)
133+
add_nostdlib(gitledger)
134+
add_nostdlib(gitledger_version_test)
135+
add_nostdlib(gitledger_tests)
136+
add_nostdlib(mg-ledger)
137+
add_nostdlib(gitledger_error_test)

0 commit comments

Comments
 (0)