#!/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 " > ${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 ....${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 ....${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 ....${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 ....${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 ....${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 ....${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 ....${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 and/or ....${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 ....${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 ....${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 ....${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 or ....${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 " > ${TMPFILE} if test -f /usr/include/sys/param.h then echo "#include " >> ${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 " > ${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 " > ${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 " > ${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 " > ${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 " > ${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 " > ${TMPFILE} if test -f /usr/include/alloca.h then echo "#include " > ${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 " > ${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 " > ${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 " > ${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 " > ${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 " > ${TMPFILE} if test -f /usr/include/types.h then echo "#include " >> ${TMPFILE} fi if test -f /usr/include/sys/types.h then echo "#include " >> ${TMPFILE} fi if test -f /usr/include/netinet/in.h then echo "#include " >> ${TMPFILE} fi if test -f /usr/include/linux/in.h then echo "#include " >> ${TMPFILE} fi if test -f /usr/include/sys/socket.h then echo "#include " >> ${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 " > ${TMPFILE} if test -f /usr/include/time.h then echo "#include " >> ${TMPFILE} fi if test -f /usr/include/sys/time.h then echo "#include " >> ${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 " > ${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