mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Add a 'core' library alongside 'common'.
The 'core' library contains almost all the same objects as 'common', but leaves out hat.c. And the auxiliary program 'hatgen' now links against that slightly reduced core library instead of 'common'. This avoids a dependency loop: one of hatgen's jobs is to generate hat-tables.h, but hat-tables.h is a dependency of it. Of course, the generated hat-tables.h is already committed, so this doesn't present a bootstrapping problem in a normal build. But if someone modifies hatgen.c in order to regenerate hat-tables.h, and does so in a way that makes it uncompilable, they can't rebuild hatgen and try again! Of course you can always revert changes with git, but it's annoying to have to. Better to keep the dependencies non-cyclic in the first place.
This commit is contained in:
@ -148,12 +148,18 @@ endfunction()
|
||||
# a command-line helper tool.
|
||||
function(cliprogram NAME)
|
||||
cmake_parse_arguments(OPT
|
||||
"" "" "COMPILE_DEFINITIONS" ${ARGN})
|
||||
"CORE_LIB" "" "COMPILE_DEFINITIONS" ${ARGN})
|
||||
|
||||
if(OPT_CORE_LIB)
|
||||
set(lib core)
|
||||
else()
|
||||
set(lib common)
|
||||
endif()
|
||||
|
||||
if(build_cli_programs)
|
||||
add_executable(${NAME} ${CMAKE_SOURCE_DIR}/nullfe.c
|
||||
${OPT_UNPARSED_ARGUMENTS})
|
||||
target_link_libraries(${NAME} common ${platform_libs})
|
||||
target_link_libraries(${NAME} ${lib} ${platform_libs})
|
||||
if(OPT_COMPILE_DEFINITIONS)
|
||||
target_compile_definitions(${NAME} PRIVATE ${OPT_COMPILE_DEFINITIONS})
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user