Import NetBSD tools and build.sh
This commit finalizes support for cross compilation. The tools directory are all links to the actual tools and are built on the host system to build Minix. build.sh is the work horse that takes care of all environment settings. It's slightly adjusted for Minix. The /usr/src/Makefile has additional targets needed for cross compilation.
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
# $NetBSD: Makefile,v 1.50 2012/01/10 12:27:54 skrll Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
GCC_LANGUAGES=c c++ objc
|
||||
MODULE= gcc4
|
||||
|
||||
MKNATIVE_CONFIG_TARGET_LIBS= \
|
||||
configure-target-libiberty \
|
||||
configure-target-libstdc++-v3 \
|
||||
configure-target-libobjc \
|
||||
configure-target-libgcc
|
||||
|
||||
.if ${HAVE_GCC} == 45
|
||||
MKNATIVE_TARGET= gcc45
|
||||
GNUHOSTDIST= ${.CURDIR}/../../external/gpl3/gcc/dist
|
||||
MKNATIVE_CONFIG_TARGET_LIBS+= \
|
||||
configure-target-libgomp
|
||||
.else
|
||||
MKNATIVE_TARGET= gcc4
|
||||
.endif
|
||||
|
||||
BINENV= /usr/bin/env -i
|
||||
|
||||
VAX_CONFIGURE_ARGS=
|
||||
|
||||
.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64"
|
||||
MULTILIB_ARGS= --enable-multilib
|
||||
.else
|
||||
MULTILIB_ARGS= --disable-multilib
|
||||
.endif
|
||||
|
||||
.if ${MKSOFTFLOAT} != "no"
|
||||
SOFTFLOAT_ARGS= -with-float=soft
|
||||
.endif
|
||||
|
||||
COMMON_CONFIGURE_ARGS= --target=${MACHINE_GNU_PLATFORM} \
|
||||
--enable-long-long \
|
||||
--enable-threads \
|
||||
--with-bugurl=http://www.NetBSD.org/Misc/send-pr.html \
|
||||
--with-pkgversion="NetBSD nb2 20111202" \
|
||||
${VAX_CONFIGURE_ARGS} \
|
||||
--enable-__cxa_atexit \
|
||||
--target=i386-elf-minix \
|
||||
--with-as="${TOOLDIR}/i386-elf-minix/bin/as" \
|
||||
--with-ld="${TOOLDIR}/i386-elf-minix/bin/ld" \
|
||||
--disable-threads \
|
||||
--disable-visibility \
|
||||
--enable-__cxa_atexit \
|
||||
--disable-libunwind
|
||||
# --with-headers="/home/thomas/Documents/minix/cc3/obj/destdir.i386/usr/include"
|
||||
|
||||
.if defined(GCC_CONFIG_ARCH.${MACHINE_ARCH})
|
||||
COMMON_CONFIGURE_ARGS+= --with-arch=${GCC_CONFIG_ARCH.${MACHINE_ARCH}}
|
||||
.endif
|
||||
.if defined(GCC_CONFIG_TUNE.${MACHINE_ARCH})
|
||||
COMMON_CONFIGURE_ARGS+= --with-tune=${GCC_CONFIG_TUNE.${MACHINE_ARCH}}
|
||||
.endif
|
||||
|
||||
CONFIGURE_ARGS= ${COMMON_CONFIGURE_ARGS}
|
||||
.if ${HAVE_GCC} >= 45
|
||||
CONFIGURE_ARGS+= \
|
||||
--with-mpc=${TOOLDIR} \
|
||||
--with-mpfr=${TOOLDIR} \
|
||||
--with-gmp=${TOOLDIR}
|
||||
.endif
|
||||
CONFIGURE_ARGS+= \
|
||||
--disable-nls \
|
||||
${MULTILIB_ARGS} \
|
||||
${SOFTFLOAT_ARGS} \
|
||||
--program-transform-name="s,^,${MACHINE_GNU_PLATFORM}-," \
|
||||
--enable-languages=c
|
||||
|
||||
GCC_CPPFLAGS= -DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0 \
|
||||
-DTARGET_SYSTEM_ROOT_RELOCATABLE
|
||||
|
||||
MAKE_ARGS= MACHINE= MAKEINFO=${TOOL_MAKEINFO:Q} \
|
||||
LIBGCC= LIBGCC1= LIBGCC1_TEST= LIBGCC2= INSTALL_LIBGCC= \
|
||||
EXTRA_PARTS= CPPFLAGS=${GCC_CPPFLAGS:Q} \
|
||||
AR=${HOST_AR:Q} RANLIB=${HOST_RANLIB:Q}
|
||||
|
||||
CONFIGURE_ENV+= gcc_cv_libc_provides_ssp=yes \
|
||||
gcc_cv_as_sparc_gotdata_op=no
|
||||
|
||||
MKNATIVE_ENV= ${BINENV} ${CONFIGURE_ENV:NC*:NLD*} \
|
||||
CC_FOR_BUILD=${HOST_CC:Q} \
|
||||
CC=${CC:Q}' '${CCADDFLAGS:Q} \
|
||||
CXX=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
|
||||
CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
|
||||
CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= \
|
||||
AS=${AS:Q} AWK=${TOOL_AWK:Q} LD=${LD:Q} \
|
||||
MSGFMT=${TOOLDIR}/bin/${_TOOL_PREFIX}msgfmt \
|
||||
NM=${NM:Q} OBJDUMP=${OBJDUMP:Q} \
|
||||
XGETTEXT=${TOOLDIR}/bin/${_TOOL_PREFIX}xgettext \
|
||||
LIBS=-lintl \
|
||||
ac_cv_prog_cc_cross=yes \
|
||||
ac_cv_func_strcoll_works=yes \
|
||||
ac_cv_func_elf_getshstrndx=no \
|
||||
gcc_cv_func_printf_ptr=yes \
|
||||
gcc_cv_libc_provides_ssp=yes \
|
||||
gdb_cv_printf_has_long_double=yes \
|
||||
gdb_cv_printf_has_long_long=yes \
|
||||
gdb_cv_scanf_has_long_double=yes \
|
||||
gcc_cv_as_sparc_gotdata_op=no
|
||||
|
||||
ALL_TARGET= all-gcc
|
||||
INSTALL_TARGET= install-gcc
|
||||
|
||||
.include "${.CURDIR}/../Makefile.gmakehost"
|
||||
BUILD_MAKE=${TOOL_GMAKE}
|
||||
|
||||
#
|
||||
# mknative-gcc specific stuff
|
||||
#
|
||||
|
||||
.if ${HAVE_GCC} < 45
|
||||
GCCSRCDIR=${.CURDIR}/../../gnu/dist/gcc4
|
||||
.else
|
||||
GCCSRCDIR=${.CURDIR}/../../external/gpl3/gcc/dist
|
||||
.endif
|
||||
|
||||
CXXADDFLAGS= --sysroot=${DESTDIR}
|
||||
CCADDFLAGS= --sysroot=${DESTDIR} -L${DESTDIR}/lib -L${DESTDIR}/usr/lib -B${DESTDIR}/usr/lib/ -I${.OBJDIR}/.native/gcc/include
|
||||
|
||||
NEWCONFIGDIR?= ${.CURDIR}/../..
|
||||
MKNATIVE?= ${.CURDIR}/mknative-gcc
|
||||
|
||||
bootstrap-libgcc: .configure_done
|
||||
@echo 'Creating files needed for libgcc by a native bootstrap build.'
|
||||
@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} lib${MKNATIVE_TARGET} \
|
||||
${.OBJDIR}/build ${NEWCONFIGDIR} ${MACHINE_GNU_PLATFORM} \
|
||||
${DESTDIR}
|
||||
|
||||
native-gcc: .native/.configure_done
|
||||
@echo 'Extracting GNU GCC configury for a native toolchain.'
|
||||
@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} ${MKNATIVE_TARGET} \
|
||||
${.OBJDIR}/.native ${NEWCONFIGDIR} ${MACHINE_GNU_PLATFORM} \
|
||||
${DESTDIR}
|
||||
|
||||
NATIVE_CONFIGURE_ARGS= ${COMMON_CONFIGURE_ARGS}
|
||||
.if ${HAVE_GCC} >= 45
|
||||
NATIVE_CONFIGURE_ARGS+= \
|
||||
--with-mpc=${DESTDIR}/usr \
|
||||
--with-mpfr=${DESTDIR}/usr \
|
||||
--with-gmp=${DESTDIR}/usr
|
||||
|
||||
. if ${MACHINE_ARCH} != "vax"
|
||||
NATIVE_CONFIGURE_ARGS+= --enable-tls
|
||||
. endif
|
||||
.endif
|
||||
NATIVE_CONFIGURE_ARGS+= \
|
||||
--disable-multilib \
|
||||
--disable-symvers \
|
||||
--disable-libstdcxx-pch \
|
||||
--build=`${GCCSRCDIR}/config.guess` \
|
||||
--host=${MACHINE_GNU_PLATFORM}
|
||||
|
||||
.native/.configure_done: ${_GNU_CFGSRC} ${.CURDIR}/Makefile
|
||||
mkdir .native 2>/dev/null || true
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native && ${MKNATIVE_ENV} \
|
||||
${HOST_SH} ${GNUHOSTDIST}/configure \
|
||||
${NATIVE_CONFIGURE_ARGS}) && \
|
||||
(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} all-build-libiberty)
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} configure-gcc configure-libcpp) && \
|
||||
(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} configure-libiberty) && \
|
||||
(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} configure-libdecnumber)
|
||||
# edit Makefile so that maybe-all-gcc does not depend on all-gcc any more.
|
||||
(cd .native && mv Makefile Makefile.config && \
|
||||
${TOOL_SED} -e 's/\(maybe-all-gcc:\) all-gcc/\1/' \
|
||||
-e 's/\(maybe-all-target-libgcc:\) all-target-libgcc/\1/' \
|
||||
< Makefile.config > Makefile)
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e tree-check.h config.h multilib.h gcov-iov.h)
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e libgcc.mvars tconfig.h unwind.h)
|
||||
(cd .native && touch gcc/cc1obj gcc/cc1plus gcc/f771 gcc/libgcc.a gcc/libgcc_s.so)
|
||||
.for _lib in ${MKNATIVE_CONFIG_TARGET_LIBS}
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} \
|
||||
${_lib} \
|
||||
ALL_GCC_C= ALL_GCC_CXX= \
|
||||
CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \
|
||||
CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
|
||||
RAW_CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
|
||||
CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
|
||||
ac_cv_prog_cc_cross=yes) && \
|
||||
true
|
||||
.endfor
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native/${MACHINE_GNU_PLATFORM}/libstdc++-v3/include && \
|
||||
${MKNATIVE_ENV} ${BUILD_MAKE} \
|
||||
CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \
|
||||
CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
|
||||
CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
|
||||
all-local) && \
|
||||
true
|
||||
.if 0
|
||||
PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
|
||||
(cd .native/${MACHINE_GNU_PLATFORM}/libiberty && \
|
||||
${MKNATIVE_ENV} ${BUILD_MAKE} needed-list)
|
||||
.endif
|
||||
@touch $@
|
||||
|
||||
clean: clean.native
|
||||
clean.native:
|
||||
-rm -r -f .native
|
||||
@@ -0,0 +1,69 @@
|
||||
$NetBSD: README.mknative,v 1.9 2011/09/21 02:15:18 mrg Exp $
|
||||
|
||||
XXX THIS FILE DOES NOT DESCRIBE GCC 4.5 METHODS PROPERLY XXX
|
||||
|
||||
This file describes how to bootstrap the native toolchain on a new NetBSD
|
||||
platform (and how to update the new toolchain files, if needed). These
|
||||
files may be generated on a cross-compile host without problems.
|
||||
|
||||
NOTE: DO NOT RUN "mknative" BY HAND! It requires the Makefile in this
|
||||
directory to set up certain environments first.
|
||||
|
||||
Since libc's features change over time, the config.h files can change as a
|
||||
result; thus the instructions below are the same no matter whether
|
||||
bootstrapping on a cross or native host. This is important: even on a
|
||||
"native" host, you should bootstrap the toolchain by building from an
|
||||
up-to-date source tree to a $DESTDIR using the exact same instructions.
|
||||
|
||||
In these notes, MACHINE is the $MACHINE of the target. These files can be
|
||||
cross-generated. Though a $MACHINE_ARCH all uses the same config files, you
|
||||
must pick a specific $MACHINE so that building the requisite bits below will
|
||||
work.
|
||||
|
||||
1. Set MKMAINTAINERTOOLS=yes in mk.conf. (Needed so that src/tools/gettext
|
||||
gets built, eliciting proper HAVE_*GETTEXT* defns in config.h files.)
|
||||
|
||||
2. Build and install a cross toolchain (via "build.sh -m MACHINE tools").
|
||||
|
||||
3. In src/tools/gcc, do "nbmake-MACHINE bootstrap-libgcc".
|
||||
|
||||
This will create just enough glue in src/gnu/lib/libgcc4/arch to make it
|
||||
possible to build, based on the toolchain built in ${.OBJDIR}/build.
|
||||
Because the files generated in this step contain things like
|
||||
-DCROSS_COMPILE, they are not suitable for committing. Step 8 below
|
||||
will regenerate the "proper" libgcc config files.
|
||||
|
||||
4. At top level, do
|
||||
"nbmake-MACHINE do-distrib-dirs obj includes MKGCC=no MKBINUTILS=no".
|
||||
|
||||
5. In src/gnu/lib/libgcc4, do "nbmake-MACHINE obj includes".
|
||||
|
||||
6. If the platform sets USE_COMPILERCRTSTUFF=yes, then in src/gnu/lib/crtstuff4
|
||||
do "nbmake-MACHINE dependall install"
|
||||
|
||||
7. In each of src/lib/csu, src/gnu/lib/libgcc4, and src/lib,
|
||||
do "nbmake-MACHINE dependall install".
|
||||
|
||||
Optionally, all of the following may be set in the environment to reduce
|
||||
the amount of code needed to build at this step. Basically, it must be
|
||||
possible for static binaries to build and base system libs to exist so
|
||||
that "configure" can do its job for the target--these MK* options omit
|
||||
the rest for this stage of the build.
|
||||
|
||||
MKCRYPTO=no
|
||||
MKLINT=no
|
||||
MKPROFILE=no
|
||||
MKSHARE=no
|
||||
|
||||
8. In src/tools/gcc, do "nbmake-MACHINE native-gcc".
|
||||
|
||||
This will do a full configury in ${.OBJDIR}/.native that is a "Canadian"
|
||||
cross toolchain (--build reflects the host platform, but --host and
|
||||
--target are the target). The result is a tree that would build a
|
||||
native-to-NetBSD compiler on a cross host, and mknative pulls glue data
|
||||
from this.
|
||||
|
||||
9. Try out a full build using "nbmake-MACHINE"; the result should include
|
||||
a native compiler.
|
||||
|
||||
10. If all is well, commit the glue files added to src/gnu/{lib,usr.bin}/*.
|
||||
@@ -0,0 +1,215 @@
|
||||
/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/dragonfly-spec.h,v 1.5 2008/07/24 21:45:10 corecode Exp $ */
|
||||
|
||||
/* Base configuration file for all DragonFly targets.
|
||||
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Common DragonFly configuration.
|
||||
All DragonFly architectures should include this file, which will specify
|
||||
their commonalities.
|
||||
|
||||
Adapted from gcc/config/freebsd-spec.h by
|
||||
Joerg Sonnenberger <joerg@bec.de>
|
||||
|
||||
Adapted from gcc/config/freebsd.h by
|
||||
David O'Brien <obrien@FreeBSD.org>
|
||||
Loren J. Rittle <ljrittle@acm.org>. */
|
||||
|
||||
|
||||
/* This defines which switch letters take arguments. On DragonFly, most of
|
||||
the normal cases (defined in gcc.c) apply, and we also have -h* and
|
||||
-z* options (for the linker) (coming from SVR4).
|
||||
We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
|
||||
|
||||
#define DFBSD_SWITCH_TAKES_ARG(CHAR) \
|
||||
(DEFAULT_SWITCH_TAKES_ARG (CHAR) \
|
||||
|| (CHAR) == 'h' \
|
||||
|| (CHAR) == 'z' /* ignored by ld */ \
|
||||
|| (CHAR) == 'R')
|
||||
|
||||
/* This defines which multi-letter switches take arguments. */
|
||||
|
||||
#define DFBSD_WORD_SWITCH_TAKES_ARG(STR) \
|
||||
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|
||||
|| !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \
|
||||
|| !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \
|
||||
|| !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker"))
|
||||
|
||||
#define DFBSD_TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
if (DFBSD_MAJOR == 3) \
|
||||
builtin_define ("__DragonFly__=3"); \
|
||||
else if (DFBSD_MAJOR == 2) \
|
||||
builtin_define ("__DragonFly__=2"); \
|
||||
else if (DFBSD_MAJOR == 1) \
|
||||
builtin_define ("__DragonFly__=1"); \
|
||||
else \
|
||||
builtin_define ("__DragonFly__"); \
|
||||
builtin_define ("__DragonFly_cc_version=100001"); \
|
||||
builtin_define_std ("unix"); \
|
||||
builtin_define ("__KPRINTF_ATTRIBUTE__"); \
|
||||
builtin_assert ("system=unix"); \
|
||||
builtin_assert ("system=bsd"); \
|
||||
builtin_assert ("system=DragonFly"); \
|
||||
DFBSD_TARGET_CPU_CPP_BUILTINS(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Define the default DragonFly-specific per-CPU hook code. */
|
||||
#define DFBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0)
|
||||
|
||||
/* Provide a CPP_SPEC appropriate for DragonFly. We just deal with the GCC
|
||||
option `-posix', and PIC issues. */
|
||||
|
||||
#define DFBSD_CPP_SPEC " \
|
||||
%(cpp_cpu) \
|
||||
%{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} \
|
||||
%{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
/* Provide a STARTFILE_SPEC appropriate for DragonFly. Here we add
|
||||
the magical crtbegin.o file (see crtstuff.c) which provides part
|
||||
of the support for getting C++ file-scope static object constructed
|
||||
before entering `main'. */
|
||||
|
||||
#define DFBSD_STARTFILE_SPEC \
|
||||
"%{!shared: \
|
||||
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
|
||||
%{!p:%{profile:gcrt1.o%s} \
|
||||
%{!profile:crt1.o%s}}}} \
|
||||
crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
|
||||
|
||||
/* Provide a ENDFILE_SPEC appropriate for DragonFly. Here we tack on
|
||||
the magical crtend.o file (see crtstuff.c) which provides part of
|
||||
the support for getting C++ file-scope static object constructed
|
||||
before entering `main', followed by a normal "finalizer" file,
|
||||
`crtn.o'. */
|
||||
|
||||
#define DFBSD_ENDFILE_SPEC \
|
||||
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
||||
|
||||
/* Provide a LIB_SPEC appropriate for DragonFly as configured and as
|
||||
required by the user-land thread model. Select the appropriate libc,
|
||||
depending on whether we're doing profiling or need threads support.
|
||||
Make it a hard error if -pthread is provided on the command line and gcc
|
||||
was configured with --disable-threads (this will help avoid bug
|
||||
reports from users complaining about threading when they
|
||||
misconfigured the gcc bootstrap but are later consulting DragonFly
|
||||
manual pages that refer to the mythical -pthread option). */
|
||||
|
||||
/* Provide a LIB_SPEC appropriate for DragonFly. Just select the appropriate
|
||||
libc, depending on whether we're doing profiling or need threads support.
|
||||
(simular to the default, except no -lg, and no -p). */
|
||||
|
||||
#ifdef DFBSD_NO_THREADS
|
||||
#define DFBSD_LIB_SPEC " \
|
||||
%{pthread: %eThe -pthread option is only supported on DragonFly when gcc \
|
||||
is built with the --enable-threads configure-time option.} \
|
||||
%{!nostdlib{!nostartfiles{!nolibc: -lc}}} \
|
||||
}"
|
||||
#else
|
||||
#define DFBSD_LIB_SPEC " \
|
||||
%{pthread:-lpthread} \
|
||||
%{!nostdlib: %{!nostartfiles: %{!nolibc: -lc}}} \
|
||||
"
|
||||
#endif
|
||||
|
||||
#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2"
|
||||
|
||||
#if 0
|
||||
#define LINK_LIBGCC_SPEC ""
|
||||
#define LIBGCC_SPEC "%{shared: -lgcc_pic} %{!shared: -lgcc}"
|
||||
|
||||
#define PRE_LIB_SPEC " \
|
||||
%{pg: -L"PREFIX2"/lib/gcc41/profiling \
|
||||
%{!static: -rpath /usr/lib/gcc41/profiling \
|
||||
-rpath-link "PREFIX2"/lib/gcc41/profiling}} \
|
||||
%{g: -L"PREFIX2"/lib/gcc41/debug \
|
||||
%{!static: -rpath /usr/lib/gcc41/debug \
|
||||
-rpath-link "PREFIX2"/lib/gcc41/debug}} \
|
||||
-L"PREFIX2"/lib/gcc41 \
|
||||
%{!static: -rpath /usr/lib/gcc41 -rpath-link "PREFIX2"/lib/gcc41} \
|
||||
%{pg: -L"PREFIX2"/lib/profiling \
|
||||
%{!static: -rpath /usr/lib/profiling \
|
||||
-rpath-link "PREFIX2"/lib/profiling}} \
|
||||
%{g: -L"PREFIX2"/lib/debug \
|
||||
%{!static: -rpath /usr/lib/debug -rpath-link "PREFIX2"/lib/debug}} \
|
||||
%{!static: -rpath /usr/lib -rpath-link "PREFIX2"/lib} \
|
||||
"
|
||||
|
||||
#define DFBSD_LINK_COMMAND_SPEC "\
|
||||
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
|
||||
%(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
|
||||
%{static:} %{L*} %(link_libgcc) %o \
|
||||
%{fprofile-arcs|fprofile-generate: -lgcov}\
|
||||
%{!nostdlib:%{!nodefaultlibs:%(pre_lib)}}\
|
||||
%{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}\
|
||||
%{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}"
|
||||
|
||||
#ifndef PREFIX2
|
||||
#define PREFIX2 "/usr"
|
||||
#endif
|
||||
|
||||
#ifndef STANDARD_STARTFILE_PREFIX_1
|
||||
#define STANDARD_STARTFILE_PREFIX_1 PREFIX2"/lib/gcc41/"
|
||||
#endif
|
||||
#ifndef STANDARD_EXEC_PREFIX
|
||||
#define STANDARD_EXEC_PREFIX PREFIX2"/libexec/gcc41/"
|
||||
#endif
|
||||
#ifndef STANDARD_STARTFILE_PREFIX
|
||||
#define STANDARD_STARTFILE_PREFIX PREFIX2"/lib/"
|
||||
#endif
|
||||
#ifndef TOOLDIR_BASE_PREFIX
|
||||
#define TOOLDIR_BASE_PREFIX PREFIX2"/libexec/gcc41"
|
||||
#endif
|
||||
#ifndef STANDARD_BINDIR_PREFIX
|
||||
#define STANDARD_BINDIR_PREFIX PREFIX2"/libexec/gcc41"
|
||||
#endif
|
||||
#ifndef STANDARD_LIBEXEC_PREFIX
|
||||
#define STANDARD_LIBEXEC_PREFIX PREFIX2"/libexec/gcc41"
|
||||
#endif
|
||||
|
||||
#ifndef GPLUSPLUS_INCLUDE_DIR
|
||||
#define GPLUSPLUS_INCLUDE_DIR PREFIX2"/include/c++"
|
||||
#endif
|
||||
#ifndef GPLUSPLUS_TOOL_INCLUDE_DIR
|
||||
#define GPLUSPLUS_TOOL_INCLUDE_DIR PREFIX2"/include/c++/4.1"
|
||||
#endif
|
||||
#ifndef GPLUSPLUS_BACKWARD_INCLUDE_DIR
|
||||
#define GPLUSPLUS_BACKWARD_INCLUDE_DIR PREFIX2"/include/c++/4.1/backward"
|
||||
#endif
|
||||
#ifndef GCC_LOCAL_INCLUDE_DIR
|
||||
#define GCC_LOCAL_INCLUDE_DIR PREFIX2"/libdata/gcc41"
|
||||
#endif
|
||||
#ifndef GCC_INCLUDE_DIR
|
||||
#define GCC_INCLUDE_DIR PREFIX2"/include"
|
||||
#endif
|
||||
|
||||
#undef INCLUDE_DEFAULTS
|
||||
#define INCLUDE_DEFAULTS \
|
||||
{ \
|
||||
{ GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \
|
||||
{ GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0 }, \
|
||||
{ GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 }, \
|
||||
{ GCC_INCLUDE_DIR, "GCC", 0, 0 }, \
|
||||
{ GCC_LOCAL_INCLUDE_DIR, "GCC", 0, 0 }, \
|
||||
{ NULL, NULL, 0, 0 } \
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,97 @@
|
||||
/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/dragonfly.h,v 1.2 2008/05/19 10:46:39 corecode Exp $ */
|
||||
|
||||
/* Base configuration file for all DragonFly targets.
|
||||
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Common DragonFly configuration.
|
||||
All DragonFly architectures should include this file, which will specify
|
||||
their commonalities.
|
||||
|
||||
Adapted from gcc/config/freebsd.h by
|
||||
Joerg Sonnenberger <joerg@bec.de>
|
||||
|
||||
Adapted from gcc/config/i386/freebsd-elf.h by
|
||||
David O'Brien <obrien@FreeBSD.org>.
|
||||
Further work by David O'Brien <obrien@FreeBSD.org> and
|
||||
Loren J. Rittle <ljrittle@acm.org>. */
|
||||
|
||||
|
||||
/* This defines which switch letters take arguments. On DragonFly, most of
|
||||
the normal cases (defined in gcc.c) apply, and we also have -h* and
|
||||
-z* options (for the linker) (coming from SVR4).
|
||||
We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
|
||||
|
||||
#undef SWITCH_TAKES_ARG
|
||||
#define SWITCH_TAKES_ARG(CHAR) (DFBSD_SWITCH_TAKES_ARG(CHAR))
|
||||
|
||||
#undef WORD_SWITCH_TAKES_ARG
|
||||
#define WORD_SWITCH_TAKES_ARG(STR) (DFBSD_WORD_SWITCH_TAKES_ARG(STR))
|
||||
|
||||
#undef TARGET_OS_CPP_BUILTINS
|
||||
#define TARGET_OS_CPP_BUILTINS() DFBSD_TARGET_OS_CPP_BUILTINS()
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC DFBSD_CPP_SPEC
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC DFBSD_STARTFILE_SPEC
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC DFBSD_ENDFILE_SPEC
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC DFBSD_LIB_SPEC
|
||||
|
||||
#if 0
|
||||
#undef LINK_COMMAND_SPEC
|
||||
#define LINK_COMMAND_SPEC DFBSD_LINK_COMMAND_SPEC
|
||||
#endif
|
||||
|
||||
/************************[ Target stuff ]***********************************/
|
||||
|
||||
/* All DragonFly Architectures support the ELF object file format. */
|
||||
#undef OBJECT_FORMAT_ELF
|
||||
#define OBJECT_FORMAT_ELF
|
||||
|
||||
/* Don't assume anything about the header files. */
|
||||
#undef NO_IMPLICIT_EXTERN_C
|
||||
#define NO_IMPLICIT_EXTERN_C 1
|
||||
|
||||
/* Make gcc agree with DragonFly's standard headers (<machine/stdint.h>, etc...) */
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "int"
|
||||
|
||||
#define MATH_LIBRARY_PROFILE "-lm_p"
|
||||
|
||||
/* Code generation parameters. */
|
||||
|
||||
/* Use periods rather than dollar signs in special g++ assembler names.
|
||||
This ensures the configuration knows our system correctly so we can link
|
||||
with libraries compiled with the native cc. */
|
||||
#undef NO_DOLLAR_IN_LABEL
|
||||
|
||||
/* Define this so we can compile MS code for use with WINE. */
|
||||
#define HANDLE_PRAGMA_PACK_PUSH_POP
|
||||
|
||||
/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW.
|
||||
This enables the test coverage code to use file locking when exiting a
|
||||
program, which avoids race conditions if the program has forked. */
|
||||
#define TARGET_POSIX_IO
|
||||
@@ -0,0 +1,39 @@
|
||||
/* This header makes it possible to redefine system calls to the
|
||||
* file system. This way, minix servers can re-route the data
|
||||
* that libgcov tries to send to the file system. This is
|
||||
* necessary, because the servers can't access the file system
|
||||
* directly. Instead, they will copy the data to a helping user
|
||||
* space process, which will call the file system for them.
|
||||
* For more information, see the <minix/gcov.h> header file.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
/* These function pointers initially point to the standard system library
|
||||
* functions (fopen, etc). All calls to these system library functions are
|
||||
* then redefined to calls to these function pointers. Because the pointers
|
||||
* still point to the original functions, all functionality is unchanged.
|
||||
* Therefore, libgcov won't act differently when linked to applications.
|
||||
* But, when these pointers are redefined by code within the minix servers,
|
||||
* the file system calls get replaced by other functionality.
|
||||
*/
|
||||
|
||||
#define fopen(...) _gcov_fopen(__VA_ARGS__)
|
||||
#define fread(...) _gcov_fread(__VA_ARGS__)
|
||||
#define fwrite(...) _gcov_fwrite(__VA_ARGS__)
|
||||
#define fclose(...) _gcov_fclose(__VA_ARGS__)
|
||||
#define fseek(...) _gcov_fseek(__VA_ARGS__)
|
||||
#define getenv(...) _gcov_getenv(__VA_ARGS__)
|
||||
|
||||
|
||||
/* wrapper to make it possible to disable gcov_exit on a process exit (for mfs) */
|
||||
|
||||
int do_gcov_exit = 1;
|
||||
|
||||
void gcov_exit_wrapper(void){
|
||||
if(do_gcov_exit)
|
||||
gcov_exit();
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
PROGRAM hello
|
||||
print*, 'Hello, World!'
|
||||
END
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#import <stdio.h>
|
||||
|
||||
int main( int argc, const char *argv[] ) {
|
||||
printf( "hello world\n" );
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/i386/dragonfly.h,v 1.1 2006/09/27 12:10:34 corecode Exp $ */
|
||||
|
||||
/* Definitions for Intel 386 running DragonFly with ELF format
|
||||
|
||||
Copyright (C) 1996, 2000, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Eric Youngdale.
|
||||
Modified for stabs-in-ELF by H.J. Lu.
|
||||
Adapted from GNU/Linux version by John Polstra.
|
||||
Continued development by David O'Brien <obrien@freebsd.org>
|
||||
Adapted from the FreeBSD version.
|
||||
|
||||
Changes:
|
||||
- remove support for changing the dynamic linker
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (i386 DragonFly/ELF)");
|
||||
|
||||
/* Override the default comment-starter of "/". */
|
||||
#undef ASM_COMMENT_START
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
#undef ASM_APP_ON
|
||||
#define ASM_APP_ON "#APP\n"
|
||||
|
||||
#undef ASM_APP_OFF
|
||||
#define ASM_APP_OFF "#NO_APP\n"
|
||||
|
||||
#undef DBX_REGISTER_NUMBER
|
||||
#define DBX_REGISTER_NUMBER(n) \
|
||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||
|
||||
#undef NO_PROFILE_COUNTERS
|
||||
#define NO_PROFILE_COUNTERS 1
|
||||
|
||||
/* Tell final.c that we don't need a label passed to mcount. */
|
||||
|
||||
#undef MCOUNT_NAME
|
||||
#define MCOUNT_NAME ".mcount"
|
||||
|
||||
/* Make gcc agree with <machine/ansi.h>. */
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD)
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER }
|
||||
|
||||
/* Provide a STARTFILE_SPEC appropriate for DragonFly. Here we add
|
||||
the magical crtbegin.o file (see crtstuff.c) which provides part
|
||||
of the support for getting C++ file-scope static object constructed
|
||||
before entering `main'. */
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC \
|
||||
"%{!shared: \
|
||||
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
|
||||
%{!p:%{profile:gcrt1.o%s} \
|
||||
%{!profile:crt1.o%s}}}} \
|
||||
crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
|
||||
|
||||
/* Provide a ENDFILE_SPEC appropriate for DragonFly. Here we tack on
|
||||
the magical crtend.o file (see crtstuff.c) which provides part of
|
||||
the support for getting C++ file-scope static object constructed
|
||||
before entering `main', followed by a normal "finalizer" file,
|
||||
`crtn.o'. */
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC \
|
||||
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
||||
|
||||
/* Provide a LINK_SPEC appropriate for DragonFly. Here we provide support
|
||||
for the special GCC options -static and -shared, which allow us to
|
||||
link things in one of these three modes by applying the appropriate
|
||||
combinations of options at link-time. We like to support here for
|
||||
as many of the other GNU linker options as possible. But I don't
|
||||
have the time to search for those flags. I am sure how to add
|
||||
support for -soname shared_object_name. H.J.
|
||||
|
||||
I took out %{v:%{!V:-V}}. It is too much :-(. They can use
|
||||
-Wl,-V.
|
||||
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
%{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
|
||||
%{v:-V} \
|
||||
%{assert*} %{R*} %{rpath*} %{defsym*} \
|
||||
%{shared:-Bshareable %{h*} %{soname*}} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \
|
||||
%{static:-Bstatic}} \
|
||||
%{symbolic:-Bsymbolic}"
|
||||
|
||||
/* A C statement to output to the stdio stream FILE an assembler
|
||||
command to advance the location counter to a multiple of 1<<LOG
|
||||
bytes if it is within MAX_SKIP bytes.
|
||||
|
||||
This is used to align code labels according to Intel recommendations. */
|
||||
|
||||
#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
|
||||
#undef ASM_OUTPUT_MAX_SKIP_ALIGN
|
||||
#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \
|
||||
if ((LOG) != 0) { \
|
||||
if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
||||
else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Don't default to pcc-struct-return, we want to retain compatibility with
|
||||
older gcc versions AND pcc-struct-return is nonreentrant.
|
||||
(even though the SVR4 ABI for the i386 says that records and unions are
|
||||
returned in memory). */
|
||||
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* DragonFly sets the rounding precision of the FPU to 53 bits. Let the
|
||||
compiler get the contents of <float.h> and std::numeric_limits correct. */
|
||||
#undef TARGET_96_ROUND_53_LONG_DOUBLE
|
||||
#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
|
||||
@@ -0,0 +1,54 @@
|
||||
/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/i386/dragonfly64.h,v 1.1 2007/01/15 17:53:16 corecode Exp $ */
|
||||
|
||||
/* Definitions for AMD x86-64 running DragonFly with ELF format
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
Contributed by David O'Brien <obrien@FreeBSD.org>
|
||||
Adapted from the FreeBSD version.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* $FreeBSD: src/contrib/gcc/config/i386/freebsd64.h,v 1.9 2004/07/28 04:44:23 kan Exp $ */
|
||||
|
||||
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fprintf (stderr, " (x86-64 DragonFly/ELF)");
|
||||
|
||||
/* Tell final.c that we don't need a label passed to mcount. */
|
||||
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "dfbsd_dynamic_linker", DFBSD_DYNAMIC_LINKER }
|
||||
|
||||
#undef MCOUNT_NAME
|
||||
#define MCOUNT_NAME ".mcount"
|
||||
|
||||
/* Provide a LINK_SPEC appropriate for the DragonFly/x86-64 ELF target.
|
||||
This is a copy of LINK_SPEC from <i386/dragonfly.h> tweaked for
|
||||
the x86-64 target.
|
||||
XXX We don't support two arch userland yet */
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
%{v:-V} \
|
||||
%{assert*} %{R*} %{rpath*} %{defsym*} \
|
||||
%{shared:-Bshareable %{h*} %{soname*}} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker %(dfbsd_dynamic_linker) }} \
|
||||
%{static:-Bstatic}} \
|
||||
%{symbolic:-Bsymbolic}"
|
||||
@@ -0,0 +1,148 @@
|
||||
/* Definitions for Intel 386 running MINIX with ELF format
|
||||
Copyright (C) 1996, 2000, 2002, 2004 Free Software Foundation, Inc.
|
||||
Contributed by Eric Youngdale.
|
||||
Modified for stabs-in-ELF by H.J. Lu.
|
||||
Adapted from GNU/Linux version by John Polstra.
|
||||
Continued development by David O'Brien <obrien@freebsd.org>
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
#undef MINIX_TARGET_CPU_CPP_BUILTINS
|
||||
#define MINIX_TARGET_CPU_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
builtin_define_with_int_value ("_EM_WSIZE", 4); \
|
||||
builtin_define_with_int_value ("_EM_PSIZE", 4); \
|
||||
builtin_define_with_int_value ("_EM_SSIZE", 2); \
|
||||
builtin_define_with_int_value ("_EM_LSIZE", 4); \
|
||||
builtin_define_with_int_value ("_EM_FSIZE", 4); \
|
||||
builtin_define_with_int_value ("_EM_DSIZE", 8); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (i386 MINIX/ELF)");
|
||||
|
||||
/* Override the default comment-starter of "/". */
|
||||
#undef ASM_COMMENT_START
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
#undef ASM_APP_ON
|
||||
#define ASM_APP_ON "#APP\n"
|
||||
|
||||
#undef ASM_APP_OFF
|
||||
#define ASM_APP_OFF "#NO_APP\n"
|
||||
|
||||
#undef DBX_REGISTER_NUMBER
|
||||
#define DBX_REGISTER_NUMBER(n) \
|
||||
(TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
||||
|
||||
#undef NO_PROFILE_COUNTERS
|
||||
#define NO_PROFILE_COUNTERS 1
|
||||
|
||||
/* Tell final.c that we don't need a label passed to mcount. */
|
||||
|
||||
#undef MCOUNT_NAME
|
||||
#define MCOUNT_NAME ".mcount"
|
||||
|
||||
/* Make gcc agree with <machine/ansi.h>. */
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD)
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "minix_dynamic_linker", MINIX_DYNAMIC_LINKER }
|
||||
|
||||
/* Provide a STARTFILE_SPEC appropriate for MINIX. Here we add
|
||||
the magical crtbegin.o file (see crtstuff.c) which provides part
|
||||
of the support for getting C++ file-scope static object constructed
|
||||
before entering `main'. */
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC \
|
||||
"%{!shared: \
|
||||
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
|
||||
%{!p:%{profile:gcrt1.o%s} \
|
||||
%{!profile:crt1.o%s}}}} \
|
||||
crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
|
||||
|
||||
/* Provide a ENDFILE_SPEC appropriate for MINIX. Here we tack on
|
||||
the magical crtend.o file (see crtstuff.c) which provides part of
|
||||
the support for getting C++ file-scope static object constructed
|
||||
before entering `main', followed by a normal "finalizer" file,
|
||||
`crtn.o'. */
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC \
|
||||
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
||||
|
||||
/* Provide a LINK_SPEC appropriate for MINIX. Here we provide support
|
||||
for the special GCC options -static and -shared, which allow us to
|
||||
link things in one of these three modes by applying the appropriate
|
||||
combinations of options at link-time. We like to support here for
|
||||
as many of the other GNU linker options as possible. But I don't
|
||||
have the time to search for those flags. I am sure how to add
|
||||
support for -soname shared_object_name. H.J.
|
||||
|
||||
I took out %{v:%{!V:-V}}. It is too much :-(. They can use
|
||||
-Wl,-V.
|
||||
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
%{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
|
||||
%{v:-V} \
|
||||
%{assert*} %{R*} %{rpath*} %{defsym*} \
|
||||
%{shared:-Bshareable %{h*} %{soname*}} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker %(minix_dynamic_linker) }} \
|
||||
%{static:-Bstatic}} \
|
||||
%{symbolic:-Bsymbolic}"
|
||||
|
||||
/* A C statement to output to the stdio stream FILE an assembler
|
||||
command to advance the location counter to a multiple of 1<<LOG
|
||||
bytes if it is within MAX_SKIP bytes.
|
||||
|
||||
This is used to align code labels according to Intel recommendations. */
|
||||
|
||||
#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
|
||||
#undef ASM_OUTPUT_MAX_SKIP_ALIGN
|
||||
#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE, LOG, MAX_SKIP) \
|
||||
if ((LOG) != 0) { \
|
||||
if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
||||
else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Don't default to pcc-struct-return, we want to retain compatibility with
|
||||
older gcc versions AND pcc-struct-return is nonreentrant.
|
||||
(even though the SVR4 ABI for the i386 says that records and unions are
|
||||
returned in memory). */
|
||||
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
@@ -0,0 +1,101 @@
|
||||
/* Base configuration file for all FreeBSD targets.
|
||||
Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Common MINIX configuration.
|
||||
All MINIX architectures should include this file, which will specify
|
||||
their commonalities.
|
||||
*/
|
||||
|
||||
/* In case we need to know. */
|
||||
#define USING_CONFIG_MINIX_SPEC 1
|
||||
|
||||
/* This defines which switch letters take arguments. On FreeBSD, most of
|
||||
the normal cases (defined in gcc.c) apply, and we also have -h* and
|
||||
-z* options (for the linker) (coming from SVR4).
|
||||
We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
|
||||
|
||||
#define MINIX_SWITCH_TAKES_ARG(CHAR) \
|
||||
(DEFAULT_SWITCH_TAKES_ARG (CHAR) \
|
||||
|| (CHAR) == 'h' \
|
||||
|| (CHAR) == 'z' /* ignored by ld */ \
|
||||
|| (CHAR) == 'R')
|
||||
|
||||
/* This defines which multi-letter switches take arguments. */
|
||||
|
||||
#define MINIX_WORD_SWITCH_TAKES_ARG(STR) \
|
||||
(DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
|
||||
|| !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \
|
||||
|| !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \
|
||||
|| !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker"))
|
||||
|
||||
#define MINIX_TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
builtin_define ("__minix"); \
|
||||
builtin_define ("__i386"); \
|
||||
MINIX_TARGET_CPU_CPP_BUILTINS(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Define the default MINIX-specific per-CPU hook code. */
|
||||
#define MINIX_TARGET_CPU_CPP_BUILTINS() do {} while (0)
|
||||
|
||||
/* Provide a CPP_SPEC appropriate for MINIX. We just deal with the GCC
|
||||
option `-posix', and PIC issues. */
|
||||
|
||||
#define MINIX_CPP_SPEC " \
|
||||
%(cpp_cpu) \
|
||||
%(cpp_arch) \
|
||||
%{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
/* Provide a STARTFILE_SPEC appropriate for MINIX. Here we add
|
||||
the magical crtbegin.o file (see crtstuff.c) which provides part
|
||||
of the support for getting C++ file-scope static object constructed
|
||||
before entering `main'. */
|
||||
|
||||
#define MINIX_STARTFILE_SPEC \
|
||||
"%{!shared: \
|
||||
%{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
|
||||
%{!p:%{profile:gcrt1.o%s} \
|
||||
%{!profile:crt1.o%s}}}} \
|
||||
crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
|
||||
|
||||
/* Provide a ENDFILE_SPEC appropriate for MINIX. Here we tack on
|
||||
the magical crtend.o file (see crtstuff.c) which provides part of
|
||||
the support for getting C++ file-scope static object constructed
|
||||
before entering `main', followed by a normal "finalizer" file,
|
||||
`crtn.o'. */
|
||||
|
||||
#define MINIX_ENDFILE_SPEC \
|
||||
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
||||
|
||||
/* Provide a LIB_SPEC appropriate for MINIX. Just select the appropriate
|
||||
libc, depending on whether we're doing profiling or need threads support.
|
||||
(similar to the default, except no -lg, and no -p). */
|
||||
|
||||
#define MINIX_LIB_SPEC " \
|
||||
%{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \
|
||||
is built with the --enable-threads configure-time option.} \
|
||||
%{!shared: \
|
||||
%{!pg: -lc} \
|
||||
%{pg: -lc_p} \
|
||||
}"
|
||||
|
||||
#define MINIX_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
|
||||
@@ -0,0 +1,71 @@
|
||||
/* Base configuration file for all FreeBSD targets.
|
||||
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
/* Common MINIX configuration.
|
||||
All FreeBSD architectures should include this file, which will specify
|
||||
their commonalities.
|
||||
*/
|
||||
|
||||
/* In case we need to know. */
|
||||
#define USING_CONFIG_MINIX 1
|
||||
|
||||
/* This defines which switch letters take arguments. On MINIX, most of
|
||||
the normal cases (defined in gcc.c) apply, and we also have -h* and
|
||||
-z* options (for the linker) (coming from SVR4).
|
||||
We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
|
||||
|
||||
#undef SWITCH_TAKES_ARG
|
||||
#define SWITCH_TAKES_ARG(CHAR) (MINIX_SWITCH_TAKES_ARG(CHAR))
|
||||
|
||||
#undef WORD_SWITCH_TAKES_ARG
|
||||
#define WORD_SWITCH_TAKES_ARG(STR) (MINIX_WORD_SWITCH_TAKES_ARG(STR))
|
||||
|
||||
#undef TARGET_OS_CPP_BUILTINS
|
||||
#define TARGET_OS_CPP_BUILTINS() MINIX_TARGET_OS_CPP_BUILTINS()
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC MINIX_CPP_SPEC
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC MINIX_STARTFILE_SPEC
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC MINIX_ENDFILE_SPEC
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC MINIX_LIB_SPEC
|
||||
|
||||
|
||||
/************************[ Target stuff ]***********************************/
|
||||
|
||||
/* All MINIX Architectures support the ELF object file format. */
|
||||
#undef OBJECT_FORMAT_ELF
|
||||
#define OBJECT_FORMAT_ELF
|
||||
|
||||
/* Don't assume anything about the header files. */
|
||||
#undef NO_IMPLICIT_EXTERN_C
|
||||
#define NO_IMPLICIT_EXTERN_C 1
|
||||
|
||||
/* Code generation parameters. */
|
||||
|
||||
/* Use periods rather than dollar signs in special g++ assembler names.
|
||||
This ensures the configuration knows our system correctly so we can link
|
||||
with libraries compiled with the native cc. */
|
||||
#undef NO_DOLLAR_IN_LABEL
|
||||
@@ -0,0 +1,5 @@
|
||||
# Compile crtbeginS.o and crtendS.o with pic.
|
||||
CRTSTUFF_T_CFLAGS_S = -fPIC
|
||||
|
||||
# Compile libgcc.a with pic.
|
||||
TARGET_LIBGCC2_CFLAGS += -fPIC
|
||||
@@ -0,0 +1,64 @@
|
||||
#if 0 /* $NetBSD$ */
|
||||
#
|
||||
# This is Solaris x86 specific GCC run-time environment patch, which
|
||||
# makes it possible to reliably deploy .init snippets. Trouble is that
|
||||
# Solaris linker erroneously pads .init segment with zeros [instead of
|
||||
# nops], which is bound to SEGV early upon program start-up. This bug
|
||||
# was recognized by GCC team [it is mentioned in source code], but
|
||||
# workaround apparently and obviously erroneously slipped away in some
|
||||
# newer GCC release. This patch compensates for this mishap by dropping
|
||||
# modified values-X*.o into GCC installation tree. Object modules in
|
||||
# question are normally provided by Sun and linked prior crtbegin.o.
|
||||
# Modified versions are additionally crafted with custom .init segment,
|
||||
# which does some magic:-)
|
||||
# <appro@fy.chalmers.se>
|
||||
set -e
|
||||
gcc=gcc
|
||||
if [[ "x$1" = x*gcc ]]; then
|
||||
gcc=$1; shift
|
||||
fi
|
||||
gcc_dir=`${gcc} "$@" -print-libgcc-file-name`
|
||||
gcc_dir=${gcc_dir%/*} #*/
|
||||
set -x
|
||||
${gcc} "$@" -c -o $gcc_dir/values-Xa.o -DXa $0
|
||||
${gcc} "$@" -c -o $gcc_dir/values-Xc.o -DXc $0
|
||||
${gcc} "$@" -c -o $gcc_dir/values-Xt.o -DXt $0
|
||||
exit
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#if defined(Xa)
|
||||
const enum version _lib_version = ansi_1;
|
||||
#elif defined(Xc)
|
||||
const enum version _lib_version = strict_ansi;
|
||||
#elif defined(Xt)
|
||||
const enum version _lib_version = c_issue_4;
|
||||
#else
|
||||
#error "compile by issuing 'ksh -f values.c [gcc] [-m64]'"
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__)
|
||||
asm("\n"
|
||||
".section .init\n"
|
||||
".align 1\n"
|
||||
" leaq 1f(%rip),%rax\n"
|
||||
"1: cmpl $0,2f-1b(%rax)\n"
|
||||
" jne 2f\n"
|
||||
" jmp 2f+5\n"
|
||||
" .skip 9\n" /* pad up to 0x1b bytes */
|
||||
"2:\n"
|
||||
);
|
||||
#else
|
||||
asm("\n"
|
||||
".section .init\n"
|
||||
".align 1\n"
|
||||
" call 1f\n"
|
||||
"1: popl %eax\n"
|
||||
" cmpl $0,2f-1b(%eax)\n"
|
||||
" jne 2f\n"
|
||||
" jmp 2f+5\n"
|
||||
" .skip 10\n" /* pad up to 0x1b bytes */
|
||||
"2:\n"
|
||||
);
|
||||
#endif
|
||||
Executable
+732
@@ -0,0 +1,732 @@
|
||||
#!/bin/sh
|
||||
# $NetBSD: mknative-gcc,v 1.66 2012/01/10 12:27:54 skrll Exp $
|
||||
#
|
||||
# Shell script for generating all the constants needed for a native
|
||||
# platform build of src/gnu/dist/gcc.
|
||||
#
|
||||
|
||||
# initialise
|
||||
|
||||
_TMPDIR=$2
|
||||
_TOP=$3
|
||||
_PLATFORM=$4
|
||||
_DESTDIR=$5
|
||||
_ABI=$6
|
||||
_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'`
|
||||
_GNU_DIST=`cd ${_VPATH}; pwd`
|
||||
|
||||
if [ -z "$_DESTDIR" ]; then
|
||||
echo "\$_DESTDIR is empty" 2>&1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. $_TOP/tools/gcc/mknative.common
|
||||
|
||||
# default to GCC 4.1 for now
|
||||
_OUTDIR="$_TOP/gnu"
|
||||
_OUTDIRBASE="gnu"
|
||||
|
||||
##### gnu/lib/crtstuff #####
|
||||
|
||||
get_crtstuff () {
|
||||
_subdir="$1"
|
||||
mkdir -p $_OUTDIR/lib/$_subdir/arch
|
||||
|
||||
getvars gcc/Makefile \
|
||||
INCLUDES CRTSTUFF_CFLAGS CRTSTUFF_T_CFLAGS \
|
||||
tm_defines xm_file xm_defines \
|
||||
| sed "s,-I$_DESTDIR/usr/include,,g" \
|
||||
| write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH.mk
|
||||
}
|
||||
|
||||
##### gnu/lib/libg2c #####
|
||||
|
||||
get_libg2c () {
|
||||
mkdir -p $_OUTDIR/lib/libg2c3/arch/$MACHINE_ARCH
|
||||
|
||||
write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/config.h <$_TMPDIR/$_PLATFORM/libf2c/libU77/config.h
|
||||
write_c $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/g2c.h <$_TMPDIR/$_PLATFORM/libf2c/g2c.h
|
||||
|
||||
{
|
||||
getvars $_PLATFORM/libf2c/Makefile \
|
||||
F2CEXT
|
||||
getvars $_PLATFORM/libf2c/libF77/Makefile \
|
||||
ALL_CFLAGS OBJS
|
||||
getvars $_PLATFORM/libf2c/libI77/Makefile \
|
||||
ALL_CFLAGS OBJS | sed 's,=,+=,'
|
||||
getvars $_PLATFORM/libf2c/libU77/Makefile \
|
||||
ALL_CFLAGS OBJS | sed 's,=,+=,'
|
||||
} | write_mk $_OUTDIRBASE/lib/libg2c3/arch/$MACHINE_ARCH/defs.mk
|
||||
}
|
||||
|
||||
##### gnu/lib/libgcc #####
|
||||
|
||||
get_libgcc_list_funcs_asm () {
|
||||
{
|
||||
getvars gcc/Makefile LIB1ASMFUNCS | {
|
||||
# print newline separated list
|
||||
sed -e '
|
||||
s,^.*=,,
|
||||
s, *$,,
|
||||
s, *, ,g
|
||||
s, ,\
|
||||
,g'
|
||||
}
|
||||
getvars gcc/Makefile LIB2FUNCS_EXTRA | {
|
||||
# print newline separated list
|
||||
sed -e '
|
||||
s,^.*=,,
|
||||
s, *$,,
|
||||
s, *, ,g
|
||||
s, ,\
|
||||
,g' | \
|
||||
sed -ne '
|
||||
/\.S$/ { s,^.*/,,; s,\.S$,,; p; }
|
||||
/\.asm$/ { s,^.*/,,; s,\.asm$,,; p; }
|
||||
'
|
||||
}
|
||||
} | {
|
||||
# print foo and foo_s
|
||||
sed -ne '
|
||||
/./ {
|
||||
p
|
||||
s,$,_s,
|
||||
p
|
||||
}
|
||||
'
|
||||
} | sort
|
||||
}
|
||||
|
||||
get_libgcc_list_funcs_lib () {
|
||||
local _lib=$1
|
||||
local _lib_prefix=${_lib%.*}
|
||||
local _lib_suffix=${_lib#*.}
|
||||
local _abi=${2:-'\.'}
|
||||
|
||||
cat build/gcc/libgcc.mk | \
|
||||
grep '/'${_abi}'/' | \
|
||||
sed -ne '
|
||||
/^'${_abi}'\/'${_lib_prefix}'\.'${_lib_suffix}': .*\.o$/ {
|
||||
s,^.*/,,
|
||||
s,\.o$,,
|
||||
p
|
||||
}
|
||||
' | sort
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_libs () {
|
||||
local _abi=${1:-'\.'}
|
||||
|
||||
cat build/gcc/libgcc.mk | \
|
||||
grep '/'${_abi}'/' | \
|
||||
egrep '^'${_abi}'\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \
|
||||
sed -e '
|
||||
s,^'${_abi}'\/,,
|
||||
s,: .*/, ,
|
||||
s,^\(.*\) \(.*\)$,\2 \1,
|
||||
' | sort
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_srcs () {
|
||||
local _abi=${1:-'\.'} # XXX not used
|
||||
|
||||
if [ -e $_TOP/${libgcc_db_funcs}.S ]; then
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
|
||||
comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \
|
||||
sed -e 's,\(.*\),\1.o \1.c,'
|
||||
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
|
||||
comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \
|
||||
sed -e 's,\(.*\),\1.o \1.S,'
|
||||
else
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
|
||||
sed -e 's,\(.*\),\1.o \1.c,'
|
||||
fi | sort
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_tmplsrcs () {
|
||||
local _abi=${1:-'\.'}
|
||||
|
||||
grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \
|
||||
grep '/'${_abi}'/' | \
|
||||
sed -ne '
|
||||
s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1,
|
||||
# basename
|
||||
/\$/ { s,\$.*/,,; }
|
||||
/\// { s,\/.*/,,; }
|
||||
p
|
||||
' | sort -u
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_xflags () {
|
||||
local _flags=$1
|
||||
local _abi=${2:-'\.'}
|
||||
|
||||
grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \
|
||||
grep '/'${_abi}'/' | \
|
||||
sed -n '
|
||||
x
|
||||
:loop
|
||||
g
|
||||
s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\5 \2/p
|
||||
g
|
||||
s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\1 \3 \4\/\5/
|
||||
h
|
||||
t loop
|
||||
' | sort
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_cppflags () {
|
||||
get_libgcc_list_objs_xflags D $1
|
||||
}
|
||||
|
||||
get_libgcc_list_objs_copts () {
|
||||
get_libgcc_list_objs_xflags fmx $1
|
||||
}
|
||||
|
||||
get_libgcc_list_tmplsrcs () {
|
||||
local _lib=$1
|
||||
local _abi=$2 # XXX not used
|
||||
local _tmplallsrcs=$( mktemp /tmp/mknative-gcc._tmplallsrcs.XXXXXX )
|
||||
|
||||
touch $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*}
|
||||
touch $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*}
|
||||
touch $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*}
|
||||
|
||||
# all files
|
||||
local _lib_prefix=${_lib%.*}
|
||||
local _lib_suffix=${_lib#*.}
|
||||
join $_TOP/$libgcc_db_objs_libs $_TOP/$libgcc_db_objs_tmplsrcs | \
|
||||
grep ${_lib_prefix}'\.'${_lib_suffix} | cut -d' ' -f 3 | sort -u > \
|
||||
$_tmplallsrcs
|
||||
|
||||
# TMPLFPSRCS = [fdp]p-bit.c
|
||||
grep '[fdt]p-bit\.c' <$_tmplallsrcs | sort -u | \
|
||||
writefile ${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*}
|
||||
|
||||
# TMPLASMSRCS = $(LIB1ASMSRC)
|
||||
grep '\$(LIB1ASMSRC)' <$_tmplallsrcs | sort -u | \
|
||||
writefile ${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*}
|
||||
|
||||
# TMPLSRCS is anything else; exclude TMPLFPSRCS and TMPLASMSRCS
|
||||
cat $_tmplallsrcs | \
|
||||
comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} | \
|
||||
comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \
|
||||
writefile ${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*}
|
||||
|
||||
rm -f $_tmplallsrcs
|
||||
}
|
||||
|
||||
get_libgcc_new_analyze () {
|
||||
local _abi=$1
|
||||
|
||||
mkdir -p $_TOP/${_machine_arch_subdir}
|
||||
|
||||
touch $_TOP/${libgcc_db_funcs}.S
|
||||
get_libgcc_list_funcs_asm | \
|
||||
writefile ${libgcc_db_funcs}.S
|
||||
|
||||
for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
|
||||
touch $_TOP/${libgcc_db_funcs}.${_lib%.*}
|
||||
get_libgcc_list_funcs_lib $_lib $_abi | \
|
||||
writefile ${libgcc_db_funcs}.${_lib%.*}
|
||||
done
|
||||
|
||||
get_libgcc_list_objs_libs $_abi | writefile ${libgcc_db_objs_libs}
|
||||
get_libgcc_list_objs_srcs $_abi | writefile ${libgcc_db_objs_srcs}
|
||||
get_libgcc_list_objs_tmplsrcs $_abi | writefile ${libgcc_db_objs_tmplsrcs}
|
||||
get_libgcc_list_objs_cppflags $_abi | writefile ${libgcc_db_objs_cppflags}
|
||||
get_libgcc_list_objs_copts $_abi | writefile ${libgcc_db_objs_copts}
|
||||
|
||||
for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
|
||||
get_libgcc_list_tmplsrcs $_lib $_abi
|
||||
done
|
||||
}
|
||||
|
||||
#####
|
||||
|
||||
get_libgcc_gen_tmplsrcs_tmplsrcs () {
|
||||
local _lib=$1
|
||||
|
||||
printf '\n'
|
||||
printf 'TMPLSRCS.%s = \\\n' $_lib
|
||||
sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*}
|
||||
}
|
||||
|
||||
get_libgcc_gen_tmplsrcs_tmplfpsrcs () {
|
||||
local _lib=$1
|
||||
|
||||
printf '\n'
|
||||
printf 'TMPLFPSRCS.%s = \\\n' $_lib
|
||||
sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*}
|
||||
}
|
||||
|
||||
get_libgcc_gen_tmplsrcs_tmplasmsrcs () {
|
||||
local _lib=$1
|
||||
|
||||
printf '\n'
|
||||
printf 'TMPLASMSRCS.%s = \\\n' $_lib
|
||||
sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \
|
||||
sed -e 's,LIB1ASMSRC,G_&,'
|
||||
}
|
||||
|
||||
get_libgcc_gen_srcs () {
|
||||
local _lib=$1
|
||||
|
||||
printf '\n'
|
||||
printf 'SRCS.%s = \\\n' $_lib
|
||||
if [ -e $_TOP/${libgcc_db_funcs}.S ]; then
|
||||
comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
|
||||
sed -e 's,$,.c,; s,^,tmp_,'
|
||||
comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
|
||||
sed -e 's,$,.S,; s,^,tmp_,'
|
||||
else
|
||||
cat $_TOP/${libgcc_db_funcs}.${_lib%.*} | \
|
||||
sed -e 's,$,.c,; s,^,tmp_,'
|
||||
fi | sort | \
|
||||
sed -e 's,^, ,; s,$, \\,'
|
||||
}
|
||||
|
||||
_lookup_objs () {
|
||||
local _obj=$1; local _key=$2
|
||||
|
||||
eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2
|
||||
}
|
||||
|
||||
get_libgcc_gen_srcs_tmplsrcs () {
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | \
|
||||
while read _obj; do
|
||||
printf 'SRCS.tmp_%s=%s\n' \
|
||||
"$( _lookup_objs $_obj srcs )" \
|
||||
"$( _lookup_objs $_obj tmplsrcs )"
|
||||
done | \
|
||||
sed -e 's,\$(\(.*\)),${G_\1},'
|
||||
}
|
||||
|
||||
get_libgcc_gen_srcs_cppflags () {
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | \
|
||||
while read _obj; do
|
||||
printf '_CPPFLAGS.tmp_%s=%s\n' \
|
||||
"$( _lookup_objs $_obj srcs )" \
|
||||
"$( _lookup_objs $_obj cppflags | xargs )"
|
||||
done
|
||||
}
|
||||
|
||||
get_libgcc_gen_srcs_copts () {
|
||||
cut -f1 $_TOP/${libgcc_db_objs_libs} | \
|
||||
while read _obj; do
|
||||
printf 'COPTS.tmp_%s=%s\n' \
|
||||
"$( _lookup_objs $_obj srcs )" \
|
||||
"$( _lookup_objs $_obj copts | xargs )"
|
||||
done
|
||||
}
|
||||
|
||||
get_libgcc_new_generate () {
|
||||
local _abi=$1
|
||||
|
||||
for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
|
||||
for _tmpl in tmplsrcs tmplfpsrcs tmplasmsrcs; do
|
||||
eval get_libgcc_gen_tmplsrcs_${_tmpl} $_lib | \
|
||||
write_mk ${libgcc_libs_mk}.${_lib%.*}.tmplsrcs.${_tmpl}.mk
|
||||
done
|
||||
|
||||
get_libgcc_gen_srcs $_lib | \
|
||||
write_mk ${libgcc_libs_mk}.${_lib%.*}.srcs.mk
|
||||
done
|
||||
|
||||
for _arg in tmplsrcs cppflags copts; do
|
||||
eval get_libgcc_gen_srcs_${_arg} | \
|
||||
eval writefile \$libgcc_srcs_mk_${_arg}
|
||||
done
|
||||
}
|
||||
|
||||
#####
|
||||
|
||||
get_libgcc_new () {
|
||||
_subdir="$1"
|
||||
_abi="$2"
|
||||
|
||||
# List of generated files.
|
||||
|
||||
_machine_arch_subdir=$_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH/$_abi
|
||||
|
||||
libgcc_db_funcs=${_machine_arch_subdir}/funcs
|
||||
libgcc_db_tmplsrcs=${_machine_arch_subdir}/tmplsrcs
|
||||
libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs
|
||||
libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs
|
||||
libgcc_db_objs_tmplsrcs=${_machine_arch_subdir}/objs.tmplsrcs
|
||||
libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags
|
||||
libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts
|
||||
|
||||
get_libgcc_new_analyze $_abi
|
||||
|
||||
libgcc_libs_mk=${_machine_arch_subdir}/libs
|
||||
libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk
|
||||
libgcc_srcs_mk_tmplsrcs=${_machine_arch_subdir}/srcs.tmplsrcs.mk
|
||||
libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk
|
||||
libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk
|
||||
|
||||
get_libgcc_new_generate $_abi
|
||||
}
|
||||
|
||||
get_libgcc () {
|
||||
_subdir="$1"
|
||||
mkdir -p $_OUTDIR/lib/lib$_subdir/arch
|
||||
|
||||
case "$_subdir" in
|
||||
gcc4|gcc)
|
||||
_extravars="COLLECT2 UNWIND_H xm_include_list"
|
||||
_archsubdir=""
|
||||
;;
|
||||
esac
|
||||
|
||||
# DPBIT, FPBIT only used on mn10[23]00, we don't need them.
|
||||
# XXX we should probably grab everything Just In Case for
|
||||
# the future.
|
||||
{
|
||||
getvars gcc/Makefile \
|
||||
INCLUDES LIB2ADD LIB2ADDEH LIB2ADD_ST \
|
||||
LIB1ASMFUNCS LIB1ASMSRC \
|
||||
LIB2_DIVMOD_FUNCS LIB2FUNCS_ST \
|
||||
LIB2FUNCS_EXTRA \
|
||||
LIBGCC2_CFLAGS \
|
||||
SHLIB_MKMAP SHLIB_MKMAP_OPTS \
|
||||
SHLIB_MAPFILES SHLIB_NM_FLAGS \
|
||||
EXTRA_HEADERS xm_defines \
|
||||
tm_defines ${_extravars}
|
||||
} | sed "s,-I$_DESTDIR/usr/include,,g" \
|
||||
| write_mk $_OUTDIRBASE/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH.mk
|
||||
|
||||
# Generate new style files.
|
||||
if [ -n "${MKNATIVE_LIBGCC_NEW}" ]; then
|
||||
get_libgcc_new $_subdir $_ABI
|
||||
fi
|
||||
}
|
||||
|
||||
##### gnu/lib/libgcov #####
|
||||
|
||||
get_libgcov () {
|
||||
_subdir="$1"
|
||||
|
||||
mkdir -p $_OUTDIR/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH
|
||||
|
||||
{
|
||||
getvars gcc/Makefile \
|
||||
LIBGCOV
|
||||
} | write_mk $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/defs.mk
|
||||
|
||||
write_c $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$MACHINE_ARCH/gcov-iov.h \
|
||||
<$_TMPDIR/gcc/gcov-iov.h
|
||||
|
||||
}
|
||||
|
||||
##### gnu/usr.bin/gcc[34]/libiberty #####
|
||||
|
||||
get_gcc_libiberty () {
|
||||
_subdir="$1"
|
||||
case "$_subdir" in
|
||||
gcc4)
|
||||
_libibertydir="usr.bin/$_subdir/libiberty"
|
||||
;;
|
||||
gcc)
|
||||
_libibertydir="lib/libiberty"
|
||||
;;
|
||||
esac
|
||||
mkdir -p $_OUTDIR/$_libibertydir/arch/$MACHINE_ARCH
|
||||
|
||||
getvars libiberty/Makefile \
|
||||
ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
|
||||
| write_mk $_OUTDIRBASE/$_libibertydir/defs.mk
|
||||
|
||||
write_c $_OUTDIRBASE/$_libibertydir/arch/$MACHINE_ARCH/config.h \
|
||||
<$_TMPDIR/libiberty/config.h
|
||||
}
|
||||
|
||||
##### lib/libdecnumber #####
|
||||
|
||||
get_libdecnumber () {
|
||||
_subdir="$1"
|
||||
|
||||
mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH
|
||||
write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/config.h \
|
||||
<$_TMPDIR/libdecnumber/config.h
|
||||
}
|
||||
|
||||
##### lib/libgomp #####
|
||||
|
||||
get_libgomp () {
|
||||
_subdir="$1"
|
||||
|
||||
mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \
|
||||
<$_TMPDIR/$_PLATFORM/libgomp/config.h
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp_f.h \
|
||||
<$_TMPDIR/$_PLATFORM/libgomp/libgomp_f.h
|
||||
write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/libgomp.spec \
|
||||
<$_TMPDIR/$_PLATFORM/libgomp/libgomp.spec
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/omp.h \
|
||||
<$_TMPDIR/$_PLATFORM/libgomp/omp.h
|
||||
}
|
||||
|
||||
##### gnu/lib/libobjc #####
|
||||
|
||||
get_libobjc () {
|
||||
_subdir="$1/arch/$MACHINE_ARCH"
|
||||
_options="ALL_OPT_FILES"
|
||||
_unwind="UNWIND_H"
|
||||
|
||||
mkdir -p $_OUTDIR/lib/$_subdir
|
||||
|
||||
{
|
||||
if [ -n "$_options" ]; then
|
||||
getvars gcc/Makefile $_options
|
||||
fi
|
||||
getvars $_PLATFORM/libobjc/Makefile \
|
||||
ALL_CFLAGS INCLUDES OBJS OBJC_H \
|
||||
| sed "s,$_GNU_DIST,\${GNUHOSTDIST},g"
|
||||
if [ -n "$_unwind" ]; then
|
||||
getvars gcc/Makefile $_unwind
|
||||
fi
|
||||
} | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk
|
||||
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/config.h \
|
||||
<$_TMPDIR/$_PLATFORM/libobjc/config.h
|
||||
}
|
||||
|
||||
##### gnu/lib/libstdc++-v3 #####
|
||||
|
||||
get_libstdcxx_v3 () {
|
||||
_subdir="$1"
|
||||
mkdir -p $_OUTDIR/lib/$_subdir/arch/$MACHINE_ARCH
|
||||
|
||||
case ${_subdir} in
|
||||
*)
|
||||
_src_CC_files="atomicity_file CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_CC CLOCALE_CC BASIC_FILE_CC"
|
||||
_headers1="host_headers debug_headers tr1_headers c_compatibility_headers_extra tr1_impl_headers parallel_headers decimal_headers"
|
||||
_headers2="thread_host_headers host_headers_extra"
|
||||
_build_headers="c++allocator.h c++config.h cxxabi_tweaks.h gthr-default.h gthr-posix.h gthr-single.h gthr-tpf.h gthr.h"
|
||||
_unwind="UNWIND_H"
|
||||
;;
|
||||
esac
|
||||
|
||||
# build files
|
||||
for h in $_build_headers; do
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/$h \
|
||||
<$_TMPDIR/$_PLATFORM/libstdc++-v3/include/$_PLATFORM/bits/$h
|
||||
done
|
||||
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/config.h \
|
||||
<$_TMPDIR/$_PLATFORM/libstdc++-v3/config.h
|
||||
write_c $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/gstdint.h \
|
||||
<$_TMPDIR/$_PLATFORM/libstdc++-v3/include/gstdint.h
|
||||
|
||||
{
|
||||
# libsupc++
|
||||
getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \
|
||||
sources | sed 's/^G_sources=/G_LIBSUPCXX_SOURCES=/'
|
||||
getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \
|
||||
c_sources | sed 's/^G_c_sources=/G_LIBSUPCXX_C_SOURCES=/'
|
||||
|
||||
# src
|
||||
getvars $_PLATFORM/libstdc++-v3/src/Makefile \
|
||||
sources $_src_CC_files SECTION_FLAGS | sed 's/^G_sources=/G_SRC_SOURCES=/'
|
||||
|
||||
# include
|
||||
getvars $_PLATFORM/libstdc++-v3/include/Makefile \
|
||||
c_base_headers std_headers | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g'
|
||||
getvars $_PLATFORM/libstdc++-v3/include/Makefile \
|
||||
bits_headers backward_headers ext_headers c_base_headers_extra \
|
||||
$_headers1 | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g'
|
||||
getvars $_PLATFORM/libstdc++-v3/include/Makefile \
|
||||
$_headers2 | sed -e 's#\./[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g'
|
||||
|
||||
if [ -n "$_unwind" ]; then
|
||||
getvars gcc/Makefile $_unwind
|
||||
fi
|
||||
} | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$MACHINE_ARCH/defs.mk
|
||||
}
|
||||
|
||||
##### gnu/usr.bin/gcc3 #####
|
||||
|
||||
get_gcc () {
|
||||
_subdir="$1"
|
||||
mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH
|
||||
mkdir -p $_OUTDIR/usr.bin/libcpp/arch/$MACHINE_ARCH
|
||||
case ${_subdir} in
|
||||
gcc4)
|
||||
_buildname="BUILD_"
|
||||
_libcppsubdir=""
|
||||
_extravars="TM_H ALL_OPT_FILES"
|
||||
_hconfig_h=""
|
||||
_extravars2="tm_file_list build_xm_include_list"
|
||||
_extravars3="tm_p_include_list"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
_buildname="BUILD_"
|
||||
_libcppsubdir=""
|
||||
_extravars="TM_H ALL_OPT_FILES"
|
||||
_hconfig_h=""
|
||||
_extravars2="tm_file_list build_xm_include_list"
|
||||
_extravars3="tm_p_include_list"
|
||||
;;
|
||||
esac
|
||||
|
||||
{
|
||||
getvars gcc/Makefile \
|
||||
${_buildname}EARLY_SUPPORT ${_buildname}ERRORS ${_buildname}PRINT \
|
||||
${_buildname}RTL ${_buildname}SUPPORT ${_buildname}VARRAY | \
|
||||
sed -e 's#build/errors.o#build-errors.o#g' \
|
||||
-e 's#build/print-rtl.o#build-print-rtl.o#g' \
|
||||
-e 's#build/rtl.o#build-rtl.o#g' \
|
||||
-e 's#build/varray.o#build-varray.o#g' \
|
||||
-e 's#build/ggc-none.o#build-ggc-none.o#g' \
|
||||
-e 's#build/##g'
|
||||
getvars gcc/Makefile \
|
||||
ALL_CFLAGS ALL_CPPFLAGS C_AND_OBJC_OBJS C_OBJS CCCP_OBJS \
|
||||
GCOV_OBJS PROTO_OBJS ${_extravars1} \
|
||||
INCLUDES md_file OBJC_OBJS OBJS out_file version \
|
||||
BUILD_PREFIX RTL_H TREE_H ${_hconfig_h} BASIC_BLOCK_H GCC_H \
|
||||
GTFILES_SRCDIR GTFILES_FILES_FILES GTFILES_FILES_LANGS \
|
||||
GTFILES GTFILES_LANG_DIR_NAMES \
|
||||
tm_defines host_xm_file host_xm_defines tm_p_file \
|
||||
target_cpu_default ${_extravars} ${_extravars2} \
|
||||
lang_specs_files ${_extravars3} \
|
||||
| sed "s,-I$_DESTDIR/usr/include,,g"
|
||||
getvars gcc/Makefile \
|
||||
LIB2ADDEHDEP | sed 's/unwind.inc//'
|
||||
getvars gcc/Makefile \
|
||||
CXX_OBJS CXX_C_OBJS | sed 's/cp\///g'
|
||||
getvars gcc/Makefile \
|
||||
F77_OBJS | sed 's/f\///g'
|
||||
case ${_subdir} in
|
||||
gcc4 | gcc)
|
||||
getvars libcpp/Makefile \
|
||||
libcpp_a_OBJS
|
||||
;;
|
||||
gcc3)
|
||||
getvars gcc/Makefile \
|
||||
LIBCPP_OBJS LIBCPP_H
|
||||
;;
|
||||
esac
|
||||
getvars gcc/Makefile \
|
||||
ENABLE_SHARED
|
||||
case ${_subdir} in
|
||||
gcc4 | gcc)
|
||||
echo G_SHLIB_LINK="$CC -shared"
|
||||
echo G_SHLIB_MULTILIB=.
|
||||
;;
|
||||
esac
|
||||
} | write_mk $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/defs.mk
|
||||
|
||||
case "$_subdir" in
|
||||
gcc4)
|
||||
write_c $_OUTDIRBASE/usr.bin/$_subdir/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h
|
||||
hfiles='auto-host gencheck configargs gthr-default tm bconfig config multilib'
|
||||
;;
|
||||
gcc)
|
||||
write_c $_OUTDIRBASE/usr.bin/libcpp/arch/$MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h
|
||||
hfiles='auto-host configargs gthr-default tm bconfig config multilib bversion plugin-version'
|
||||
;;
|
||||
esac
|
||||
for f in $hfiles; do
|
||||
write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h
|
||||
if [ "${MACHINE_ARCH}" = "powerpc" -a "${f}" = "configargs" ]
|
||||
then
|
||||
ex <<__EOF__ $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f.h
|
||||
/configuration_arguments/ s/$//
|
||||
ya
|
||||
i
|
||||
#ifdef _SOFT_FLOAT
|
||||
.
|
||||
pu
|
||||
s/";$/ -with-float=soft";/
|
||||
a
|
||||
#else
|
||||
#endif
|
||||
.
|
||||
. m +1
|
||||
/configure_default_options/ s/{ NULL.*$//
|
||||
a
|
||||
#ifdef _SOFT_FLOAT
|
||||
{ "float", "soft" },
|
||||
#endif
|
||||
{ NULL, NULL }
|
||||
};
|
||||
.
|
||||
wq
|
||||
__EOF__
|
||||
fi
|
||||
done
|
||||
|
||||
# keep identical
|
||||
for f in all-tree.def; do
|
||||
cp $_TMPDIR/gcc/$f $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f
|
||||
done
|
||||
|
||||
# special transforms
|
||||
for f in gtyp-input.list; do
|
||||
sed -e 's/^.*external\/gpl3\/gcc\/dist/SRCDIR/' < $_TMPDIR/gcc/$f > $_OUTDIR/usr.bin/$_subdir/arch/$MACHINE_ARCH/$f
|
||||
done
|
||||
|
||||
# special platforms
|
||||
if [ "${MACHINE_ARCH}" = "sh3el" -o "${MACHINE_ARCH}" = "sh3eb" ]; then
|
||||
write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$MACHINE_ARCH/sysroot-suffix.h <$_TMPDIR/gcc/sysroot-suffix.h
|
||||
fi
|
||||
}
|
||||
|
||||
##### main #####
|
||||
|
||||
case "$1" in
|
||||
# .mk and .h files for libgcc bootstrap (from host build)
|
||||
libgcc)
|
||||
get_libgcc gcc3
|
||||
get_crtstuff crtstuff3
|
||||
exit 0
|
||||
;;
|
||||
|
||||
libgcc4)
|
||||
get_libgcc gcc4
|
||||
get_crtstuff crtstuff4
|
||||
exit 0
|
||||
;;
|
||||
|
||||
libgcc45)
|
||||
_OUTDIR="$_TOP/external/gpl3/gcc"
|
||||
_OUTDIRBASE="external/gpl3/gcc"
|
||||
get_libgcc gcc
|
||||
get_crtstuff crtstuff
|
||||
get_libgcov gcc
|
||||
exit 0
|
||||
;;
|
||||
|
||||
# gcc files
|
||||
gcc4)
|
||||
get_gcc gcc4
|
||||
get_libgcc gcc4
|
||||
get_libgcov gcc4
|
||||
get_crtstuff crtstuff4
|
||||
get_gcc_libiberty gcc4
|
||||
get_libobjc libobjc4
|
||||
get_libstdcxx_v3 libstdc++-v3_4
|
||||
exit 0
|
||||
;;
|
||||
|
||||
gcc45)
|
||||
_OUTDIR="$_TOP/external/gpl3/gcc"
|
||||
_OUTDIRBASE="external/gpl3/gcc"
|
||||
get_gcc gcc
|
||||
get_libgcc gcc
|
||||
get_libgcov gcc
|
||||
get_crtstuff crtstuff
|
||||
get_gcc_libiberty gcc
|
||||
get_libobjc libobjc
|
||||
get_libstdcxx_v3 libstdc++-v3
|
||||
get_libdecnumber libdecnumber
|
||||
get_libgomp libgomp
|
||||
exit 0
|
||||
;;
|
||||
|
||||
|
||||
*) echo invalid arguments; exit 1;;
|
||||
esac
|
||||
@@ -0,0 +1,91 @@
|
||||
# $NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $
|
||||
#
|
||||
# from: NetBSD: mknative,v 1.12 2003/03/05 06:17:17 mrg Exp
|
||||
#
|
||||
# shell-fragment common to all "mknative" scripts
|
||||
|
||||
bomb()
|
||||
{
|
||||
echo >&2 "ABORT: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure we can run OK.
|
||||
if [ -x "$MAKE" ]; then
|
||||
:
|
||||
else
|
||||
bomb "MAKE not set"
|
||||
fi
|
||||
|
||||
# usage: getvars MAKEFILE VARNAME [VARNAME...]
|
||||
#
|
||||
getvars()
|
||||
{
|
||||
_mf="$1"; shift
|
||||
case "$MAKE" in
|
||||
*gmake)
|
||||
env MAKEFLAGS= $MAKE -f - -f "$_TMPDIR/$_mf" _x_ <<EOF || bomb "getvars $_mf $* failed"
|
||||
define echo_var
|
||||
@echo G_\${var}="\${\${var}}" | sed -e 's,\([^\.]\)\./\([a-zA-Z0-9_-]*\.o\),\1\2,g' -e 's,$_VPATH,\$\${GNUHOSTDIST},g' -e 's,$_GNU_DIST,\$\${GNUHOSTDIST},g'
|
||||
|
||||
endef
|
||||
_x_:
|
||||
\$(foreach var,$*,\$(echo_var))
|
||||
EOF
|
||||
;;
|
||||
*)
|
||||
$MAKE -B -f - _x_ <<EOF || bomb "getvars $_mf $* failed"
|
||||
_x_:
|
||||
.for var in $*
|
||||
@echo G_\${var}=\${\${var}:Q} | sed -e 's,\([^\.]\)\./\([a-zA-Z0-9_-]*\.o\),\1\2,g' -e 's,$_VPATH,\$\${GNUHOSTDIST},g' -e 's,$_GNU_DIST,\$\${GNUHOSTDIST},g'
|
||||
.endfor
|
||||
.include "$_TMPDIR/$_mf"
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# usage: write_c FILENAME
|
||||
#
|
||||
write_c()
|
||||
{
|
||||
echo '/* This file is automatically generated. DO NOT EDIT! */' >$_TOP/$1.tmp || \
|
||||
bomb "cannot create $1"
|
||||
grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp
|
||||
echo '$NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $' | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp
|
||||
echo '' >>$_TOP/$1.tmp
|
||||
writefile $1
|
||||
}
|
||||
|
||||
# usage: write_mk FILENAME
|
||||
#
|
||||
write_mk()
|
||||
{
|
||||
echo '# This file is automatically generated. DO NOT EDIT!' >$_TOP/$1.tmp || \
|
||||
bomb "cannot create $1"
|
||||
grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp
|
||||
echo '$NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $' | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp
|
||||
echo '#' >>$_TOP/$1.tmp
|
||||
writefile $1
|
||||
}
|
||||
|
||||
writefile()
|
||||
{
|
||||
sed -e 's,netbsd\(elf\)*1[0-9\.]*\(_\)*[A-Z]*,netbsd\1,' \
|
||||
-e 's,^/\* #undef HAVE_MMAP \*/$,#define HAVE_MMAP 1,' \
|
||||
>>$_TOP/$1.tmp
|
||||
|
||||
# Compare new file, sans "generated from" comments and RCS Id,
|
||||
# to old file. If they match, don't change anything.
|
||||
rm -f $_TMPDIR/.1 $_TMPDIR/.2
|
||||
grep -v 'Generated from:' $_TOP/$1 >$_TMPDIR/.1 2>/dev/null
|
||||
grep -v 'Generated from:' $_TOP/$1.tmp >$_TMPDIR/.2
|
||||
|
||||
# will not overwrite a file that has the same content
|
||||
if cmp $_TMPDIR/.1 $_TMPDIR/.2 >/dev/null 2>&1; then
|
||||
rm -f $_TOP/$1.tmp
|
||||
else
|
||||
echo >&2 "$1 changed"
|
||||
mv -f $_TOP/$1.tmp $_TOP/$1
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
$NetBSD: patch-aa,v 1.1.1.1 2009/09/18 11:24:50 dmcmahill Exp $
|
||||
|
||||
--- configure.orig Sat Apr 25 04:10:29 2009
|
||||
+++ configure
|
||||
@@ -4532,7 +4532,7 @@ if test "${with_mpfr_lib+set}" = set; then
|
||||
fi;
|
||||
|
||||
if test "x$with_mpfr" != x; then
|
||||
- gmplibs="-L$with_mpfr/lib $gmplibs"
|
||||
+ gmplibs="-L$with_mpfr/lib -Wl,-R${PREFIX}/lib $gmplibs"
|
||||
gmpinc="-I$with_mpfr/include"
|
||||
fi
|
||||
if test "x$with_mpfr_include" != x; then
|
||||
--- gcc/config.gcc.orig 2009-04-17 13:58:41 +0200
|
||||
+++ gcc/config.gcc
|
||||
@@ -488,6 +488,33 @@ case ${target} in
|
||||
default_use_cxa_atexit=yes;;
|
||||
esac
|
||||
;;
|
||||
+*-*-dragonfly*)
|
||||
+ gas=yes
|
||||
+ gnu_ld=yes
|
||||
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
|
||||
+ case ${target} in
|
||||
+ *-*-dragonfly1 | *-*-dragonfly[1].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=1" ;;
|
||||
+ *-*-dragonfly2 | *-*-dragonfly[2].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=2" ;;
|
||||
+ *-*-dragonfly3 | *-*-dragonfly[3].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=3" ;;
|
||||
+ *-*-dragonfly4 | *-*-dragonfly[4].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=4" ;;
|
||||
+ *)
|
||||
+ echo 'Please update *-*-dragonfly* in gcc/config.gcc'
|
||||
+ exit 1
|
||||
+ ;;
|
||||
+ esac
|
||||
+ tmake_file="t-slibgcc-elf-ver t-dragonfly"
|
||||
+ case ${enable_threads} in
|
||||
+ "" | yes | posix)
|
||||
+ thread_file='posix'
|
||||
+ tmake_file="${tmake_file} t-dragonfly-thread"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ dfbsd_tm_file="${dfbsd_tm_file} dragonfly-spec.h dragonfly.h"
|
||||
+ ;;
|
||||
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
|
||||
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
|
||||
gas=yes
|
||||
@@ -1053,6 +1080,12 @@ x86_64-*-freebsd*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
|
||||
tmake_file="${tmake_file} i386/t-crtstuff"
|
||||
;;
|
||||
+i[34567]86-*-dragonfly*)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/dragonfly.h"
|
||||
+ ;;
|
||||
+x86_64-*-dragonfly*)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/x86-64.h i386/dragonfly.h i386/dragonfly64.h"
|
||||
+ ;;
|
||||
i[34567]86-*-netbsdelf*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
|
||||
;;
|
||||
@@ -0,0 +1,10 @@
|
||||
--- gcc/Makefile.in.orig Fri Jun 3 14:13:51 2011
|
||||
+++ gcc/Makefile.in Fri Jun 3 14:16:25 2011
|
||||
@@ -310,7 +310,6 @@
|
||||
$(srcdir)/ginclude/iso646.h \
|
||||
$(srcdir)/ginclude/stdarg.h \
|
||||
$(srcdir)/ginclude/stdbool.h \
|
||||
- $(srcdir)/ginclude/stddef.h \
|
||||
$(srcdir)/ginclude/varargs.h \
|
||||
$(srcdir)/ginclude/stdfix.h \
|
||||
$(EXTRA_HEADERS)
|
||||
@@ -0,0 +1,82 @@
|
||||
--- gcc/config.gcc.orig Fri Jun 3 14:42:47 2011
|
||||
+++ gcc/config.gcc Fri Jun 3 14:42:58 2011
|
||||
@@ -251,7 +251,7 @@
|
||||
| *-*-sysv* \
|
||||
| vax-*-vms* \
|
||||
)
|
||||
- echo "*** Configuration ${target} not supported" 1>&2
|
||||
+ echo "*** Configuration ${target} recognized but not supported" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -515,6 +515,33 @@
|
||||
esac
|
||||
dfbsd_tm_file="${dfbsd_tm_file} dragonfly-spec.h dragonfly.h"
|
||||
;;
|
||||
+*-*-dragonfly*)
|
||||
+ gas=yes
|
||||
+ gnu_ld=yes
|
||||
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
|
||||
+ case ${target} in
|
||||
+ *-*-dragonfly1 | *-*-dragonfly[1].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=1" ;;
|
||||
+ *-*-dragonfly2 | *-*-dragonfly[2].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=2" ;;
|
||||
+ *-*-dragonfly3 | *-*-dragonfly[3].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=3" ;;
|
||||
+ *-*-dragonfly4 | *-*-dragonfly[4].*)
|
||||
+ tm_defines="${tm_defines} DFBSD_MAJOR=4" ;;
|
||||
+ *)
|
||||
+ echo 'Please update *-*-dragonfly* in gcc/config.gcc'
|
||||
+ exit 1
|
||||
+ ;;
|
||||
+ esac
|
||||
+ tmake_file="t-slibgcc-elf-ver t-dragonfly"
|
||||
+ case ${enable_threads} in
|
||||
+ "" | yes | posix)
|
||||
+ thread_file='posix'
|
||||
+ tmake_file="${tmake_file} t-dragonfly-thread"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ dfbsd_tm_file="${dfbsd_tm_file} dragonfly-spec.h dragonfly.h"
|
||||
+ ;;
|
||||
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
|
||||
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
|
||||
gas=yes
|
||||
@@ -1070,6 +1097,14 @@
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h"
|
||||
tmake_file="${tmake_file} i386/t-i386elf t-svr4"
|
||||
;;
|
||||
+i[34567]86-*-minix)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h minix-spec.h minix.h i386/minix.h"
|
||||
+# tmake_file="t-slibgcc-elf-ver t-minix i386/t-minix"
|
||||
+# use_fixproto=yes
|
||||
+ gas=yes
|
||||
+ gnu_ld=yes
|
||||
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
|
||||
+ ;;
|
||||
i[34567]86-*-aout*)
|
||||
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
|
||||
;;
|
||||
@@ -1086,6 +1121,12 @@
|
||||
x86_64-*-dragonfly*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/x86-64.h i386/dragonfly.h i386/dragonfly64.h"
|
||||
;;
|
||||
+i[34567]86-*-dragonfly*)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/dragonfly.h"
|
||||
+ ;;
|
||||
+x86_64-*-dragonfly*)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${dfbsd_tm_file} i386/x86-64.h i386/dragonfly.h i386/dragonfly64.h"
|
||||
+ ;;
|
||||
i[34567]86-*-netbsdelf*)
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
|
||||
;;
|
||||
@@ -2466,7 +2507,7 @@
|
||||
cxx_target_objs="m32c-pragma.o"
|
||||
;;
|
||||
*)
|
||||
- echo "*** Configuration ${target} not supported" 1>&2
|
||||
+ echo "*** Configuration ${target} not recognized, not supported" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,15 @@
|
||||
$NetBSD$
|
||||
|
||||
--- gcc/gcov.c.orig Sat Jan 9 00:05:06 2010
|
||||
+++ gcc/gcov.c
|
||||
@@ -58,6 +58,10 @@ along with Gcov; see the file COPYING3. If not see
|
||||
|
||||
#define STRING_SIZE 200
|
||||
|
||||
+#ifdef _MINIX
|
||||
+#define block_t gcc_block_t
|
||||
+#endif
|
||||
+
|
||||
struct function_info;
|
||||
struct block_info;
|
||||
struct source_info;
|
||||
@@ -0,0 +1,34 @@
|
||||
$NetBSD$
|
||||
|
||||
--- gcc/libgcov.c.orig Thu Apr 9 23:23:07 2009
|
||||
+++ gcc/libgcov.c
|
||||
@@ -40,6 +40,11 @@ see the files COPYING3 and COPYING.RUNTIME respectivel
|
||||
#define GCOV_LINKAGE /* nothing */
|
||||
#endif
|
||||
#endif
|
||||
+
|
||||
+#ifndef L_gcov_merge_add
|
||||
+#include "gcov-minix-fs-wrapper.h"
|
||||
+#endif
|
||||
+
|
||||
#include "gcov-io.h"
|
||||
|
||||
#if defined(inhibit_libc)
|
||||
@@ -152,7 +157,7 @@ gcov_version (struct gcov_info *ptr, gcov_unsigned_t v
|
||||
in two separate programs, and we must keep the two program
|
||||
summaries separate. */
|
||||
|
||||
-static void
|
||||
+void
|
||||
gcov_exit (void)
|
||||
{
|
||||
struct gcov_info *gi_ptr;
|
||||
@@ -564,7 +569,7 @@ __gcov_init (struct gcov_info *info)
|
||||
gcov_crc32 = crc32;
|
||||
|
||||
if (!gcov_list)
|
||||
- atexit (gcov_exit);
|
||||
+ atexit (gcov_exit_wrapper);
|
||||
|
||||
info->next = gcov_list;
|
||||
gcov_list = info;
|
||||
@@ -0,0 +1,40 @@
|
||||
$NetBSD: patch-af,v 1.1 2009/09/24 11:50:57 dmcmahill Exp $
|
||||
|
||||
--- libgcc/config.host.orig Fri Apr 17 11:58:41 2009
|
||||
+++ libgcc/config.host
|
||||
@@ -149,6 +149,8 @@ case ${host} in
|
||||
# machine-specific sections may refine and add to this
|
||||
# configuration.
|
||||
;;
|
||||
+*-*-dragonfly*)
|
||||
+ ;;
|
||||
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu*)
|
||||
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
|
||||
;;
|
||||
@@ -277,9 +279,15 @@ x86_64-*-elf*)
|
||||
;;
|
||||
i[34567]86-*-aout*)
|
||||
;;
|
||||
+i[34567]86-*-minix*)
|
||||
+ ;;
|
||||
i[34567]86-*-freebsd*)
|
||||
;;
|
||||
x86_64-*-freebsd*)
|
||||
+ ;;
|
||||
+i[34567]86-*-dragonfly*)
|
||||
+ ;;
|
||||
+x86_64-*-dragonfly*)
|
||||
;;
|
||||
i[34567]86-*-netbsdelf*)
|
||||
;;
|
||||
--- libjava/configure.orig 2009-07-22 07:43:59.000000000 +0000
|
||||
+++ libjava/configure 2009-09-23 12:51:11.000000000 +0000
|
||||
@@ -28129,7 +28129,7 @@ echo "${ECHO_T}Python modules dir: ${pyt
|
||||
|
||||
|
||||
# needed for aot-compile-rpm
|
||||
-MAKE=`which make`
|
||||
+MAKE=${PKGSRC_MAKE}
|
||||
|
||||
|
||||
# Check whether --enable-aot-compile-rpm or --disable-aot-compile-rpm was given.
|
||||
@@ -0,0 +1,23 @@
|
||||
--- libjava/contrib/rebuild-gcj-db.in.orig Wed Jul 2 13:17:54 2008
|
||||
+++ libjava/contrib/rebuild-gcj-db.in Fri Jun 3 14:16:43 2011
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/bash
|
||||
+#!/bin/sh
|
||||
# rebuild-gcj-db
|
||||
|
||||
## Copyright (C) 2000, 2002, 2003, 2008 Free Software Foundation
|
||||
@@ -16,12 +16,12 @@
|
||||
base=@prefix@/lib/$dirname
|
||||
dbLocation=`@prefix@/bin/gcj-dbtool -p $base`
|
||||
libdir=$base/gcj
|
||||
- if ! test -d $libdir; then
|
||||
+ if test ! -d $libdir; then
|
||||
# No shared libraries here.
|
||||
continue
|
||||
fi
|
||||
dirname $dbLocation | xargs mkdir -p
|
||||
@prefix@/bin/gcj-dbtool -n $dbLocation 64
|
||||
- find $libdir -follow -name '*.db' -print0 | \
|
||||
+ find $libdir -follow -name '*.db' -print | @AWK@ '{printf("%s%c", $1, 0);}' | \
|
||||
@prefix@/bin/gcj-dbtool -0 -m $dbLocation $dbLocation
|
||||
done
|
||||
@@ -0,0 +1,20 @@
|
||||
--- gcc/fortran/f95-lang.c.orig Tue Jun 15 12:27:01 2010
|
||||
+++ gcc/fortran/f95-lang.c Fri Jun 3 14:51:32 2011
|
||||
@@ -873,10 +873,17 @@
|
||||
|
||||
gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble,
|
||||
BUILT_IN_CABSL, "cabsl", true);
|
||||
+#if defined (__NetBSD__)
|
||||
gfc_define_builtin ("__builtin_cabs", func_cdouble_double,
|
||||
+ BUILT_IN_CABS, "__c99_cabs", true);
|
||||
+ gfc_define_builtin ("__builtin_cabsf", func_cfloat_float,
|
||||
+ BUILT_IN_CABSF, "__c99_cabsf", true);
|
||||
+#else
|
||||
+ gfc_define_builtin ("__builtin_cabs", func_cdouble_double,
|
||||
BUILT_IN_CABS, "cabs", true);
|
||||
gfc_define_builtin ("__builtin_cabsf", func_cfloat_float,
|
||||
BUILT_IN_CABSF, "cabsf", true);
|
||||
+#endif
|
||||
|
||||
gfc_define_builtin ("__builtin_copysignl", mfunc_longdouble[1],
|
||||
BUILT_IN_COPYSIGNL, "copysignl", true);
|
||||
@@ -0,0 +1,54 @@
|
||||
$NetBSD$
|
||||
|
||||
--- libstdc++-v3/config/io/basic_file_stdio.cc.orig Thu Apr 9 23:23:07 2009
|
||||
+++ libstdc++-v3/config/io/basic_file_stdio.cc
|
||||
@@ -27,6 +27,10 @@
|
||||
// ISO C++ 14882: 27.8 File-based streams
|
||||
//
|
||||
|
||||
+#ifndef _POSIX_SOURCE
|
||||
+#define _POSIX_SOURCE 1
|
||||
+#endif
|
||||
+
|
||||
#include <bits/basic_file.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2009-04-09 23:23:07.000000000 +0000
|
||||
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
|
||||
@@ -30,6 +30,8 @@
|
||||
// Full details can be found from the CVS files at:
|
||||
// anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
|
||||
// See www.netbsd.org for details of access.
|
||||
+
|
||||
+#include <sys/param.h>
|
||||
|
||||
_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
|
||||
@@ -42,6 +44,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||
// on the mask type. Because of this, we don't use an enum.
|
||||
typedef unsigned char mask;
|
||||
+#if __NetBSD_Version__ >= 599004100
|
||||
+ static const mask upper = _CTYPE_U;
|
||||
+ static const mask lower = _CTYPE_L;
|
||||
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
|
||||
+ static const mask digit = _CTYPE_N;
|
||||
+ static const mask xdigit = _CTYPE_N | _CTYPE_X;
|
||||
+ static const mask space = _CTYPE_S;
|
||||
+ static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B;
|
||||
+ static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
|
||||
+ static const mask cntrl = _CTYPE_C;
|
||||
+ static const mask punct = _CTYPE_P;
|
||||
+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
|
||||
+#else
|
||||
static const mask upper = _U;
|
||||
static const mask lower = _L;
|
||||
static const mask alpha = _U | _L;
|
||||
@@ -53,6 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
static const mask cntrl = _C;
|
||||
static const mask punct = _P;
|
||||
static const mask alnum = _U | _L | _N;
|
||||
+#endif
|
||||
};
|
||||
|
||||
_GLIBCXX_END_NAMESPACE
|
||||
@@ -0,0 +1,54 @@
|
||||
$NetBSD$
|
||||
|
||||
--- libstdc++-v3/config/os/generic/error_constants.h.orig Thu Apr 9 23:23:07 2009
|
||||
+++ libstdc++-v3/config/os/generic/error_constants.h
|
||||
@@ -51,12 +51,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
#endif
|
||||
|
||||
broken_pipe = EPIPE,
|
||||
+#ifdef _GLIBCXX_HAVE_ECONNABORTED
|
||||
connection_aborted = ECONNABORTED,
|
||||
+#endif
|
||||
connection_already_in_progress = EALREADY,
|
||||
connection_refused = ECONNREFUSED,
|
||||
connection_reset = ECONNRESET,
|
||||
cross_device_link = EXDEV,
|
||||
+#ifdef _GLIBCXX_HAVE_EDESTADDRREQ
|
||||
destination_address_required = EDESTADDRREQ,
|
||||
+#endif
|
||||
device_or_resource_busy = EBUSY,
|
||||
directory_not_empty = ENOTEMPTY,
|
||||
executable_format_error = ENOEXEC,
|
||||
@@ -79,7 +83,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
is_a_directory = EISDIR,
|
||||
message_size = EMSGSIZE,
|
||||
network_down = ENETDOWN,
|
||||
+#ifdef _GLIBCXX_HAVE_ENETRESET
|
||||
network_reset = ENETRESET,
|
||||
+#endif
|
||||
network_unreachable = ENETUNREACH,
|
||||
no_buffer_space = ENOBUFS,
|
||||
no_child_process = ECHILD,
|
||||
@@ -94,7 +100,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
no_message_available = ENODATA,
|
||||
#endif
|
||||
|
||||
+#ifdef _GLIBCXX_HAVE_ENOMSG
|
||||
no_message = ENOMSG,
|
||||
+#endif
|
||||
no_protocol_option = ENOPROTOOPT,
|
||||
no_space_on_device = ENOSPC,
|
||||
|
||||
--- libjava/configure.host.orig 2011-02-25 16:07:42.000000000 +0100
|
||||
+++ libjava/configure.host
|
||||
@@ -310,6 +310,9 @@
|
||||
*-*-freebsd*)
|
||||
slow_pthread_self=
|
||||
;;
|
||||
+ *-*-netbsd*)
|
||||
+ slow_pthread_self=
|
||||
+ ;;
|
||||
*-mingw*)
|
||||
libgcj_flags="${libgcj_flags} -fno-omit-frame-pointer"
|
||||
# FIXME: win32_exception_handler( ) in win32.cc does not do the
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
$NetBSD$
|
||||
|
||||
--- libgfortran/intrinsics/c99_functions.c.orig Thu Apr 9 23:23:07 2009
|
||||
+++ libgfortran/intrinsics/c99_functions.c
|
||||
@@ -1412,7 +1412,7 @@ ctanl (long double complex a)
|
||||
#endif
|
||||
|
||||
|
||||
-#if !defined(HAVE_TGAMMA)
|
||||
+#if !defined(HAVE_TGAMMA) && defined(HAVE_NEXTAFTER)
|
||||
#define HAVE_TGAMMA 1
|
||||
|
||||
extern double tgamma (double);
|
||||
@@ -1551,7 +1551,7 @@ tgamma (double x)
|
||||
|
||||
|
||||
|
||||
-#if !defined(HAVE_LGAMMA)
|
||||
+#if !defined(HAVE_LGAMMA) && defined(HAVE_NEXTAFTER)
|
||||
#define HAVE_LGAMMA 1
|
||||
|
||||
extern double lgamma (double);
|
||||
--- libjava/configure.ac.orig 2011-02-25 16:08:27.000000000 +0100
|
||||
+++ libjava/configure.ac
|
||||
@@ -1011,6 +1011,11 @@
|
||||
THREADLDFLAGS=-pthread
|
||||
THREADSPEC=-lpthread
|
||||
;;
|
||||
+ *-*-netbsd*)
|
||||
+ # NetBSD should work with pthread.
|
||||
+ THREADLDFLAGS=-pthread
|
||||
+ THREADSPEC=-lpthread
|
||||
+ ;;
|
||||
alpha*-dec-osf* | hppa*-hp-hpux*)
|
||||
THREADCXXFLAGS=-pthread
|
||||
# boehm-gc needs some functions from librt, so link that too.
|
||||
@@ -0,0 +1,36 @@
|
||||
$NetBSD$
|
||||
|
||||
--- gcc/ginclude/stddef.h.orig Thu Apr 9 23:23:07 2009
|
||||
+++ gcc/ginclude/stddef.h
|
||||
@@ -58,6 +58,9 @@ see the files COPYING3 and COPYING.RUNTIME respectivel
|
||||
#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
|
||||
#include <sys/_types.h>
|
||||
#endif
|
||||
+#if defined (__minix)
|
||||
+#include <minix/types.h>
|
||||
+#endif
|
||||
|
||||
/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
|
||||
defined if the corresponding type is *not* defined.
|
||||
--- libjava/boehm.cc.orig 2011-03-05 18:09:36.000000000 +0000
|
||||
+++ libjava/boehm.cc
|
||||
@@ -747,7 +747,8 @@ _Jv_GCAttachThread ()
|
||||
// The registration interface is only defined on posixy systems and
|
||||
// only actually works if pthread_getattr_np is defined.
|
||||
// FIXME: until gc7 it is simpler to disable this on solaris.
|
||||
-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
|
||||
+#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
|
||||
+ && !defined(__NetBSD__)
|
||||
GC_register_my_thread ();
|
||||
#endif
|
||||
}
|
||||
@@ -755,7 +756,8 @@ _Jv_GCAttachThread ()
|
||||
void
|
||||
_Jv_GCDetachThread ()
|
||||
{
|
||||
-#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS)
|
||||
+#if defined(HAVE_PTHREAD_GETATTR_NP) && !defined(GC_SOLARIS_THREADS) \
|
||||
+ && !defined(__NetBSD__)
|
||||
GC_unregister_my_thread ();
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
$NetBSD$
|
||||
|
||||
--- gcc/toplev.h.orig Fri Feb 20 15:20:38 2009
|
||||
+++ gcc/toplev.h
|
||||
@@ -174,7 +174,8 @@ extern int exact_log2 (unsigned HOST_
|
||||
extern int floor_log2 (unsigned HOST_WIDE_INT);
|
||||
|
||||
/* Inline versions of the above for speed. */
|
||||
-#if GCC_VERSION >= 3004
|
||||
+/* #if GCC_VERSION >= 3004 */
|
||||
+#if 0
|
||||
# if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
|
||||
# define CLZ_HWI __builtin_clzl
|
||||
# define CTZ_HWI __builtin_ctzl
|
||||
@@ -0,0 +1,19 @@
|
||||
$NetBSD$
|
||||
|
||||
Fix build on NetBSD i386/amd64 after the ansi.h header include protection
|
||||
name change.
|
||||
|
||||
--- gcc/ginclude/stddef.h.orig 2009-04-09 23:23:07.000000000 +0000
|
||||
+++ gcc/ginclude/stddef.h
|
||||
@@ -53,6 +53,11 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
one less case to deal with in the following. */
|
||||
#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
|
||||
#include <machine/ansi.h>
|
||||
+#if !defined(_MACHINE_ANSI_H_)
|
||||
+#if defined(_I386_ANSI_H_) || defined(_X86_64_ANSI_H_)
|
||||
+#define _MACHINE_ANSI_H_
|
||||
+#endif
|
||||
+#endif
|
||||
#endif
|
||||
/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
|
||||
#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
|
||||
Reference in New Issue
Block a user