# HG changeset patch # User jwe # Date 864357011 0 # Node ID 86d3a6fc4c8430f2d548e071bd17d344735edea4 # Parent faa5d042146020c07d9115acc6420c248ee6ec23 [project @ 1997-05-23 03:09:13 by jwe] diff --git a/kpathsea/ChangeLog b/kpathsea/ChangeLog --- a/kpathsea/ChangeLog +++ b/kpathsea/ChangeLog @@ -1,3 +1,7 @@ +Thu May 22 22:04:26 1997 John W. Eaton + + * Makefile.in: Look in make instead of ../make for files to include. + Fri Feb 7 11:53:09 1997 Karl Berry * Version 3.0. diff --git a/kpathsea/Makefile b/kpathsea/Makefile --- a/kpathsea/Makefile +++ b/kpathsea/Makefile @@ -45,7 +45,7 @@ $(LIBTOOL) archive $(AR) $(ARFLAGS) $@ $(objects) # All the objects depend on the klibtool configuration file. -$(objects): ../klibtool.config +$(objects): klibtool.config # Make variable substitutions from paths.h. texmf.cnf: texmf.cnf.in texmf.sed diff --git a/kpathsea/Makefile.in b/kpathsea/Makefile.in --- a/kpathsea/Makefile.in +++ b/kpathsea/Makefile.in @@ -3,12 +3,12 @@ # Add -DNO_DEBUG to disable debugging, for vanishingly better performance. -ac_include ../make/paths.make -ac_include ../make/makevars.make -ac_include ../make/common.make -ac_include ../make/library.make -ac_include ../make/programs.make -ac_include ../make/texi.make +ac_include make/paths.make +ac_include make/makevars.make +ac_include make/common.make +ac_include make/library.make +ac_include make/programs.make +ac_include make/texi.make ##ifdef HOSTNAME ##warn_more = -Wmissing-prototypes -Wwrite-strings -Wshadow @@ -50,7 +50,7 @@ $(LIBTOOL) archive $(AR) $(ARFLAGS) $@ $(objects) # All the objects depend on the klibtool configuration file. -$(objects): ../klibtool.config +$(objects): klibtool.config # Make variable substitutions from paths.h. texmf.cnf: texmf.cnf.in texmf.sed @@ -58,7 +58,7 @@ # The idea is to turn each var=value into s%@var@%value%g. Seems simpler # to put the substitutions in a file than to play shell quoting games. -texmf.sed: $(top_srcdir)/../make/makevars.make $(top_srcdir)/../make/paths.make +texmf.sed: $(top_srcdir)/make/makevars.make $(top_srcdir)/make/paths.make echo $(makevars) \ | tr ' ' '\012' \ | sed -e 's/^/s%@/' -e 's/=/@%/' -e 's/$$/%/' -e 's/$$/g/' \ @@ -183,7 +183,7 @@ always: .PHONY: always -ac_include ../make/config.make +ac_include make/config.make info: $(library).info dvi: $(library).dvi @@ -204,7 +204,7 @@ ##doc: info HIER BUGS INSTALL unixtex.ftp ##endif -ac_include ../make/clean.make +ac_include make/clean.make mostlyclean:: rm -f kpsewhich *.lo @@ -212,7 +212,7 @@ distclean:: rm -f paths.h texmf.cnf texmf.sed -ac_include ../make/rdepend.make +ac_include make/rdepend.make absolute.lo: absolute.c ../kpathsea/config.h c-auto.h \ ../kpathsea/c-std.h \ ../kpathsea/c-unistd.h ../kpathsea/systypes.h \ diff --git a/kpathsea/acklibtool.m4 b/kpathsea/acklibtool.m4 new file mode 100644 --- /dev/null +++ b/kpathsea/acklibtool.m4 @@ -0,0 +1,53 @@ +dnl Autoconf support for Klibtool. +dnl $Id: acklibtool.m4,v 1.1 1997-05-23 03:09:14 jwe Exp $ +dnl +dnl +dnl Find the script, check for subprogs, etc. +AC_DEFUN(kb_AC_PROG_LIBTOOL, +[AC_REQUIRE([AC_PROG_RANLIB]) +AC_REQUIRE([AC_CANONICAL_HOST]) +# +AC_MSG_CHECKING([for libtool object types]) +# +## Check that the klibtool script is in ac_aux_dir. Don't bother to +# scan PATH. For one thing, if we found it somewhere there, we couldn't +# use that directory to put the config file ... and that's what we need +# to do, to avoid having to configure in every subdirectory. +LIBTOOL=$ac_aux_dir/klibtool +AC_SUBST(LIBTOOL) +if test ! -r $LIBTOOL; then + AC_MSG_ERROR([klibtool not in $ac_aux_dir, goodbye]) + exit 1 +fi +# +## Argument parsing: we support --enable-shared and --enable-static. +AC_ARG_ENABLE(shared, +[ --enable-shared build shared libraries [default=no]],, + enable_shared=no) +# +AC_ARG_ENABLE(static, +[ --enable-static build shared libraries [default=yes]],, + enable_static=yes) +# +# If they explicitly --enable-static, make that the link type. +# More commonly, they will just --enable-shared; make that the link type. +# In either case, prepend to any existing LIBTOOL_OBJTYPES. +# If they really want to build both and link statically, +# then they set LIBTOOL_OBJTYPES to SHARED and --enable-static. +test "$enable_static" = yes && LIBTOOL_OBJTYPES=STATIC:$LIBTOOL_OBJTYPES +test "$enable_shared" = yes && LIBTOOL_OBJTYPES=SHARED:$LIBTOOL_OBJTYPES +# Don't bother to remove the trailing :, it'll be ignored. +# +## Finally: Run the klibtool configure command. +LIBTOOL_OBJTYPES=$LIBTOOL_OBJTYPES RANLIB=$RANLIB \ + $LIBTOOL --config-dir $ac_aux_dir configure "$host" +AC_MSG_RESULT($LIBTOOL_OBJTYPES) +])dnl +dnl +dnl +dnl Like AC_REPLACE_FUNCS, but add to LTLIBOBJS instead of LIBOBJS. +AC_DEFUN(kb_AC_KLIBTOOL_REPLACE_FUNCS, +[ dnl cannot require this function, since it doesn't have a provide call. +AC_CHECK_FUNCS($1,, LTLIBOBJS="$LTLIBOBJS $ac_func.lo") +AC_SUBST(LTLIBOBJS)dnl +])dnl diff --git a/kpathsea/common.ac b/kpathsea/common.ac --- a/kpathsea/common.ac +++ b/kpathsea/common.ac @@ -23,7 +23,7 @@ dnl not . Should it include both? But then we will dnl have many benign redefinitions that some compilers may not consider dnl benign. And it's a big change. -sinclude(../acklibtool.m4) +sinclude(acklibtool.m4) kb_AC_PROG_LIBTOOL dnl If the list of functions here changes, also change acconfig.h. */ kb_AC_KLIBTOOL_REPLACE_FUNCS(basename putenv strcasecmp strtol strstr) diff --git a/kpathsea/config.guess b/kpathsea/config.guess new file mode 100755 --- /dev/null +++ b/kpathsea/config.guess @@ -0,0 +1,713 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. +# +# This file 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-cbm-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-atari-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-sun-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-apple-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp3[0-9][05]:OpenBSD:*:*) + echo m68k-hp-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo i386-pc-cygwin32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,-.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then + echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then + echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then + echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then + echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then + echo "powerpc-unknown-linux-gnu" ; exit 0 + elif test "${UNAME_MACHINE}" = "alpha" ; then + echo alpha-unknown-linux-gnu ; exit 0 + elif test "${UNAME_MACHINE}" = "sparc" ; then + echo sparc-unknown-linux-gnu ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us + # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout. + test ! -d /usr/lib/ldscripts/. \ + && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + # Determine whether the default compiler is a.out or elf + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/kpathsea/config.log b/kpathsea/config.log --- a/kpathsea/config.log +++ b/kpathsea/config.log @@ -26,13 +26,3 @@ configure:1187: checking for ranlib configure:1220: checking host system type configure:1244: checking for libtool object types -configure:1293: checking for basename -configure:1293: checking for putenv -configure:1293: checking for strcasecmp -configure:1293: checking for strtol -configure:1293: checking for strstr -configure:1351: checking for bcopy -configure:1351: checking for getwd -configure:1405: checking for working const -configure:1482: checking whether program_invocation_name is predefined -configure:1518: checking whether putenv uses malloc diff --git a/kpathsea/config.sub b/kpathsea/config.sub new file mode 100755 --- /dev/null +++ b/kpathsea/config.sub @@ -0,0 +1,939 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | i370 | sh \ + | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel \ + | sparc | sparclet | sparclite | sparc64) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[3456]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[3456]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[3456]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[3456]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[3456]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5) + basic_machine=i586-intel + ;; + pentiumpro | p6) + basic_machine=i686-intel + ;; + pentium-* | p5-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + if [ x$os = x-linux ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware* | svr4*) + os=-sysv4 + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -linux-gnu* | -uxpv*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/kpathsea/klibtool b/kpathsea/klibtool new file mode 100755 --- /dev/null +++ b/kpathsea/klibtool @@ -0,0 +1,645 @@ +#!/bin/sh +# This purports to allow distributions to be built with shared libraries. +# +# I wrote it for Kpathsea and friends, but I don't think there's +# anything TeX-specific in here. +# +# There is a much fancier libtool project underway by +# , but I did not want to wait for that to be +# completed, stable, and portable before releasing Web2c. The ideas are +# based on Gord's Libtool, though, and you may find its documentation +# interesting/useful reading. +# +# Porting this to other systems shouldn't be too hard, mostly because I +# don't try to take advantage of all the fancy features offered by some +# os's (like multiple version compatibility, encoding directory paths in +# the binary, etc.) See the configure mode. I can send you the +# hello,world Makefile I used for testing if you want it. +# +rcs_version='$Id: klibtool,v 1.1 1997-05-23 03:09:13 jwe Exp $' +version=0.1 +maint=tex-k@mail.tug.org +help="Usage: $0 [OPTION]... MODE [ARG]... +Help for building and linking with shared libraries. + +Modes: Environment variables used: +configure [HOSTTYPE] RANLIB, LIBTOOL_OBJTYPES +compile CC SOURCEFILE ARG... +archive AR ARFLAGS LIBNAME ARG... +link CC ARG... +install-lib DIR LIBNAME... INSTALL_DATA +install-prog DIR PROGNAME... INSTALL_PROGRAM +version + +Options: + --config-dir DIR +-n, --dry-run + --help + --quiet, --silent +-v, --verbose + --version + +Email bugs to $maint. +" + +bug_report="$0: Please report this bug to $maint. +Please mention this is Klibtool version $version ($rcs_version), +and your hardware/operating system (`uname -a`, at least). + +Running this same command ($0 $*) with --verbose and including the +resulting output would be nice, but is not required." + +verbose=: +chicken= +show=echo +config_dir= + +# Yes, this option parsing is imperfect, e.g., -xcruddy will be +# recognized as --config-dir. I don't think it's worth the trouble to +# program correctly until somebody besides me uses this. +while test $# -gt 0; do + case "$1" in + configure|compile|archive|link|install-lib|install-prog|version) + mode=$1; break;; + -*c*) # --config-dir + shift; config_dir=$1;; + -n|-*d*) # -n, --dry-run + chicken=echo;; + -*help) # --help + echo "$help"; exit 0;; + -*q|-*s) # --quiet, --silent + show=:; verbose=:;; + -v|-*verb*) # --verbose + verbose=echo;; + -*version) # --version + echo "$0 version $version ($rcs_version)"; exit 0;; + -*) + echo "$0: Unknown option \`$1'. Try --help for info." >&2; exit 1;; + *) + echo "$0: Unknown mode \`$1'. Try --help for info." >&2; exit 1;; + esac + shift +done + +# Read all the arguments. Peel off the mode. +shift + +# +# Read the configuration file unless we're configuring. +# +if test $mode != configure; then + # Read configuration file. If we have it in the current directory, or + # the user told us where it is, great. More likely, though, it's only + # in the directory with the library that we're eventually going to + # link with. We have no way of knowing what that is, so let's use the + # location of this script itself as the default. + if test -z "$config_dir"; then + if test -r ./klibtool.config; then + config_dir=. + else + dir=`echo $0 | sed 's,/[^/]*$,,'` + test -r $dir/klibtool.config && config_dir=$dir + fi + fi + if test -z "$config_dir"; then + echo "$0: Cannot find klibtool.config in . or $dir," >&2 + echo "$0: and no --config-dir option specified." >&2 + exit 1 + fi + # Read the file. + . $config_dir/klibtool.config + + if test -z "$LIBTOOL_OBJTYPES"; then + echo "$0: Impossibly empty LIBTOOL_OBJTYPES!" >&2 + echo "$bug_report" >&2 + exit 1 + fi + # Copy the valid object type names from LIBTOOL_OBJTYPES into objtypes. + $verbose "$0: checking LIBTOOL_OBJTYPES = $LIBTOOL_OBJTYPES." + objtypes= + for ot in `echo $LIBTOOL_OBJTYPES | tr : " "`; do + case $ot in + SHARED) + if $shared_support; then + objtypes=$objtypes:$ot + else + echo "$0: Shared libraries not supported on this system." >&2 + fi + ;; + STATIC) + objtypes=$objtypes:$ot;; + "") true;; # don't worry about empty object types. + *) + echo "$0: Ignoring unknown libtool object type $objtype." >&2;; + esac + done + # Remove the extra trailing colon from our list-building. + objtypes=`echo $objtypes | sed 's/^://'` + if test -z $objtypes; then + # If they just took the default, we started with STATIC and so + # wouldn't be here. + echo "$0: No valid object types in $LIBTOOL_OBJTYPES, quitting." >&2 + exit 1 + fi + $verbose "$0: final objtypes = $objtypes." +fi + + +# +# Do the deed. +# +# I wish we had subroutines so we could make this readable, but shell +# functions aren't portable enough, even nowadays. +# +$verbose "$0: mode = $mode." +case $mode in + + + # configure mode: [HOSTTYPE] + configure) + # If no config dir specified, use the script location. + if test -z "$config_dir"; then + if echo $0 | grep / >/dev/null; then + config_dir=`echo $0 | sed 's,/[^/]*$,,'` + else + config_dir=. # $0 is just the script name, no directory part. + fi + fi + config_file=$config_dir/klibtool.config + $verbose "$0: writing to config_file = $config_file." + + # If no specified HOSTTYPE, guess it. + if test $# -eq 0; then + config_guess=$config_dir/config.guess + if test ! -r $config_guess; then + echo "$0: config.guess not in $config_dir." >&2 + echo "$0: Either specify a host type or get the scripts." >&2 + exit 1 + fi + host_alias=`$config_guess` + else + test $# -eq 1 \ + || echo "$0: Using $1 as host alias, ignoring other arguments ($*)." >&2 + host_alias=$1 + fi + + # Convert the original host type to canonical form. + config_sub=$config_dir/config.sub + if test ! -r $config_sub; then + echo "$0: config.sub missing from $config_dir; it's required." >&2 + exit 1 + fi + host_type=`$config_sub $host_alias` + if test -z "$host_type"; then + echo "$0: $host_alias not a recognizable host type." >&2 + exit 1 + fi + + # Finally, we'll be creating something. + rm -f $config_file + + # Define defaults, to be overridden in the system-specific cases. + config_vars="LIBTOOL_OBJTYPES shared_support shared_ext libpath_var CC + args_STATIC_compile args_SHARED_compile + args_STATIC_archive STATIC_ranlib args_SHARED_archive + args_SHARED_link + SHARED_postinstall" + for v in $config_vars; do + # Preserve existing value of a couple variables. + case $v in + LIBTOOL_OBJTYPES|CC) true;; + *) eval $v=;; + esac + done + test -z "$LIBTOOL_OBJTYPES" && LIBTOOL_OBJTYPES=STATIC + shared_ext=so + libpath_var=LD_LIBRARY_PATH + STATIC_ranlib=$RANLIB + + # The compiler. If the user set CC, take that, else use gcc if we + # can find it, else use cc. Up to the user to avoid /usr/ucb/cc. + if test -z "$CC"; then + for dir in `echo $PATH | tr : ' '`; do + test -z "$dir" && dir=. + if test -f $dir/gcc; then + CC=gcc + break + fi + done + fi + test -z "$CC" && CC=cc + # + # But the real question is not the name of the command, it's whether + # it is GNU C. We only distinguish gcc and system cc. We have to + # assume that they use the same compiler at `klibtool compile' time + # as we determine here; the whole point is that we don't want to do + # this check before compiling every file (for speed). + rm -f conftest.c + ( + echo "#ifdef __GNUC__" + echo "yes;" + echo "#endif" + ) >conftest.c + if eval "$CC -E conftest.c" | grep yes >/dev/null 2>&1; then + compiler=gcc + args_SHARED_compile=-fPIC # should we have an option for -fpic? + args_SHARED_archive=-shared + else + compiler=cc + fi + rm -f conftest.c + + # Override defaults for this system. + case $host_type in + *-*-linux*) + shared_support=true + SHARED_postinstall='ldconfig $libdir' + ;; + + *-*-solaris2*) + shared_support=true + if test $compiler = cc; then # /opt/SUNWspro/cc, that is. + args_SHARED_compile=-KPIC + args_SHARED_archive="-G -z text" # Perhaps should have -h. + fi + ;; + + *-*-sunos4*) + shared_support=true + STATIC_ranlib=ranlib + SHARED_postinstall='ldconfig $libdir' + if test $compiler = cc; then + args_SHARED_compile=-PIC + prog_SHARED_archive=ld + args_SHARED_archive="-assert pure-text" # gord has -Bstatic? + fi + ;; + + *) + echo "$0: $host_type not explicitly supported, using defaults." >&2 + ;; + esac + + # Output values. + for v in $config_vars; do + config_line=$v=\'`eval echo '$'$v`\' + $verbose "$0: writing config line $config_line." + echo $config_line >>$config_file + done + ;; + + + # compile mode: CC SOURCEFILE [ARG]... + compile) + compiler=$1; shift # must assume it's what configure found + sourcefile=$1 + objname=`basename $sourcefile | sed 's/\.[^./]*$//'`.o + $verbose "$0: object basename for source file $sourcefile = $objname." + # + for ot in `echo $objtypes | tr : " "`; do + # Snarf arguments for this object type. + ot_args=`eval echo '$'args_${ot}_${mode}` + $verbose "$0: args_${ot}_${mode} = $ot_args." + + # Have to output into a subdirectory of current directory (not + # source directory, which might be read-only). + output_arg="-o $ot/$objname" + if test ! -d $ot; then + $show mkdir $ot + $chicken mkdir $ot + fi + + # Construct and run the cmd. + cmd="$compiler ""$@"" $ot_args $output_arg" + $show $cmd + $chicken $cmd + status=$? + test $status -eq 0 || break + done # end of objtypes loop for compile mode + test $status -eq 0 && date >./"`echo $objname | sed 's/o$/lo/'`" + exit $status + ;; + + + # archive mode + archive) + cmdname=$1; shift # the archiver + for ot in `echo $objtypes | tr : " "`; do + libname= + args= + if test $ot = SHARED; then + # Can't generally use ar to make a shared library. + old_ar="$cmdname $1" + shift + ot_args=`eval echo '$'args_SHARED_archive` + ot_prog=`eval echo '$'prog_SHARED_archive` + test -z "$ot_prog" && ot_prog=$CC + cmdname="$ot_prog $ot_args -o" + $verbose "$0: replaced $old_ar with $cmdname." + fi + + # Now transform remaining arguments (presumably filenames). + for arg in "$@"; do + case "$arg" in + *.l[ao]) # Remove the `l' from a .la or .lo filename. + newarg=`echo $arg | sed 's/l\(.\)$/\1/'` + $verbose "$0: transformed arg $arg to $newarg." + # First .la file is the output library. + if test -z "$libname" && echo $newarg | grep '\.a$'>/dev/null; then + if test $ot = SHARED; then + $verbose "$0: running $0 version $newarg." + verstring=`$0 version $newarg` + $verbose "$0: got version $verstring." + libname=`echo $newarg | sed 's/\.a$/\.'$shared_ext$verstring/` + else + libname=$newarg + fi + if echo $libname | grep / >/dev/null; then + lib_dir=`echo $libname | sed 's,/[^/]*$,,'` + else + lib_dir=. + fi + lib_basename=`basename $libname` + lib_base=`echo $lib_basename | sed 's/[.0-9]*$//'` + + # We might have to run a command after making the library. + post= + if test $ot = SHARED; then + # If it supports shared libraries, it supports symlinks. + # Although this is unnecessary on (e.g.) SunOS, it + # doesn't hurt, and it is necessary on (e.g.) Solaris. + post="&& ln -s $lib_basename $lib_base" + elif test $ot = STATIC; then + ranlib=`eval echo '$'${ot}_ranlib` + $verbose "${ot}_ranlib = $ranlib." + test -n "$ranlib" && post="&& $ranlib $lib_basename" + fi + + $verbose "$0: output library dir = $lib_dir." + $verbose "$0: output library basename = $lib_basename." + $verbose "$0: output library base = $lib_base." + newarg=$lib_basename + fi + arg=$newarg + ;; + esac + args="$args $arg" + done + if test -z "$libname"; then + # FIXME: should check that the .la file was second arg. + echo "$0 archive: .la (libtool archive) argument missing." >&2 + exit 1 + fi + + # Remove old archive file because we recommend `ar q', not `r', + # and the user can't necessarily know the library name. + cmd="cd $lib_dir/$ot && rm -f $lib_base* && $cmdname $args $post" + $show $cmd + $chicken eval "($cmd)" + status=$? + test $status -eq 0 || break + + # If making both objtypes, need original arguments next time through. + if test $ot = SHARED; then + cmdname=$old_ar + else + true # Don't think we failed to make the library just because + # the last objtype was not SHARED. + fi + done # end of objtypes loop for archive mode + # + # Create the .la file we claimed that we would. + test $status -eq 0 && date >./"`echo $libname | sed 's/\.[^/]*$/.la/'`" + exit $status + ;; + + + # link mode + link) + cmdname=$1; shift # the linker + # Do links using the first object type. + linktype=`echo $objtypes | sed 's/:.*//'` + $verbose "$0: linktype = $linktype." + if test -z "$linktype"; then + echo "$0: Impossibly empty linktype?!" >&2 + exit 1 + fi + # + # Need to know the output name if we generate the wrapper. + looking_for_output=false + real_output_name= + libpath= + # + for arg in "$@"; do + if $looking_for_output; then + real_output_name=$arg + arg=$real_output_name.exe + looking_for_output=false + fi + case "$arg" in + -o) + test $linktype = SHARED && looking_for_output=true + ;; + *.l[ao]) # Find .la files in the linktype subdir + # of the given directory, e.g., if the user says + # ../foo/libfoo.la, transform into + # ../foo/$linktype/libfoo.{a,so...}. We do the same for + # libtool archive, although it's not as often necessary. + newarg=`echo $arg | sed -e 's,\([^/]*\)$,'$linktype'/\1,' \ + -e 's/l\(.\)$/\1/'` + if test $linktype = SHARED \ + && echo $newarg | grep '\.a$' >/dev/null; then + # If shared, transform dir/foo.la into -Ldir -lfoo. + dir=`echo $newarg | sed 's,/[^/]*$,,'` + lib=`echo $newarg | sed -e 's,.*/\([^/]*\),\1,' \ + -e 's/^lib//' -e 's/\.a$//'` + newarg="-L$dir -l$lib" + # Remember we will need this directory in LD_LIBRARY_PATH. + if echo $dir | grep -v '^/' >/dev/null; then + dir=`pwd`/$dir + fi + # Maybe had previous directories. + test -n "$libpath" && libpath=$libpath: + libpath=$libpath$dir + fi + $verbose "$0: transformed .la arg $arg to $newarg." + arg=$newarg + ;; + *.lo) # .lo files have no directory stripping or suffix changing. + newarg=`echo $arg | sed -e 's,\([^/]*\)$,'$linktype'/\1,' \ + -e 's/l\(.\)$/\1/'` + $verbose "$0: transformed .lo arg $arg to $newarg." + arg=$newarg + ;; + esac + args="$args $arg" + done + + # Set up to generate wrapper shell script if shared. + if test $linktype = SHARED; then + if $looking_for_output; then + echo "$0 link: -o requires an argument." >&2 + exit 1 + fi + if test -z "$real_output_name"; then + # If they didn't give -o at all, default to a.out. + real_output_name=a.out + args="$args -o $real_output_name.exe" + fi + fi + + # Do the link. + cmd="$cmdname $args" + $show $cmd + $chicken $cmd + + status=$? + if test $status -eq 0 && test -n "$real_output_name"; then + $verbose "$0: creating wrapper $real_output_name." + # We created the binary, so create the wrapper script. + # Use as short a temporary suffix as we can to minimize the chance + # of collisions on deficient systems. + rm -f ${real_output_name} ${real_output_name}T + ( + libpath_var_val='$'$libpath_var + echo "#! /bin/sh" + echo "# Generated `date` by $0." + echo "# Do not install this wrapper script." + echo "# It's only here to enable running $real_output_name" + echo "# before it's installed. (Use $0 install-progs to install it.)" + echo + echo "if test -z \"$libpath_var_val\"; then" + echo " $libpath_var=\"$libpath\"" + echo "else" + echo " $libpath_var=\"$libpath:$libpath_var_val\"" + echo "fi" + echo "export $libpath_var" + echo + echo "thisdir=\`echo $""0 | sed 's%/[^/]*$%%'\`" + echo 'test "x$thisdir" = "x$0" && thisdir=.' + echo + echo "exec \$thisdir/$real_output_name.exe \"\$@\"" + ) >${real_output_name}T + chmod +x ${real_output_name}T + mv ${real_output_name}T ${real_output_name} + fi + exit $status + ;; + + + # install-lib mode: DIR LIBNAME... + install-lib) + if test $# -lt 2; then + echo "$0 install-lib: Need directory and at least one library." >&2 + exit 1 + fi + libdir=$1; shift + if test ! -d $libdir; then + echo "$0 install-lib: $1 not a directory." >&2 + exit 1 + fi + for arg in "$@"; do # for each library... + # Always having a directory part simplifies the code below. + echo $arg | grep / >/dev/null || arg="./$arg" + for ot in `echo $objtypes | tr : " "`; do # for each object type... + case $ot in + SHARED) # needs shared extension and version number. + verstring=`$0 version $arg` + libname=`echo $arg | sed 's/\.la$/\.'$shared_ext$verstring/` + ;; + STATIC) # just get rid of the `l'. + libname=`echo $arg | sed 's/l\(.\)$/\1/'` + ;; + *) + echo "$0: Impossible object type $ot!" >&2 + echo "$bug_report" >&2 + exit 1;; + esac + # Have to insert the object type directory. + libname=`echo $libname | sed 's,\(/[^/]*\)$,/'$ot'\1,'` + lib_basename=`basename $libname` + $verbose "$0: library name = $libname." + $verbose "$0: installation name = $libdir/$lib_basename." + cmd="${INSTALL_DATA-cp} $libname $libdir/$lib_basename" + # + if test $ot = SHARED; then + # Link libfoo.so to libfoo.so.1.2.3. + lib_base=`echo $lib_basename | sed 's/[.0-9]*$//'` + $verbose "$0: linking $libdir/$lib_base to $lib_basename" + (cd $libdir && ln -s $lib_basename $lib_base) + fi + # + # Run ldconfig, etc. + postinstall=`eval echo '$'${ot}_postinstall` + test -n "$postinstall" && cmd="$cmd && $postinstall" + $show $cmd + $chicken eval "$cmd" + done + done + ;; + + + # install-prog mode: DIR PROGNAME... + install-prog) + if test $# -lt 2; then + echo "$0 install-prog: Need directory and at least one program." >&2 + exit 1 + fi + dir=$1; shift + if test ! -d $dir; then + echo "$0 install-prog: $1 not a directory." >&2 + exit 1 + fi + # The program got linked using the first object type, so + # installation of the program will proceed accordingly. + linktype=`echo $objtypes | sed 's/:.*//'` + $verbose "$0: linktype = $linktype." + if test -z "$linktype"; then + echo "$0: Impossibly empty linktype?!" >&2 + exit 1 + fi + if test $linktype = SHARED; then + # Install the binary, not the wrapper script. + suffix=.exe + else + suffix= + fi + for arg in "$@"; do # for each program... + # FIXME: On SunOS, AIX, and HP-UX, relink to avoid hardwired libdirs. + cmd="${INSTALL_PROGRAM-cp} $arg$suffix $dir/$arg" + $show $cmd + $chicken $cmd + done + ;; + + + # version mode + version) + if test $# -ne 1; then + echo "$0 version: Exactly one argument needed, not $# ($*)." >&2 + exit 1 + fi + # Strip directory name, `lib' prefix, and any .suffix. + dir=`echo $1 | sed 's,/[^/]*$,,'` + test "x$dir" = "x$1" && dir=. + libname=`basename $1 | sed -e 's,^lib,,' -e s',\..*$,,'` + verfile=$dir/klibtool.version + if test ! -r $verfile; then + echo "$0 version: No file $verfile for $libname version info." >&2 + echo "$0 version: Original argument was $1." >&2 + exit 1 + fi + $verbose "$0: dir = $dir, libname = $libname." + version=`awk '$1 == "'$libname'" { print "." $2 "." $3 "." $4 }' $verfile` + $verbose "$0: version for $libname = $version." + echo $version + ;; + + + # unknown mode + *) + echo "$0: Impossible mode \`$mode'!" >&2 + echo "$bug_report" >&2 + exit 1 + ;; +esac diff --git a/kpathsea/klibtool.config b/kpathsea/klibtool.config new file mode 100644 --- /dev/null +++ b/kpathsea/klibtool.config @@ -0,0 +1,12 @@ +LIBTOOL_OBJTYPES='STATIC:' +shared_support='true' +shared_ext='so' +libpath_var='LD_LIBRARY_PATH' +CC='gcc' +args_STATIC_compile='' +args_SHARED_compile='-fPIC' +args_STATIC_archive='' +STATIC_ranlib='ranlib' +args_SHARED_archive='-shared' +args_SHARED_link='' +SHARED_postinstall='ldconfig $libdir' diff --git a/kpathsea/make/common.make b/kpathsea/make/common.make --- a/kpathsea/make/common.make +++ b/kpathsea/make/common.make @@ -11,7 +11,7 @@ DEFS = @DEFS@ $(XDEFS) # Kpathsea needs this for compiling, programs need it for linking. -LIBTOOL = $(kpathsea_srcdir_parent)/klibtool +LIBTOOL = $(kpathsea_srcdir)/klibtool # You can change [X]CPPFLAGS, [X]CFLAGS, or [X]DEFS, but # please don't change ALL_CPPFLAGS or ALL_CFLAGS. diff --git a/kpathsea/make/config.make b/kpathsea/make/config.make --- a/kpathsea/make/config.make +++ b/kpathsea/make/config.make @@ -15,7 +15,7 @@ ### ##configure_in = $(srcdir)/configure.in $(kpathsea_srcdir)/common.ac \ ## $(kpathsea_srcdir)/withenable.ac $(kpathsea_srcdir)/xt.ac \ -## $(kpathsea_srcdir_parent)/acklibtool.m4 +## $(kpathsea_srcdir)/acklibtool.m4 ##$(srcdir)/configure: $(configure_in) $(autoconf) ## cd $(srcdir) && autoconf ##endif