* Don't bother prefixing commands with a line of ${_MKCMD}\
and instead rely upon "make -s". This is less intrusive on
all the Makefiles than the former. Idea from David Laight.
* Rename the variables use to print messages. The scheme now is:
_MKMSG_FOO Run _MKMSG 'foo'
_MKTARGET_FOO Run _MKMSG_FOO ${.TARGET}
From discussion with Alistair Crooks.
seems to mostly work.. libcurses.so fails to link with an out of memory
error i haven't looked at yet, and nothing has actually been run..
XXX: gdb53 missing.
HAVE_GCC3. if this is set, we also set USE_TOOLS_TOOLCHAIN=no. change
the definition of the former to be restricted to whether tools/toolchain
is used or not.
SYMLINKS to install symlinked header files. INCSYMLINKS are installed with
'make includes'. This avoids using SYMLINKS and hacks with the 'linkinstall'
target in <bsd.links.mk>, as linksinstall occurs in 'make install' and hacks
to get it to occur in 'make includes' weren't robust, as seen in lib/libdes.
Yet more improvements to bsd.README.
* DPSRCS contains extra dependencies, but is _NOT_ added to CLEANFILES.
This is a change of behaviour. If a Makefile wants the clean semantics
it must specifically append to CLEANFILES.
Resolves PR toolchain/5204.
* To recap: .d (depend) files are generated for all files in SRCS and DPSRCS
that have a suffix of: .c .m .s .S .C .cc .cpp .cxx
* If YHEADER is set, automatically add the .y->.h to DPSRCS & CLEANFILES
* Ensure that ${OBJS} ${POBJS} ${LOBJS} ${SOBJS} *.d depend upon ${DPSRCS}
* Deprecate the (short lived) DEPENDSRCS
Update the various Makefiles to these new semantics; generally either
adding to CLEANFILES (because DPSRCS doesn't do that anymore), or replacing
specific .o dependencies with DPSRCS entries.
Tested with "make -j 8 distribution" and "make distribution".
XXX: sun2 seems to be currently generally busted but most of the world
builds. of course it is untested..
XXX: sh3* and -pg goes BOOM with gcc3.3... it generates code that uses
the same labels twice... need to set NOPROFILE for now.
- clean up commented & wrong rules
- find the right bits/ headers for sparc64 & arm
- make sure libsupc++/libstdc++ have all the symbols from libiberty they want
- disable the build of libstdc++ for now (but keep the includes installing)
works. sparc & i386 support is included here. libstdc++-v3 does not yet
properly build for some strange reasons (that may be due to broken netbsd
header files, it's not yet clear) but i have been able to compile, link and
run both i386 & sparc hello.c.
- didn't need to/mean to update libstdc++ yet
- mknative generated bogus files that ended having libstc++ not install
various required headers.
should fix the "can't find iostream.h" lossage in src/regress.
two variables:
TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).
EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.
If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.
If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).
* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.
to build full-feature libbfd, do the following:
- add "--enable-targets=all --enable-64-bit-bfd" to
src/tools/toolchain/Makefile configure arg
- invoke nbmake-<platform> native, to regenerate files under src/gnu
case:
MKBFD If set to "no", disables building of libbfd, libiberty,
and all things that depend on them (binutils/gas/ld, gdb,
dbsym, mdsetimage).
MKGDB If set to "no", disables bulding of gdb.
MKGCC If set to "no", disables building of gcc and the
gcc-related libraries (libg2c, libgcc, libobjc, libstdc++).
These are useful for building platforms for which either of the following
situations are true:
(1) You have no userland from which to run toolchain2netbsd
in order to build the appropriate toolchain build framework.
(2) The platform which you are building requires a newer set
of tools than are currently in the tree (e.g. x86-64, ia64).
- SHLIBDIR Location to install shared libraries if ${USE_SHLIBDIR}
is "yes". Defaults to "/usr/lib".
- USE_SHLIBDIR If "yes", install shared libraries in ${SHLIBDIR}
instead of ${LIBDIR}. Defaults to "no".
Sets ${_LIBSODIR} to the appropriate value.
This may be set by individual Makefiles as well.
- SHLINKDIR Location of shared linker. Defaults to "/usr/libexec".
If != "/usr/libexec", change the dynamic-linker
encoded in shared programs
* Set USE_SHLIBDIR for libraries used by /bin and /sbin:
libc libcrypt libcrypto libedit libipsec libkvm libm libmi387
libtermcap libutil libz
* If ${_LIBSODIR} != ${LIBDIR}, add symlinks from ${LIBDIR}/${LIB}.so*
to ${_LIBSODIR}/${LIB}.so* for compatibility.
* Always install /sbin/init statically (for now)
The net effect of these changes depends on how the variables are set:
1.) If nothing is set or changed, there is no change from the
current behaviour:
- Static /bin, /sbin, and bits of /usr/*
- Dynamic rest
- Shared linker is /usr/libexec/ld*so
2.) If the following make variables are set:
LDSTATIC=
SHLINKDIR=/lib
SHLIBDIR=/lib
Then the behaviour becomes:
- Dynamic tools
- .so libraries used by /bin and /sbin are installed to /lib,
with symlinks from /usr/lib/lib*so to -> /lib/lib*so
where appropriate
- Shared linker is /lib/ld*so
3.) As per 2.), but add the following variable:
USE_SHLIBDIR=yes
This forces all .so's to be instaleld in /lib (with compat
symlinks), not just those tagged by their Makefiles to be.
Again, compat symlinks are installed
* Regen files with proper OS names and version numbers.
* Clean up toolchain2netbsd somewhat, to get it ready to be cross-host
compatible (more work to be done here, but it's getting closer).
* Add framework for gdbreplay and gdbserver, but hold off on enabling these
by default until low-nbsd.c is verified to work everywhere.
address parts of PR toolchain/14896. This header file is nonstandard
(and doesn't even exist in gcc 3.0); an out-of-the-box gcc build also
doesn't provide the missing functions. So just drop the .h completely.
the target "native toolchain" if BOOTSTRAP_NEW_TOOLCHAIN is set.
This is important if you don't have any userland at all, and you're
trying to make one from which you can run toolchain2netbsd.
for files named .cc or .C. _eh gets generated into a .c file so we need
explicit rules for it's targets (.o .po and .so) to compile it correctly.
Without this exceptions just plain don't work. Nothing ever gets caught.
...And while we're at it, add a profiled libgcc too.
Use the "generate .c files and let <bsd.lib.mk> sort it out" method
for compiling these libraries. Only one real divergence (-fexceptions)
existed, but exceptions are turned on for C++ code by default in gcc
2.95.3, so this option was redundant anyway.
From Rafal's commit for mipseb (which applies here too):
WARNING: Binutils 2.11.2 (maybe earlier) changed the MIPS ABI, so any
shared libs built by this toolchain WILL NOT WORK without either a whack
to BFD to fix that or a patch to ld_elf.so to work around it. I need to
chase the binutils folks on this issue still.
changes to configuration stuff to (a) recognize `mipseb', and (b) build a
BE-default GCC on mipseb. gprof and gdb still not done.
WARNING: Binutils 2.11.2 (maybe earlier) changed the MIPS ABI, so any
shared libs built by this toolchain WILL NOT WORK without either a whack
to BFD to fix that or a patch to ld_elf.so to work around it. I need to
chase the binutils folks on this issue still.
That said, the new toolchain seems to work quite well once the ABI change
is worked around/fixed -- I'm committing from a machine running a user-
land built with the new compiler.
gcc 3.0 build (as noted by mrg), bump shlib major again, to version 4.0.
There might be a better solution to this kind of thing in the future; I'll
have to think about it.