# Makefile(.in) for xcftools # Copyright (C) 2006 Henning Makholm # # This program is free software; you can redistribute it and/or modify # it under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA all: srcdir = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ mandir = @mandir@ datadir = @datadir@ sysconfdir = @sysconfdir@ localedir = $(datadir)/locale VERSION = @PACKAGE_VERSION@ APPNAME = @PACKAGE_TARNAME@ program_transform_name = @program_transform_name@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ @LIBICONV@ LIBS = @LIBS@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ RM = rm -f SED = sed PERL = @PERL@ o = @OBJEXT@ e = @EXEEXT@ # Allow using Makefile.in directly for cleaning and distmaking purposes ifneq (,$(findstring @,$o)) e = srcdir = . endif ############################################################################# FILEIO = io-unix BINARIES = xcfinfo$e xcf2pnm$e xcf2png$e xcfview COMMANDS = $(patsubst %$e,%,$(BINARIES)) MANPAGES = $(patsubst %,%.1,$(COMMANDS)) ifeq (@USE_NLS@,yes) LINGUAS = da MANLINGUAS = da endif %.$o: %.c $(CC) $(CFLAGS) -o $@ -c $< all: $(BINARIES) $(SCRIPTS) $(MANPAGES) po/stamp manpo/all xcfinfo$e: xcfinfo.$o $(FILEIO).$o enums.$o xcf-general.$o utils.$o nlsini.$o $(CC) $(LDFLAGS) $(LIBS) $^ -o $@ xcf2pnm$e: xcf2pnm.$o $(FILEIO).$o enums.$o xcf-general.$o utils.$o nlsini.$o \ pixels.$o flatten.$o flatspec.$o scaletab.$o table.$o $(CC) $(LDFLAGS) $(LIBS) $^ -o $@ xcf2png$e: xcf2png.$o $(FILEIO).$o enums.$o xcf-general.$o utils.$o nlsini.$o \ pixels.$o flatten.$o flatspec.$o scaletab.$o table.$o palette.$o $(CC) $(LDFLAGS) $(LIBS) -lpng $^ -o $@ xcfview: xcfview.in Makefile sed '1s,/usr/bin/perl,@PERL@,' < $< > $@ testscale$e: testscale.$o $(CC) $(LDFLAGS) $(LIBS) $^ -o $@ install: all for p in $(BINARIES) ; do \ case $$p in xcfview) strip= ;; *) strip=-s ;; esac ; \ $(INSTALL_PROGRAM) $$strip $$p \ $(bindir)/`echo $$p | $(SED) $(program_transform_name)` \ || exit 1 ;\ done for m in $(MANPAGES) ; do \ $(INSTALL_DATA) $$m \ $(mandir)/man1/`echo $$m | $(SED) $(program_transform_name)` \ || exit 1 ; \ done for lang in $(LINGUAS) ; do \ $(srcdir)/install-sh -d $(localedir)/$$lang/LC_MESSAGES ; \ $(INSTALL_DATA) po/$$lang.mo \ $(localedir)/$$lang/LC_MESSAGES/$(APPNAME).mo \ || exit 1 ; \ done for L in $(MANLINGUAS) ; do \ $(srcdir)/install-sh -d $(mandir)/$$L/man1 || exit 1 ; \ for P in $(patsubst %.1,%,$(MANPAGES)) ; do \ $(INSTALL_DATA) manpo/$$P.$$L.1 $(mandir)/$$L/man1/$$P.1 \ || exit 1; done ; done ; C_GENERATED = enums.c table.c nlsini.c ENUMSOURCES = gimp/base-enums.h gimp/gimpbaseenums.h gimp/xcf-private.h enums.h: mkenumsh.pl $(ENUMSOURCES) $(PERL) $< $(ENUMSOURCES) > $@ enums.c: mkenumsc.pl enums.h $(PERL) $< enums.h > $@ table.c: mktablec.pl config.h $(PERL) $< > $@ nlsini.c: Makefile echo >$@ "#include \"xcftools.h\"" echo >>$@ "#ifndef nls_init" echo >>$@ "void nls_init(void) {" echo >>$@ " bindtextdomain(\"$(APPNAME)\",\"$(localedir)\");" echo >>$@ " textdomain(\"$(APPNAME)\"); }" echo >>$@ "#endif" %.oi: options.i mkopti.pl config.h $(PERL) mkopti.pl $* %.1: %.oi %.10 config.h mancombine.pl $(PERL) mancombine.pl $*.10 > $@ ############################################################################# # # Localization stuff POTFILES_NONC = $(patsubst %$e,%.oi,$(BINARIES)) options.i po/$(APPNAME).pot$(SUPPRESS_AUTOFOO): $(POTFILES_NONC) \ $(filter-out table.c nlsini.c, $(C_GENERATED) $(wildcard *.c)) xgettext -o $@.tmp -C -k_ -kN_ \ --foreign-user --msgid-bugs-address=henning@makholm.net \ --flag=FatalGeneric:2:c-format \ --flag=FatalUnexpected:1:c-format \ --flag=FatalBadXCF:1:c-format \ --flag=FatalUnsupportedXCF:1:c-format \ $^ if diff $@ $@.tmp | \ grep -v '^\([^<>]\|. \?"POT-Creation-Date:\)' > /dev/null; \ then mv -f $@.tmp $@ ; \ else echo OK, $@ is unchanged ; rm $@.tmp ; fi po/%.po: po/$(APPNAME).pot test -f $@ msgmerge -U $@ $< touch $@ po/%.mo: po/%.po msgfmt -c -o$@ $< po/stamp: $(patsubst %,po/%.mo,$(LINGUAS)) if ! make -q po/$(APPNAME).pot ; then \ touch po/$(APPNAME).pot ; touch po/*.po ; touch po/*.mo ; fi touch $@ # Manpage localization stuff POTFILES_MAN = options.mi $(patsubst %.1,%.10,$(MANPAGES)) \ exit.1i options.mi: manpo/optipot.pl options.i $(PERL) manpo/optipot.pl > $@ manpo/manpages.pot$(SUPPRESS_AUTOFOO): manpo/mantranslate.pl $(POTFILES_MAN) $(PERL) manpo/mantranslate.pl -x $(POTFILES_MAN) > $@.tmp if diff $@ $@.tmp | \ grep -v '^\([^<>]\|. \?"POT-Creation-Date:\)' > /dev/null; \ then mv -f $@.tmp $@ ; \ else echo OK, $@ is unchanged ; rm $@.tmp ; fi manpo/%.po: manpo/manpages.pot test -f $@ msgmerge -U $@ $< touch $@ manpo/stamp: $(patsubst %,manpo/%.po,$(MANLINGUAS)) if ! make -q manpo/manpages.pot ; then \ touch manpo/manpages.pot ; touch $^ ; fi touch $@ manpo/all: manpo/stamp $(MANPAGES) for L in $(MANLINGUAS) ; do \ for P in $(patsubst %.1,%,$(MANPAGES)) ; do \ $(PERL) manpo/mantranslate.pl manpo/$$L.po $$P.1 \ > manpo/$$P.$$L.1 || exit 1; done ; done ; touch $@ ############################################################################# # # Dependency tracking, by hand COMMON_HEADERS = xcftools.h config.h enums.h enums.$o: enums.h nlsini.$o: $(COMMON_HEADERS) table.$o: $(COMMON_HEADERS) pixels.h scaletab.$o: $(COMMON_HEADERS) pixels.h io-unix.$o: $(COMMON_HEADERS) xcf-general.$o: $(COMMON_HEADERS) utils.$o: $(COMMON_HEADERS) pixels.$o: $(COMMON_HEADERS) pixels.h palette.$o: $(COMMON_HEADERS) pixels.h flatten.h palette.h flatten.$o: $(COMMON_HEADERS) pixels.h flatten.h flatspec.$o: $(COMMON_HEADERS) pixels.h flatten.h xcfinfo.$o: $(COMMON_HEADERS) xcfinfo.oi xcf2pnm.$o: $(COMMON_HEADERS) pixels.h flatten.h xcf2pnm.oi xcf2png.$o: $(COMMON_HEADERS) pixels.h flatten.h xcf2png.oi palette.h ############################################################################# # # Standard cleaning and other metarules check: $(BINARIES) cd test && $(MAKE) check clean: $(RM) *.$o */*~ *~ .*~ xcf*.1i xcf*.1il *.1 *.oi *.mi $(RM) enums.h $(C_GENERATED) $(BINARIES) $(RM) po/*.mo */stamp manpo/all manpo/*.1 cd test && $(MAKE) clean distclean: clean $(RM) Makefile config.log config.cache config.status config.h $(RM) aclocal.m4 $(RM) -r autom4te.cache realclean: distclean $(RM) configure config.hin .SUFFIXES: .c .$o .PHONY: clean distclean realclean dist all ############################################################################# # # Tarball-making rule ifeq (,$(findstring @,$o)) dist: ajour $(patsubst %,po/%.po,$(LINGUAS)) $(MAKE) distclean noncvs > notcvsfiles || cp dist-generated notcvsfiles diff -u dist-generated notcvsfiles $(RM) notcvsfiles find . -type f -print | grep -v CVS | grep -v debian | \ sed 's!^\./!$(APPNAME)-$(VERSION)/!' | sort -o tar-manifest ln -s . $(APPNAME)-$(VERSION) GZIP=-9 tar cvzf $(APPNAME)-$(VERSION).tar.gz `cat tar-manifest` rm tar-manifest rm $(APPNAME)-$(VERSION) else dist: ajour $(MAKE) dist endif ############################################################################# # # Autofoo rules: $(srcdir)/configure$(SUPPRESS_AUTOFOO): configure.ac cd $(srcdir) && aclocal cd $(srcdir) && autoconf cd $(srcdir) && autoheader $(srcdir)/config.hin$(SUPPRESS_AUTOFOO): $(srcdir)/configure config.status: $(srcdir)/configure config.sub config.guess if [ -f config.status ] ; \ then ./config.status --recheck ; \ else ./configure ; fi Makefile$(SUPPRESS_AUTOFOO): Makefile.in config.status ./config.status $@ config.h: config.hin config.status ./config.status $@ touch $@ ajour: Makefile config.h config.sub config.guess: -test -r /usr/share/misc/$@ && cp /usr/share/misc/$@ . .PHONY: ajour dist