[PATCH] Basic gettext support when building

Henrik Brautaset Aronsen subsurface at henrik.synth.no
Fri Oct 12 01:05:41 PDT 2012

Den 11.10.12 15:48, skrev Henrik Brautaset Aronsen:
> Den 11.10.12 15:12, skrev Dirk Hohndel:
>> I notice that calling make now ALWAYS relinks the executable, even if
>> there were no changes (just call make twice in a row - the second time
>> it should say "`subsurface' is up to date")
>> Can you fix that?
> I'm trying, but I just can't figure out why the gettext target is 
> being built even though no .po files have changed.  Any ideas?

Fixed it!  Patch attached.


-------------- next part --------------
From 409e928b972e4c4f26822bd6324208ee4082ea3a Mon Sep 17 00:00:00 2001
From: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
Date: Fri, 12 Oct 2012 10:02:41 +0200
Subject: [PATCH] Better gettext build

My previous take at adding gettext to the Makefile wasn't very good,
since it always relinked the subsurface executable.

Signed-off-by: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
 Makefile | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 6ecef79..e747c5a 100644
--- a/Makefile
+++ b/Makefile
@@ -118,11 +118,14 @@ endif
+MSGLANGS=$(notdir $(wildcard po/*po))
+MSGOBJS=$(addprefix locale/,$(MSGLANGS:.po=.UTF-8/LC_MESSAGES/subsurface.mo))
 OBJS =	main.o dive.o time.o profile.o info.o equipment.o divelist.o \
 	parse-xml.o save-xml.o libdivecomputer.o print.o uemis.o uemis-downloader.o \
 	gtk-gui.o statistics.o file.o cochran.o $(OSSUPPORT).o $(RESFILE)
-$(NAME): $(OBJS) gettext
 	$(CC) $(LDFLAGS) -o $(NAME) $(OBJS) $(LIBS)
 install: $(NAME)
@@ -211,12 +214,9 @@ uemis-downloader.o: uemis-downloader.c dive.h uemis.h
 $(OSSUPPORT).o: $(OSSUPPORT).c display-gtk.h
-gettext: po/*.po
-	@for MSG in $(wildcard po/*.po); do \
-	  LOC=`basename $$MSG .po`; \
-	  mkdir -p locale/$$LOC.UTF-8/LC_MESSAGES; \
-	  msgfmt -c -o locale/$$LOC.UTF-8/LC_MESSAGES/subsurface.mo $$MSG; \
-	done
+locale/%.UTF-8/LC_MESSAGES/subsurface.mo: po/%.po
+	mkdir -p $(dir $@)
+	msgfmt -c -o $@ po/$*.po
 	$(MAKE) -C Documentation doc

More information about the subsurface mailing list