360 lines
14 KiB
Plaintext
360 lines
14 KiB
Plaintext
# dvdisaster: Additional error correction for optical media.
|
|
# Copyright (C) 2004-2017 Carsten Gnoerlich.
|
|
# Copyright (C) 2019-2021 The dvdisaster development team.
|
|
#
|
|
# Email: support@dvdisaster.org
|
|
#
|
|
# This file is part of dvdisaster.
|
|
#
|
|
# dvdisaster is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# dvdisaster 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 dvdisaster. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
######################################################################
|
|
# 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
|
|
|
|
# current project homepage
|
|
|
|
HOMEPAGE="https://dvdisaster.jcea.es/"
|
|
|
|
######################################################################
|
|
# 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)
|
|
|
|
GLIB_CFLAGS = $(CFG_GLIB2_CFLAGS)
|
|
GLIB_LIBS = $(CFG_GLIB2_LIBS)
|
|
GLIB_BINDIR = $(CFG_GLIB2_BINDIR)
|
|
|
|
GTK_CFLAGS = $(CFG_GTK3_CFLAGS) $(CFG_GLIB2_CFLAGS)
|
|
GTK_LIBS = $(CFG_GTK3_LIBS) $(CFG_GLIB2_LIBS)
|
|
GTK_BINDIR = $(CFG_GTK3_BINDIR) $(CFG_GLIB2_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) $(GLIB_CFLAGS)
|
|
LOPTS = $(LDFLAGS) $(INTL_LFLAGS) $(CAM_LFLAGS) $(EFENCE_LFLAGS)
|
|
|
|
LIBS = $(INTL_LIBS) $(CAM_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(EFENCE_LIBS) -lm
|
|
|
|
CFILES = $(CFG_CFILES)
|
|
OFILES = $(CFG_OFILES)
|
|
|
|
# special case for DESTDIR, if BUILDROOT is undef and DESTDIR is,
|
|
# set BUILDROOT to DESTDIR
|
|
ifeq "" "$(BUILDROOT)"
|
|
BUILDROOT = $(DESTDIR)
|
|
endif
|
|
|
|
######################################################################
|
|
# Compilation related
|
|
######################################################################
|
|
|
|
.PHONY : all help show locale
|
|
|
|
all: dvdisaster
|
|
|
|
src/build.h: configure
|
|
@echo "Updating:" src/build.h
|
|
@$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/src/build.h
|
|
|
|
${BUILDTMP}/%.o : src/%.c
|
|
@echo "Compiling:" $?
|
|
@$(CC) $(COPTS) -c $? -o $@
|
|
|
|
${BUILDTMP}/build.o : src/build.c src/build.h
|
|
@echo "Compiling:" src/build.o
|
|
@$(CC) $(COPTS) -c src/build.c -o $@
|
|
|
|
${BUILDTMP}/closure.o : src/closure.c $(ICONS)
|
|
@echo "Compiling:" src/closure.c
|
|
@$(CC) $(COPTS) -c src/closure.c -o $@
|
|
|
|
# Building the dvdisaster binary
|
|
|
|
dvdisaster: $(OFILES)
|
|
@echo "Linking : dvdisaster"
|
|
@if test $(CFG_SYS_OPTIONS) == -DSYS_MINGW; \
|
|
then windres -v src/winres.rc -O coff -o ${BUILDTMP}/winres.o >/dev/null ; \
|
|
$(CC) $(LOPTS) $(OFILES) $(LIBS) ${BUILDTMP}/winres.o -o dvdisaster ; \
|
|
else $(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster ; \
|
|
fi
|
|
@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
|
|
|
|
$(BUILDTMP)/inlined-icons.c: icons/icons.gresource.xml icons/cd.svg icons/close.svg icons/create.svg icons/fix-symbolic.svg icons/log.svg icons/manual.svg icons/open-ecc.svg icons/open-img.svg icons/preferences.svg icons/quit.svg icons/read-symbolic.svg icons/scan-symbolic.svg icons/stop.svg icons/strip.svg icons/verify-symbolic.svg
|
|
@echo "Generating:" $(ICONS)
|
|
glib-compile-resources --generate-source --target=$(ICONS) --sourcedir=icons icons/icons.gresource.xml
|
|
|
|
$(BUILDTMP)/rs-encoder-sse2.o: src/rs-encoder-sse2.c
|
|
@echo "Compiling:" src/rs-encoder-sse2.c
|
|
@$(CC) $(SSE2_OPTIONS) $(COPTS) -c src/rs-encoder-sse2.c -o $(BUILDTMP)/rs-encoder-sse2.o
|
|
|
|
$(BUILDTMP)/rs-encoder-altivec.o: src/rs-encoder-altivec.c
|
|
@echo "Compiling:" src/rs-encoder-altivec.c
|
|
@$(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c src/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
|
|
|
|
version.tex:
|
|
@test -d $(SRCDIR)/documentation/config || mkdir $(SRCDIR)/documentation/config
|
|
@echo "\\newcommand{\\projectversion}{$(VERSION)}" >$(SRCDIR)/documentation/config/version.tex
|
|
@echo "\\newcommand{\\homepage}{\\url{$(HOMEPAGE)}}" >>$(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
|
|
|
|
manualarchclean:
|
|
@echo "Removing generated user manual files... "
|
|
@$(MAKE) --no-print-directory -C documentation/user-manual archclean
|
|
|
|
codecs:
|
|
@echo "Producing codecs specification documentation... "
|
|
@$(MAKE) --no-print-directory -C documentation/codec-specs
|
|
|
|
codecsclean:
|
|
@echo "Removing temporary codecs specification documentation files... "
|
|
@$(MAKE) --no-print-directory -C documentation/codec-specs clean
|
|
|
|
codecsarchclean:
|
|
@echo "Removing generated codecs specification documentation files... "
|
|
@$(MAKE) --no-print-directory -C documentation/codec-specs archclean
|
|
|
|
# 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 "codecs - create the codecs spec documentation (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 dist
|
|
|
|
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 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/" <dvdisaster.en.1 >dvdisaster.updated; \
|
|
install -m 644 dvdisaster.updated "$(BUILDROOT)$(MANDIR)/man1/dvdisaster.1"; \
|
|
sed "s/%docdir%/$$ESCAPED_DOCSUBDIR/" <dvdisaster.de.1 >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)/TODO\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
|
|
@echo "rmdir \"$(DOCSUBDIR)\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
|
|
@for i in $(PO_LOCALES); do \
|
|
echo "rm \"$(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 \"$(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 -f "$(DOCSUBDIR)/CHANGELOG"
|
|
rm -f "$(DOCSUBDIR)/COPYING"
|
|
rm -f "$(DOCSUBDIR)/CREDITS.de"
|
|
rm -f "$(DOCSUBDIR)/CREDITS.en"
|
|
rm -f "$(DOCSUBDIR)/manual.pdf"
|
|
rm -f "$(DOCSUBDIR)/TODO"
|
|
rmdir "$(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 src/build.h GNUmakefile locale/Makefile
|
|
@for i in locale/?? locale/??_??; do rm -rf $$i; done
|
|
@rm -f dvdisaster-debug
|
|
|
|
clean:
|
|
@echo "Removing rebuildable files"
|
|
@rm -f *.o "$(BUILDTMP)"/*.o medium.* abbild.* dvdisaster .dvdisaster core core.* *.core
|
|
@rm -f "$(BUILDTMP)"/inlined-icons.c src/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
|
|
@$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs clean;
|
|
@$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual clean;
|
|
@$(MAKE) --no-print-directory -C $(SRCDIR)/locale clean;
|
|
|
|
BUILD=`grep BUILD $(SRCDIR)/src/build.h | cut -d ' ' -f 3`
|
|
arch: archclean build.h
|
|
@cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME)
|
|
|
|
INSTALL: documentation/install.template
|
|
@sed "s/@@PKGNAME/$(PKGNAME)/" <documentation/install.template >INSTALL
|
|
|
|
srcdist: INSTALL distclean manual manualclean codecsclean
|
|
@cd .. ; tar -c -j --owner=dvdisaster --group=devel -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
|
|
|
|
static: dvdisaster
|
|
$(CC) $(LOPTS) $(OFILES) $(LIBS) -pthread -static -o dvdisaster-static
|