## Makefile.am for the TeX Live subdirectory texk/kpathsea/
##
## Copyright (C) 2009 - 2011 Peter Breitenlohner <
[email protected]>
## You may freely use, modify and/or distribute this file.
##
ACLOCAL_AMFLAGS = -I ../../m4
# Rebuild
PHONY: rebuild
rebuild: all
SUBDIRS = . doc man
EXTRA_DIST = BUGS PROJECTS
INCLUDES = -I$(top_builddir)/.. -I$(top_srcdir)/..
AM_CFLAGS = $(WARNING_CFLAGS)
lib_LTLIBRARIES = libkpathsea.la
libkpathsea_la_CPPFLAGS = -DMAKE_KPSE_DLL
libkpathsea_la_LDFLAGS = -no-undefined -version-info $(KPSE_LT_VERSINFO)
libkpathsea_la_LIBADD = $(LTLIBOBJS)
BUILT_SOURCES = paths.h
## Put tex-file.c first, because it's what depends on the paths, and may
## reduce frustration if the paths are wrong by doing it first.
libkpathsea_la_SOURCES = \
tex-file.c \
absolute.c \
atou.c \
cnf.c \
concat.c \
concat3.c \
concatn.c \
db.c \
debug.c \
dir.c \
elt-dirs.c \
expand.c \
extend-fname.c \
file-p.c \
find-suffix.c \
fn.c \
fontmap.c \
getopt.c \
getopt1.c \
hash.c \
kdefault.c \
kpathsea.c \
line.c \
magstep.c \
make-suffix.c \
path-elt.c \
pathsearch.c \
proginit.c \
progname.c \
readable.c \
rm-suffix.c \
str-list.c \
str-llist.c \
tex-glyph.c \
tex-hush.c \
tex-make.c \
tilde.c \
truncate.c \
uppercasify.c \
variable.c \
version.c \
xbasename.c \
xcalloc.c \
xdirname.c \
xfopen.c \
xfseek.c \
xfseeko.c \
xftell.c \
xftello.c \
xgetcwd.c \
xmalloc.c \
xopendir.c \
xputenv.c \
xrealloc.c \
xstat.c \
xstrdup.c
if MINGW32
libkpathsea_la_SOURCES += mingw32.c
endif MINGW32
$(libkpathsea_la_OBJECTS): paths.h kpathsea.h
EXTRA_DIST += \
putenv.c \
strcasecmp.c \
strtol.c \
strstr.c
kpseincludedir = ${includedir}/kpathsea
nodist_kpseinclude_HEADERS = \
c-auto.h \
kpathsea.h \
paths.h
kpseinclude_HEADERS = \
absolute.h \
c-ctype.h \
c-dir.h \
c-errno.h \
c-fopen.h \
c-limits.h \
c-memstr.h \
c-minmax.h \
c-namemx.h \
c-pathch.h \
c-pathmx.h \
c-proto.h \
c-stat.h \
c-std.h \
c-unistd.h \
cnf.h \
concatn.h \
config.h \
db.h \
debug.h \
default.h \
expand.h \
fn.h \
fontmap.h \
getopt.h \
hash.h \
lib.h \
line.h \
magstep.h \
mingw32.h \
pathsearch.h \
proginit.h \
progname.h \
readable.h \
recorder.h \
str-list.h \
str-llist.h \
systypes.h \
tex-file.h \
tex-glyph.h \
tex-hush.h \
tex-make.h \
tilde.h \
truncate.h \
types.h \
variable.h \
version.h \
win32lib.h \
xopendir.h \
xstat.h
## First null out comments and leading/trailing whitespace, then remove
## lines that define invalid C identifiers, then remove blank lines and
## lines that define lowercase values (those are never path values).
## Each line remaining looks like
## <name> = <value>
## (but = and surrounding spaces are optional, hence can't remove all spaces).
## Change this to #ifndef DEFAULT_name@#define DEFAULT_name "value"@#endif,
## then change the @'s to newlines (sed isn't good at multiline replacements).
##
## No backslash-newline escapes in the long sed replacement because that
## will turn into a space in the output.
##
## We replace the $TEXMF* references with nonexisting directories. These
## are the compile-time defaults and are not useful in the native TL
## builds; we rely completely on the self-location. (Previously, the
## random build-time paths would get included in the binaries, to
## consequent confusion.)
##
## We preserve the $SELFAUTO* references, since the selfauto-using
## compile-time path for cnf files is how texmf.cnf gets found, which
## determines everything else.
##
## The definition of DEFAULT_TEXMF (and other variables)
## that winds up in the final paths.h will not be used.
##
## We don't want to rewrite paths.h when we have only changed comments
## in texmf.cnf that have no effect on paths.h, since that would cause
## almost everything to be rebuilt.
##
## We also replace all semicolons with colons in the paths.
## (The path-splitting code should be changed to understand both.)
##
paths.h: stamp-paths
stamp-paths: texmf.cnf bsnl.awk
# ensure grep is not completely broken, e.g., from GREP_OPTIONS.
echo a | grep -v b >/dev/null || { echo "*** grep broken, goodbye."; exit 1; }
#
# generate paths.h without build machine directories.
echo "/* paths.h: Generated from texmf.cnf. */" >paths.tmp
awk -f $(srcdir)/bsnl.awk $(srcdir)/texmf.cnf \
| sed -e 's/%.*//' -e 's/^[ ]*//' -e 's/[ ]*$$//' \
| grep '^[ ]*[A-Z0-9_]*[ =]' \
| sed '/^$$/d' \
| sed 's/^\([^ =]*\)[ ]*=*[ ]*\(.*\)/#ifndef DEFAULT_\1%#define DEFAULT_\1 "\2"%#endif/' \
| tr '%' '\012' \
| sed -e 's%\$$TEXMFCONFIG%/nonesuch/texmfconfig%g' \
-e 's%\$$TEXMFDIST%/nonesuch/texmfdist%g' \
-e 's%\$$TEXMFDOCDIR%/nonesuch/texmfdocdir%g' \
-e 's%\$$TEXMFLOCAL%/nonesuch/texmflocal%g' \
-e 's%\$$TEXMFMAIN%/nonesuch/texmfmain%g' \
-e 's%\$$TEXMFSYSCONFIG%/nonesuch/texmfsysconfig%g' \
-e 's%\$$TEXMFSYSVAR%/nonesuch/texmfsysvar%g' \
-e 's%\$$TEXMFVAR%/nonesuch/texmfvar%g' \
-e 's%\$$TEXMF%/nonesuch/texmf%g' \
-e 's%\$$VARTEXFONTS%/nonesuch/vartexfonts%g' \
| sed -e 's%;%:%g' \
>>paths.tmp
@if cmp -s paths.h paths.tmp 2>/dev/null; then \
echo "paths.h is unchanged"; \
else \
echo "cp paths.tmp paths.h"; \
cp paths.tmp paths.h; \
fi
rm -f paths.tmp
date >$@
kpathsea.h: Makefile paths.h
rm -f $@
echo '/* This is a generated file */' >$@
echo '/* collecting all kpathsea headers. */' >>$@
echo '#include <kpathsea/config.h>' >>$@
echo '#include <kpathsea/c-auto.h>' >>$@
echo '#include <kpathsea/paths.h>' >>$@
(cd $(srcdir) && ls -1 *.h) \
| sed -e '/^config\.h/d' \
-e '/^paths\.h/d' \
-e '/^kpathsea\.h/d' \
-e '/^mingw32\.h/d' \
-e '/^win32lib\.h/d' \
-e 's,^,#include <kpathsea/,' -e s',$$,>,' >>$@
EXTRA_DIST += bsnl.awk
DISTCLEANFILES = paths.h stamp-paths kpathsea.h
## The programs
bin_PROGRAMS = kpseaccess kpsereadlink kpsestat kpsewhich
kpseaccess_SOURCES = access.c
kpsereadlink_SOURCES = readlink.c
kpsewhich_LDADD = libkpathsea.la
## The scripts and their data
web2cdir = ${prefix}/texmf/web2c
dist_web2c_SCRIPTS = mktexdir mktexnam mktexupd
dist_web2c_DATA = mktex.opt mktexdir.opt mktexnam.opt
dist_noinst_SCRIPTS = mktexlsr mktexmf mktexpk mktextfm
dist_noinst_DATA = texmf.cnf
# Symlinks within $(bindir): FILE:LINK indicates LINK->FILE
bin_links = \
mktexlsr:texhash
install-exec-hook:
if !WIN32
@for f in $(dist_noinst_SCRIPTS); do \
if grep "original $$f --" "$(DESTDIR)$(bindir)/$$f" >/dev/null 2>&1 \
|| test ! -r "$(DESTDIR)$(bindir)/$$f"; then \
echo " $(INSTALL_SCRIPT) '$(srcdir)/$$f' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_SCRIPT) "$(srcdir)/$$f" "$(DESTDIR)$(bindir)/$$f"; \
else :; fi; \
done
@cd $(DESTDIR)$(bindir) && \
for s in $(bin_links); do \
link=`echo $$s | sed 's,.*:,,'`; \
file=`echo $$s | sed 's,:.*,,'`; \
rm -f $$link; \
echo "creating link '$$link' -> '$$file'"; \
$(LN_S) $$file $$link || exit 1; \
done
endif !WIN32
install-data-hook:
@for f in $(dist_noinst_DATA); do \
if grep "original $$f --" "$(DESTDIR)$(web2cdir)/$$f" >/dev/null 2>&1 \
|| test ! -r "$(DESTDIR)$(web2cdir)/$$f"; then \
echo " $(INSTALL_DATA) '$(srcdir)/$$f' '$(DESTDIR)$(web2cdir)/$$f'"; \
$(INSTALL_DATA) "$(srcdir)/$$f" "$(DESTDIR)$(web2cdir)/$$f"; \
else :; fi; \
done
uninstall-hook:
if !WIN32
@for f in $(dist_noinst_SCRIPTS); do \
if grep "original $$f --" "$(DESTDIR)$(bindir)/$$f" >/dev/null 2>&1; then \
echo " rm�-f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
else :; fi; \
done
@for s in $(bin_links); do \
link=`echo $$s | sed 's,.*:,,'`; \
rm -f $(DESTDIR)$(bindir)/$$link; \
done
endif !WIN32
@for f in $(dist_noinst_DATA); do \
if grep "original $$f --" "$(DESTDIR)$(web2cdir)/$$f" >/dev/null 2>&1; then \
echo " rm�-f '$(DESTDIR)$(web2cdir)/$$f'"; \
rm -f "$(DESTDIR)$(web2cdir)/$$f"; \
else :; fi; \
done
## The tests
TESTS = kpseaccess.test kpsereadlink.test kpsestat.test kpsewhich.test
TESTS_ENVIRONMENT = LN_S='$(LN_S)' LT_OBJDIR='$(LT_OBJDIR)'
EXTRA_DIST += $(TESTS)
## Not used
##
EXTRA_DIST += mktex.cnf