###################################################################### # Begin of dvdisaster makefile template ###################################################################### # Currently supported locales PO_LOCALES = pt_BR cs de it ru sv MAN_LOCALES = de # Search for TAGS: online-docs # Don't forget edit NODIST for new doc locales # Local settings (not changeable from the configure script) # Where to put tar archives (arch, srcdist) TAR_PREFIX=/dev/shm ###################################################################### # Take over variables from configure ###################################################################### VERSION = $(CFG_VERSION) SRCDIR = $(CFG_SRCDIR) PKGNAME = $(CFG_PKGNAME) PREFIX = $(CFG_PREFIX) BINDIR = $(CFG_BINDIR) MANDIR = $(CFG_MANDIR) DOCDIR = $(CFG_DOCDIR) DOCSUBDIR = $(CFG_DOCDIR)/$(CFG_DOCSUBDIR) LOCALEDIR = $(CFG_LOCALEDIR) BUILDROOT = $(CFG_BUILDROOT) BUILDTMP = $(CFG_BUILDTMP) INTL_INCL = $(CFG_INTL_INCL) INTL_LFLAGS = $(CFG_INTL_LFLAGS) INTL_LIBS = $(CFG_INTL_LIBS) CAM_LFLAGS = $(CFG_CAM_LFLAGS) CAM_LIBS = $(CFG_CAM_LIBS) GTK_CFLAGS = $(CFG_GTK2_CFLAGS) GTK_LIBS = $(CFG_GTK2_LIBS) GTK_BINDIR = $(CFG_GTK2_BINDIR) EFENCE_LFLAGS = $(CFG_EFENCE_LFLAGS) EFENCE_LIBS = $(CFG_EFENCE_LIBS) SYS_OPTIONS = $(CFG_SYS_OPTIONS) SYS_NAME = $(CFG_SYS_NAME) HAVE_OPTIONS = $(CFG_HAVE_OPTIONS) WITH_OPTIONS = $(CFG_WITH_OPTIONS) OTHER_OPTIONS = $(CFG_OTHER_OPTIONS) -DVERSION=\"$(VERSION)\" SSE2_OPTIONS = $(CFG_SSE2_OPTIONS) ALTIVEC_OPTIONS = $(CFG_ALTIVEC_OPTIONS) LOCATIONS = -DSRCDIR=\"$(SRCDIR)\" -DBINDIR=\"$(BINDIR)\" -DDOCDIR=\"$(DOCSUBDIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\" COPTS = $(CFLAGS) $(LOCATIONS) $(SYS_OPTIONS) $(SYS_NAME) $(HAVE_OPTIONS) $(WITH_OPTIONS) $(OTHER_OPTIONS) $(INTL_INCL) $(CAM_INCL) $(GTK_CFLAGS) $(MUDFLAP_CFLAGS) LOPTS = $(LDFLAGS) $(INTL_LFLAGS) $(CAM_LFLAGS) $(EFENCE_LFLAGS) $(MUDFLAP_LFLAGS) LIBS = $(INTL_LIBS) $(CAM_LIBS) $(GTK_LIBS) $(EFENCE_LIBS) $(MUDFLAP_LIBS) -lm CFILES = $(CFG_CFILES) OFILES = $(CFG_OFILES) ###################################################################### # Compilation related ###################################################################### .PHONY : all help show locale time-stamp ${BUILDTMP}/%.o : %.c @echo "Compiling:" $? @$(CC) $(COPTS) -c $? -o $@ all: time-stamp dvdisaster # Building the dvdisaster binary time-stamp: @$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h dvdisaster: inlined-icons.h $(OFILES) @echo "Linking : dvdisaster" @$(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster @if test -e locale/de/LC_MESSAGES/dvdisaster.mo \ || echo $(WITH_OPTIONS) | grep "NLS_NO" >/dev/null; \ then echo "not touching locale"; \ else $(MAKE) --no-print-directory -C locale; \ fi inlined-icons.h: icons/read.png icons/create.png icons/scan.png icons/fix.png icons/verify.png @gdk-pixbuf-csource --raw --name=dvdisaster_read icons/read.png >inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_create icons/create.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_scan icons/scan.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_fix icons/fix.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_verify icons/verify.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index icons/gtk-index.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences icons/gtk-preferences.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png >>inlined-icons.h @gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png >>inlined-icons.h $(BUILDTMP)/help-dialogs.o: help-dialogs.c simple-md5sum @if test -e fingerprints.md5; \ then if test -e help-dialogs.h; then rm help-dialogs.h; fi; \ mv inlined-icons.h inlined-icons.saved; \ mv build.h build.saved; \ ./simple-md5sum -b *.h *.c | sort -k2 >tmp.md5; \ sort -k2 < fingerprints.md5 >tmp2.md5; \ mv inlined-icons.saved inlined-icons.h; \ mv build.saved build.h; \ if ! cmp tmp2.md5 tmp.md5 >/dev/null; \ then echo "#define MODIFIED_SOURCE 1" >> help-dialogs.h; \ else echo "#define UNMODIFIED_SOURCE 1" >> help-dialogs.h; \ fi; \ rm tmp.md5 tmp2.md5; \ else echo "#define MODIFIED_SOURCE 1" >> help-dialogs.h; \ fi @echo "Compiling:" help-dialogs.c @$(CC) $(COPTS) -c help-dialogs.c -o $(BUILDTMP)/help-dialogs.o $(BUILDTMP)/rs-encoder-sse2.o: rs-encoder-sse2.c @echo "Compiling:" rs-encoder-sse2.c @$(CC) $(SSE2_OPTIONS) $(COPTS) -c rs-encoder-sse2.c -o $(BUILDTMP)/rs-encoder-sse2.o $(BUILDTMP)/rs-encoder-altivec.o: rs-encoder-altivec.c @echo "Compiling:" rs-encoder-altivec.c @$(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c rs-encoder-altivec.c -o $(BUILDTMP)/rs-encoder-altivec.o locale: @$(MAKE) --no-print-directory -C locale untranslated: @$(MAKE) --no-print-directory -C locale check-untranslated simple-md5sum: md5.c @$(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM md5.c $(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum version.tex: @echo "\\newcommand{\\projectversion}{$(VERSION)}" >$(SRCDIR)/documentation/config/version.tex manual: version.tex @echo "Producing user manual... " @$(MAKE) --no-print-directory -C documentation/user-manual manual.pdf manualclean: @echo "Removing temporary user manual files... " @$(MAKE) --no-print-directory -C documentation/user-manual clean # Some usage info help: @echo "Building dvdisaster:" @echo "show - show current configuration (taken over from ./configure)" @echo "all - build dvdisaster" @echo "install - install dvdisaster locally" @echo "uninstall - uninstall dvdisaster" @echo @echo "Documentation related:" @echo "manual - create the user manual (requires LaTeX)" @echo @echo "Locale related:" @echo "locale - update locale files" @echo "untranslated - show untranslated German strings" @echo @echo "Package maintenance:" @echo "clean - remove all easily rebuildable files" @echo "distclean - remove all files which are rebuildable" @echo "archclean - remove all files which are rebuildable in an development setup" @echo "arch - distclean and tar the source directory (dirty)" @echo "srcdist - produce the source distribution tarball (polished)" # Build configuration printing show: @echo -e "Current build configuration in ./GNUmakefile:\n" @echo "VERSION = " $(VERSION) @echo "CC = " $(CC) @echo "MAKE = " $(MAKE) @echo "SHELL = " $(SHELL) @echo "SRCDIR = " $(SRCDIR) @echo "PKGNAME = " $(PKGNAME) @echo "PREFIX = " $(PREFIX) @echo "BINDIR = " $(BINDIR) @echo "MANDIR = " $(MANDIR) @echo "LOCALEDIR = " $(LOCALEDIR) @echo "DOCDIR = " $(DOCDIR) @echo "DOCSUBDIR = " $(DOCSUBDIR) @echo "BUILDROOT = " $(BUILDROOT) @echo "BUILDTMP = " $(BUILDTMP) @echo @echo "INTL_INCL = " $(INTL_INCL) @echo "INTL_LFLAGS = " $(INTL_LFLAGS) @echo "INTL_LIBS = " $(INTL_LIBS) @echo "GTK_CFLAGS = " $(GTK_CFLAGS) @echo "GTK_LIBS = " $(GTK_LIBS) @echo "GTK_BINDIR = " $(GTK_BINDIR) @echo "EFENCE_LFLAGS= " $(EFENCE_LFLAGS) @echo "EFENCE_LIBS = " $(EFENCE_LIBS) @echo @echo "SYS_OPTIONS = " $(SYS_OPTIONS) @echo "SYS_NAME = " $(SYS_NAME) @echo "HAVE_OPTIONS = " $(HAVE_OPTIONS) @echo "WITH_OPTIONS = " $(WITH_OPTIONS) @echo "OTHER_OPTIONS= " $(OTHER_OPTIONS) @echo "SSE2_OPTIONS = " $(SSE2_OPTIONS) @echo "ALTIVEC_OPTIONS= " $(ALTIVEC_OPTIONS) @echo @echo "CFLAGS = " $(CFLAGS) @echo "COPTS = " $(COPTS) @echo "LIBS = " $(LIBS) @echo "LOPTS = " $(LOPTS) ###################################################################### # Distribution management ###################################################################### .PHONY : install uninstall clean distclean arch .PHONY : srcdist install: dvdisaster manual @echo "Installing package..." install -d $(BUILDROOT)$(BINDIR) install dvdisaster $(BUILDROOT)$(BINDIR) install -d $(BUILDROOT)$(DOCSUBDIR) install -m 644 CHANGELOG $(BUILDROOT)$(DOCSUBDIR) install -m 644 COPYING $(BUILDROOT)$(DOCSUBDIR) install -m 644 CREDITS* $(BUILDROOT)$(DOCSUBDIR) install -m 644 README.MODIFYING $(BUILDROOT)$(DOCSUBDIR) install -m 644 TODO $(BUILDROOT)$(DOCSUBDIR) install -d $(BUILDROOT)$(DOCSUBDIR) (cd documentation/user-manual; install -m 644 manual.pdf $(BUILDROOT)$(DOCSUBDIR)) install -d $(BUILDROOT)$(MANDIR)/man1 install -d $(BUILDROOT)$(MANDIR)/de/man1 cd documentation; \ ESCAPED_DOCSUBDIR=`echo $(DOCSUBDIR) | sed -e 's/\//\\\\\//g'`; \ sed "s/%docdir%/$$ESCAPED_DOCSUBDIR\/html/" dvdisaster.updated; \ install -m 644 dvdisaster.updated $(BUILDROOT)$(MANDIR)/man1/dvdisaster.1; \ sed "s/%docdir%/$$ESCAPED_DOCSUBDIR\/html/" dvdisaster.updated; \ install -m 644 dvdisaster.updated $(BUILDROOT)$(MANDIR)/de/man1/dvdisaster.1; \ rm dvdisaster.updated if echo $(WITH_OPTIONS) | grep "NLS_YES" >/dev/null; then \ cd locale; \ for i in ?? ??_??; do\ install -d $(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES; \ install -m 644 $$i/LC_MESSAGES/dvdisaster.mo $(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES; \ done \ fi @echo "# dvdisaster uninstaller script" > $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "# Usage: sh dvdisaster-uninstall.sh" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(BINDIR)/dvdisaster\" \"$(BINDIR)/dvdisaster-uninstall.sh\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/CHANGELOG\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/COPYING\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/CREDITS.de\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/CREDITS.en\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/manual.pdf\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/README.MODIFYING\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rm -f \"$(DOCSUBDIR)/TODO\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @echo "rmdir \"$(DOCSUBDIR)\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @for i in $(PO_LOCALES); do \ echo "rm -f \"$(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \ done @echo "rm -f \"$(MANDIR)/man1/dvdisaster.1\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh @for i in $(MAN_LOCALES); do \ echo "rm -f \"$(MANDIR)/$$i/man1/dvdisaster.1\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \ done @echo "echo \"dvdisaster has been uninstalled.\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh uninstall: @echo "Uninstalling package..." rm -f $(BINDIR)/dvdisaster $(BINDIR)/dvdisaster-uninstall.sh rm -rf $(DOCSUBDIR) rm -f $(MANDIR)/man1/dvdisaster.1 for i in $(PO_LOCALES); do \ rm $(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo; \ done for i in $(MAN_LOCALES); do \ rm $(MANDIR)/$$i/man1/dvdisaster.1; \ done archclean: distclean @echo "Removing rebuildable documentation parts" @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs archclean @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual archclean distclean: clean @echo "Removing configuration files" @rm -f configure.log Makefile.config GNUmakefile locale/Makefile @for i in locale/?? locale/??_??; do rm -rf $$i; done @echo "all:" >>GNUmakefile @echo -e "\t@echo" >>GNUmakefile @echo -e "\t@echo \"Please create a Makefile by entering \\\"bash configure\\\" first\"" >>GNUmakefile @echo -e "\t@echo" >>GNUmakefile # There might be a not executable simple-md5sum from a compiler run # under a different architecture, so make sure we have a working binary # in the clean target. clean: @echo "Removing rebuildable files" @rm -rf *.o $(BUILDTMP)/*.o medium.* abbild.* dvdisaster .dvdisaster core core.* *.core @rm -f inlined-icons.h help-dialogs.h @find . -name \*\~ -print | xargs rm -f; @find . -name \*.mo -print | xargs rm -f; @find . -name \#\*\# -print | xargs rm -f; @rm -f documentation/config/version.tex @if test -e $(PKGNAME); then rm -rf $(PKGNAME); fi @if test -e ~/.dvdisaster-original-author; then \ mv build.h build.saved ;\ if ! test -x simple-md5sum || ! ./simple-md5sum >/dev/null 2>&1; then \ rm -f simple-md5sum; \ $(MAKE) --no-print-directory simple-md5sum; \ echo "[simple-md5sum (re-)built]"; \ fi; \ ./simple-md5sum -b *.h *.c >fingerprints.md5 ;\ mv build.saved build.h; \ fi @rm -f simple-md5sum @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs clean; @$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual clean; BUILD=`grep BUILD $(SRCDIR)/build.h | cut -d ' ' -f 3` arch: archclean time-stamp @cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME) INSTALL: documentation/install.template @sed "s/@@PKGNAME/$(PKGNAME)/" INSTALL srcdist: INSTALL distclean manual manualclean @cd .. ; tar -c -j -X $(PKGNAME)/NODIST -f $(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME) @cd .. ; gpg --homedir .gnupg --default-key 758BCC23 --detach-sign --output $(TAR_PREFIX)/$(PKGNAME).tar.bz2.gpg --armor $(TAR_PREFIX)/$(PKGNAME).tar.bz2