@@ -100,47 +100,68 @@ endif()
100100# Executable and library.
101101################################################################################
102102
103- set (phpdbgSources
104- phpdbg_bp.c
105- phpdbg_break.c
106- phpdbg_btree.c
107- phpdbg_cmd.c
108- phpdbg_frame.c
109- phpdbg_help.c
110- phpdbg_info.c
111- phpdbg_io.c
112- phpdbg_lexer.c
113- phpdbg_list.c
114- phpdbg_out.c
115- phpdbg_parser.c
116- phpdbg_print.c
117- phpdbg.stub.php
118- phpdbg_prompt.c
119- phpdbg_set.c
120- phpdbg_sigsafe.c
121- phpdbg_utils.c
122- phpdbg_watch.c
123- $<$<PLATFORM_ID:Windows>:phpdbg_win.c>
124- phpdbg.c
125- )
126-
127- add_executable (php_sapi_phpdbg ${phpdbgSources} )
103+ add_executable (php_sapi_phpdbg)
128104add_executable (PHP::sapi::phpdbg ALIAS php_sapi_phpdbg)
129105
130- target_compile_definitions (
131- php_sapi_phpdbg
132- PRIVATE
133- ZEND_ENABLE_STATIC_TSRMLS_CACHE
134- $<$<PLATFORM_ID:Windows>:YY_NO_UNISTD_H>
135- $<IF:$<BOOL :${PHP_SAPI_PHPDBG_DEBUG} >,PHPDBG_DEBUG=1,PHPDBG_DEBUG=0>
136- )
106+ if (PHP_SAPI_PHPDBG_SHARED)
107+ add_library (php_sapi_phpdbg_shared SHARED)
108+ add_library (PHP::sapi::phpdbg_shared ALIAS php_sapi_phpdbg_shared)
109+ endif ()
137110
138- target_link_libraries (
139- php_sapi_phpdbg
140- PRIVATE
141- $<BUILD_INTERFACE:PHP::sapi>
142- $<$<PLATFORM_ID:Windows>:ws2_32;user32>
143- )
111+ foreach (target IN ITEMS php_sapi_phpdbg php_sapi_phpdbg_shared)
112+ if (NOT TARGET ${target} )
113+ continue ()
114+ endif ()
115+
116+ target_sources (
117+ ${target}
118+ PRIVATE
119+ phpdbg_bp.c
120+ phpdbg_break.c
121+ phpdbg_btree.c
122+ phpdbg_cmd.c
123+ phpdbg_frame.c
124+ phpdbg_help.c
125+ phpdbg_info.c
126+ phpdbg_io.c
127+ phpdbg_lexer.c
128+ phpdbg_list.c
129+ phpdbg_out.c
130+ phpdbg_parser.c
131+ phpdbg_print.c
132+ phpdbg.stub.php
133+ phpdbg_prompt.c
134+ phpdbg_set.c
135+ phpdbg_sigsafe.c
136+ phpdbg_utils.c
137+ phpdbg_watch.c
138+ $<$<PLATFORM_ID:Windows>:phpdbg_win.c>
139+ phpdbg.c
140+ )
141+
142+ target_compile_definitions (
143+ ${target}
144+ PRIVATE
145+ ZEND_ENABLE_STATIC_TSRMLS_CACHE
146+ $<$<PLATFORM_ID:Windows>:YY_NO_UNISTD_H>
147+ $<IF:$<BOOL :${PHP_SAPI_PHPDBG_DEBUG} >,PHPDBG_DEBUG=1,PHPDBG_DEBUG=0>
148+ )
149+
150+ target_link_libraries (
151+ ${target}
152+ PRIVATE
153+ $<BUILD_INTERFACE:PHP::sapi>
154+ $<$<PLATFORM_ID:Windows>:ws2_32;user32>
155+ )
156+
157+ set_target_properties (
158+ ${target}
159+ PROPERTIES
160+ OUTPUT_NAME ${PHP_PROGRAM_PREFIX} phpdbg${PHP_PROGRAM_SUFFIX}
161+ ENABLE_EXPORTS TRUE # TODO: Check if there's a better solution.
162+ PHP_CLI TRUE
163+ )
164+ endforeach ()
144165
145166target_link_options (
146167 php_sapi_phpdbg
@@ -152,10 +173,16 @@ set_target_properties(
152173 php_sapi_phpdbg
153174 PROPERTIES
154175 OUTPUT_NAME ${PHP_PROGRAM_PREFIX} phpdbg${PHP_PROGRAM_SUFFIX}
155- ENABLE_EXPORTS TRUE # TODO: Check if there's a better solution.
156- PHP_CLI TRUE
157176)
158177
178+ if (TARGET php_sapi_phpdbg_shared)
179+ set_target_properties (
180+ php_sapi_phpdbg_shared
181+ PROPERTIES
182+ OUTPUT_NAME libphpdbg
183+ )
184+ endif ()
185+
159186################################################################################
160187# Readline support.
161188################################################################################
@@ -183,6 +210,9 @@ if(PHP_SAPI_PHPDBG_READLINE OR PHP_EXT_READLINE)
183210 )
184211
185212 target_link_libraries (php_sapi_phpdbg PRIVATE Readline::Readline)
213+ if (TARGET php_sapi_phpdbg_shared)
214+ target_link_libraries (php_sapi_phpdbg_shared PRIVATE Readline::Readline)
215+ endif ()
186216
187217 set (HAVE_LIBREADLINE TRUE )
188218 else ()
@@ -195,6 +225,9 @@ if(PHP_SAPI_PHPDBG_READLINE OR PHP_EXT_READLINE)
195225 )
196226
197227 target_link_libraries (php_sapi_phpdbg PRIVATE Editline::Editline)
228+ if (TARGET php_sapi_phpdbg_shared)
229+ target_link_libraries (php_sapi_phpdbg_shared PRIVATE Editline::Editline)
230+ endif ()
198231
199232 set (HAVE_LIBEDIT TRUE )
200233 endif ()
@@ -210,36 +243,6 @@ add_feature_info(
210243 "enhanced command-line accessibility"
211244)
212245
213- ################################################################################
214- # The phpdbg shared library.
215- ################################################################################
216-
217- # TODO: Should readline support be also enabled like in the executable?
218- # TODO: fix this better in the future (building with -fPIC etc).
219- if (PHP_SAPI_PHPDBG_SHARED)
220- add_library (php_sapi_phpdbg_shared SHARED)
221- add_library (PHP::sapi::phpdbg_shared ALIAS php_sapi_phpdbg_shared)
222-
223- set_target_properties (php_sapi_phpdbg_shared PROPERTIES OUTPUT_NAME phpdbg)
224-
225- target_sources (php_sapi_phpdbg_shared PRIVATE ${phpdbgSources} )
226-
227- target_compile_definitions (
228- php_sapi_phpdbg_shared
229- PRIVATE
230- ZEND_ENABLE_STATIC_TSRMLS_CACHE
231- $<$<PLATFORM_ID:Windows>:YY_NO_UNISTD_H>
232- $<IF:$<BOOL :${PHP_SAPI_PHPDBG_DEBUG} >,PHPDBG_DEBUG=1,PHPDBG_DEBUG=0>
233- )
234-
235- target_link_libraries (
236- php_sapi_phpdbg_shared
237- PRIVATE
238- $<BUILD_INTERFACE:PHP::sapi>
239- $<$<PLATFORM_ID:Windows>:ws2_32;user32>
240- )
241- endif ()
242-
243246################################################################################
244247# Generate parser and lexer files.
245248################################################################################
@@ -267,6 +270,9 @@ if(HAVE_UFFDIO_WRITEPROTECT_MODE_WP)
267270 find_package (Threads)
268271 if (Threads_FOUND)
269272 target_link_libraries (php_sapi_phpdbg PRIVATE Threads::Threads)
273+ if (TARGET php_sapi_phpdbg_shared)
274+ target_link_libraries (php_sapi_phpdbg_shared PRIVATE Threads::Threads)
275+ endif ()
270276 else ()
271277 message (WARNING "Threads not available." )
272278 endif ()
@@ -313,4 +319,41 @@ php_install(CODE "
313319 )
314320" )
315321
322+ # Configure pkg-config phpdbg.pc metadata file and install shared phpdbg module.
323+ if (TARGET php_sapi_phpdbg_shared)
324+ include (PHP/PkgConfig)
325+ php_pkgconfig_generate_pc(
326+ phpdbg.pc.in
327+ phpdbg.pc
328+ TARGET PHP::sapi::phpdbg_shared
329+ VARIABLES
330+ prefix "$<INSTALL_PREFIX>"
331+ exec_prefix "$<INSTALL_PREFIX>"
332+ includedir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_INCLUDEDIR} ,$<INSTALL_PREFIX>>"
333+ php_include_prefix "${PHP_INCLUDE_PREFIX} "
334+ libdir "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LIBDIR} ,$<INSTALL_PREFIX>>"
335+ PHP_VERSION "${PHP_VERSION} "
336+ PHP_VERSION_ID "${PHP_VERSION_ID} "
337+ PHP_EXTENSION_DIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_EXTENSION_DIR} ,$<INSTALL_PREFIX>>"
338+ # TODO: Fix this for cmake --install ... --prefix
339+ PHP_CONFIG_FILE_SCAN_DIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_SCAN_DIR} ,$<INSTALL_PREFIX>>"
340+ PHP_CONFIG_FILE_PATH "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_PATH} ,$<INSTALL_PREFIX>>"
341+ PHP_DEBUG "$<IF:$<CONFIG:Debug,DebugAssertions>,yes,no>"
342+ PHP_THREAD_SAFETY "$<IF:$<BOOL:$<TARGET_PROPERTY:PHP::config,PHP_THREAD_SAFETY>>,yes,no>"
343+ )
344+
345+ install (
346+ FILES ${CMAKE_CURRENT_BINARY_DIR} /phpdbg.pc
347+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig
348+ )
349+
350+ install (
351+ TARGETS php_sapi_phpdbg_shared
352+ LIBRARY
353+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
354+ RUNTIME
355+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
356+ )
357+ endif ()
358+
316359configure_file (cmake/config.h.in config.h)
0 commit comments