## Makefile.am for the TeX Live subdirectory texk/kpathsea/ ## ## Copyright (C) 2009 - 2011 Peter Breitenlohner ## 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 ## = ## (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 ' >>$@ echo '#include ' >>$@ echo '#include ' >>$@ (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 ,' >>$@ 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