#! /bin/sh
##
## Find stupid system include dependencies and account for them.  Squirts
## a sample .h file to stdout containing [too many of] the right things.
## If you hose the output into "stupid.h", you will get MORE information.
## This takes a while to run, because it checks so many things.
##
## IF YOU HAVE a system/arch/compiler/whatever that is NOT one of:
##   msdos-msc6.x  ultrix-vax ultrix-mips  sunos4.1.x-sparc  solaris2.x-sparc
##   aix-rs6k  linux1.[01].x-x86  freebsd-x86  netbsd-x86 hpux
##   [... hopefully this list will grow very large]
## or even if you aren't sure, you would be doing me and the net in general
## a wonderful service by running this and MAILING me the "full" output, e.g.
##
##    chmod +x stupidh
##    ./stupidh > stupid.h
##    mail hobbit@avian.org < stupid.h
##
## WARNING: You may have to change "cc" to "gcc" below if you don't have
## "cc" [e.g. solaris, thank you very fucking much, Sun].
## Please note any errors this generates, too...
##
## *Hobbit*, 941122 and previous.  VERSION: 1.3 951107
##
## edits: Use a consistent naming scheme, for easier identification and cleanup.
## accomodate gcc's BOGUS assumptions based on input filename.
## added a few more include-names and try-predefines; some swiped from autoconf.
## added a couple of things commonly done as #defines so we can SEE 'em

## Here is where to change "cc" to "gcc" if needed:
CC=cc

if test -z "${INCLUDE}" ; then
  INCLUDE=/usr/include
fi

echo '/* STUPIDH run:'
uname -a
echo '*/'
echo ''

echo "/* Includes, from ${INCLUDE} */"
for xx in \
assert ctype cdefs errno file fcntl ioctl malloc stdio stdlib stdarg iostdio \
stddef dirent direct dir ndir utmp wtmp utmpx wtmpx lastlog login paths \
getopt string strings signal setjmp io param stat types time timeb utime \
dos msdos unistd socket netdb varargs sysinfo systeminfo resource ulimit \
stream stropts pstat sysmacros termio termios sgtty tty ttyent lstat select \
sockio wait vfork bsdtypes mkdev utsname sysexits \
; do

  XX=''
  if test -f ${INCLUDE}/${xx}.h ; then
    echo "#include <${xx}.h>"
    XX=`echo $xx | tr '[a-z]' '[A-Z]'`
  fi
  if test -f ${INCLUDE}/sys/${xx}.h ; then
    echo "#include <sys/${xx}.h>"
    XX=`echo $xx | tr '[a-z]' '[A-Z]'`
  fi

# everyone seems to have their own conventions; this may not be complete.
# thats why this is so STUPID.
# HAS_xx and USE_xx might indicate functions and available library calls,
# not includes.  Deal...

  if test "${XX}" ; then
    echo "#define USE_${XX}_H"
    echo "#define HAS_${XX}_H"
    echo "#define HAS_${XX}"
    echo "#define HAS${XX}"
    echo "#define HAVE_${XX}_H"
    echo "#define HAVE_${XX}"
    echo "#define HAVE${XX}H"
    echo "#define ${XX}H"
    echo ''
  fi
# Stupid hack: "dir" and "dirent" might mutually exclusive, a la GNU
# includes.  This is to prevent it from biting us.
  if test "${xx}" =  "dirent" ; then
    echo "#ifdef _SYS_DIRENT_H"
    echo "#undef _SYS_DIRENT_H"
    echo "#endif"
  fi

### To make a DOS batchfile instead, do this [on a unix box!], xfer results,
### and have "xxx.bat" that types out all the cruft for %INCLUDE%\%1.
### WARNING: I might not have gotten the superquoting exactly right here...
# echo "if exist %INCLUDE%\\${xx}.h call xxx ${xx}"
# echo "if exist %INCLUDE%\\sys\\${xx}.h call xxx sys/${xx}"
### You also need to save and manually run the CPP input file, below.
### I've done this for msc6 and would appreciate results for other compilers.

done
sync
sleep 1

### Note: if all the previous output went to "stupid.h", it will be
### reincluded in the second part of this.

sed -e '/^#/d' -e '/^[	 ]*$/d' > st00pid.in << 'EOF'

### More recently, some of this was swiped from the "gcc" doc.  Autoconf is
### worth a harder look for more ideas; havent gotten around to it yet.
# architectures
alpha
dec
ibm
i370
i960
i860
ibm032
a29k
indigo
iris
mips
mipsel
sparc
sparclite
ncr
sh
harris
apple
vax
x86
ix86
i286
i386
i486
i586
pentium
intel
smp
mpu
mpu8080
mpu8086
amiga
hp
hppa
hp400
hp9000
snake
decmips
mc68000
mc68010
mc68020
mc68030
m68000
m68010
m68020
m68030
m68k
m88k
u3b15
u3b
u3b2
u3b5
u3b15
u3b20d
we32k
ppc
powerpc
arm
aviion
ns32000
iapx286
# minor exception to lc-vs-uc thing?
iAPX286
rs6000
rs6k
risc
sun
sun3
sun4
sun4c
sun4m
sequent
apollo
solbourne
pyr
pyramid
interdata
intertec
pdp11
u370
next
mac
macintosh

# for completeness; ya never know ... yes, found it!! -- solaris inet/common.h
big_endian
little_endian
lsbfirst
msbfirst

# vendors/OSes
unix
munix
m_unix
gcos
os
gssc
tss
isc
# *This* pair of imbeciles does *caseified defines*.  Pinheads.  One of
# these might trigger before the "tr" step.
NetBSD
netbsd
freebsd
FreeBSD
# cant do 386bsd, I dont think, but ...
_386bsd
bsd386
bsdunix
bsd_2
bsd_20
bsd
bsdi
bsd4
bsd42
bsd43
bsd44
bsd4_2
bsd4_3
bsd4_4
linux
minix
ultrix
ult3
ult4
bull
convex
convex_source
res
rt
esix
dg
dgux
encore
osf
osf1
osf2
# oops:
# osf/1
mach
mach386
mach_386
nextstep
tahoe
reno
sunos
sunos3
sunos4
sunos5
solaris
sun_src_compat
svr3
svr4
svr3_style
svr4_style
sysv
hpux
hp_ux
irix
sgi
sony
news
newsos
news_os
luna
lynxos
riscos
microport
ewsux
ews_ux
mport
dynix
genix
unicos
unixware
msdos
dos
os2
novell
univel
plan9
att
att_unix
sco
odt
aix
aux
a_ux
rsx
vms

# compiler cruft??
ansi
ansi_source
ansic
stdc
lint
sccs
libc_sccs
ms
msc
microsoft
gcc
gnu
gnuc
gnucc
gnu_source
sabre
saber
cygnus
source
all_source
gprof
prof
posix
posix_source
posix_sources
posix_c_source
xopen_source
args
p
proto
no_proto
prototype
prototypes
reentrant
kernel
str
trace
asm
libcpp
athena
athena_compat
# some preprocessors cant deal with this
# c++
cxx
cplusplus
borland
turbo
turboc
lattice
highc

# various defines that pop out of other .h files that we need to know about
index
strchr
rindex
strrchr
bcopy
memcpy
bzero
memset
path_login
path_lastlog
path_utmp
path_utmpx

EOF

# FL must be named something.c, so STUPID gcc recognized it as a non-object!!
( FL=st00pid.c
  if test -f stupid.h ; then
    cp stupid.h $FL
    sync
    echo '/* Re-including stupid.h */'
    sleep 1
  else
    echo '/* Skipping stupid.h */'
  fi
  while read xx ; do
    XX=`echo $xx | tr '[a-z]' '[A-Z]'`
    echo "#ifdef ${xx}" >> $FL
    echo "\"${xx}\" = ${xx}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef _${xx}" >> $FL
    echo "\"_${xx}\" = _${xx}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef _${xx}_" >> $FL
    echo "\"_${xx}_\" = _${xx}_" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef __${xx}" >> $FL
    echo "\"__${xx}\" = __${xx}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef __${xx}__" >> $FL
    echo "\"__${xx}__\" = __${xx}__" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef ${XX}" >> $FL
    echo "\"${XX}\" = ${XX}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef _${XX}" >> $FL
    echo "\"_${XX}\" = _${XX}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef _${XX}_" >> $FL
    echo "\"_${XX}_\" = _${XX}_" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef __${XX}" >> $FL
    echo "\"__${XX}\" = __${XX}" >> $FL
    echo "#endif" >> $FL
    echo "#ifdef __${XX}__" >> $FL
    echo "\"__${XX}__\" = __${XX}__" >> $FL
    echo "#endif" >> $FL
  done
# and pick up a few specials
  echo "#ifdef major" >> $FL
  echo "\"major\" = major (x)" >> $FL
  echo "\"minor\" = minor (x)" >> $FL
  echo "#endif" >> $FL
  echo "#ifdef FD_SETSIZE" >> $FL
  echo "\"FD_SETSIZE\" = FD_SETSIZE" >> $FL
  echo "#endif" >> $FL
) < st00pid.in
sync

echo '/* Compiler predefines:'
${CC} -E st00pid.c | sed -e '/^#/d' -e '/^[	 ]*$/d'
echo '*/'
sync

cat > st00pid.c << 'EOF'
#include <stdio.h>
main() {
union {
  char *bletch;
  int *i;
} yow;
static char orig[16];
  strcpy (orig, "ABCDEFGHIJK");
  yow.bletch = orig;
  printf ("endian thing: %s = 0x%lx, addrbyte = %x -- ",
    yow.bletch, *yow.i, *yow.i & 0xFF);
  printf (((*yow.i & 0xff) == 0x41) ? "LITTLE\n" : "BIG\n");
  printf ("short %d;  int %d;  long %d\n",
    sizeof (short), sizeof (int), sizeof (long));
}
EOF

${CC} -o st00pid.x st00pid.c
echo '/* Architecture:'
./st00pid.x
echo '*/'

### dont nuke if generating DOS batchfiles
rm -f st00pid.*
sync
exit 0

### stuff remaining to deal with:
# maybe take out the slew of HAS_* and HAS* excess predefines, and only use
#   our "standardized" scheme [like we were going to generate a real includible
#   file outa this??]
# various POSIX_ME_HARDERisms:
#   vfork
#   lockf/flock/fcntl/euuugh
#   signal stuff
#   termio/termios/sgtty hair
# strdup and related
# ifdef HAVE_STD_LIB and such nonsense
# auto-sniff cc-vs-gcc somehow?  maybe a straight OR with exit statii..

