From f742a8f3eb87f8a6e8afadb459b3f6f407262191 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 3 Nov 2014 23:13:32 +0100 Subject: [PATCH] Added support for OBJDIR --- Makefile | 18 +++++++++++++++--- data/Makefile | 1 + include/Makefile | 1 + po/Makefile | 13 +++++++------ po/gettext.sh | 46 ++++++++++++++++++++++++++++++++++++---------- po/project.conf | 2 +- src/Makefile | 47 ++++++++++++++++++++++++----------------------- tools/Makefile | 33 +++++++++++++++++---------------- 8 files changed, 102 insertions(+), 59 deletions(-) diff --git a/Makefile b/Makefile index 8023209..8d77d16 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,8 @@ VERSION = 0.2.1 SUBDIRS = data include po src tools RM = rm -f LN = ln -f -TAR = tar -czvf +TAR = tar +MKDIR = mkdir -m 0755 -p all: subdirs @@ -20,7 +21,7 @@ distclean: dist: $(RM) -r -- $(PACKAGE)-$(VERSION) $(LN) -s -- . $(PACKAGE)-$(VERSION) - @$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ + @$(TAR) -czvf $(PACKAGE)-$(VERSION).tar.gz -- \ $(PACKAGE)-$(VERSION)/data/Makefile \ $(PACKAGE)-$(VERSION)/data/deforaos-keyboard.desktop \ $(PACKAGE)-$(VERSION)/data/project.conf \ @@ -58,10 +59,21 @@ dist: $(PACKAGE)-$(VERSION)/project.conf $(RM) -- $(PACKAGE)-$(VERSION) +distcheck: dist + $(TAR) -xzvf $(PACKAGE)-$(VERSION).tar.gz + $(MKDIR) -- $(PACKAGE)-$(VERSION)/objdir + $(MKDIR) -- $(PACKAGE)-$(VERSION)/destdir + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/") + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist) + $(RM) -r -- $(PACKAGE)-$(VERSION) + install: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done uninstall: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done -.PHONY: all subdirs clean distclean dist install uninstall +.PHONY: all subdirs clean distclean dist distcheck install uninstall diff --git a/data/Makefile b/data/Makefile index a307a29..c7c357c 100644 --- a/data/Makefile +++ b/data/Makefile @@ -1,3 +1,4 @@ +OBJDIR = PREFIX = /usr/local DESTDIR = MKDIR = mkdir -m 0755 -p diff --git a/include/Makefile b/include/Makefile index a060099..86faa92 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,3 +1,4 @@ +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f diff --git a/po/Makefile b/po/Makefile index a7bb28b..6119ab1 100644 --- a/po/Makefile +++ b/po/Makefile @@ -1,4 +1,5 @@ -TARGETS = Keyboard.pot fr.mo +TARGETS = $(OBJDIR)Keyboard.pot $(OBJDIR)fr.mo +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -9,11 +10,11 @@ INSTALL = install all: $(TARGETS) -Keyboard.pot: POTFILES - ./gettext.sh -P "$(PREFIX)" -- "Keyboard.pot" +$(OBJDIR)Keyboard.pot: POTFILES + ./gettext.sh -P "$(PREFIX)" -- "$(OBJDIR)Keyboard.pot" -fr.mo: Keyboard.pot fr.po - ./gettext.sh -P "$(PREFIX)" -- "fr.mo" +$(OBJDIR)fr.mo: $(OBJDIR)Keyboard.pot fr.po + ./gettext.sh -P "$(PREFIX)" -- "$(OBJDIR)fr.mo" clean: $(RM) -- $(Keyboard.pot_OBJS) $(fr.mo_OBJS) @@ -24,7 +25,7 @@ distclean: clean $(RM) -- $(TARGETS) install: $(TARGETS) - ./gettext.sh -P "$(DESTDIR)$(PREFIX)" -i -- "fr.mo" + ./gettext.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)fr.mo" uninstall: ./gettext.sh -P "$(DESTDIR)$(PREFIX)" -u -- "fr.mo" diff --git a/po/gettext.sh b/po/gettext.sh index 11a8805..c3ae919 100755 --- a/po/gettext.sh +++ b/po/gettext.sh @@ -70,9 +70,12 @@ _gettext_mo() { package="$1" lang="$2" + potfile="$3" + pofile="$4" + mofile="$5" - _gettext_po "$package" "$lang" || return 1 - $DEBUG $MSGFMT -c -v -o "$lang.mo" "$lang.po" || return 1 + _gettext_po "$package" "$lang" "$potfile" "$pofile" || return 1 + $DEBUG $MSGFMT -c -v -o "$mofile" "$pofile" || return 1 } @@ -81,11 +84,13 @@ _gettext_po() { package="$1" lang="$2" + potfile="$3" + pofile="$4" - if [ -f "$lang.po" ]; then - $DEBUG $MSGMERGE -U "$lang.po" "$package.pot" || return 1 + if [ -f "$pofile" ]; then + $DEBUG $MSGMERGE -U "$pofile" "$potfile" || return 1 else - $DEBUG $MSGINIT -l "$lang" -o "$lang.po" -i "$package.pot" \ + $DEBUG $MSGINIT -l "$lang" -o "$pofile" -i "$potfile" \ || return 1 fi } @@ -95,8 +100,9 @@ _gettext_po() _gettext_pot() { package="$1" + potfile="$2" - $DEBUG $XGETTEXT -d "$package" -o "$package.pot" --keyword="_" \ + $DEBUG $XGETTEXT -d "$package" -o "$potfile" --keyword="_" \ --keyword="N_" -f "$POTFILES" || return 1 } @@ -142,7 +148,8 @@ fi LOCALEDIR="$PREFIX/share/locale" while [ $# -gt 0 ]; do target="$1" - lang="${target%%.mo}" + source="${target#$OBJDIR}" + lang="${source%%.mo}" lang="${lang%%.po}" shift @@ -168,13 +175,32 @@ while [ $# -gt 0 ]; do #create case "$target" in *.mo) - _gettext_mo "$PACKAGE" "$lang" || exit 2 + #XXX may not match + if [ -n "$OBJDIR" ]; then + potfile="$OBJDIR/$PACKAGE.pot" + else + potfile="$PACKAGE.pot" + fi + mofile="$target" + pofile="${source%%.mo}.po" + _gettext_mo "$PACKAGE" "$lang" "$potfile" "$pofile" \ + "$mofile" || exit 2 ;; *.po) - _gettext_po "$PACKAGE" "$lang" || exit 2 + #XXX may not match + if [ -n "$OBJDIR" ]; then + potfile="$OBJDIR/$PACKAGE.pot" + else + potfile="$PACKAGE.pot" + fi + pofile="$target" + _gettext_po "$PACKAGE" "$lang" "$potfile" "$pofile" \ + || exit 2 ;; *.pot) - _gettext_pot "${target%%.pot}" || exit 2 + package="${source%%.pot}" + potfile="$target" + _gettext_pot "$package" "$potfile" || exit 2 ;; *) exit 2 diff --git a/po/project.conf b/po/project.conf index c501670..e153857 100644 --- a/po/project.conf +++ b/po/project.conf @@ -10,4 +10,4 @@ depends=POTFILES type=script script=./gettext.sh install= -depends=Keyboard.pot,fr.po +depends=$(OBJDIR)Keyboard.pot,fr.po diff --git a/src/Makefile b/src/Makefile index b99290c..0c93b68 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,4 +1,5 @@ -TARGETS = keyboard keyboardctl +TARGETS = $(OBJDIR)keyboard $(OBJDIR)keyboardctl +OBJDIR = PREFIX = /usr/local DESTDIR = BINDIR = $(PREFIX)/bin @@ -17,40 +18,40 @@ INSTALL = install all: $(TARGETS) -keyboard_OBJS = callbacks.o common.o key.o keyboard.o layout.o main.o +keyboard_OBJS = $(OBJDIR)callbacks.o $(OBJDIR)common.o $(OBJDIR)key.o $(OBJDIR)keyboard.o $(OBJDIR)layout.o $(OBJDIR)main.o keyboard_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) keyboard_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs x11` -lXtst -keyboard: $(keyboard_OBJS) - $(CC) -o keyboard $(keyboard_OBJS) $(keyboard_LDFLAGS) +$(OBJDIR)keyboard: $(keyboard_OBJS) + $(CC) -o $(OBJDIR)keyboard $(keyboard_OBJS) $(keyboard_LDFLAGS) -keyboardctl_OBJS = keyboardctl.o +keyboardctl_OBJS = $(OBJDIR)keyboardctl.o keyboardctl_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libDesktop` keyboardctl_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libDesktop` -keyboardctl: $(keyboardctl_OBJS) - $(CC) -o keyboardctl $(keyboardctl_OBJS) $(keyboardctl_LDFLAGS) +$(OBJDIR)keyboardctl: $(keyboardctl_OBJS) + $(CC) -o $(OBJDIR)keyboardctl $(keyboardctl_OBJS) $(keyboardctl_LDFLAGS) -callbacks.o: callbacks.c callbacks.h - $(CC) $(keyboard_CFLAGS) -c callbacks.c +$(OBJDIR)callbacks.o: callbacks.c callbacks.h + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)callbacks.o -c callbacks.c -common.o: common.c - $(CC) $(keyboard_CFLAGS) -c common.c +$(OBJDIR)common.o: common.c + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)common.o -c common.c -key.o: key.c key.h - $(CC) $(keyboard_CFLAGS) -c key.c +$(OBJDIR)key.o: key.c key.h + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)key.o -c key.c -keyboard.o: keyboard.c callbacks.h keyboard.h ../config.h - $(CC) $(keyboard_CFLAGS) -c keyboard.c +$(OBJDIR)keyboard.o: keyboard.c callbacks.h keyboard.h ../config.h + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)keyboard.o -c keyboard.c -layout.o: layout.c layout.h - $(CC) $(keyboard_CFLAGS) -c layout.c +$(OBJDIR)layout.o: layout.c layout.h + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)layout.o -c layout.c -main.o: main.c keyboard.h - $(CC) $(keyboard_CFLAGS) -c main.c +$(OBJDIR)main.o: main.c keyboard.h + $(CC) $(keyboard_CFLAGS) -o $(OBJDIR)main.o -c main.c -keyboardctl.o: keyboardctl.c - $(CC) $(keyboardctl_CFLAGS) -c keyboardctl.c +$(OBJDIR)keyboardctl.o: keyboardctl.c + $(CC) $(keyboardctl_CFLAGS) -o $(OBJDIR)keyboardctl.o -c keyboardctl.c clean: $(RM) -- $(keyboard_OBJS) $(keyboardctl_OBJS) @@ -60,9 +61,9 @@ distclean: clean install: $(TARGETS) $(MKDIR) $(DESTDIR)$(BINDIR) - $(INSTALL) -m 0755 keyboard $(DESTDIR)$(BINDIR)/keyboard + $(INSTALL) -m 0755 $(OBJDIR)keyboard $(DESTDIR)$(BINDIR)/keyboard $(MKDIR) $(DESTDIR)$(BINDIR) - $(INSTALL) -m 0755 keyboardctl $(DESTDIR)$(BINDIR)/keyboardctl + $(INSTALL) -m 0755 $(OBJDIR)keyboardctl $(DESTDIR)$(BINDIR)/keyboardctl uninstall: $(RM) -- $(DESTDIR)$(BINDIR)/keyboard diff --git a/tools/Makefile b/tools/Makefile index 6917fdd..8986c8a 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,4 +1,5 @@ -TARGETS = plug snooper xkey +TARGETS = $(OBJDIR)plug $(OBJDIR)snooper $(OBJDIR)xkey +OBJDIR = PREFIX = /usr/local DESTDIR = BINDIR = $(PREFIX)/bin @@ -17,35 +18,35 @@ INSTALL = install all: $(TARGETS) -plug_OBJS = plug.o +plug_OBJS = $(OBJDIR)plug.o plug_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) plug_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -plug: $(plug_OBJS) - $(CC) -o plug $(plug_OBJS) $(plug_LDFLAGS) +$(OBJDIR)plug: $(plug_OBJS) + $(CC) -o $(OBJDIR)plug $(plug_OBJS) $(plug_LDFLAGS) -snooper_OBJS = snooper.o +snooper_OBJS = $(OBJDIR)snooper.o snooper_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) snooper_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -snooper: $(snooper_OBJS) - $(CC) -o snooper $(snooper_OBJS) $(snooper_LDFLAGS) +$(OBJDIR)snooper: $(snooper_OBJS) + $(CC) -o $(OBJDIR)snooper $(snooper_OBJS) $(snooper_LDFLAGS) -xkey_OBJS = xkey.o +xkey_OBJS = $(OBJDIR)xkey.o xkey_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) xkey_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs x11` -lXtst -xkey: $(xkey_OBJS) - $(CC) -o xkey $(xkey_OBJS) $(xkey_LDFLAGS) +$(OBJDIR)xkey: $(xkey_OBJS) + $(CC) -o $(OBJDIR)xkey $(xkey_OBJS) $(xkey_LDFLAGS) -plug.o: plug.c - $(CC) $(plug_CFLAGS) -c plug.c +$(OBJDIR)plug.o: plug.c + $(CC) $(plug_CFLAGS) -o $(OBJDIR)plug.o -c plug.c -snooper.o: snooper.c - $(CC) $(snooper_CFLAGS) -c snooper.c +$(OBJDIR)snooper.o: snooper.c + $(CC) $(snooper_CFLAGS) -o $(OBJDIR)snooper.o -c snooper.c -xkey.o: xkey.c - $(CC) $(xkey_CFLAGS) -c xkey.c +$(OBJDIR)xkey.o: xkey.c + $(CC) $(xkey_CFLAGS) -o $(OBJDIR)xkey.o -c xkey.c clean: $(RM) -- $(plug_OBJS) $(snooper_OBJS) $(xkey_OBJS)