Improve split message generation
Changes the way message files are generated to be driven by make as rules rather than from explicit macro calls causing their regeneration every build. A secondary benefit is that errors in message generation actually stop the build instead of being ignored Each frontend will require its filter settings updated to avoid getting the default message filter of "any". Initially gtk has been adapted as proof of concept.
This commit is contained in:
parent
05c742df09
commit
a838fa3ee9
|
@ -13,6 +13,11 @@ windows/res/preferences
|
|||
\!NetSurf/Resources/nl/Templates,fec
|
||||
\!NetSurf/Resources/nl/Messages
|
||||
\!NetSurf/Resources/it/Messages
|
||||
gtk/res/en/Messages
|
||||
gtk/res/fr/Messages
|
||||
gtk/res/de/Messages
|
||||
gtk/res/nl/Messages
|
||||
gtk/res/it/Messages
|
||||
test/nsoption
|
||||
test/nsurl
|
||||
test/urldbtest
|
||||
|
|
85
Makefile
85
Makefile
|
@ -122,9 +122,23 @@ ifeq ($(filter $(VLDTARGET),$(TARGET)),)
|
|||
$(error Unknown TARGET "$(TARGET)", Must be one of $(VLDTARGET))
|
||||
endif
|
||||
|
||||
SUBTARGET =
|
||||
RESOURCES =
|
||||
# ensure empty values for base variables
|
||||
|
||||
# Sub target for build
|
||||
SUBTARGET=
|
||||
# Resources executable target depends upon
|
||||
RESOURCES=
|
||||
# Messages executable target depends on
|
||||
MESSAGES:=
|
||||
|
||||
# The filter applied to the fat (full) messages to generate split messages
|
||||
MESSAGES_FILTER=any
|
||||
# The languages in the fat messages to convert
|
||||
MESSAGES_LANGUAGES=de en fr it nl
|
||||
# The target directory for the split messages
|
||||
MESSAGES_TARGET=!NetSurf/Resources
|
||||
|
||||
# Defaults for tools
|
||||
PERL=perl
|
||||
MKDIR=mkdir
|
||||
TOUCH=touch
|
||||
|
@ -521,8 +535,7 @@ $(TOOLROOT)/created: $(OBJROOT)/created
|
|||
$(Q)$(MKDIR) $(TOOLROOT)
|
||||
$(Q)$(TOUCH) $(TOOLROOT)/created
|
||||
|
||||
CLEANS := clean-target clean-testament
|
||||
|
||||
CLEANS :=
|
||||
POSTEXES :=
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
@ -567,6 +580,39 @@ S_COMMON := $(S_CONTENT) $(S_FETCHERS) $(S_CSS) $(S_RENDER) $(S_UTILS) \
|
|||
$(S_HTTP) $(S_DESKTOP) $(S_JAVASCRIPT)
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Message targets
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# Message splitting rule generation macro
|
||||
# 1 = Language
|
||||
define split_messages
|
||||
.INTERMEDIATE:$$(MESSAGES_TARGET)/$(1)/Messages.tmp
|
||||
|
||||
$$(MESSAGES_TARGET)/$(1)/Messages.tmp: resources/FatMessages
|
||||
$$(VQ)echo "MSGSPLIT: Language: $(1) Filter: $$(MESSAGES_FILTER)"
|
||||
$$(Q)mkdir -p $$(MESSAGES_TARGET)/$(1)
|
||||
$$(Q)$$(SPLIT_MESSAGES) -l $(1) -p $$(MESSAGES_FILTER) -f messages -o $$@ $$<
|
||||
|
||||
$$(MESSAGES_TARGET)/$(1)/Messages: $$(MESSAGES_TARGET)/$(1)/Messages.tmp
|
||||
$$(VQ)echo "COMPRESS: $$@"
|
||||
$$(Q)gzip -9n < $$< > $$@
|
||||
|
||||
CLEAN_MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages
|
||||
MESSAGES += $$(MESSAGES_TARGET)/$(1)/Messages
|
||||
|
||||
endef
|
||||
|
||||
# geenrate the message file rules
|
||||
$(eval $(foreach LANG,$(MESSAGES_LANGUAGES), \
|
||||
$(call split_messages,$(LANG))))
|
||||
|
||||
clean-messages:
|
||||
$(VQ)echo " CLEAN: $(CLEAN_MESSAGES)"
|
||||
$(Q)$(RM) $(CLEAN_MESSAGES)
|
||||
CLEANS += clean-messages
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Source file setup
|
||||
# ----------------------------------------------------------------------------
|
||||
|
@ -580,7 +626,7 @@ endif
|
|||
|
||||
OBJECTS := $(sort $(addprefix $(OBJROOT)/,$(subst /,_,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(patsubst %.m,%.o,$(patsubst %.s,%.o,$(SOURCES))))))))
|
||||
|
||||
$(EXETARGET): $(OBJECTS) $(RESOURCES)
|
||||
$(EXETARGET): $(OBJECTS) $(RESOURCES) $(MESSAGES)
|
||||
$(VQ)echo " LINK: $(EXETARGET)"
|
||||
ifneq ($(TARGET)$(SUBTARGET),riscos-elf)
|
||||
$(Q)$(CC) -o $(EXETARGET) $(OBJECTS) $(LDFLAGS)
|
||||
|
@ -615,11 +661,12 @@ endif
|
|||
clean-target:
|
||||
$(VQ)echo " CLEAN: $(EXETARGET)"
|
||||
$(Q)$(RM) $(EXETARGET)
|
||||
$(call clean_install_messages, !NetSurf/Resources)
|
||||
CLEANS += clean-target
|
||||
|
||||
clean-testament:
|
||||
$(VQ)echo " CLEAN: testament.h"
|
||||
$(Q)$(RM) $(OBJROOT)/testament.h
|
||||
CLEANS += clean-testament
|
||||
|
||||
clean-builddir:
|
||||
$(VQ)echo " CLEAN: $(OBJROOT)"
|
||||
|
@ -627,15 +674,12 @@ clean-builddir:
|
|||
CLEANS += clean-builddir
|
||||
|
||||
|
||||
.PHONY: all-program all-messages testament
|
||||
.PHONY: all-program testament
|
||||
|
||||
testament $(OBJROOT)/testament.h:
|
||||
$(Q)$(PERL) utils/git-testament.pl $(CURDIR) $(OBJROOT)/testament.h
|
||||
|
||||
all-messages:
|
||||
$(call split_install_messages, any, !NetSurf/Resources)
|
||||
|
||||
all-program: all-messages $(EXETARGET) $(POSTEXES)
|
||||
all-program: $(EXETARGET) $(POSTEXES)
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
|
@ -758,25 +802,6 @@ clean: $(CLEANS)
|
|||
# Target builds a distribution package
|
||||
package: all-program package-$(TARGET)
|
||||
|
||||
FAT_LANGUAGES=de en fr it nl
|
||||
# 1 = front end name (gtk, ro, ami, etc)
|
||||
# 2 = Destination directory (where resources being installed, creates en/Messages etc)
|
||||
# 3 = suffix after language name
|
||||
define split_install_messages
|
||||
$(foreach LANG, $(FAT_LANGUAGES), @echo MSGSPLIT: $(1)/$(LANG) to $(2)
|
||||
$(Q)mkdir -p $(2)/$(LANG)$(3)
|
||||
$(Q)$(SPLIT_MESSAGES) -l $(LANG) -p $(1) -f messages resources/FatMessages | gzip -9n > $(2)$(3)/$(LANG)/Messages
|
||||
)
|
||||
endef
|
||||
|
||||
# Clean Message target
|
||||
# 1 = Destination directory (where resources being installed, creates en/Messages etc)
|
||||
# 2 = suffix after language name
|
||||
define clean_install_messages
|
||||
$(foreach LANG, $(FAT_LANGUAGES), @echo MSGCLEAN: $(LANG) in $(1)
|
||||
$(Q)$(RM) -f $(1)$(2)/$(LANG)/Messages
|
||||
)
|
||||
endef
|
||||
|
||||
.PHONY: messages-split-tfx messages-fetch-tfx messages-import-tfx
|
||||
|
||||
|
|
|
@ -121,8 +121,14 @@ S_GTK := $(addprefix gtk/,$(S_GTK)) $(addprefix utils/,container.c)
|
|||
# Note this is deliberately *not* expanded here as common and image
|
||||
# are not yet available
|
||||
SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_PIXBUF) $(S_GTK)
|
||||
|
||||
# The gtk binary target
|
||||
EXETARGET := nsgtk
|
||||
|
||||
# The filter and target for split messages
|
||||
MESSAGES_FILTER=gtk
|
||||
MESSAGES_TARGET=gtk/res
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Install target
|
||||
# ----------------------------------------------------------------------------
|
||||
|
@ -150,7 +156,6 @@ install-gtk:
|
|||
$(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 -
|
||||
$(call split_install_messages, gtk, $(DESTDIR)$(NETSURF_GTK_RESOURCES))
|
||||
$(Q)install -m 0644 $(GTK_RESOURCES_LIST) $(DESTDIR)$(NETSURF_GTK_RESOURCES)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
../../../!NetSurf/Resources/de/Messages
|
|
@ -1 +0,0 @@
|
|||
../../../!NetSurf/Resources/en/Messages
|
|
@ -1 +0,0 @@
|
|||
../../../!NetSurf/Resources/fr/Messages
|
|
@ -1 +0,0 @@
|
|||
../../../!NetSurf/Resources/it/Messages
|
|
@ -1 +0,0 @@
|
|||
../../../!NetSurf/Resources/nl/Messages
|
Loading…
Reference in New Issue