head	1.7;
access;
symbols
	RELEASE_5_1_0:1.6
	RELEASE_4_8_0:1.6
	RELEASE_5_0_0:1.6
	RELEASE_4_7_0:1.6
	RELEASE_4_6_2:1.6
	RELEASE_4_6_1:1.6
	RELEASE_4_6_0:1.6
	RELEASE_5_0_DP1:1.6
	RELEASE_4_5_0:1.6
	RELEASE_4_4_0:1.6
	RELEASE_4_3_0:1.6
	RELEASE_4_2_0:1.6
	RELEASE_4_1_1:1.6
	RELEASE_4_1_0:1.6
	RELEASE_3_5_0:1.6
	RELEASE_4_0_0:1.6
	RELEASE_3_4_0:1.6
	RELEASE_3_3_0:1.6
	RELEASE_3_2_0:1.6
	RELEASE_3_1_0:1.6
	RELEASE_2_2_8:1.5
	RELEASE_3_0_0:1.4
	RELEASE_2_2_7:1.1;
locks; strict;
comment	@# @;


1.7
date	2003.06.03.08.16.58;	author arved;	state dead;
branches;
next	1.6;

1.6
date	99.01.24.11.12.03;	author rnordier;	state Exp;
branches;
next	1.5;

1.5
date	98.11.04.14.22.24;	author rnordier;	state Exp;
branches;
next	1.4;

1.4
date	98.10.08.09.18.52;	author rnordier;	state Exp;
branches;
next	1.3;

1.3
date	98.10.07.22.30.07;	author rnordier;	state Exp;
branches;
next	1.2;

1.2
date	98.09.29.13.13.25;	author rnordier;	state Exp;
branches;
next	1.1;

1.1
date	98.06.11.15.24.05;	author rnordier;	state Exp;
branches;
next	;


desc
@@


1.7
log
@- Update to CVS snapshot 20030526, which fixes the build problems on 5.x
- Give maintainership to submitter

"Unfortunately FreeBSD 5.x uses the GNU C extension
__attribute__((__aligned__(x))) in a couple of system headers
(<machine/npx.h>, <machine/signal.h> and <machine/ucontext.h> for i386).  To
avoid a syntax error __aligned(x) is removed by a #define, but programs that
use struct sigcontext, struct savexmm or mcontext_t probably won't work."

PR:		52619
Submitted by:	Stefan Farfeleder <stefan@@fafoe.dyndns.org>
@
text
@#!/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
@


1.6
log
@Add option for linking with pthreads library.

Submitted by	: Brian Cully <shmit@@rcn.com> but with revisions
PR		: 8389
@
text
@@


1.5
log
@Fix tcc -g option for ELF.

Reported by: jmz
@
text
@d26 10
@


1.4
log
@Don't insist on finding crt0.o and friends.
@
text
@d191 7
@


1.3
log
@Add K-aout to tcc aout environment for consistency.
@
text
@d14 1
a14 2
            echo "Can't find $crt" >&2
            exit 1
@


1.2
log
@TenDRA does ELF Part I
@
text
@d37 4
@


1.1
log
@Look for crt0.o in /usr/lib or /usr/lib/aout.
Prompted by: Brian Cully <shmit@@erols.com>.
@
text
@a1 1
# Look for *crt0.o in /usr/lib or /usr/lib/aout
a4 1
dir=$WRKSRC/src/lib/env/freebsd/common/80x86
d8 2
d26 186
a211 2
fixlib crt0.o default.extra tcc_diag
fixlib gcrt0.o tcc_prof
@
