@@ -84,63 +84,73 @@ message(STATUS "cxx-flags : " ${CMAKE_CXX_FLAGS})
8484message (STATUS "cxx-standard: " ${CMAKE_CXX_STANDARD} )
8585
8686# ************************
87- # *** libraries ***
87+ # *** dependencies ***
8888# ************************
8989
90- if (NOT EXISTS ${EXTERNALS_PREFIX_PATH} )
91- execute_process (COMMAND mkdir ${EXTERNALS_PREFIX_PATH} )
92- execute_process (COMMAND mkdir ${EXTERNALS_PREFIX_PATH} /bin)
93- execute_process (COMMAND mkdir ${EXTERNALS_PREFIX_PATH} /lib)
94- execute_process (COMMAND mkdir ${EXTERNALS_PREFIX_PATH} /include )
95- execute_process (COMMAND mkdir ${EXTERNALS_PREFIX_PATH} /resources)
90+ option (USE_SYSTEM_DEPS OFF "If enabled, the build will find and link to system dependencies, otherwise they are sourced from the original repos and compiled on the fly." )
91+
92+ # prepare setup for building external packages
93+ if (NOT USE_SYSTEM_DEPS)
94+ if (NOT EXISTS ${EXTERNALS_PREFIX_PATH} )
95+ file (MAKE_DIRECTORY ${EXTERNALS_PREFIX_PATH} )
96+ file (MAKE_DIRECTORY ${EXTERNALS_PREFIX_PATH} /bin)
97+ file (MAKE_DIRECTORY ${EXTERNALS_PREFIX_PATH} /lib)
98+ file (MAKE_DIRECTORY ${EXTERNALS_PREFIX_PATH} /include )
99+ file (MAKE_DIRECTORY ${EXTERNALS_PREFIX_PATH} /resources)
100+ endif ()
96101endif ()
97102
98- include (cmake/subdirlist.cmake)
99103
104+ # include dependencies
100105include (cmake/extlib_json.cmake)
101106include (cmake/extlib_utf8.git.cmake)
102107include (cmake/extlib_jpeg.cmake)
103- # include(cmake/extlib_qpdf_v10.cmake)
104108include (cmake/extlib_qpdf_v11.cmake)
105- # include(cmake/extlib_pybind11.cmake)
106109
110+ # aggregate the targets created by the dependencies
111+ set (DEPENDENCIES qpdf jpeg utf8 json)
112+
113+
114+ # ************************
115+ # *** libraries ***
116+ # ************************
117+
118+ # define LIB_LINK and OS_DEPENDENCIES
107119include (cmake/os_opts.cmake)
120+ list (APPEND DEPENDENCIES ${OS_DEPENDENCIES} )
108121
109122# ***********************
110123# *** includes ***
111124# ***********************
112125
113- include_directories (${EXTERNALS_PREFIX_PATH} /include )
114-
115- subdirlist(EXTERNALS_INCLUDES ${EXTERNALS_PREFIX_PATH} /include )
116- include_directories (${EXTERNALS_INCLUDES} )
117-
118- message (STATUS "subdirs: " ${SUBDIRS} )
126+ # define subdirlist utility
127+ include (cmake/subdirlist.cmake)
119128
120129include_directories (${TOPLEVEL_PREFIX_PATH} /src)
121130
122131subdirlist(SUBDIRS ${TOPLEVEL_PREFIX_PATH} /src)
132+ message (STATUS "subdirs: " ${SUBDIRS} )
123133include_directories (${SUBDIRS} )
124134
125135# **********************
126136# *** Executables ***
127137# **********************
128138
129139add_executable (parse.exe "${TOPLEVEL_PREFIX_PATH} /app/parse.cpp" )
130-
131140set_property (TARGET parse.exe PROPERTY CXX_STANDARD 20)
132-
133- target_link_libraries (parse.exe ${LIB_LINK} )
141+ add_dependencies (parse.exe ${DEPENDENCIES} )
142+ target_include_directories (parse.exe INTERFACE ${DEPENDENCIES} )
143+ target_link_libraries (parse.exe ${DEPENDENCIES} ${LIB_LINK} )
134144
135145# **********************
136146# *** Libraries ***
137147# **********************
138148
139- add_library (parse STATIC "${TOPLEVEL_PREFIX_PATH} /app/parse.cpp" )
140-
141- set_target_properties (parse PROPERTIES POSITION_INDEPENDENT_CODE ON )
142-
143- target_link_libraries (parse ${LIB_LINK} )
149+ add_library (libparse STATIC "${TOPLEVEL_PREFIX_PATH} /app/parse.cpp" )
150+ add_dependencies (libparse ${DEPENDENCIES} )
151+ target_include_directories (libparse INTERFACE ${DEPENDENCIES} )
152+ set_target_properties (libparse PROPERTIES POSITION_INDEPENDENT_CODE ON )
153+ target_link_libraries (libparse ${DEPENDENCIES} ${LIB_LINK} )
144154
145155# ***************************
146156# *** Python-binding ***
@@ -151,11 +161,10 @@ target_link_libraries(parse ${LIB_LINK})
151161find_package (pybind11 CONFIG REQUIRED)
152162
153163pybind11_add_module(docling_parse "${TOPLEVEL_PREFIX_PATH} /app/pybind_parse.cpp" )
154-
155- add_dependencies (docling_parse json utf8) # we have to list the headers-only deps here
156- target_compile_definitions (docling_parse PRIVATE VERSION_INFO=${EXAMPLE_VERSION_INFO} )
157-
158- target_link_libraries (docling_parse PRIVATE parse)
164+ add_dependencies (docling_parse libparse)
165+ target_include_directories (docling_parse INTERFACE ${DEPENDENCIES} )
166+ target_compile_definitions (docling_parse PRIVATE VERSION_INFO=${CMAKE_PROJECT_VERSION} )
167+ target_link_libraries (docling_parse PRIVATE libparse)
159168
160169# *****************
161170# *** Install ***
0 commit comments