Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_018Ae69wJS7sueQMUwNxV3nX
69 lines
2.7 KiB
Makefile
69 lines
2.7 KiB
Makefile
# libdom for MontaukOS
|
|
#
|
|
# Upstream: https://github.com/netsurf-browser/libdom (official mirror of
|
|
# git.netsurf-browser.org; submodule at upstream/, pinned, no local patches).
|
|
#
|
|
# DOM implementation. Depends on libparserutils, libwapcaplet and libhubbub,
|
|
# all of which must already be in the ports sysroot -- libdom finds the latter
|
|
# two through pkg-config (REQUIRED_PKGS), which is why the library ports
|
|
# publish .pc files into sysroot/lib/pkgconfig.
|
|
#
|
|
# Bindings come from libdom's checked-in Makefile.config, which defaults the
|
|
# expat AND hubbub bindings to yes. Those are plain `:=` assignments, so
|
|
# passing the variables on the sub-make command line overrides them without
|
|
# patching upstream or dropping a Makefile.config.override into the submodule:
|
|
# WITH_HUBBUB_BINDING=yes how NetSurf feeds HTML into the DOM; required.
|
|
# WITH_EXPAT_BINDING=no defaults to YES upstream and must be turned off
|
|
# -- it needs <expat.h>, which MontaukOS has no
|
|
# port of, and NetSurf does not use it.
|
|
# WITH_LIBXML_BINDING already no in their config; set explicitly so a
|
|
# future upstream flip cannot surprise us.
|
|
#
|
|
# Needs perl on the BUILD host.
|
|
|
|
UPSTREAM := upstream
|
|
|
|
PORT_NAME := libdom
|
|
PORT_LIB := 1
|
|
PORT_DEPENDS := libparserutils libwapcaplet libhubbub
|
|
PORT_ARCHIVE := libdom.a
|
|
PORT_PC_IN := $(UPSTREAM)/libdom.pc.in
|
|
PORT_PC_VERSION := 0.4.2
|
|
PORT_HEADER_ROOT := $(UPSTREAM)/include
|
|
PORT_HEADERS := $(shell find $(UPSTREAM)/include -name '*.h' 2>/dev/null)
|
|
|
|
# libdom.pc.in already names -ldom itself, so its LIBRARIES placeholder is for
|
|
# the dependencies the enabled bindings pull in -- here, the hubbub binding.
|
|
PORT_PC_LIBS := -lhubbub -lparserutils -lwapcaplet
|
|
|
|
include ../../mk/port.mk
|
|
|
|
NS_MAKE_ARGS_EXTRA := \
|
|
WITH_HUBBUB_BINDING=yes \
|
|
WITH_EXPAT_BINDING=no \
|
|
WITH_LIBXML_BINDING=no
|
|
|
|
# The hubbub binding's public headers live under bindings/, not include/, and
|
|
# upstream installs them to include/dom/bindings/hubbub/ (see
|
|
# bindings/hubbub/Makefile). PORT_HEADERS only walks include/, so stage these
|
|
# explicitly -- NetSurf's content/handlers/html includes dom/bindings/hubbub/parser.h.
|
|
BINDING_HDRS := \
|
|
$(PORT_SYSROOT_INC)/dom/bindings/hubbub/parser.h \
|
|
$(PORT_SYSROOT_INC)/dom/bindings/hubbub/errors.h
|
|
|
|
$(PORT_SYSROOT_INC)/dom/bindings/hubbub/%.h: $(UPSTREAM)/bindings/hubbub/%.h
|
|
@mkdir -p $(dir $@)
|
|
cp $< $@
|
|
|
|
install-lib: $(BINDING_HDRS)
|
|
|
|
.PHONY: all clean
|
|
all: install-lib
|
|
|
|
$(PORT_ARCHIVE): $(shell find $(UPSTREAM)/src $(UPSTREAM)/bindings $(UPSTREAM)/include -name '*.c' -o -name '*.h' 2>/dev/null)
|
|
$(call ns_build,$(UPSTREAM),dom)
|
|
|
|
clean: clean-lib
|
|
@$(call ns_clean,$(UPSTREAM))
|
|
rm -rf $(UPSTREAM)/$(NS_BUILDDIR)
|