Skip to content

Create separate lexbor extension #18538

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,6 @@ tmp-php.ini
!/ext/fileinfo/libmagic/config.h
!/ext/fileinfo/libmagic.patch
!/ext/fileinfo/magicdata.patch
!/ext/dom/lexbor/patches/*.patch
!/ext/lexbor/patches/*.patch
!/ext/pcre/pcre2lib/config.h
!/win32/build/Makefile
7 changes: 7 additions & 0 deletions EXTENSIONS
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,13 @@ PRIMARY MAINTAINER: Thies C. Arntzen <[email protected]> (1999 - 2002)
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
EXTENSION: lexbor
PRIMARY MAINTAINER: Niels Dossche <[email protected]> (2023 - 2025)
Mate Kocsis <[email protected]> (2025 - 2025)
MAINTENANCE: Maintained
STATUS: Working
SINCE: 8.5
-------------------------------------------------------------------------------
EXTENSION: libxml
PRIMARY MAINTAINER: Rob Richards <[email protected]> (2003 - 2009)
Christian Stocker <[email protected]> (2004 - 2011)
Expand Down
200 changes: 6 additions & 194 deletions ext/dom/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -5,188 +5,11 @@ PHP_ARG_ENABLE([dom],
[yes])

if test "$PHP_DOM" != "no"; then
PHP_LEXBOR_ENABLED=yes

PHP_SETUP_LIBXML([DOM_SHARED_LIBADD], [
AC_DEFINE([HAVE_DOM], [1],
[Define to 1 if the PHP extension 'dom' is available.])
PHP_LEXBOR_CFLAGS="-I@ext_srcdir@/lexbor -DLEXBOR_STATIC"
LEXBOR_DIR="lexbor/lexbor"
LEXBOR_SOURCES=m4_normalize(["
$LEXBOR_DIR/core/array_obj.c
$LEXBOR_DIR/core/array.c
$LEXBOR_DIR/core/avl.c
$LEXBOR_DIR/core/bst.c
$LEXBOR_DIR/core/conv.c
$LEXBOR_DIR/core/diyfp.c
$LEXBOR_DIR/core/dobject.c
$LEXBOR_DIR/core/dtoa.c
$LEXBOR_DIR/core/hash.c
$LEXBOR_DIR/core/mem.c
$LEXBOR_DIR/core/mraw.c
$LEXBOR_DIR/core/print.c
$LEXBOR_DIR/core/serialize.c
$LEXBOR_DIR/core/shs.c
$LEXBOR_DIR/core/str.c
$LEXBOR_DIR/core/strtod.c
$LEXBOR_DIR/css/css.c
$LEXBOR_DIR/css/log.c
$LEXBOR_DIR/css/parser.c
$LEXBOR_DIR/css/selectors/pseudo_state.c
$LEXBOR_DIR/css/selectors/pseudo.c
$LEXBOR_DIR/css/selectors/selector.c
$LEXBOR_DIR/css/selectors/selectors.c
$LEXBOR_DIR/css/selectors/state.c
$LEXBOR_DIR/css/state.c
$LEXBOR_DIR/css/syntax/anb.c
$LEXBOR_DIR/css/syntax/parser.c
$LEXBOR_DIR/css/syntax/state.c
$LEXBOR_DIR/css/syntax/syntax.c
$LEXBOR_DIR/css/syntax/token.c
$LEXBOR_DIR/css/syntax/tokenizer.c
$LEXBOR_DIR/css/syntax/tokenizer/error.c
$LEXBOR_DIR/dom/interface.c
$LEXBOR_DIR/dom/interfaces/attr.c
$LEXBOR_DIR/dom/interfaces/cdata_section.c
$LEXBOR_DIR/dom/interfaces/character_data.c
$LEXBOR_DIR/dom/interfaces/comment.c
$LEXBOR_DIR/dom/interfaces/document_fragment.c
$LEXBOR_DIR/dom/interfaces/document_type.c
$LEXBOR_DIR/dom/interfaces/document.c
$LEXBOR_DIR/dom/interfaces/element.c
$LEXBOR_DIR/dom/interfaces/node.c
$LEXBOR_DIR/dom/interfaces/processing_instruction.c
$LEXBOR_DIR/dom/interfaces/shadow_root.c
$LEXBOR_DIR/dom/interfaces/text.c
$LEXBOR_DIR/encoding/big5.c
$LEXBOR_DIR/encoding/decode.c
$LEXBOR_DIR/encoding/encode.c
$LEXBOR_DIR/encoding/encoding.c
$LEXBOR_DIR/encoding/euc_kr.c
$LEXBOR_DIR/encoding/gb18030.c
$LEXBOR_DIR/encoding/iso_2022_jp_katakana.c
$LEXBOR_DIR/encoding/jis0208.c
$LEXBOR_DIR/encoding/jis0212.c
$LEXBOR_DIR/encoding/range.c
$LEXBOR_DIR/encoding/res.c
$LEXBOR_DIR/encoding/single.c
$LEXBOR_DIR/html/encoding.c
$LEXBOR_DIR/html/interface.c
$LEXBOR_DIR/html/interfaces/anchor_element.c
$LEXBOR_DIR/html/interfaces/area_element.c
$LEXBOR_DIR/html/interfaces/audio_element.c
$LEXBOR_DIR/html/interfaces/base_element.c
$LEXBOR_DIR/html/interfaces/body_element.c
$LEXBOR_DIR/html/interfaces/br_element.c
$LEXBOR_DIR/html/interfaces/button_element.c
$LEXBOR_DIR/html/interfaces/canvas_element.c
$LEXBOR_DIR/html/interfaces/d_list_element.c
$LEXBOR_DIR/html/interfaces/data_element.c
$LEXBOR_DIR/html/interfaces/data_list_element.c
$LEXBOR_DIR/html/interfaces/details_element.c
$LEXBOR_DIR/html/interfaces/dialog_element.c
$LEXBOR_DIR/html/interfaces/directory_element.c
$LEXBOR_DIR/html/interfaces/div_element.c
$LEXBOR_DIR/html/interfaces/document.c
$LEXBOR_DIR/html/interfaces/element.c
$LEXBOR_DIR/html/interfaces/embed_element.c
$LEXBOR_DIR/html/interfaces/field_set_element.c
$LEXBOR_DIR/html/interfaces/font_element.c
$LEXBOR_DIR/html/interfaces/form_element.c
$LEXBOR_DIR/html/interfaces/frame_element.c
$LEXBOR_DIR/html/interfaces/frame_set_element.c
$LEXBOR_DIR/html/interfaces/head_element.c
$LEXBOR_DIR/html/interfaces/heading_element.c
$LEXBOR_DIR/html/interfaces/hr_element.c
$LEXBOR_DIR/html/interfaces/html_element.c
$LEXBOR_DIR/html/interfaces/iframe_element.c
$LEXBOR_DIR/html/interfaces/image_element.c
$LEXBOR_DIR/html/interfaces/input_element.c
$LEXBOR_DIR/html/interfaces/label_element.c
$LEXBOR_DIR/html/interfaces/legend_element.c
$LEXBOR_DIR/html/interfaces/li_element.c
$LEXBOR_DIR/html/interfaces/link_element.c
$LEXBOR_DIR/html/interfaces/map_element.c
$LEXBOR_DIR/html/interfaces/marquee_element.c
$LEXBOR_DIR/html/interfaces/media_element.c
$LEXBOR_DIR/html/interfaces/menu_element.c
$LEXBOR_DIR/html/interfaces/meta_element.c
$LEXBOR_DIR/html/interfaces/meter_element.c
$LEXBOR_DIR/html/interfaces/mod_element.c
$LEXBOR_DIR/html/interfaces/o_list_element.c
$LEXBOR_DIR/html/interfaces/object_element.c
$LEXBOR_DIR/html/interfaces/opt_group_element.c
$LEXBOR_DIR/html/interfaces/option_element.c
$LEXBOR_DIR/html/interfaces/output_element.c
$LEXBOR_DIR/html/interfaces/paragraph_element.c
$LEXBOR_DIR/html/interfaces/param_element.c
$LEXBOR_DIR/html/interfaces/picture_element.c
$LEXBOR_DIR/html/interfaces/pre_element.c
$LEXBOR_DIR/html/interfaces/progress_element.c
$LEXBOR_DIR/html/interfaces/quote_element.c
$LEXBOR_DIR/html/interfaces/script_element.c
$LEXBOR_DIR/html/interfaces/select_element.c
$LEXBOR_DIR/html/interfaces/slot_element.c
$LEXBOR_DIR/html/interfaces/source_element.c
$LEXBOR_DIR/html/interfaces/span_element.c
$LEXBOR_DIR/html/interfaces/style_element.c
$LEXBOR_DIR/html/interfaces/table_caption_element.c
$LEXBOR_DIR/html/interfaces/table_cell_element.c
$LEXBOR_DIR/html/interfaces/table_col_element.c
$LEXBOR_DIR/html/interfaces/table_element.c
$LEXBOR_DIR/html/interfaces/table_row_element.c
$LEXBOR_DIR/html/interfaces/table_section_element.c
$LEXBOR_DIR/html/interfaces/template_element.c
$LEXBOR_DIR/html/interfaces/text_area_element.c
$LEXBOR_DIR/html/interfaces/time_element.c
$LEXBOR_DIR/html/interfaces/title_element.c
$LEXBOR_DIR/html/interfaces/track_element.c
$LEXBOR_DIR/html/interfaces/u_list_element.c
$LEXBOR_DIR/html/interfaces/unknown_element.c
$LEXBOR_DIR/html/interfaces/video_element.c
$LEXBOR_DIR/html/interfaces/window.c
$LEXBOR_DIR/html/parser.c
$LEXBOR_DIR/html/token_attr.c
$LEXBOR_DIR/html/token.c
$LEXBOR_DIR/html/tokenizer.c
$LEXBOR_DIR/html/tokenizer/error.c
$LEXBOR_DIR/html/tokenizer/state_comment.c
$LEXBOR_DIR/html/tokenizer/state_doctype.c
$LEXBOR_DIR/html/tokenizer/state_rawtext.c
$LEXBOR_DIR/html/tokenizer/state_rcdata.c
$LEXBOR_DIR/html/tokenizer/state_script.c
$LEXBOR_DIR/html/tokenizer/state.c
$LEXBOR_DIR/html/tree.c
$LEXBOR_DIR/html/tree/active_formatting.c
$LEXBOR_DIR/html/tree/error.c
$LEXBOR_DIR/html/tree/insertion_mode/after_after_body.c
$LEXBOR_DIR/html/tree/insertion_mode/after_after_frameset.c
$LEXBOR_DIR/html/tree/insertion_mode/after_body.c
$LEXBOR_DIR/html/tree/insertion_mode/after_frameset.c
$LEXBOR_DIR/html/tree/insertion_mode/after_head.c
$LEXBOR_DIR/html/tree/insertion_mode/before_head.c
$LEXBOR_DIR/html/tree/insertion_mode/before_html.c
$LEXBOR_DIR/html/tree/insertion_mode/foreign_content.c
$LEXBOR_DIR/html/tree/insertion_mode/in_body.c
$LEXBOR_DIR/html/tree/insertion_mode/in_caption.c
$LEXBOR_DIR/html/tree/insertion_mode/in_cell.c
$LEXBOR_DIR/html/tree/insertion_mode/in_column_group.c
$LEXBOR_DIR/html/tree/insertion_mode/in_frameset.c
$LEXBOR_DIR/html/tree/insertion_mode/in_head_noscript.c
$LEXBOR_DIR/html/tree/insertion_mode/in_head.c
$LEXBOR_DIR/html/tree/insertion_mode/in_row.c
$LEXBOR_DIR/html/tree/insertion_mode/in_select_in_table.c
$LEXBOR_DIR/html/tree/insertion_mode/in_select.c
$LEXBOR_DIR/html/tree/insertion_mode/in_table_body.c
$LEXBOR_DIR/html/tree/insertion_mode/in_table_text.c
$LEXBOR_DIR/html/tree/insertion_mode/in_table.c
$LEXBOR_DIR/html/tree/insertion_mode/in_template.c
$LEXBOR_DIR/html/tree/insertion_mode/initial.c
$LEXBOR_DIR/html/tree/insertion_mode/text.c
$LEXBOR_DIR/html/tree/open_elements.c
$LEXBOR_DIR/ns/ns.c
$LEXBOR_DIR/ports/posix/lexbor/core/memory.c
$LEXBOR_DIR/selectors-adapted/selectors.c
$LEXBOR_DIR/tag/tag.c
"])
PHP_NEW_EXTENSION([dom], m4_normalize([
attr.c
cdatasection.c
Expand Down Expand Up @@ -223,25 +46,13 @@ if test "$PHP_DOM" != "no"; then
xml_serializer.c
xpath_callbacks.c
xpath.c
$LEXBOR_SOURCES
lexbor/selectors-adapted/selectors.c
]),
[$ext_shared],,
[$PHP_LEXBOR_CFLAGS])
[])
PHP_ADD_BUILD_DIR([
$ext_builddir/parentnode
$ext_builddir/$LEXBOR_DIR/core
$ext_builddir/$LEXBOR_DIR/css/selectors
$ext_builddir/$LEXBOR_DIR/css/syntax/tokenizer
$ext_builddir/$LEXBOR_DIR/css/tokenizer
$ext_builddir/$LEXBOR_DIR/dom/interfaces
$ext_builddir/$LEXBOR_DIR/encoding
$ext_builddir/$LEXBOR_DIR/html/interfaces
$ext_builddir/$LEXBOR_DIR/html/tokenizer
$ext_builddir/$LEXBOR_DIR/html/tree/insertion_mode
$ext_builddir/$LEXBOR_DIR/ns
$ext_builddir/$LEXBOR_DIR/ports/posix/lexbor/core
$ext_builddir/$LEXBOR_DIR/selectors-adapted
$ext_builddir/$LEXBOR_DIR/tag
$ext_builddir/lexbor/selectors-adapted
])
PHP_SUBST([DOM_SHARED_LIBADD])
PHP_INSTALL_HEADERS([ext/dom], m4_normalize([
Expand All @@ -251,5 +62,6 @@ if test "$PHP_DOM" != "no"; then
xpath_callbacks.h
]))
PHP_ADD_EXTENSION_DEP(dom, libxml)
PHP_ADD_EXTENSION_DEP(dom, lexbor)
])
fi
22 changes: 3 additions & 19 deletions ext/dom/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ ARG_WITH("dom", "DOM support", "yes");
if (PHP_DOM == "yes") {
if (PHP_LIBXML == "yes" &&
ADD_EXTENSION_DEP('dom', 'libxml') &&
ADD_EXTENSION_DEP('dom', 'lexbor') &&
CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_DOM", PHP_PHP_BUILD + "\\include\\libxml2")
) {
EXTENSION("dom", "php_dom.c attr.c document.c infra.c \
Expand All @@ -16,27 +17,10 @@ if (PHP_DOM == "yes") {
entityreference.c \
token_list.c \
notation.c xpath.c dom_iterators.c \
namednodemap.c xpath_callbacks.c", null, "-Iext/dom/lexbor");
namednodemap.c xpath_callbacks.c", null, "");

ADD_SOURCES("ext/dom/parentnode", "tree.c css_selectors.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/ports/windows_nt/lexbor/core", "memory.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/core", "array_obj.c array.c avl.c bst.c diyfp.c conv.c dobject.c dtoa.c hash.c mem.c mraw.c print.c serialize.c shs.c str.c strtod.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/dom", "interface.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/dom/interfaces", "attr.c cdata_section.c character_data.c comment.c document.c document_fragment.c document_type.c element.c node.c processing_instruction.c shadow_root.c text.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html/tokenizer", "error.c state_comment.c state_doctype.c state_rawtext.c state_rcdata.c state_script.c state.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html/tree", "active_formatting.c open_elements.c error.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html/tree/insertion_mode", "after_after_body.c after_after_frameset.c after_body.c after_frameset.c after_head.c before_head.c before_html.c foreign_content.c in_body.c in_caption.c in_cell.c in_column_group.c in_frameset.c in_head.c in_head_noscript.c initial.c in_row.c in_select.c in_select_in_table.c in_table_body.c in_table.c in_table_text.c in_template.c text.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html", "encoding.c interface.c parser.c token.c token_attr.c tokenizer.c tree.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/encoding", "big5.c decode.c encode.c encoding.c euc_kr.c gb18030.c iso_2022_jp_katakana.c jis0208.c jis0212.c range.c res.c single.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/html/interfaces", "anchor_element.c area_element.c audio_element.c base_element.c body_element.c br_element.c button_element.c canvas_element.c data_element.c data_list_element.c details_element.c dialog_element.c directory_element.c div_element.c d_list_element.c document.c element.c embed_element.c field_set_element.c font_element.c form_element.c frame_element.c frame_set_element.c head_element.c heading_element.c hr_element.c html_element.c iframe_element.c image_element.c input_element.c label_element.c legend_element.c li_element.c link_element.c map_element.c marquee_element.c media_element.c menu_element.c meta_element.c meter_element.c mod_element.c object_element.c o_list_element.c opt_group_element.c option_element.c output_element.c paragraph_element.c param_element.c picture_element.c pre_element.c progress_element.c quote_element.c script_element.c select_element.c slot_element.c source_element.c span_element.c style_element.c table_caption_element.c table_cell_element.c table_col_element.c table_element.c table_row_element.c table_section_element.c template_element.c text_area_element.c time_element.c title_element.c track_element.c u_list_element.c unknown_element.c video_element.c window.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/selectors-adapted", "selectors.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css", "state.c log.c parser.c css.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/selectors", "state.c selectors.c selector.c pseudo_state.c pseudo.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/syntax", "state.c parser.c syntax.c anb.c tokenizer.c token.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/css/syntax/tokenizer", "error.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/ns", "ns.c", "dom");
ADD_SOURCES("ext/dom/lexbor/lexbor/tag", "tag.c", "dom");
ADD_FLAG("CFLAGS_DOM", "/D LEXBOR_STATIC ");
ADD_SOURCES("ext/dom/lexbor/selectors-adapted", "selectors.c", "dom");

AC_DEFINE("HAVE_DOM", 1, "Define to 1 if the PHP extension 'dom' is available.");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
#include <php.h>

#include "lexbor/selectors-adapted/selectors.h"
#include "../../../namespace_compat.h"
#include "../../../domexception.h"
#include "../../../php_dom.h"
#include "../../namespace_compat.h"
#include "../../domexception.h"
#include "../../php_dom.h"

#include <math.h>

Expand Down
4 changes: 2 additions & 2 deletions ext/dom/php_dom.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
#include "dom_properties.h"
#include "token_list.h"
#include "zend_interfaces.h"
#include "lexbor/lexbor/core/types.h"
#include "lexbor/lexbor/core/lexbor.h"
#include <lexbor/core/types.h>
#include <lexbor/core/lexbor.h>

#include "ext/standard/info.h"

Expand Down
File renamed without changes.
File renamed without changes.
Loading
Loading