mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-21 18:02:06 +03:00
3e2270482f
This makes the GTK resource handling configurable in the same way as all other pkg-config style feature options. It is now possible to completely disable compiled in resources if wanted as well as forcing inline pixdata on if desired.
211 lines
7.6 KiB
Makefile
211 lines
7.6 KiB
Makefile
#
|
|
# Makefile for NetSurf GTK target
|
|
#
|
|
# This file is part of NetSurf
|
|
#
|
|
# ----------------------------------------------------------------------------
|
|
# GTK flag setup (using pkg-config)
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
|
|
NETSURF_FEATURE_RSVG_CFLAGS := -DWITH_RSVG
|
|
NETSURF_FEATURE_NSSVG_CFLAGS := -DWITH_NS_SVG
|
|
NETSURF_FEATURE_ROSPRITE_CFLAGS := -DWITH_NSSPRITE
|
|
NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP
|
|
NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF
|
|
NETSURF_FEATURE_PNG_CFLAGS := -DWITH_PNG
|
|
NETSURF_FEATURE_JS_CFLAGS := -DWITH_JS -DJS_HAS_FILE_OBJECT=0
|
|
NETSURF_FEATURE_MOZJS_CFLAGS := -DWITH_MOZJS -DJS_HAS_FILE_OBJECT=0
|
|
NETSURF_FEATURE_VIDEO_CFLAGS := -DWITH_VIDEO
|
|
|
|
# add a line similar to below for each optional lib here
|
|
# note: webp lacks pkg-config file
|
|
$(eval $(call pkg_config_find_and_add_enabled,PNG,libpng,PNG))
|
|
$(eval $(call pkg_config_find_and_add_enabled,BMP,libnsbmp,BMP))
|
|
$(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF))
|
|
$(eval $(call pkg_config_find_and_add_enabled,RSVG,librsvg-2.0,SVG))
|
|
$(eval $(call pkg_config_find_and_add_enabled,NSSVG,libsvgtiny,SVG))
|
|
$(eval $(call pkg_config_find_and_add_enabled,ROSPRITE,librosprite,Sprite))
|
|
$(eval $(call pkg_config_find_and_add_enabled,MOZJS,mozjs185,JavaScript))
|
|
$(eval $(call pkg_config_find_and_add_enabled,JS,mozilla-js,JavaScript))
|
|
$(eval $(call pkg_config_find_and_add_enabled,VIDEO,gstreamer-0.10,Video))
|
|
|
|
# GTK and GLIB flags to disable depricated usage
|
|
GTKDEPFLAGS := -DG_DISABLE_SINGLE_INCLUDES \
|
|
-DG_DISABLE_DEPRECATED \
|
|
-DGTK_DISABLE_SINGLE_INCLUDES \
|
|
-DGTK_MULTIHEAD_SAFE \
|
|
-DPANGO_DISABLE_DEPRECATED
|
|
|
|
# later editions of gtk 2 deprecate interfaces we rely upon for cursors
|
|
# -DGDK_PIXBUF_DISABLE_DEPRECATED
|
|
|
|
# libsexy currently means we cannot enable this
|
|
# -DGDK_DISABLE_DEPRECATED
|
|
|
|
# gtk3 is depricating interfaces we use a lot
|
|
ifeq ($(NETSURF_GTK_MAJOR),2)
|
|
GTKDEPFLAGS += -DGTK_DISABLE_DEPRECATED
|
|
endif
|
|
|
|
|
|
GTKCFLAGS := -std=c99 -Dgtk -Dnsgtk -g \
|
|
$(GTKDEPFLAGS) \
|
|
-D_BSD_SOURCE \
|
|
-D_DEFAULT_SOURCE \
|
|
-D_XOPEN_SOURCE=600 \
|
|
-D_POSIX_C_SOURCE=200809L \
|
|
-D_NETBSD_SOURCE \
|
|
-DGTK_RESPATH=\"$(NETSURF_GTK_RESOURCES)\"
|
|
|
|
# non optional pkg-configed libs
|
|
$(eval $(call pkg_config_find_and_add,openssl,OpenSSL))
|
|
$(eval $(call pkg_config_find_and_add,libcurl,Curl ))
|
|
$(eval $(call pkg_config_find_and_add,gtk+-$(NETSURF_GTK_MAJOR).0,GTK-$(NETSURF_GTK_MAJOR)))
|
|
$(eval $(call pkg_config_find_and_add,gthread-2.0,GThread2))
|
|
$(eval $(call pkg_config_find_and_add,gmodule-2.0,GModule2))
|
|
|
|
|
|
CFLAGS += $(GTKCFLAGS)
|
|
LDFLAGS += -lm
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Windows flag setup
|
|
# ---------------------------------------------------------------------------
|
|
|
|
ifeq ($(HOST),Windows_NT)
|
|
CFLAGS += -U__STRICT_ANSI__
|
|
endif
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Builtin resource handling
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# builtin resource sources
|
|
S_RESOURCE :=
|
|
|
|
# Glib prior to 2.32 does not have GResource handling.
|
|
#
|
|
# This uses pkg-config to check for the minimum required version for
|
|
# this feature in a way similar to the pkg_config_find_and_add_enabled
|
|
# macro. Note we check for gmodule-2.0 which is a specific part of
|
|
# glib we require.
|
|
#
|
|
# It would be nice if we could check for this functionality rather
|
|
# than "knowing" the version but there does not appear to be a simple
|
|
# way to implement that.
|
|
#
|
|
NETSURF_FEATURE_GRESOURCE_AVAILABLE := $(shell $(PKG_CONFIG) --atleast-version=2.32 gmodule-2.0 && echo yes)
|
|
ifneq (,$(filter $(NETSURF_USE_GRESOURCE),AUTO YES))
|
|
ifeq ($(NETSURF_FEATURE_GRESOURCE_AVAILABLE),yes)
|
|
|
|
# Gresource use has been enabled
|
|
NETSURF_FEATURE_GRESOURCE_ENABLED := yes
|
|
|
|
#resource compiler tool
|
|
GLIB_COMPILE_RESOURCES := glib-compile-resources
|
|
CFLAGS += -DWITH_GRESOURCE
|
|
|
|
S_RESOURCE += $(OBJROOT)/netsurf_gresource.c
|
|
|
|
NSGTK_RESOURCES_DIR := gtk/res
|
|
GRESOURCE_XML := $(NSGTK_RESOURCES_DIR)/netsurf.gresource.xml
|
|
|
|
# generate the gresource source file
|
|
$(OBJROOT)/netsurf_gresource.c: $(GRESOURCE_XML) $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir $(NSGTK_RESOURCES_DIR) --generate-dependencies $(GRESOURCE_XML))
|
|
$(VQ)echo "GRESORCE: $<"
|
|
$(Q)$(GLIB_COMPILE_RESOURCES) --generate-source --sourcedir $(NSGTK_RESOURCES_DIR) --target=$@ $<
|
|
|
|
endif
|
|
endif
|
|
|
|
# Build pixbufs as inlines if enabled
|
|
ifneq (,$(filter $(NETSURF_USE_INLINE_PIXBUF),AUTO YES))
|
|
ifneq ($(NETSURF_FEATURE_GRESOURCE_ENABLED),yes)
|
|
|
|
CFLAGS += -DWITH_BUILTIN_PIXBUF
|
|
|
|
GTK_IMAGE_menu_cursor := gtk/res/menu_cursor.png
|
|
|
|
# 1: input file
|
|
# 2: output file
|
|
# 3: bitmap name
|
|
define convert_image
|
|
|
|
# add converted pixbuf to builtin resource sources
|
|
S_RESOURCE += $(2)
|
|
|
|
$(2): $(1)
|
|
$(VQ)echo " INLINE: ${3}"
|
|
$(Q)echo "#include <gdk-pixbuf/gdk-pixdata.h>" > $(2)
|
|
$(Q)gdk-pixbuf-csource --extern --raw --name=$(3) $(1) >> $(2) || \
|
|
( rm -f $(2) && false )
|
|
|
|
endef
|
|
|
|
$(eval $(foreach V,$(filter GTK_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/$(patsubst GTK_IMAGE_%,%,$(V)).c,$(patsubst GTK_IMAGE_%,%,$(V))_pixdata)))
|
|
endif
|
|
endif
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Source file setup
|
|
# ----------------------------------------------------------------------------
|
|
|
|
# S_GTK are sources purely for the GTK build
|
|
S_GTK := font_pango.c bitmap.c gui.c schedule.c plotters.c \
|
|
treeview.c scaffolding.c gdk.c completion.c login.c throbber.c \
|
|
selection.c history.c window.c fetch.c download.c menu.c \
|
|
print.c search.c tabs.c theme.c toolbar.c gettext.c \
|
|
compat.c cookies.c hotlist.c viewdata.c viewsource.c \
|
|
preferences.c about.c ssl_cert.c resources.c
|
|
|
|
S_GTK := $(addprefix gtk/,$(S_GTK)) $(addprefix utils/,container.c)
|
|
# code in utils/container.ch is non-universal it seems
|
|
|
|
# This is the final source build list
|
|
# Note this is deliberately *not* expanded here as common and image
|
|
# are not yet available
|
|
SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_RESOURCE) $(S_GTK)
|
|
|
|
# The gtk binary target
|
|
EXETARGET := nsgtk
|
|
|
|
# The filter and target for split messages
|
|
MESSAGES_FILTER=gtk
|
|
MESSAGES_TARGET=gtk/res
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Install target
|
|
# ----------------------------------------------------------------------------
|
|
|
|
GTK_RESOURCES_LIST := \
|
|
languages themelist SearchEngines toolbarIndices ca-bundle.txt \
|
|
default.css adblock.css quirks.css internal.css gtkdefault.css \
|
|
credits.html licence.html welcome.html maps.html Messages \
|
|
default.ico favicon.png netsurf.png netsurf.xpm netsurf-16x16.xpm \
|
|
arrow_down_8x32.png
|
|
|
|
GTK_RESOURCES_LIST := \
|
|
$(addprefix gtk/res/, $(GTK_RESOURCES_LIST)) \
|
|
$(wildcard gtk/res/*.gtk$(NETSURF_GTK_MAJOR).ui)
|
|
|
|
# translations with more than just Messages files
|
|
GTK_TRANSLATIONS_HTML := de en fr it ja nl
|
|
|
|
install-gtk:
|
|
$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_BIN)
|
|
$(Q)install nsgtk $(DESTDIR)$(NETSURF_GTK_BIN)netsurf
|
|
$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_RESOURCES)icons
|
|
$(Q)install -m 0644 gtk/res/icons/*.png $(DESTDIR)$(NETSURF_GTK_RESOURCES)/icons
|
|
$(Q)mkdir -p $(DESTDIR)$(NETSURF_GTK_RESOURCES)throbber
|
|
$(Q)install -m 0644 gtk/res/throbber/*.png $(DESTDIR)$(NETSURF_GTK_RESOURCES)/throbber
|
|
$(Q)tar -c -h -C gtk/res -f - themes | tar -xv -C $(DESTDIR)$(NETSURF_GTK_RESOURCES) -f -
|
|
$(Q)tar -c -h -C gtk/res -f - $(GTK_TRANSLATIONS_HTML) | tar -xv -C $(DESTDIR)$(NETSURF_GTK_RESOURCES) -f -
|
|
$(Q)install -m 0644 $(GTK_RESOURCES_LIST) $(DESTDIR)$(NETSURF_GTK_RESOURCES)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Package target
|
|
# ----------------------------------------------------------------------------
|
|
|
|
package-gtk:
|