Added partial support for building with OBJDIR

This commit is contained in:
Pierre Pronchery 2014-11-04 01:05:23 +01:00
parent e2036ef4d0
commit d75a1b8612
10 changed files with 87 additions and 42 deletions

View File

@ -3,7 +3,8 @@ VERSION = 0.1.2
SUBDIRS = data 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-todo.desktop \
$(PACKAGE)-$(VERSION)/data/project.conf \
@ -59,10 +60,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

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local
DESTDIR =
MKDIR = mkdir -m 0755 -p

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local
DESTDIR =
MKDIR = mkdir -m 0755 -p

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local
DESTDIR =
MKDIR = mkdir -m 0755 -p

View File

@ -1,4 +1,5 @@
SUBDIRS = 16x16 24x24 48x48
OBJDIR =
PREFIX = /usr/local
DESTDIR =
MKDIR = mkdir -m 0755 -p

View File

@ -1,4 +1,5 @@
TARGETS = Todo.pot fr.mo
TARGETS = $(OBJDIR)Todo.pot $(OBJDIR)fr.mo
OBJDIR =
PREFIX = /usr/local
DESTDIR =
RM = rm -f
@ -9,11 +10,11 @@ INSTALL = install
all: $(TARGETS)
Todo.pot: POTFILES
./gettext.sh -P "$(PREFIX)" -- "Todo.pot"
$(OBJDIR)Todo.pot: POTFILES
./gettext.sh -P "$(PREFIX)" -- "$(OBJDIR)Todo.pot"
fr.mo: Todo.pot fr.po
./gettext.sh -P "$(PREFIX)" -- "fr.mo"
$(OBJDIR)fr.mo: $(OBJDIR)Todo.pot fr.po
./gettext.sh -P "$(PREFIX)" -- "$(OBJDIR)fr.mo"
clean:
$(RM) -- $(Todo.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"

View File

@ -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

View File

@ -10,4 +10,4 @@ depends=POTFILES
type=script
script=./gettext.sh
install=
depends=Todo.pot,fr.po
depends=$(OBJDIR)Todo.pot,fr.po

View File

@ -1,4 +1,5 @@
TARGETS = todo
TARGETS = $(OBJDIR)todo
OBJDIR =
PREFIX = /usr/local
DESTDIR =
BINDIR = $(PREFIX)/bin
@ -18,27 +19,27 @@ INSTALL = install
all: $(TARGETS)
todo_OBJS = task.o taskedit.o todo.o window.o main.o
todo_OBJS = $(OBJDIR)task.o $(OBJDIR)taskedit.o $(OBJDIR)todo.o $(OBJDIR)window.o $(OBJDIR)main.o
todo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
todo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
todo: $(todo_OBJS)
$(CC) -o todo $(todo_OBJS) $(todo_LDFLAGS)
$(OBJDIR)todo: $(todo_OBJS)
$(CC) -o $(OBJDIR)todo $(todo_OBJS) $(todo_LDFLAGS)
task.o: task.c task.h
$(CC) $(todo_CFLAGS) -fPIC -c task.c
$(OBJDIR)task.o: task.c task.h
$(CC) $(todo_CFLAGS) -fPIC -o $(OBJDIR)task.o -c task.c
taskedit.o: taskedit.c
$(CC) $(todo_CFLAGS) -fPIC -c taskedit.c
$(OBJDIR)taskedit.o: taskedit.c
$(CC) $(todo_CFLAGS) -fPIC -o $(OBJDIR)taskedit.o -c taskedit.c
todo.o: todo.c task.h todo.h ../config.h
$(CC) $(todo_CFLAGS) -fPIC -c todo.c
$(OBJDIR)todo.o: todo.c task.h todo.h ../config.h
$(CC) $(todo_CFLAGS) -fPIC -o $(OBJDIR)todo.o -c todo.c
window.o: window.c todo.h window.h
$(CC) $(todo_CFLAGS) -c window.c
$(OBJDIR)window.o: window.c todo.h window.h
$(CC) $(todo_CFLAGS) -o $(OBJDIR)window.o -c window.c
main.o: main.c task.h todo.h ../config.h
$(CC) $(todo_CFLAGS) -c main.c
$(OBJDIR)main.o: main.c task.h todo.h ../config.h
$(CC) $(todo_CFLAGS) -o $(OBJDIR)main.o -c main.c
clean:
$(RM) -- $(todo_OBJS)
@ -48,7 +49,7 @@ distclean: clean
install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 todo $(DESTDIR)$(BINDIR)/todo
$(INSTALL) -m 0755 $(OBJDIR)todo $(DESTDIR)$(BINDIR)/todo
uninstall:
$(RM) -- $(DESTDIR)$(BINDIR)/todo

View File

@ -1,4 +1,5 @@
TARGETS = todo.so
TARGETS = $(OBJDIR)todo.so
OBJDIR =
PREFIX = /usr/local
DESTDIR =
LIBDIR = $(PREFIX)/lib
@ -19,15 +20,15 @@ INSTALL = install
all: $(TARGETS)
todo_OBJS = todo.o
todo_OBJS = $(OBJDIR)todo.o
todo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
todo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) ../src/task.o ../src/taskedit.o
todo.so: $(todo_OBJS)
$(CCSHARED) -o todo.so $(todo_OBJS) $(todo_LDFLAGS)
$(OBJDIR)todo.so: $(todo_OBJS)
$(CCSHARED) -o $(OBJDIR)todo.so $(todo_OBJS) $(todo_LDFLAGS)
todo.o: todo.c ../src/todo.c
$(CC) $(todo_CFLAGS) -c todo.c
$(OBJDIR)todo.o: todo.c ../src/todo.c
$(CC) $(todo_CFLAGS) -o $(OBJDIR)todo.o -c todo.c
clean:
$(RM) -- $(todo_OBJS)
@ -37,7 +38,7 @@ distclean: clean
install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(LIBDIR)/Mailer/plugins
$(INSTALL) -m 0644 todo.so $(DESTDIR)$(LIBDIR)/Mailer/plugins/todo.so
$(INSTALL) -m 0644 $(OBJDIR)todo.so $(DESTDIR)$(LIBDIR)/Mailer/plugins/todo.so
uninstall:
$(RM) -- $(DESTDIR)$(LIBDIR)/Mailer/plugins/todo.so