543b678dd7
Submitted by : Brian Cully <shmit@rcn.com> but with revisions PR : 8389
232 lines
6.6 KiB
Bash
232 lines
6.6 KiB
Bash
#!/bin/sh
|
|
|
|
olib=/usr/lib
|
|
nlib=/usr/lib/aout
|
|
|
|
fixlib()
|
|
{
|
|
dir=$1
|
|
shift
|
|
crt=$1
|
|
shift
|
|
if [ ! -f $olib/$crt ]; then
|
|
if [ ! -f $nlib/$crt ]; then
|
|
echo "Warning: Can't find $crt" >&2
|
|
else
|
|
for i in "$@"
|
|
do
|
|
sed "s:$olib/$crt:$nlib/$crt:" $dir/$i >$dir/$i.tmp &&
|
|
mv -f $dir/$i.tmp $dir/$i || exit 1
|
|
done
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#
|
|
# Update tcc common environment.
|
|
#
|
|
|
|
# Create $WRKSRC/src/lib/env/freebsd/common/80x86/pthread
|
|
cat >$WRKSRC/src/lib/env/freebsd/common/80x86/pthread <<EOF
|
|
/* Build with pthreads library */
|
|
+SYS_LIBC "-lc_r"
|
|
EOF
|
|
|
|
#
|
|
# Create tcc aout environment.
|
|
#
|
|
|
|
mkdir $WRKSRC/src/lib/env/freebsd/aout
|
|
mkdir $WRKSRC/src/lib/env/freebsd/aout/80x86
|
|
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-P5
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-P5 <<EOF
|
|
+FLAG_TRANS "-K5"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-aout
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-aout <<EOF
|
|
/* This is default */
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-PIC
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-PIC <<EOF
|
|
/* empty */
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-frame
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-frame <<EOF
|
|
+FLAG_TRANS "-a"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-i386
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-i386 <<EOF
|
|
+FLAG_TRANS "-K3"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-i486
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-i486 <<EOF
|
|
+FLAG_TRANS "-K4"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/K-noframe
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/K-noframe <<EOF
|
|
/* This is default */
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p <<EOF
|
|
+FLAG_TRANS "-Z1"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p1
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p1 <<EOF
|
|
+FLAG_TRANS "-Z1"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p2
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p2 <<EOF
|
|
+FLAG_TRANS "-Z2"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p4
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/Z-p4 <<EOF
|
|
+FLAG_TRANS "-Z4"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/default.extra
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/default.extra <<EOF
|
|
+MACHINE "freebsd-*-80x86"
|
|
+TRANS "-BINDIR-/trans -k0"
|
|
+AS "/usr/bin/as"
|
|
+LD "/usr/bin/ld -e start -dc -dp"
|
|
+CC "/usr/bin/cc"
|
|
+CRT0 "/usr/lib/crt0.o"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/tcc_diag
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/tcc_diag <<EOF
|
|
/* TCC ENVIRONMENT : DIAGNOSTICS FOR FreeBSD */
|
|
|
|
+CRT0 "/usr/lib/crt0.o"
|
|
<LINK "-L-LIBDIR-/diag"
|
|
>SYS_LIB "-static -lg"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/aout/80x86/tcc_prof
|
|
cat >$WRKSRC/src/lib/env/freebsd/aout/80x86/tcc_prof <<EOF
|
|
/* TCC ENVIRONMENT : PROFILING FOR FreeBSD */
|
|
|
|
+CRT0 "/usr/lib/gcrt0.o"
|
|
<SYS_LINK "-static -lgmon -lc_p"
|
|
+FLAG_TRANS "-P"
|
|
+LINE_START "#pragma@preserve@*"
|
|
EOF
|
|
|
|
#
|
|
# Create tcc elf environment.
|
|
#
|
|
|
|
mkdir $WRKSRC/src/lib/env/freebsd/elf
|
|
mkdir $WRKSRC/src/lib/env/freebsd/elf/80x86
|
|
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-P5
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-P5 <<EOF
|
|
+FLAG_TRANS "-K5"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-aout
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-aout <<EOF
|
|
/* TCC ENVIRONMENT : producing old "a.out" for FreeBSD */
|
|
|
|
+FLAG_TRANS "-k0"
|
|
+AS "/usr/libexec/aout/as"
|
|
+LD "/usr/libexec/aout/ld"
|
|
+CRT0 "/usr/lib/aout/crt0.o"
|
|
+CRT1 ""
|
|
+CRTN ""
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-frame
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-frame <<EOF
|
|
+FLAG_TRANS "-a"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-i386
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-i386 <<EOF
|
|
+FLAG_TRANS "-K3"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-i486
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-i486 <<EOF
|
|
+FLAG_TRANS "-K4"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/K-noframe
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/K-noframe <<EOF
|
|
/* This is default */
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p <<EOF
|
|
+FLAG_TRANS "-Z1"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p1
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p1 <<EOF
|
|
+FLAG_TRANS "-Z1"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p2
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p2 <<EOF
|
|
+FLAG_TRANS "-Z2"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p4
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/Z-p4 <<EOF
|
|
+FLAG_TRANS "-Z4"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/default.extra
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/default.extra <<EOF
|
|
+MACHINE "freebsd-*-80x86"
|
|
+AS "/usr/bin/as"
|
|
+LD "/usr/bin/ld -m elf_i386"
|
|
+CC "/usr/bin/cc"
|
|
+CRT0 "-dynamic-linker /usr/libexec/ld-elf.so.1 /usr/lib/crt1.o"
|
|
+CRT1 "/usr/lib/crti.o /usr/lib/crtbegin.o"
|
|
+CRTN "/usr/lib/crtend.o /usr/lib/crtn.o"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/system
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/system <<EOF
|
|
/* tcc environment for system headers on unknown machine */
|
|
|
|
+INCL "-Nsystem1:-MACHDIR-/include -Nsystem:/usr/include"
|
|
+FLAG "-D__FREEBSD_USE_ELF"
|
|
+FLAG "-f-MACHDIR-/startup/system.h"
|
|
+FLAG "-Y32bit"
|
|
+FLAG_TRANS "-B0"
|
|
+API_NAME "-Asystem1 -Asystem"
|
|
+INFO "System@Headers"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/system+
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/system+ <<EOF
|
|
/* tcc environment for system headers on unknown machine */
|
|
|
|
>INCL "-Nsystem1:-MACHDIR-/include -Nsystem:/usr/include"
|
|
+FLAG "-D__FREEBSD_USE_ELF"
|
|
+FLAG "-f-MACHDIR-/startup/system.h"
|
|
+FLAG "-Y32bit"
|
|
+FLAG_TRANS "-B0"
|
|
>API_NAME "-Asystem1 -Asystem"
|
|
>INFO "System@Headers"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/tcc_diag
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/tcc_diag <<EOF
|
|
/* TCC ENVIRONMENT : DIAGNOSTICS FOR FreeBSD */
|
|
|
|
<LINK "-L-LIBDIR-/diag"
|
|
>SYS_LIB "-static -g"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/tcc_prof
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/tcc_prof <<EOF
|
|
/* TCC ENVIRONMENT : PROFILING FOR FreeBSD */
|
|
|
|
+CRT0 "-dynamic-linker /usr/libexec/ld-elf.so.1 /usr/lib/gcrt1.o"
|
|
<SYS_LINK "-lgmon"
|
|
+FLAG_TRANS "-P"
|
|
+LINE_START "#pragma@preserve@*"
|
|
EOF
|
|
# Create $WRKSRC/src/lib/env/freebsd/elf/80x86/tdf_ext
|
|
cat >$WRKSRC/src/lib/env/freebsd/elf/80x86/tdf_ext <<EOF
|
|
/* tcc environment for the TDF Spec 4.0 extensions */
|
|
|
|
<LIB "-ltarget_tok"
|
|
+FLAG_INSTALL "-Ytdf_ext"
|
|
>INFO "XANDF@Preliminary@Specification@(DRA-005@proposal)"
|
|
EOF
|
|
|
|
#
|
|
# Fix aout environment for /usr/lib or /usr/lib/aout.
|
|
#
|
|
|
|
fixlib $WRKSRC/src/lib/env/freebsd/aout/80x86 crt0.o default.extra tcc_diag
|
|
fixlib $WRKSRC/src/lib/env/freebsd/aout/80x86 gcrt0.o tcc_prof
|