#! /bin/sh

TMP=tmp$$.c

cat <<EOF >compat.h
/* This file produced automatically by configure, do not edit. */
/* It is included in each C file produced by the D compiler, scc1. */
#include <stdlib.h>
#include <math.h>
#include <gc.h>
#include <string.h>
#include <gmp.h>
#include "memdebug.h"
#include "config.h"
EOF

exit 0 # experiment with doing without all the junk below, inlcuding compat.c

cat <<EOF >compat.c
/* this file produced automatically by configure, do not edit */
#include <stdlib.h>
#include <errno.h>
EOF

cat <<'EOF' >$TMP
int main(){ return 0; }
EOF
if $CC $TMP -lm >/dev/null 2>&1
then :
else echo "can't compile at all!" >&2
     exit 1
fi

cat >>compat.c <<'EOF'
#ifndef ENOSYS
#define ENOSYS 0
#endif
EOF

cat <<'EOF' >$TMP
int main(){ getprotobyname(); }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo 'void *getprotobyname() { errno = ENOSYS; return 0; }'
	) >>compat.c

cat <<'EOF' >$TMP
int main(){
        accept();
	return 0;
        }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo 'int accept() { errno = ENOSYS; return -1; }'
	) >>compat.c

cat <<'EOF' >$TMP
int main(){ bind(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo 'int bind() { errno = ENOSYS; return -1; }'
	) >>compat.c

cat <<'EOF' >$TMP
int main(){ listen(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo 'int listen() { errno = ENOSYS; return -1; }'
	) >>compat.c

cat <<'EOF' >$TMP
int main(){ socket(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo 'int socket() { errno = ENOSYS; return -1; }'
	) >>compat.c

cat <<'EOF' >$TMP
int main(){ gethostbyname(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 ||
	echo 'void *gethostbyname() { errno = ENOSYS; return (void *)0; }' \
	>>compat.c

cat <<'EOF' >$TMP
int main(){ inet_addr(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'int inet_addr() { errno = ENOSYS; return -1; }' \
	>>compat.c

cat <<'EOF' >$TMP
int main(){ getservbyname(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'void *getservbyname() { errno = ENOSYS; return (void *)0; }' \
	>>compat.c

cat <<'EOF' >$TMP
int main(){ authdes_create(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || (
	echo '#ifndef ENOSYS'
	echo '#define ENOSYS 0'
	echo '#endif'
	echo 'void *authdes_create() { errno = ENOSYS; return (void *)0; }' 
	) >>compat.c

cat <<'EOF' >$TMP
int main(){ xdrmem_create(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'void *xdrmem_create() { errno = ENOSYS; return (void *)0; }' \
	>>compat.c

cat <<'EOF' >$TMP
int main(){ connect(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'int connect() { errno = ENOSYS; return -1; }' \
	>>compat.c

cat <<'EOF' >$TMP
int main(){ setsockopt(); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'int setsockopt() { errno = ENOSYS; return -1; }' \
	>>compat.c

cat <<'EOF' >$TMP
#include <netinet/in.h>
int main(){ htons(0); return 0; }
EOF
$CC $TMP $FLAGS >/dev/null 2>&1 || 
	echo 'short htons(short x) { return x; }' \
	>>compat.c

rm $TMP
