gecko-dev/config/ports/configure.sh
1998-06-02 02:44:34 +00:00

551 lines
13 KiB
Bash
Executable File

#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
ARCH="$1"
RELEASE="$2"
MKFILE="$3"
BSDECHO=""
LIB_DIRS=""
MACROS=""
PATH="/usr/ccs/bin:/tools/ns/bin:/tools/contrib/bin:/usr/local/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/bin:/usr/bin/X11:/usr/etc:/usr/ucb:/usr/lpp/xlC/bin"
POSSIBLE_X_DIRS="/usr/X/lib /usr/X11R6/lib /usr/abiccs/lib/X11R5 /usr/X11/lib /usr/lib/X11 /usr/lib /lib"
SPECIAL=""
TMPFILE="foo.$$.c"
X_DIR=""
XFE_MKFILE="xfe_mfile.add"
export PATH
rm -f foo ${TMPFILE}
echo "Let's see what we've got to work with...."
if test "`echo -n blah`" != "-n blah"
then
BSDECHO="echo"
ECHO_FLAG="-n"
ENDER=""
else
ECHO_FLAG=""
ENDER="\c"
fi
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { }" >> ${TMPFILE}
cc -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -eq 0
then
CC="cc"
else
CC="gcc"
fi
echo "Compiler seems to be ${CC}...."
echo "Looking for various header files...."
echo ${ECHO_FLAG} "Do we have <stddef.h>....${ENDER}"
if test -f /usr/include/stddef.h
then
MACROS="${MACROS} -DHAVE_STDDEF_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <stdlib.h>....${ENDER}"
if test -f /usr/include/stdlib.h
then
MACROS="${MACROS} -DHAVE_STDLIB_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <model.h>....${ENDER}"
if test -f /usr/include/model.h
then
MACROS="${MACROS} -DHAVE_MODEL_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <bitypes.h>....${ENDER}"
if test -f /usr/include/bitypes.h
then
MACROS="${MACROS} -DHAVE_BITYPES_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <sys/bitypes.h>....${ENDER}"
if test -f /usr/include/sys/bitypes.h
then
MACROS="${MACROS} -DHAVE_SYS_BITYPES_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <sys/filio.h>....${ENDER}"
if test -f /usr/include/sys/filio.h
then
MACROS="${MACROS} -DHAVE_FILIO_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <sys/endian.h>....${ENDER}"
if test -f /usr/include/sys/endian.h
then
MACROS="${MACROS} -DSYS_ENDIAN_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <ntohl/endian.h> and/or <machine/endian.h>....${ENDER}"
if test -f /usr/include/ntohl/endian.h -o -f /usr/include/machine/endian.h
then
MACROS="${MACROS} -DNTOHL_ENDIAN_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <machine/endian.h>....${ENDER}"
if test -f /usr/include/machine/endian.h
then
MACROS="${MACROS} -DMACHINE_ENDIAN_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <sys/machine.h>....${ENDER}"
if test -f /usr/include/sys/machine.h
then
MACROS="${MACROS} -DSYS_MACHINE_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have <sys/byteorder.h>....${ENDER}"
if test -f /usr/include/sys/byteorder.h
then
MACROS="${MACROS} -DSYS_BYTEORDER_H"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have either <cdefs.h> or <sys/cdefs.h>....${ENDER}"
if test ! -f /usr/include/cdefs.h -a ! -f /usr/include/sys/cdefs.h
then
MACROS="${MACROS} -DNO_CDEFS_H"
echo " no"
else
echo " yes"
fi
#
# Obviously I have no idea what I _should_ be looking for here.... --briano.
#
echo "Trying to determine if this system is strict SYSV...."
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
if test -f /usr/include/sys/param.h
then
echo "#include <sys/param.h>" >> ${TMPFILE}
fi
echo "int main() {" >> ${TMPFILE}
echo "#if defined(SVR4) || defined(SYSV) || defined(__svr4) || defined(__svr4__) || defined(_SVR4) || defined(__SVR4) || defined(M_SYSV) || defined(_M_SYSV)" >> ${TMPFILE}
echo " return(0);" >> ${TMPFILE}
echo "#endif" >> ${TMPFILE}
echo "#if defined(BSD) || defined(bsd) || defined(__bsd) || defined(__bsd__) || defined(_BSD) || defined(__BSD)" >> ${TMPFILE}
echo " return(1);" >> ${TMPFILE}
echo "#endif" >> ${TMPFILE}
echo " return(2);" >> ${TMPFILE}
echo "}" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
./foo
case $? in
0) echo " -- Looks like SYSVR4...."
MACROS="${MACROS} -DSYSV -DSVR4 -D__svr4 -D__svr4__"
;;
1) echo " -- Looks like BSD...."
;;
2) echo " -- Can't tell. Could be either SYSV or BSD, or both...."
;;
esac
echo "Looking for various platform-specific quirks...."
echo ${ECHO_FLAG} "Do we have long long....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { long long x; }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_LONG_LONG"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have signed long....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { signed long x; }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_SIGNED"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have strerror()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { (void *)strerror(666); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -eq 0
then
SPECIAL="-DHAVE_STRERROR"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have lchown()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { (void)lchown(\"/foo\",666,666); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -eq 0
then
MACROS="${MACROS} -DHAVE_LCHOWN"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have memmove()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { char s[32]; const char *s2 = \"diediedie\"; memmove(s,s2,32); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_MEMMOVE"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have alloca()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
if test -f /usr/include/alloca.h
then
echo "#include <alloca.h>" > ${TMPFILE}
fi
echo "void main() { alloca(666); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_ALLOCA"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have regex()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { (void *)regex(\"foo\",(char *)0); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} -lgen >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_REGEX"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have regcmp()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { (void *)regcmp(\"foo\",\"barfoofrab\"); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} -lgen >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_REGCOMP"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have snprintf()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { snprintf(\"xxx\", 2, \"yyy\"); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
echo " no"
else
MACROS="${MACROS} -DHAVE_SNPRINTF"
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have pgno_t....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { pgno_t foo = 0; }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DHAS_PGNO_T"
echo " yes"
else
echo " no"
fi
echo ${ECHO_FLAG} "Do we have IN_MULTICAST....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
if test -f /usr/include/types.h
then
echo "#include <types.h>" >> ${TMPFILE}
fi
if test -f /usr/include/sys/types.h
then
echo "#include <sys/types.h>" >> ${TMPFILE}
fi
if test -f /usr/include/netinet/in.h
then
echo "#include <netinet/in.h>" >> ${TMPFILE}
fi
if test -f /usr/include/linux/in.h
then
echo "#include <linux/in.h>" >> ${TMPFILE}
fi
if test -f /usr/include/sys/socket.h
then
echo "#include <sys/socket.h>" >> ${TMPFILE}
fi
echo "void main() {" >> ${TMPFILE}
echo "#ifndef IN_MULTICAST" >> ${TMPFILE}
echo "ERROR" >> ${TMPFILE}
echo "#endif" >> ${TMPFILE}
echo "}" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_MULTICAST"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have tzname[]....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
if test -f /usr/include/time.h
then
echo "#include <time.h>" >> ${TMPFILE}
fi
if test -f /usr/include/sys/time.h
then
echo "#include <sys/time.h>" >> ${TMPFILE}
fi
echo "void main() { int foo = tzname[0]; }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNO_TZNAME"
echo " no"
else
echo " yes"
fi
echo ${ECHO_FLAG} "Do we have realpath()....${ENDER}"
rm -f foo ${TMPFILE}
echo "#include <stdio.h>" > ${TMPFILE}
echo "void main() { const char *s1 = \"/foo/bar\"; char *s2; (void *)realpath(s1,s2); }" >> ${TMPFILE}
${CC} -o foo ${TMPFILE} >/dev/null 2>&1
if test $? -ne 0
then
MACROS="${MACROS} -DNEED_REALPATH"
echo " no"
else
echo " yes"
fi
rm -f foo ${TMPFILE}
echo ${ECHO_FLAG} "Do we have ranlib....${ENDER}"
ranlib >/dev/null 2>&1
if test $? -eq 0
then
RANLIB="ranlib"
echo " yes"
else
RANLIB="true"
echo " no"
fi
echo ${ECHO_FLAG} "Do we have xemacs....${ENDER}"
xemacs --version >/dev/null 2>&1
if test $? -eq 0
then
EMACS="xemacs"
echo " yes"
else
EMACS="true"
echo " no"
fi
echo "Generating ${MKFILE} file...."
if test -x /bin/echo -a -z "${BSDECHO}"
then
if test "`/bin/echo -n blah`" != "-n blah"
then
BSDECHO="/bin/echo"
fi
fi
if test -x /usr/ucb/echo -a -z "${BSDECHO}"
then
if test "`/usr/ucb/echo -n blah`" != "-n blah"
then
BSDECHO="/usr/ucb/echo"
fi
fi
if test -z "${BSDECHO}"
then
BSDECHO="\$(DIST)/bin/bsdecho"
fi
CPU_ARCH="`uname -m`"
case ${CPU_ARCH} in
000*)
CPU_ARCH="rs6000"
;;
9000*)
CPU_ARCH="hppa"
;;
IP* | RM[45]00 | R[45]000)
CPU_ARCH="mips"
;;
34* | i[3456]86* | i86pc)
CPU_ARCH="x86"
;;
sun4*)
CPU_ARCH="sparc"
;;
esac
for i in ${POSSIBLE_X_DIRS}
do
if test -d ${i}
then
LIB_DIRS="${LIB_DIRS} ${i}"
fi
done
if test ! -z "${LIB_DIRS}"
then
for i in ${LIB_DIRS}
do
if test -f ${i}/libX11.a -o -f ${i}/libX11.so
then
X_DIR="${i}"
break
fi
done
fi
rm -f ${MKFILE}
echo "######################################################################" > ${MKFILE}
echo "# Config stuff for ${ARCH}." >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "# Version-independent" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "ARCH := `echo ${ARCH} | tr '[A-Z]' '[a-z]'`" >> ${MKFILE}
echo "CPU_ARCH := ${CPU_ARCH}" >> ${MKFILE}
echo "GFX_ARCH := x" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "CC = ${CC}" >> ${MKFILE}
echo "CCC =" >> ${MKFILE}
echo "BSDECHO = ${BSDECHO}" >> ${MKFILE}
echo "EMACS = ${EMACS}" >> ${MKFILE}
echo "RANLIB = ${RANLIB}" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "OS_INCLUDES = -I/usr/X11/include" >> ${MKFILE}
echo "G++INCLUDES =" >> ${MKFILE}
echo "LOC_LIB_DIR = ${X_DIR}" >> ${MKFILE}
echo "MOTIF =" >> ${MKFILE}
echo "MOTIFLIB = -lXm" >> ${MKFILE}
echo "OS_LIBS =" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "PLATFORM_FLAGS = -D`echo ${ARCH} | tr '[a-z]' '[A-Z]'`" >> ${MKFILE}
echo "MOVEMAIL_FLAGS = ${SPECIAL}" >> ${MKFILE}
echo "PORT_FLAGS = -DSW_THREADS ${MACROS}" >> ${MKFILE}
echo "PDJAVA_FLAGS =" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "OS_CFLAGS = \$(PLATFORM_FLAGS) \$(PORT_FLAGS) \$(MOVEMAIL_FLAGS)" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "# Version-specific stuff" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "# Overrides for defaults in config.mk (or wherever)" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "# Other" >> ${MKFILE}
echo "######################################################################" >> ${MKFILE}
echo "" >> ${MKFILE}
echo "ifdef SERVER_BUILD" >> ${MKFILE}
echo "STATIC_JAVA = yes" >> ${MKFILE}
echo "endif" >> ${MKFILE}
echo "Generating a default macro file (${XFE_MKFILE}) to be added to cmd/xfe/Makefile...."
rm -f ${XFE_MKFILE}
echo "" > ${XFE_MKFILE}
echo "########################################" >> ${XFE_MKFILE}
echo "# ${ARCH} ${RELEASE} ${CPU_ARCH}" >> ${XFE_MKFILE}
echo "ifeq (\$(OS_ARCH)\$(OS_RELEASE),${ARCH}${RELEASE})" >> ${XFE_MKFILE}
echo "OTHER_LIBS = -L${X_DIR} \$(MOTIFLIB) -lXt -lXmu -lXext -lX11 -lm \$(OS_LIBS)" >> ${XFE_MKFILE}
echo "endif" >> ${XFE_MKFILE}
echo "" >> ${XFE_MKFILE}
exit 0