@@ -110,6 +110,12 @@ if (NOT DUKTAPE_FOUND)
110110 find_package (duktape REQUIRED CONFIG)
111111endif ()
112112
113+ # python
114+ find_program (PYTHON_EXECUTABLE python3 python)
115+ if (NOT PYTHON_EXECUTABLE)
116+ message (FATAL_ERROR "Python is needed to configure mrdocs" )
117+ endif ()
118+
113119unset (CMAKE_FOLDER)
114120
115121#-------------------------------------------------
@@ -136,14 +142,48 @@ configure_file(
136142 @ONLY
137143)
138144
145+ # Config files for mrdocs-core
146+ add_custom_command (
147+ COMMAND
148+ ${PYTHON_EXECUTABLE}
149+ ${CMAKE_CURRENT_SOURCE_DIR} /util/generate-config-info.py
150+ src/lib/Lib/ConfigOptions.json
151+ ${CMAKE_CURRENT_BINARY_DIR}
152+ VERBATIM
153+ DEPENDS
154+ ${CMAKE_CURRENT_SOURCE_DIR} /util/generate-config-info.py
155+ src/lib/Lib/ConfigOptions.json
156+ OUTPUT
157+ ${CMAKE_CURRENT_BINARY_DIR} /include /mrdocs/PublicSettings.hpp
158+ ${CMAKE_CURRENT_BINARY_DIR} /src/lib/Lib/PublicSettings.cpp
159+ ${CMAKE_CURRENT_BINARY_DIR} /src/tool/PublicToolArgs.hpp
160+ ${CMAKE_CURRENT_BINARY_DIR} /src/tool/PublicToolArgs.cpp
161+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
162+ COMMENT "Generating Config Source Files"
163+ )
164+
165+
166+ # Main library
139167file (
140168 GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS
141- src/lib/*.cpp src/lib/*.hpp src/lib/*.ipp
169+ # Public
170+ include /*.hpp
171+ include /*.inc
172+ include /*.ipp
173+ # Private
174+ src/lib/*.cpp
175+ src/lib/*.hpp
176+ src/lib/*.ipp
142177 src/lib/*.natvis
143- include /*.hpp include /*.inc include /*.ipp
144- ${CMAKE_CURRENT_BINARY_DIR} /src/lib/*.hpp
178+ # Natvis
145179 include /*.natvis
146- SourceFileNames.cpp)
180+ SourceFileNames.cpp
181+ )
182+ list (APPEND LIB_SOURCES
183+ ${CMAKE_CURRENT_BINARY_DIR} /include /mrdocs/Version .hpp
184+ ${CMAKE_CURRENT_BINARY_DIR} /include /mrdocs/PublicSettings.hpp
185+ ${CMAKE_CURRENT_BINARY_DIR} /src/lib/Lib/PublicSettings.cpp
186+ )
147187add_library (mrdocs-core ${LIB_SOURCES} )
148188target_compile_features (mrdocs-core PUBLIC cxx_std_20)
149189target_include_directories (mrdocs-core
@@ -153,7 +193,7 @@ target_include_directories(mrdocs-core
153193 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >"
154194 PRIVATE
155195 "${PROJECT_SOURCE_DIR} /src"
156- "${PROJECT_SOURCE_DIR} /include " )
196+ "${PROJECT_BINARY_DIR} /src " )
157197target_compile_definitions (
158198 mrdocs-core
159199 PUBLIC
@@ -162,7 +202,7 @@ target_compile_definitions(
162202 -DMRDOCS_TOOL
163203)
164204
165- # Deps
205+ # Dependencies
166206target_include_directories (mrdocs-core SYSTEM PUBLIC ${LLVM_INCLUDE_DIRS} )
167207target_include_directories (mrdocs-core SYSTEM PUBLIC ${CLANG_INCLUDE_DIRS} )
168208target_link_libraries (mrdocs-core PUBLIC fmt::fmt)
@@ -174,7 +214,7 @@ if (CLANG_SIMPLE_LIBS)
174214 target_link_libraries (mrdocs-core PUBLIC LLVM clang clang-cpp)
175215else ()
176216 target_link_libraries (mrdocs-core
177- PUBLIC
217+ PUBLIC
178218 clangAST
179219 clangBasic
180220 clangFrontend
@@ -232,7 +272,13 @@ endif ()
232272#
233273#-------------------------------------------------
234274
235- file (GLOB_RECURSE TOOL_SOURCES CONFIGURE_DEPENDS src/tool/*.cpp src/tool/*.hpp)
275+ file (GLOB_RECURSE TOOL_SOURCES CONFIGURE_DEPENDS
276+ src/tool/*.cpp
277+ src/tool/*.hpp)
278+ list (APPEND TOOL_SOURCES
279+ ${CMAKE_CURRENT_BINARY_DIR} /src/tool/PublicToolArgs.hpp
280+ ${CMAKE_CURRENT_BINARY_DIR} /src/tool/PublicToolArgs.cpp)
281+
236282add_executable (mrdocs ${TOOL_SOURCES} )
237283target_compile_definitions (mrdocs PRIVATE -DMRDOCS_TOOL)
238284
@@ -243,6 +289,7 @@ target_include_directories(mrdocs
243289 PRIVATE
244290 "${PROJECT_SOURCE_DIR} /include"
245291 "${PROJECT_SOURCE_DIR} /src"
292+ "${PROJECT_BINARY_DIR} /src"
246293)
247294
248295target_compile_definitions (mrdocs PRIVATE -DMRDOCS_TOOL)
@@ -284,11 +331,22 @@ if (MRDOCS_BUILD_TESTS)
284331 endif ()
285332 target_compile_definitions (mrdocs-test PRIVATE -DMRDOCS_TEST_FILES_DIR="${CMAKE_CURRENT_SOURCE_DIR} /test-files" )
286333 add_test (NAME mrdocs-unit-tests COMMAND mrdocs-test --unit=true )
287- add_test (NAME mrdocs-golden-tests COMMAND mrdocs-test --unit=false --action=test "${PROJECT_SOURCE_DIR} /test-files/golden-tests" --addons="${CMAKE_SOURCE_DIR} /share/mrdocs/addons" )
334+ add_test (NAME mrdocs-golden-tests
335+ COMMAND
336+ mrdocs-test
337+ --unit=false
338+ --action=test
339+ "${PROJECT_SOURCE_DIR} /test-files/golden-tests"
340+ --addons="${CMAKE_SOURCE_DIR} /share/mrdocs/addons" )
288341 foreach (action IN ITEMS create update)
289342 add_custom_target (
290343 mrdocs-${action} -test -fixtures
291- COMMAND mrdocs-test --unit=false --action=${action} "${PROJECT_SOURCE_DIR} /test-files/golden-tests" --addons="${CMAKE_SOURCE_DIR} /share/mrdocs/addons"
344+ COMMAND
345+ mrdocs-test
346+ --unit=false
347+ --action=${action}
348+ "${PROJECT_SOURCE_DIR} /test-files/golden-tests"
349+ --addons="${CMAKE_SOURCE_DIR} /share/mrdocs/addons"
292350 DEPENDS mrdocs-test
293351 )
294352 endforeach ()
@@ -421,23 +479,15 @@ if (MRDOCS_INSTALL)
421479 #-------------------------------------------------
422480 # include
423481 #-------------------------------------------------
424- install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /mrdocs
425- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
426- COMPONENT development
427- FILES_MATCHING
428- PATTERN "*.[hi]pp" )
429-
430- install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /mrdocs
431- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
432- COMPONENT development
433- FILES_MATCHING
434- PATTERN "*.inc" )
435-
436- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /include /mrdocs
437- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
438- COMPONENT development
439- FILES_MATCHING
440- PATTERN "*.[hi]pp" )
482+ foreach (MRDOCS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /include /mrdocs ${CMAKE_CURRENT_BINARY_DIR} /include /mrdocs)
483+ foreach (MRDOCS_FILE_PATTERN "*.hpp" "*.ipp" "*.inc" )
484+ install (DIRECTORY ${MRDOCS_INCLUDE_DIR}
485+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
486+ COMPONENT development
487+ FILES_MATCHING
488+ PATTERN ${MRDOCS_FILE_PATTERN} )
489+ endforeach ()
490+ endforeach ()
441491
442492 #-------------------------------------------------
443493 # share
0 commit comments