update the cmake scaffolding (patch by christophe-calmejane on github)

This commit is contained in:
jessica parsons
2025-08-30 01:49:05 -07:00
parent 286f43f7d4
commit 05d75492b9
+32 -15
View File
@@ -100,36 +100,40 @@ if(NOT HAVE_S_ISCHR OR NOT HAVE_S_ISFIFO OR NOT HAVE_S_ISSOCK)
endif() endif()
configure_file(config.h.in configure_file(config.h.in
"${_ROOT}/config.h" "${CMAKE_CURRENT_BINARY_DIR}/config.h"
@ONLY) @ONLY)
configure_file("${_ROOT}/version.c.in" configure_file("${_ROOT}/version.c.in"
"${_ROOT}/version.c" "${CMAKE_CURRENT_BINARY_DIR}/version.c"
@ONLY) @ONLY)
set_property(SOURCE "${_ROOT}/version.c" APPEND PROPERTY COMPILE_DEFINITIONS set_property(SOURCE "${CMAKE_CURRENT_BINARY_DIR}/version.c" APPEND PROPERTY COMPILE_DEFINITIONS
BRANCH="" BRANCH=""
VERSION="${${PROJECT_NAME}_VERSION}") VERSION="${${PROJECT_NAME}_VERSION}")
configure_file("${_ROOT}/mkdio.h.in" configure_file("${_ROOT}/mkdio.h.in"
"${_ROOT}/mkdio.h" "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h"
@ONLY) @ONLY)
if(${PROJECT_NAME}_CXX_BINDING) if(${PROJECT_NAME}_CXX_BINDING)
message(STATUS "Applying c++ glue to mkdio.h") message(STATUS "Applying c++ glue to mkdio.h")
file(READ "${_ROOT}/mkdio.h" _ROOT_MKDIO_H) file(READ "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h" _ROOT_MKDIO_H)
file(WRITE "${_ROOT}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h" "#ifdef __cplusplus\nextern \"C\" {\n#endif\n")
file(APPEND "${_ROOT}/mkdio.h" "${_ROOT_MKDIO_H}") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h" "${_ROOT_MKDIO_H}")
file(APPEND "${_ROOT}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h" "#ifdef __cplusplus\n}\n#endif\n")
endif() endif()
include_directories("${_ROOT}")
add_executable(mktags add_executable(mktags
"${_ROOT}/mktags.c") "${_ROOT}/mktags.c")
add_custom_command(OUTPUT "${_ROOT}/blocktags" set(BLOCKTAGS_FILE "${CMAKE_CURRENT_BINARY_DIR}/blocktags")
COMMAND mktags > blocktags add_custom_command(OUTPUT "${BLOCKTAGS_FILE}"
COMMAND mktags > ${BLOCKTAGS_FILE}
WORKING_DIRECTORY "${_ROOT}") WORKING_DIRECTORY "${_ROOT}")
target_include_directories(mktags
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
)
add_library(libmarkdown add_library(libmarkdown
"${_ROOT}/mkdio.c" "${_ROOT}/mkdio.c"
"${_ROOT}/markdown.c" "${_ROOT}/markdown.c"
@@ -137,7 +141,7 @@ add_library(libmarkdown
"${_ROOT}/generate.c" "${_ROOT}/generate.c"
"${_ROOT}/resource.c" "${_ROOT}/resource.c"
"${_ROOT}/docheader.c" "${_ROOT}/docheader.c"
"${_ROOT}/version.c" "${CMAKE_CURRENT_BINARY_DIR}/version.c"
"${_ROOT}/toc.c" "${_ROOT}/toc.c"
"${_ROOT}/css.c" "${_ROOT}/css.c"
"${_ROOT}/xml.c" "${_ROOT}/xml.c"
@@ -147,7 +151,8 @@ add_library(libmarkdown
"${_ROOT}/emmatch.c" "${_ROOT}/emmatch.c"
"${_ROOT}/github_flavoured.c" "${_ROOT}/github_flavoured.c"
"${_ROOT}/setup.c" "${_ROOT}/setup.c"
"${_ROOT}/blocktags" "${_ROOT}/tags.c" "${BLOCKTAGS_FILE}"
"${_ROOT}/tags.c"
"${_ROOT}/html5.c" "${_ROOT}/html5.c"
"${_ROOT}/v2compat.c" "${_ROOT}/v2compat.c"
"${_ROOT}/flagprocs.c" "${_ROOT}/flagprocs.c"
@@ -156,11 +161,23 @@ add_library(libmarkdown
set_target_properties(libmarkdown PROPERTIES set_target_properties(libmarkdown PROPERTIES
OUTPUT_NAME markdown) OUTPUT_NAME markdown)
target_include_directories(libmarkdown
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
PRIVATE
$<BUILD_INTERFACE:${_ROOT}>
)
if(NOT ${PROJECT_NAME}_ONLY_LIBRARY) if(NOT ${PROJECT_NAME}_ONLY_LIBRARY)
add_library(common OBJECT add_library(common OBJECT
"${_ROOT}/pgm_options.c" "${_ROOT}/pgm_options.c"
"${_ROOT}/gethopt.c") "${_ROOT}/gethopt.c")
target_include_directories(common
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
)
add_executable(markdown add_executable(markdown
"${_ROOT}/main.c" "${_ROOT}/main.c"
$<TARGET_OBJECTS:common>) $<TARGET_OBJECTS:common>)
@@ -194,7 +211,7 @@ if(${PROJECT_NAME}_MAKE_INSTALL)
"${CMAKE_INSTALL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
CACHE STRING "The pkg-config packages") CACHE STRING "The pkg-config packages")
endif() endif()
install(FILES "${_ROOT}/mkdio.h" install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mkdio.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
target_include_directories(libmarkdown INTERFACE target_include_directories(libmarkdown INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>