96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh
 | |
| set -eu
 | |
| CFLAGS="-Wall -Wextra -Wno-strict-aliasing -pedantic -std=gnu99"
 | |
| CFLAGS="$CFLAGS -O2" # -falign-functions
 | |
| CFLAGS="$CFLAGS -I ../c -D NDEBUG -D USE_COMPUTED_GOTO"
 | |
| LFLAGS="-lm"
 | |
| os="$(uname | tr A-Z- a-z_)"
 | |
| case "$os" in
 | |
| darwin)
 | |
|     default_cc="clang"
 | |
|     ;;
 | |
| dragonfly)
 | |
|     default_cc="gcc"
 | |
|     ;;
 | |
| freebsd)
 | |
|     default_cc="clang"
 | |
|     ;;
 | |
| haiku)
 | |
|     default_cc="gcc"
 | |
|     ;;
 | |
| linux)
 | |
|     default_cc="gcc"
 | |
|     CFLAGS="$CFLAGS -D _GNU_SOURCE"
 | |
|     ;;
 | |
| netbsd)
 | |
|     default_cc="gcc"
 | |
|     ;;
 | |
| openbsd)
 | |
|     default_cc="clang"
 | |
|     ;;
 | |
| sunos)
 | |
|     default_cc="gcc"
 | |
|     ;;
 | |
| *)
 | |
|     echo "Unknown operating system: $os" >&2
 | |
|     exit 1
 | |
|     ;;
 | |
| esac
 | |
| CC="${CC:-$default_cc}"
 | |
| builddir="build-$os-$(uname -m | tr A-Z- a-z_)"
 | |
| cd "$(dirname "$0")"/..
 | |
| echo "Entering directory '$PWD'"
 | |
| set -x
 | |
| mkdir -p "$builddir"
 | |
| find "$builddir" -mindepth 1 -delete
 | |
| { set +x; } 2>/dev/null
 | |
| cd "$builddir"
 | |
| echo "Entering directory '$PWD'"
 | |
| set -x
 | |
| ln -s ../scheme-boot/flisp.boot flisp.boot
 | |
| $CC $CFLAGS -c ../c/bitvector-ops.c
 | |
| $CC $CFLAGS -c ../c/bitvector.c
 | |
| $CC $CFLAGS -c ../c/builtins.c
 | |
| $CC $CFLAGS -c ../c/dump.c
 | |
| $CC $CFLAGS -c ../c/env_unix.c
 | |
| $CC $CFLAGS -c ../c/equalhash.c
 | |
| $CC $CFLAGS -c ../c/flisp.c
 | |
| $CC $CFLAGS -c ../c/flmain.c
 | |
| $CC $CFLAGS -c ../c/fs_"$os".c
 | |
| $CC $CFLAGS -c ../c/fs_unix.c
 | |
| $CC $CFLAGS -c ../c/hashing.c
 | |
| $CC $CFLAGS -c ../c/htable.c
 | |
| $CC $CFLAGS -c ../c/int2str.c
 | |
| $CC $CFLAGS -c ../c/ios.c
 | |
| $CC $CFLAGS -c ../c/iostream.c
 | |
| $CC $CFLAGS -c ../c/lltinit.c
 | |
| $CC $CFLAGS -c ../c/ptrhash.c
 | |
| $CC $CFLAGS -c ../c/random.c
 | |
| $CC $CFLAGS -c ../c/socket.c
 | |
| $CC $CFLAGS -c ../c/string.c
 | |
| $CC $CFLAGS -c ../c/table.c
 | |
| $CC $CFLAGS -c ../c/time_unix.c
 | |
| $CC $CFLAGS -c ../c/utf8.c
 | |
| $CC $LFLAGS -o flisp -lm \
 | |
|     bitvector-ops.o bitvector.o builtins.o dump.o env_unix.o \
 | |
|     equalhash.o flisp.o flmain.o fs_"$os".o fs_unix.o \
 | |
|     hashing.o htable.o int2str.o \
 | |
|     ios.o iostream.o lltinit.o ptrhash.o random.o socket.o \
 | |
|     string.o table.o time_unix.o utf8.o
 | |
| { set +x; } 2>/dev/null
 | |
| cd ../scheme-core
 | |
| echo "Entering directory '$PWD'"
 | |
| echo "Creating stage 0 boot file..."
 | |
| set -x
 | |
| ../"$builddir"/flisp mkboot0.scm system.scm compiler.scm >flisp.boot.new
 | |
| mv flisp.boot.new ../scheme-boot/flisp.boot
 | |
| { set +x; } 2>/dev/null
 | |
| echo "Creating stage 1 boot file..."
 | |
| set -x
 | |
| ../"$builddir"/flisp mkboot1.scm
 | |
| mv flisp.boot.new ../scheme-boot/flisp.boot
 | |
| { set +x; } 2>/dev/null
 | |
| cd ../scheme-tests
 | |
| echo "Entering directory '$PWD'"
 | |
| ../"$builddir"/flisp unittest.scm
 |