home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # Public domain.
-
- # Configure, eat your heart out.
-
- # make sure we're using sh (stolen from Configure)
- PATH='.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc'
- export PATH || (echo "Aargh! This isn't sh. Desperation time. I will now feed myself to sh..."; exec sh $0; sh $0; kill $$)
- echo "We're using sh. Good."
-
- # make sure cmp works
- if cmp README README >/dev/null 2>&1
- then if cmp README FORMLETTER >/dev/null 2>&1
- then echo 'Aargh! cmp returns a zero exit code for different files. This is hopeless.'
- exit 1
- else echo 'You have a normal cmp. Good.'
- fi
- else echo 'Aargh! cmp returns a nonzero exit code for the same file. This is hopeless.'
- exit 1
- fi
-
- # test for bzero()
- cat > .bzero.$$.c << 'YOW'
- extern bzero(); main() { char c = 1; bzero(&c,1); printf("%d\n",c); }
- YOW
- if cc -o .bzero.$$ .bzero.$$.c >/dev/null 2>&1
- then ./.bzero.$$ > .bzero.$$.out
- echo 0 > .zero.$$.out
- if cmp .zero.$$.out .bzero.$$.out >/dev/null 2>&1
- then echo 'You have bzero(). Enabling it...'
- sed '2s/$/ -DBZERO/' < Makefile | sed '2s/-UBZERO /-DBZERO /g' | sed '2s/-DBZERO\(.*\) -DBZERO$/-DBZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- else echo 'You seem to have bzero(), but it doesn'\''t work. Disabling it...'
- sed '2s/$/ -UBZERO/' < Makefile | sed '2s/-DBZERO /-UBZERO /g' | sed '2s/-UBZERO\(.*\) -UBZERO$/-UBZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- else echo 'You do not have bzero(). Disabling it...'
- sed '2s/$/ -UBZERO/' < Makefile | sed '2s/-DBZERO /-UBZERO /g' | sed '2s/-UBZERO\(.*\) -UBZERO$/-UBZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- rm -f .bzero.$$ .bzero.$$.out .bzero.$$.c .zero.$$.out
-
- # test for memset()
- cat > .mmset.$$.c << 'YOW'
- extern memset(); main() { char c = 1; memset(&c,0,1); printf("%d\n",c); }
- YOW
- if cc -o .mmset.$$ .mmset.$$.c >/dev/null 2>&1
- then ./.mmset.$$ > .mmset.$$.out
- echo 0 > .zero.$$.out
- if cmp .zero.$$.out .mmset.$$.out >/dev/null 2>&1
- then echo 'You have memset(). Enabling it...'
- sed '2s/$/ -DMEMZERO/' < Makefile | sed '2s/-UMEMZERO /-DMEMZERO /g' | sed '2s/-DMEMZERO\(.*\) -DMEMZERO$/-DMEMZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- else echo 'You seem to have memset(), but it doesn'\''t work. Disabling it...'
- sed '2s/$/ -UMEMZERO/' < Makefile | sed '2s/-DMEMZERO /-UMEMZERO /g' | sed '2s/-UMEMZERO\(.*\) -UMEMZERO$/-UMEMZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- else echo 'You do not have memset(). Disabling it...'
- sed '2s/$/ -UMEMZERO/' < Makefile | sed '2s/-DMEMZERO /-UMEMZERO /g' | sed '2s/-UMEMZERO\(.*\) -UMEMZERO$/-UMEMZERO\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- rm -f .mmset.$$ .mmset.$$.out .mmset.$$.c .zero.$$.out
-
- # test for putchar not sign-extending correctly
- cat > .bozo.$$.c << 'YOW'
- #include <stdio.h>
- main() { int i=255; putchar(25); exit(putchar((char)i) != EOF); }
- YOW
- if cc -o .bozo.$$ .bozo.$$.c >/dev/null 2>&1
- then if ./.bozo.$$ >/dev/null
- then echo 'You have the putchar((char) 255) == EOF bug.'
- echo 'Let me put -DBRAINDAMAGED into the Makefile for you...'
- sed '2s/$/ -DBRAINDAMAGED/' < Makefile | sed '2s/-UBRAINDAMAGED /-DBRAINDAMAGED /g' | sed '2s/-DBRAINDAMAGED\(.*\) -DBRAINDAMAGED$/-DBRAINDAMAGED\1/' > Makefile.new
- mv Makefile.new Makefile
- echo 'You *must* make sure to leave this defined.'
- else echo 'You do not have the putchar((char) 255) == EOF bug.'
- echo 'Making sure -DBRAINDAMAGED is not in the Makefile...'
- sed '2s/$/ -UBRAINDAMAGED/' < Makefile | sed '2s/-DBRAINDAMAGED /-UBRAINDAMAGED /g' | sed '2s/-UBRAINDAMAGED\(.*\) -UBRAINDAMAGED$/-UBRAINDAMAGED\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- else echo 'Weird, cannot compile normal stdio program.'
- echo 'Making sure -DBRAINDAMAGED is not in the Makefile...'
- sed '2s/$/ -UBRAINDAMAGED/' < Makefile | sed '2s/-DBRAINDAMAGED /-UBRAINDAMAGED /g' | sed '2s/-UBRAINDAMAGED\(.*\) -UBRAINDAMAGED$/-UBRAINDAMAGED\1/' > Makefile.new
- mv Makefile.new Makefile
- fi
- rm -f .bozo.$$ .bozo.$$.out .bozo.$$.c .zero.$$.out
-
- # set ZEROFILLED
- echo "Since you're running this script, I assume that you're on a UNIX machine,"
- echo "and static arrays are zero-filled by default. Enabling -DZEROFILLED..."
- sed '2s/$/ -DZEROFILLED/' < Makefile | sed '2s/-UZEROFILLED /-DZEROFILLED /g' | sed '2s/-DZEROFILLED\(.*\) -DZEROFILLED$/-DZEROFILLED\1/' > Makefile.new
- mv Makefile.new Makefile
-
- echo ' '
- echo 'Okay, now you should make checkconf and run it.'
- echo 'If you would like me to do this for you, press return.'
- echo 'Otherwise type no and press return, or just interrupt this script.'
- read foo
- case x"$foo"y in
- xy) echo 'make checkconf'
- if make checkconf
- then echo './checkconf'
- ./checkconf
- else echo 'Oops, make checkconf failed. I give up: you figure it out.'
- fi
- ;;
- esac
-
- exit 0
-