summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-04-07 00:08:14 +0100
committerVincent Sanders <vince@kyllikki.org>2015-04-07 00:44:35 +0100
commita838fa3ee93c813cc648bbf540639ea7fbbe6189 (patch)
tree22f19950e454562d6984be272f9e73700d516c53
parent05c742df09825079be2d21b8e52726f68cc5343c (diff)
downloadnetsurf-a838fa3ee93c813cc648bbf540639ea7fbbe6189.tar.gz
netsurf-a838fa3ee93c813cc648bbf540639ea7fbbe6189.tar.bz2
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.
-rw-r--r--.gitignore5
-rw-r--r--Makefile87
-rw-r--r--gtk/Makefile.target7
l---------gtk/res/de/Messages1
l---------gtk/res/en/Messages1
l---------gtk/res/fr/Messages1
l---------gtk/res/it/Messages1
l---------gtk/res/nl/Messages1
8 files changed, 67 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore
index 43881bda0..4102f3eee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/Makefile b/Makefile
index d54bfd409..077d1944c 100644
--- a/Makefile
+++ b/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 :=
# ----------------------------------------------------------------------------
@@ -568,6 +581,39 @@ S_COMMON := $(S_CONTENT) $(S_FETCHERS) $(S_CSS) $(S_RENDER) $(S_UTILS) \
# ----------------------------------------------------------------------------
+# 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
diff --git a/gtk/Makefile.target b/gtk/Makefile.target
index e69f6c267..23c01457e 100644
--- a/gtk/Makefile.target
+++ b/gtk/Makefile.target
@@ -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)
# ----------------------------------------------------------------------------
diff --git a/gtk/res/de/Messages b/gtk/res/de/Messages
deleted file mode 120000
index 2f1fc39c3..000000000
--- a/gtk/res/de/Messages
+++ /dev/null
@@ -1 +0,0 @@
-../../../!NetSurf/Resources/de/Messages \ No newline at end of file
diff --git a/gtk/res/en/Messages b/gtk/res/en/Messages
deleted file mode 120000
index 72c9eff90..000000000
--- a/gtk/res/en/Messages
+++ /dev/null
@@ -1 +0,0 @@
-../../../!NetSurf/Resources/en/Messages \ No newline at end of file
diff --git a/gtk/res/fr/Messages b/gtk/res/fr/Messages
deleted file mode 120000
index a42cf08f4..000000000
--- a/gtk/res/fr/Messages
+++ /dev/null
@@ -1 +0,0 @@
-../../../!NetSurf/Resources/fr/Messages \ No newline at end of file
diff --git a/gtk/res/it/Messages b/gtk/res/it/Messages
deleted file mode 120000
index d4c5c2956..000000000
--- a/gtk/res/it/Messages
+++ /dev/null
@@ -1 +0,0 @@
-../../../!NetSurf/Resources/it/Messages \ No newline at end of file
diff --git a/gtk/res/nl/Messages b/gtk/res/nl/Messages
deleted file mode 120000
index d484ebd29..000000000
--- a/gtk/res/nl/Messages
+++ /dev/null
@@ -1 +0,0 @@
-../../../!NetSurf/Resources/nl/Messages \ No newline at end of file