# 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 , 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)