umask 022
CFLAGS='-Os -m64 -march=x86-64 -mtune=core2 -mcmodel=large -mfpmath=sse -mssse3 -mno-sse4 -fno-stack-protector -fno-reciprocal-math -fno-associative-math -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-common -fno-ident -fno-omit-frame-pointer -fmerge-constants -mno-omit-leaf-frame-pointer -fno-delete-null-pointer-checks -fno-inline -fno-builtin -fno-strict-aliasing -fno-reorder-functions -fno-reorder-blocks-and-partition'
LDFLAGS=''
gcc ${CFLAGS:-} unifdef.c -o unifdef
sed -e 's/#include "\(.*\)"$/#include <\1>/' < dtoa.c >dtoa2.c
patch --read-only=ignore -s -p1 -inomalloc.patch -o - < dtoa2.c | \
./unifdef -k -B -USET_INEXACT -U__cplusplus -DIEEE_8087=1 -UNO_LONG_LONG \
           -DLong=int -UBad_float_h -UAvoid_Underflow -USudden_Underflow \
           -UVAX -UIBM -UIEEE_MC68k -UKR_headers -UUSE_LOCALE \
           -UDEBUG -UMULTIPLE_THREADS -UOmit_Private_Memory -DPRIVATE_MEM=16384 \
           -UJust_16 -DPack_32 -DHonor_FLT_ROUNDS -DTrust_FLT_ROUNDS -URND_PRODQUOT \
           -UInaccurate_Divide -UROUND_BIASED -UNO_HEX_FP -DNO_STRTOD_BIGCOMP \
           -DIEEE_Arith -UROUND_BIASED_without_Round_Up \
           -DNO_MALLOC -DCONST=const -UNo_leftright -USudden_Underflow > dtoa3.c
sed -e 's/CONST/const/g' < dtoa3.c  > dtoa4.c
cp dtoa4.c dtoa5.c
patch -s -p1 -inoVAX.patch
cp dtoa5.c dtoa5.c.normal
patch -s -p1 -ierrno.patch
gcc ${CFLAGS:-} -DSTANDALONE -DIEEE_8087 -DLong=int -DPRIVATE_MEM=16384 -S dtoa5.c -o dtoa5.s
as -n --64 dtoa5.s -o dtoa5.o
#patch --read-only=ignore -s -p1 -i g_fmt_BASIC.patch -o - < g_fmt.c > g_fmt_BASIC.c
cat g_fmt.c >g_fmt_BASIC.c
patch -p1 -i g_fmt_BASIC.patch g_fmt_BASIC.c
gcc ${CFLAGS:-} -S -DIGNORE_ZERO_SIGN g_fmt_BASIC.c -o g_fmt_BASIC.s
as -n --64 g_fmt_BASIC.s -o g_fmt_BASIC.o
gcc ${CFLAGS:-} -S boat.c -o boat.s
as -n --64 boat.s -o boat.o
gcc ${LDFLAGS:-} boat.o g_fmt_BASIC.o dtoa5.o -o boat
rm -f dtoa2.c dtoa3.c dtoa4.c dtoa5.c *.o unifdef
#
cp dtoa5.s dtoa5.s.standalone
# patch works with:
# gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2
# Copyright (C) 2014 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.  There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
patch -s -p0 -istandalone.patch
# copy dtoa5.s.standalone to ../dtoa5.s for use as standalone dtoa5.o
# copy g_fmt_BASIC.s to ../g_fmt_BASIC.s for use as runtime g_fmt_BASIC.o
# copy dtoa5.c.normal to ../dtoa5.c for use with compiler
# copy g_fmt_BASIC.c to ../g_fmt_BASIC.c for use with compiler
