blob: 32e2e0bd0b2bca5e01ba502f146a0e80c2e268e0 [file] [log] [blame]
#
# Makefile for the CUPS PPD Compiler.
#
# Copyright © 2007-2019 by Apple Inc.
# Copyright © 2002-2006 by Easy Software Products.
#
# Licensed under Apache License v2.0. See the file "LICENSE" for more
# information.
#
#
# Include standard definitions...
#
include ../Makedefs
#
# Object files...
#
LIBOBJS = \
ppdc-array.o \
ppdc-attr.o \
ppdc-catalog.o \
ppdc-choice.o \
ppdc-constraint.o \
ppdc-driver.o \
ppdc-file.o \
ppdc-filter.o \
ppdc-font.o \
ppdc-group.o \
ppdc-import.o \
ppdc-mediasize.o \
ppdc-message.o \
ppdc-option.o \
ppdc-profile.o \
ppdc-shared.o \
ppdc-source.o \
ppdc-string.o \
ppdc-variable.o
OBJS = \
$(LIBOBJS) \
genstrings.o \
ppdc.o \
ppdhtml.o \
ppdi.o \
ppdmerge.o \
ppdpo.o \
testcatalog.o
LIBTARGETS = \
libcupsppdc.a
UNITTARGETS = \
ppdc-static \
ppdi-static \
testcatalog
EXECTARGETS = \
ppdc \
ppdhtml \
ppdi \
ppdmerge \
ppdpo
TARGETS = \
$(LIBTARGETS) \
$(EXECTARGETS) \
$(LOCALTARGET)
#
# Make everything...
#
all: $(TARGETS)
#
# Make library targets...
#
libs:
#
# Make unit tests...
#
unittests: $(UNITTARGETS)
#
# Clean everything...
#
clean:
$(RM) $(OBJS) core
$(RM) *.bak *.bck core.*
$(RM) $(TARGETS) $(UNITTARGETS) genstrings
$(RM) -r ppd ppd2
$(RM) sample-import.drv sample.c test.drv
#
# Update dependencies...
#
depend:
$(CXX) -MM $(ALL_CXXFLAGS) $(OBJS:.o=.cxx) >Dependencies
#
# Install all targets...
#
install: all install-data install-headers install-libs install-exec
#
# Install data files...
#
install-data:
$(INSTALL_DIR) $(DATADIR)/drv
$(INSTALL_DATA) sample.drv $(DATADIR)/drv
#
# Install programs...
#
install-exec:
echo Installing PPD compiler programs...
$(INSTALL_DIR) $(BINDIR)
for file in $(EXECTARGETS); do \
$(INSTALL_BIN) $$file $(BINDIR); \
done
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
for file in $(EXECTARGETS); do \
cp $$file $(SYMROOT); \
dsymutil $(SYMROOT)/$$file; \
done \
fi
#
# Install headers...
#
install-headers:
#
# Install libraries...
#
install-libs:
#
# Uninstall...
#
uninstall:
for file in $(EXECTARGETS); do \
$(RM) $(BINDIR)/$$file; \
done
$(RM) $(DATADIR)/drv/sample.drv
$(RMDIR) $(DATADIR)/drv
#
# Local programs (not built when cross-compiling...)
#
local: genstrings
#
# genstrings - generate GNU gettext strings.
#
genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
sample.drv ../data/media.defs
echo Linking $@...
$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o genstrings genstrings.o \
libcupsppdc.a $(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
echo Generating localization strings...
./genstrings >sample.c
#
# ppdc, the PPD compiler.
#
ppdc: ppdc.o libcupsppdc.a ../cups/$(LIBCUPS)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdc.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
echo Linking $@...
$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
$(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
echo Testing PPD compiler...
./ppdc-static -l en,fr -I ../data foo.drv
./ppdc-static -l en,fr -z -I ../data foo.drv
#
# ppdhtml, the PPD to HTML utility.
#
ppdhtml: ppdhtml.o libcupsppdc.a ../cups/$(LIBCUPS)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdhtml.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
#
# ppdi, import PPD files.
#
ppdi: ppdi.o libcupsppdc.a ../cups/$(LIBCUPS)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdi.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
$(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
echo Testing PPD importer...
$(RM) -r ppd ppd2 sample-import.drv
./ppdc-static -l en -I ../data sample.drv
./ppdi-static -I ../data -o sample-import.drv ppd/*
./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
if diff -r ppd ppd2 >/dev/null; then \
echo PPD import OK; \
else \
echo PPD import FAILED; \
exit 1; \
fi
#
# ppdmerge, merge PPD files.
#
ppdmerge: ppdmerge.o ../cups/$(LIBCUPS)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdmerge.o $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
#
# ppdpo, create message catalog files.
#
ppdpo: ppdpo.o libcupsppdc.a ../cups/$(LIBCUPS)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdpo.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
#
# testcatalog, test ppdcCatalog class.
#
testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
echo Linking $@...
$(LD_CXX) $(ALL_LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
$(LINKCUPSSTATIC)
$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
#
# libcupsppdc.a
#
libcupsppdc.a: $(LIBOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
#
# Include dependencies...
#
include Dependencies