Commit Graph

362 Commits

Author SHA1 Message Date
Mark Johnston
593c0b49f9 Explicitly specify that the beforelinking target depends on the
generated object files, ensuring that the beforelinking recipe won't be
executed until compilation has finished.

Also define SHLIB_NAME_FULL to denote ${SHLIB_NAME}.debug if
DEBUG_FILES is set and ${SHLIB_NAME} otherwise, which helps avoid
obfuscating the compilation and linking rules.

Reviewed by:	emaste
Approved by:	emaste (co-mentor)
2012-12-31 21:54:43 +00:00
Ed Maste
facaa6ee9f No reason to install debug data with the schg flag 2012-12-18 21:13:03 +00:00
Ed Maste
e97696b5ec Put shared library debug info into separate .symbols file
Sponsored by: ADARA Networks
2012-12-15 00:03:35 +00:00
Ed Maste
0d947ed19a Minor refactoring prior to .symbols file changes
- Combine .if x and .if !x using .else
- Separate out beforelinking dependency
- Add comments to clarify .if nesting

Sponsored by: ADARA Networks
2012-12-14 18:30:01 +00:00
Eitan Adler
37a6031461 Clean up hardcoded ar(1) flags in the tree to use the global ARFLAGS in
share/mk/sys.mk instead.

This is part of a medium term project to permit deterministic builds of
FreeBSD.

Submitted by:	Erik Cederstrand <erik@cederstrand.dk>
Reviewed by:	imp, toolchain@
Approved by:	cperciva
MFC after:	2 weeks
2012-12-06 01:31:25 +00:00
Simon J. Gerraty
1d45f69b29 Use prebuild and a barrier, to allow ensuring headers are
staged before we attempt to build anything.
2012-11-08 21:36:19 +00:00
Simon J. Gerraty
23090366f7 Sync from head 2012-11-04 02:52:03 +00:00
Marcel Moolenaar
7750ad47a9 Sync FreeBSD's bmake branch with Juniper's internal bmake branch.
Requested by: Simon Gerraty <sjg@juniper.net>
2012-08-22 19:25:57 +00:00
Dimitry Andric
85d4004625 Amend r227797 by also passing ${STATIC_CXXFLAGS} for the other supported
C++ file extensions.

MFC after:	3 days
2012-06-09 11:41:29 +00:00
Jeremie Le Hen
51a65f35df Introduce the ${SHLIB_LDSCRIPT} variable to have an ld(1) script
instead of a symlink for .so files.

Reviewed by:    kib, kan (previous version), dim
Approved by:    kib (mentor)
Silence from:   -hackers@
MFC after:	1 week
2012-05-07 09:00:30 +00:00
Konstantin Belousov
bd4632e6ca Force linker error when created shared library contains a relocation
against text. Provide the override switch to turn off the strict
behaviour. Apparently, openssl libcrypto needs it due to assembler
code not being PIC.

Discussed with:	bf
MFC after:	2 weeks
2011-12-06 11:28:17 +00:00
Max Khon
83cb5bae96 - CTF knob is now implemented using common scheme: MK_CTF=yes/no is
defined based on WITH/WITHOUT_CTF settings, default is WITHOUT_CTF,
NO_CTF overrides WITH_CTF (used by Makefile.inc1)
- CTFCONVERT_CMD/NORMAL_CTFCONVERT are now defined to empty string
if make(1) can handle empty commands
2011-11-30 18:11:49 +00:00
Max Khon
78e7e3ecb5 - fix WITH_CTF when specified in /etc/src.conf [1]
- CTFCONVERT_CMD=... is a hack (should be defined to empty string instead):
make(1) should be taught to ignore empty commands silently in compat mode
(as it does in !compat mode, GNU make also silently ignores empty commands)
and to skip printing empty commands in !compat mode
- config(8) should generate ${NORMAL_CTFCONVERT} invocation without '@':
this will allow to simplify kern.pre.mk even more and lessen the number
of shell invocations during kernel build when CTF is turned off
- WITH_CTF can now be converted to usual MK_CTF=yes/no infrastructure

Pointy hat to:	fjoe [1]
2011-11-29 16:34:44 +00:00
Max Khon
cd49c2e840 Conditionalize ctfconvert/ctfmerge runs on make level (.if/.endif) instead
of executing a shell on every object or executable/library file.

This shaves off more than 30,000 shell invocations during buildworld.
2011-11-29 08:38:47 +00:00
Dag-Erling Smørgrav
66f96aa5d4 Add CTF magic to the new .c.o rule.
MFC after:	3 weeks
2011-11-24 13:13:50 +00:00
Dag-Erling Smørgrav
2ba2959320 As threatened on -arch, add {SHARED,STATIC}_{C,CXX}FLAGS, which allow a
Makefile to specify different CFLAGS for shared and static libraries.

MFC after:	3 weeks
2011-11-21 16:35:57 +00:00
Dimitry Andric
58ff0f42ba Remove support for the Intel C Compiler from the build infrastructure.
This support has not worked for several years, and is not likely to work
again, unless Intel decides to release a native FreeBSD version of their
compiler. ;)
2011-04-19 18:09:21 +00:00
Dimitry Andric
6d67f69487 Remove libobjc and other Objective-C related components, as these are
extremely outdated, and not used by anything in the base system.

Silence from:	current@
2011-04-17 21:03:23 +00:00
Konstantin Belousov
5ada7d99af Introduce make variable ACFLAGS used to supply additional flags to
cc driver when compiling assembler source file that is preprocessed.
2011-01-07 14:32:29 +00:00
Rui Paulo
c2c48445ba Check the existence of a 'beforelinking' target and make the resulting
program or library depend on that before doing the final linking. This
will be needed by DTrace.

Sponsored by:	The FreeBSD Foundation
2010-09-10 16:21:09 +00:00
Warner Losh
25faff346c MFtbemd:
Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want
to test of all the CPUs of a given family conform.
2010-08-23 22:24:11 +00:00
Rui Paulo
187278cadc For every instance of '.if ${CC} == "foo"' or '.if ${CC} != "foo"' in
Makefiles or *.mk files, use ${CC:T:Mfoo} instead, so only the basename
of the compiler command (excluding any arguments) is considered.

This allows you to use, for example, CC="/nondefault/path/clang -xxx",
and still have the various tests in bsd.*.mk identify your compiler as
clang correctly.

ICC if cases were also changed.

Submitted by:	Dimitry Andric <dimitry at andric.com>
2010-08-17 20:39:28 +00:00
Rui Paulo
b4d22b2cb9 Add missing escape characthers.
Pointed out by:	b.f.
2010-07-30 15:25:57 +00:00
Rui Paulo
3a1134997b Fix previous commit: I forgot to include parenthesis.
Submitted by:	anonymous
2010-07-30 08:52:19 +00:00
Rui Paulo
8a5216d5d8 When building WITH_CTF=1, print the ctf executable that's going to be
run. This makes the 'ctfconvert' and 'ctfmerge' programs show up during
a build when compiling a kernel, a library or a program.

Sponsored by:	The FreeBSD Foundation
2010-07-29 16:30:27 +00:00
Alexander Leidinger
21edb039c6 WITH_CTF can now be specified in src.conf (not recommended, there
are some problems with static executables), make.conf (would also
affect ports which do not use GNU make and do not override the
compile targets) or in the kernel config (via "makeoptions
WITH_CTF=yes").

Additional (related) changes:
 - propagate WITH_CTF to module builds
 - do not add -g to the linker flags, it's a noop there anyway
   (at least according to the man page of ld)
 - do not add -g to CFLAGS unconditionally
   we need to have a look if it is really needed (IMO not) or if there
   is a way to add it only when WITH_CTF is used

Note: ctfconvert / ctfmerge lines will not appear in the build output,
to protect the innocent (those which do not build with WITH_CTF would
see the shell-test and may think WITH_CTF is used).

Reviewed by:	imp, jhb, scottl (earlier version)
Discussed on:	arch@
2010-04-02 06:55:31 +00:00
Stephane E. Potvin
424b4e66a9 Introduce two new flags PO_CFLAGS and PO_CXXFLAGS to make it possible
to have different flags when building profiled objects.

MFC after:	1 month
2010-01-22 14:05:48 +00:00
Alexander Kabaev
2286fe7635 Second attempt at eliminating .text relocations in shared libraries
compiled with stack protector.

Use libssp_nonshared library to pull __stack_chk_fail_local symbol into
each library that needs it instead of pulling it from libc. GCC
generates local calls to this function which result in absolute
relocations put into position-independent code segment, making dynamic
loader do extra work every time given shared library is being relocated
and making affected text pages non-shareable.

Reviewed by:        kib
Approved by:        re (kib)
2009-07-14 21:19:13 +00:00
John Birrell
770ac3b21f Add support for the Compact C Type (CTF) conversions throughout FreeBSD's
system makefiles.

Note that the CTF conversion defaults to off. We may choose to change this
default later if DTrace proves popular and people are prepared to wear
the compilation performance impact of compiling with debug symbols all the
time.

Setting NO_CTF in the make args or user environment turns off CTF conversion.
Even if we choose to default CTF generation to on later, we still need
NO_CTF so that the buildworld process can bootstrap the tools without
needlessly generating CTF data for temporary tools.

Setting WITH_CTF in the make args or user environment (and _NOT_ in
/etc/make.conf) is the only way to enable CTF data conversion. Nore that
this can't be implemented the same way that the WITH_ and WITHOUT_ stuff
is implemented throughout the buildworld because the CTF conversion needs
to work when building a simple object without a Makefile, using the
default rules in sys.mk.

Typing 'make test.o' with no makefile and just a source file test.c
should work. Also, typing 'make WITH_CTF=1 test.o without a makefile and
just a source file test.c should work and produce an object with a CTF
elf section. Typing 'make WITH_CTF=1 CFLAGS=-g test.o' without a makefile
and just a source file test.c should produce an object with both a CTF
elf section and the debug elf sections.

In the FreeBSD build where more .mk files are used than just sys.mk
which is included my make by default, the use of DEBUG_FLAGS is the
correct way to enable a debug build. The important thing to note here
is that it is the DEBUG_FLAGS setting that prevents libraries and
programs from being stripped on installation. So, for the addition of
CTF data conversion, setting DEBUG_FLAGS to contain -g, without NO_CTF,
will cause the ctfconvert and ctfmerge build programs to be executed
also with the -g arg so that debug symbols are retained rather than
being removed after the CTF data elf section has been added.

Add DTrace libraries to the list of libnames.
2008-05-22 01:14:43 +00:00
Alexander Kabaev
046f4eba8c Fix spelling mistake in comment. 2008-04-09 20:27:53 +00:00
Ruslan Ermilov
4f6d329f1e - Convert NO_INSTALLLIB option to a new syntax: makefiles should
test MK_INSTALLLIB, users can set WITHOUT_INSTALLLIB.  The old
  NO_INSTALLLIB is still supported as several makefiles set it.

- While here, fix an install when instructed not to install libs
  (usr.bin/lex/lib/Makefile).

PR:		bin/114200
Submitted by:	Henrik Brix Andersen
2007-10-20 19:01:50 +00:00
Ruslan Ermilov
dc9f26d3c3 Style: remove redundant parentheses. 2007-05-21 09:01:23 +00:00
Daniel Eischen
00fb440c1a Enable symbol versioning by default. Use WITHOUT_SYMVER to disable it.
Warning, after symbol versioning is enabled, going back is not easy
(use WITHOUT_SYMVER at your own risk).

Change the default thread library to libthr.

There most likely still needs to be a version bump for at least the
thread libraries.  If necessary, this will happen later.
2007-05-13 14:12:40 +00:00
Alexander Kabaev
2da4e4706d Break out Version.map generation code from bsd.lib.mk into a
separate bsd.symver.mk file. Include bsd.symver.mk in bsd.lib.mk
to maintain the status quo.
2007-04-03 18:56:05 +00:00
Ruslan Ermilov
1340597def - Don't pass an empty ``NM='' to lorder(1) when NM is unset.
- Don't redundantly use "env".
- Protect NM value with quotes, just in case.
2006-10-25 09:43:38 +00:00
David E. O'Brien
e2e1ab1c94 When building WITHOUT_ASSERT_DEBUG, we need to disable -Werror as its easy
to see "warning: unused variable `foo'".
2006-09-13 23:27:21 +00:00
Warner Losh
4df1f59e8f Add a knob for compiling the tree -DNDEBUG. This turns off all the
asserts and makes binaries smaller.  The binaries also become
repeatable again.  As it was, without this md5's of binaries built
with different paths differed.

# Where do I document this?
2006-09-11 05:35:57 +00:00
Warner Losh
b608b4520b Pass whatever the value of NM down to lorder. This allows one to
override NM in Makefiles when, for example, cross compiling and have
that value be used by lorder.  NM normally isn't defined, so we pass a
null value to lorder.  lorder says 'NM=${NM-nm}' which causes it to
pickup the default value.
2006-08-25 23:50:05 +00:00
Dag-Erling Smørgrav
add47b9589 Add proper dependencies for the version map, and make sure 'make clean'
removes it if it was generated.

Reviewed by:	ru
2006-03-23 20:37:04 +00:00
Ruslan Ermilov
5740a2b62d Convert NO_PROFILE and NO_LIB32 to new style. 2006-03-18 21:37:05 +00:00
Ruslan Ermilov
e1fe3dba5c Reimplementation of world/kernel build options. For details, see:
http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html

The src.conf(5) manpage is to follow in a few days.

Brought to you by:	imp, jhb, kris, phk, ru (all bugs are mine)
2006-03-17 18:54:44 +00:00
Daniel Eischen
ab52e99198 Teach bsd.lib.mk to auto generate a version map file based on
a set of symbol definitions (VERSION_DEF) and symbol mappings
(SYMBOL_MAPS).

Add an awk script to generate the version map.

Suggested by:	ru
Helped by:	ru
Reviewed by:	ru
2006-03-16 15:12:26 +00:00
Ruslan Ermilov
b8435aa88d Handle NO_INCS solely inside bsd.incs.mk. 2006-02-03 16:50:32 +00:00
Ruslan Ermilov
be174d0cbd Add the NO_INCS knob to bsd.prog.mk and bsd.lib.mk to not include
bsd.incs.mk, and use it when installing 32-bit compat libraries
on amd64.  This causes it to *not* overwrite native headers with
i386 versions, which was the case with <fenv.h> and <vgl.h>.

PR:		amd64/83806
Prodded by:	bde
MFC after:	1 week
2005-11-19 06:45:44 +00:00
Poul-Henning Kamp
9c662f355f Don't install ${LIB}_pic.a if NO_TOOLCHAIN 2005-08-05 09:55:04 +00:00
Hartmut Brandt
84aac27381 Make sure the only thing that follows .endif or .else is a comment. 2005-04-11 07:13:29 +00:00
Alexey Zelkin
b9f5e42283 Allow building/installing of NLS catalogs while building of libraries
MFC after:	3 days
2005-02-08 10:37:34 +00:00
Ruslan Ermilov
00fbd40770 NOFSCHG -> NO_FSCHG 2004-12-21 09:53:14 +00:00
Ruslan Ermilov
2c74b2cb07 NOINSTALLLIB -> NO_INSTALLLIB 2004-12-21 09:51:09 +00:00
Ruslan Ermilov
a399b3b4e3 NOEXTRADEPEND -> NO_EXTRADEPEND 2004-12-21 09:42:10 +00:00
Ruslan Ermilov
ab7a294721 NODOCCOMPRESS -> NO_DOCCOMPRESS
NOINFO -> NO_INFO
NOINFOCOMPRESS -> NO_INFOCOMPRESS
NOLINT -> NO_LINT
NOPIC -> NO_PIC
NOPROFILE -> NO_PROFILE
2004-12-21 09:33:47 +00:00
Ruslan Ermilov
e653b48c80 Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by:	core
2004-12-21 08:47:35 +00:00
Ruslan Ermilov
c33bd5d626 Install precious shared libraries with -S.
Prodded by:	Xin LI
2004-10-01 07:57:02 +00:00
Dag-Erling Smørgrav
10717e2e95 Add SHLIB as a shortcut for shared-only libraries.
Not objected to by: bde, ru
2004-05-07 09:58:36 +00:00
Tom Rhodes
7b1ac86dc1 Remove whitespace at EOL. 2004-03-15 17:01:31 +00:00
Tom Rhodes
5a19f6d9d4 Fix some style bugs in previous commit.
Fix 'broken' ifdefs.
icc does not support profiling yet so remove unfinished code which was
supposed to help.

Submitted by:	netchild (original version)
Reviewed by:	ru
2004-03-14 01:29:05 +00:00
Tom Rhodes
06d6e4fcfe This are the build infrastructure changes to allow to use the
Intel C/C++ compiler (lang/icc) to build the kernel.

The icc CPUTYPE CFLAGS use icc v7 syntax, icc v8 moans about them, but
doesn't abort. They also produce CPU specific code (new instructions
of the CPU, not only CPU specific scheduling), so if you get coredumps
with signal 4 (SIGILL, illegal instruction) you've used the wrong
CPUTYPE.

Incarnations of this patch survive gcc compiles and my make universe.
I use it on my desktop.

To use it update share/mk, add
	/usr/local/intel/compiler70/ia32/bin	(icc v7, works)
or
	/usr/local/intel_cc_80/bin		(icc v8, doesn't work)
to your PATH, make sure you have a new kernel compile directory
(e.g. MYKERNEL_icc) and run
	CFLAGS="-O2 -ip" CC=icc make depend
	CFLAGS="-O2 -ip" CC=icc make
in it.

Don't compile with -ipo, the build infrastructure uses ld directly to
link the kernel and the modules, but -ipo needs the link step to be
performed with Intel's linker.

Problems with icc v8:
 - panic: npx0 cannot be emulated on an SMP system
 - UP: first start of /bin/sh results in a FP exception

Parts of this commit contains suggestions or submissions from
Marius Strobl <marius@alchemy.franken.de>.

Reviewed by:	silence on -arch
Submitted by:	netchild
2004-03-12 21:36:12 +00:00
Ruslan Ermilov
65d2bdc62c Fixed bogus ${FOO:Mbar} tests where the actual intent is to check
if the result set is empty.  While here, replaced non-bogus empty
string comparisons with equivalent empty() checks.
2004-01-27 23:22:15 +00:00
Ruslan Ermilov
6b14fdfa52 Guess better the source for object files in case .depend file is
missing and there are multiple choices using multiple inference
(suffix transformation) rules.

This is known to fix compilation of s_log1p.o in lib/msun on i386,
as otherwise it attempted to use s_log1p.S as the source (which is
marked broken) instead of legal s_log1p.c which is in CFLAGS.  The
normal case where .depend file exists is not affected.

Reviewed by:	bde
2004-01-17 18:51:55 +00:00
Ruslan Ermilov
be01c2220b - No need to create libfoo.so -> libfoo.so.X symlinks in /lib,
as it was decided that our toolchain will revert to looking
  for libraries in /usr/lib only.

- Make /usr/lib/libfoo.so -> /lib/libfoo.so.X symlinks absolute
  so that they still work if /usr is symlinked.

- Remove stale /usr/lib/libfoo.so.X libraries during install.

Discussed with:	gordon, obrien, peter
2003-09-07 14:15:40 +00:00
Peter Wemm
eb7f25e17e Emergency backout of rev 1.152. This is a 100% guaranteed way to totally
hose your system.  You end up with just about everything statically linked
(except for libpam.so), which then causes all the pam users to fail.
eg: login, sshd, su etc all stop working because dlopen no longer works
because there is no libc.so in memory anymore.

gcc passes -L/usr/lib to ld.  The /usr/lib/libxxx.so symlink is *not* a
compatability link.  It is actually the primary link.  There should be no
symlinks in /lib at all.  Only /lib/libXX.so.Y.

peter@daintree[9:27pm]/usr/bin-104> file yppasswd
yppasswd: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 5.1.1, dynamically linked (uses shared libs), stripped
peter@daintree[9:27pm]/usr/bin-105> ldd yppasswd
yppasswd:
        libpam.so.2 => /usr/lib/libpam.so.2 (0x280d1000)
peter@daintree[9:28pm]/usr/bin-106>

Note no libc.so.5.  Hence libpam.so.2 has unresolved dependencies.

I believe this is also the cause of the recent buildworld failures when
pam_krb5.so references -lcrypto stuff etc and when librpcsvc.so references
des_setparity() etc.

This change could not possibly have worked, unless there are other missing
changes to the gcc configuration.  It won't work with ports versions of
gcc either.
2003-09-04 04:29:11 +00:00
Ruslan Ermilov
1c0b8fcbfe As ld(1) was taught to look into /lib, there's no longer a reason
for having compatibility .so symlinks.

Submitted by:	obrien
Reviewed by:	gordon
2003-09-03 06:31:50 +00:00
Ruslan Ermilov
41f8931571 Whitespace diff reduction between bsd.prog.mk and bsd.lib.mk outputs. 2003-08-31 15:20:17 +00:00
Gordon Tetlow
b20654d416 When creating .so symlinks, use SHLIBDIR instead of LIBDIR so symlinks
are created in the correct location. Always make them. For libraries
that live in /lib, this causes a /lib/libfoo.so and a compatibility
/usr/lib/libfoo.so to be created. We may want to drop the
/usr/lib/libfoo.so symlink at some future point.
2003-08-17 23:56:29 +00:00
Gordon Tetlow
3d7f3b48c8 Handle the case where SHLIBDIR != LIBDIR. When creating links, we
need relative pathing to work correctly. This is s necessary step
for putting libraries in /lib while the .so symlinks still live
in /usr/lib.

This should be a big NOOP in the case where SHLIBDIR == LIBDIR.
2003-08-17 07:42:50 +00:00
Ruslan Ermilov
d58e932f04 Don't trust sys.mk,v 1.61 commit log, and make .asm alias for .S. 2003-07-02 17:03:28 +00:00
Ruslan Ermilov
f79d11b7ba Revert to using as(1) to compile plain assembler source files.
All .s files that need cpp(1) processing (see gcc(1) manpage's
DESCRIPTION section) have been repo-copied to .S files.  This
is mostly to bring bsd.lib.mk in agreement with sys.mk.

Desired by:	obrien
2003-07-02 12:41:04 +00:00
Ruslan Ermilov
a51613b6da There's no reason to keep separate AINC knob anymore.
The only real use of it (lib/libc/Makefile) has been
fixed, and if necessary, the contents of AINC should
be added to CFLAGS.

Explained by:	bde
2003-07-01 15:15:45 +00:00
Ruslan Ermilov
fdcdec572a Propagate the ${AINC} knob (assembler include) to sys.mk,
and remove the .S.o transformation rule from bsd.lib.mk.
2003-06-30 20:02:46 +00:00
Ruslan Ermilov
70d9bc066f Removed suffix-transformation rules that are duplicates
(or are subsets) of the corresponding rules in sys.mk.
2003-06-30 19:48:14 +00:00
Ruslan Ermilov
ea90b1f55d The use of ld(1) to strip compiler local and non-global
symbols from object files has bitrotted over the last
thirteen years, and it now does more harm than good.

An attempt to work around the problems caused by using
ld(1) for stripping was to pass LDFLAGS to the ld(1)
command, but this was not right either as ${LDFLAGS}
should, by design, be used with cc(1) and not ld(1).

One of the proposed solutions was to use the objcopy(1)
utility to do the strip work, and the other would be to
use strip(1), but Bruce Evans suggested not stripping
any symbols at all.  This works by leaving the grunt
work to the final strip(1) command (when installing the
binary).

Submitted by:	bde
2003-06-30 19:03:56 +00:00
Gordon Tetlow
3c9b856357 Add ${CRUNCH_CFLAGS} support for adding compile options to crunch
components. This is generally considered a non-optimal solution but
it gets the job done for the /rescue case.

Submitted by:	Tim Kientzle <kientzle@acm.org>
2003-06-29 18:16:26 +00:00
Peter Wemm
ef5c58a14c Be consistent about the use of ${LDFLAGS} for the internal rules. Some
were missing.  This made it difficult to add backend ABI overrides when
building shared libs.
2003-06-26 01:01:48 +00:00
David E. O'Brien
a89bd62015 Remove NOSHLIBS, users can get by with NOPIC.
Desired by:	ru
2003-06-10 04:47:49 +00:00
David E. O'Brien
74a0458023 Add NOSHLIBS.
If one is using NOSHARED, why build the libs.
2003-04-27 21:44:52 +00:00
Mark Murray
5741a42f2f Extend the lint handling a bit.
o Make it possible to prevent parts of the tree from being linted
  (say) during a 'make world' by setting NOLINT in a leaf Makefile.

o Make "make lint" work (better) for executable programs.

o Clean up (nuke!) a syntax damaged pipeline.
2002-09-20 19:32:51 +00:00
Peter Wemm
66422f5b7a Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports.  As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL.  It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha
2002-09-17 01:49:00 +00:00
Ruslan Ermilov
d2893b161b Drop support for COPY, -c has been the default mode of install(1)
for a long time now.

Approved by:	bde
2002-07-29 09:40:17 +00:00
Ruslan Ermilov
397304fe4f Moved `clean:' below, just before the inclusion of bsd.obj.mk,
so that CLEANFILES from bsd.man.mk and bsd.dep.mk are honored.
2002-07-21 21:22:45 +00:00
Ruslan Ermilov
5113446a35 Only define SHLIB_LINK if SHLIB_NAME matches the *.so.* pattern.
(Useful for RELENG_4's lib/libpam/modules.)
2002-07-19 18:40:13 +00:00
Ruslan Ermilov
42c0ad02c2 Correction to the previous revision: define SHLIB_LINK if SHLIB_NAME
is defined (whether or not LIB is defined).
2002-07-18 17:44:20 +00:00
Ruslan Ermilov
4d7d5e7c11 Make it possible (again) to build and install shared library only.
One needs to define SHLIB_NAME for this to work.

Prodded by:	mi
2002-07-03 16:22:43 +00:00
Ruslan Ermilov
badb7c1c6b Try really hard to fix parallel installs. Add a bunch of .ORDER
directives to ensure that all realinstall sub-tasks are executed
after beforeinstall, similarly ensure that all afterinstall sub-
tasks are executed after realinstall.  Demonstration:

all: task1 task2
.ORDER: task1 task2

task2: task2_subtask
.ORDER: task1 task2_subtask

task1 task2 task2_subtask:
	@sleep `jot -r 1 0 1.0`
	@echo ${.TARGET}

Without the second .ORDER directive, task2_subtask can be run in
parallel with task1.

Spotted by:	Andrea Campi <andrea@webcom.it>
2002-07-03 12:28:03 +00:00
Ruslan Ermilov
84f94a79a0 Handle installation of hard and symbolic links via a seperate .mk file. 2002-07-02 12:16:54 +00:00
Juli Mallett
dd247f7371 If CLEANFILES is nil or not defined, do not try to remove it. This happens
when SRCS is entirely files which produce only one compiled form, and when
NOMAN is defined.  This does not seem to happen in STABLE.

Approved by:	ru
2002-06-26 08:41:00 +00:00
Ruslan Ermilov
af2dc86820 Reimplement FILES support using bsd.files.mk with the
same set of features as in recently added bsd.incs.mk
(FILESGROUPS, accessibility from both bsd.prog.mk and
bsd.lib.mk, de-pessimized typical installation path,
etc.)  New standard targets: buildfiles, installfiles,
and files (buildfiles + installfiles).
2002-06-03 14:49:34 +00:00
Ruslan Ermilov
79273cd77c Revision 1.39 made filtering of CFLAGS unnecessary. 2002-05-22 11:03:35 +00:00
Ruslan Ermilov
5d86203733 Rename includes' to buildincludes'.
Rename `incsinstall' to `installincludes'.
Make `includes' a -j safe shortcut for `buildincludes' + `installincludes'.
`buildincludes' and `installincludes' are SUBDIR friendly, if run directly.
2002-05-15 16:19:54 +00:00
Ruslan Ermilov
12e0852a7a CLEANFILES are too long for libc. 2002-05-13 15:23:56 +00:00
Ruslan Ermilov
2a53f3fb35 Major cleanup of bsd.lib.mk.
Get rid of the INTERNALSTATICLIB knob and just use plain INTERNALLIB.
INTERNALLIB now means to build static library only and don't install
anything.  Added a NOINSTALLLIB knob for libpam/modules.  To not
build any library at all, just do not set LIB.
2002-05-13 10:53:24 +00:00
Ruslan Ermilov
c7b111cba8 Added new bsd.incs.mk which handles installing of header files
via INCS.  Implemented INCSLINKS (equivalent to SYMLINKS) to
handle symlinking include files.  Allow for multiple groups of
include files to be installed, with the powerful INCSGROUPS knob.
Documentation to follow.

Added standard `includes' and `incsinstall' targets, use them
in Makefile.inc1.  Headers from the following makefiles were
not installed before (during `includes' in Makefile.inc1):

	kerberos5/lib/libtelnet/Makefile
	lib/libbz2/Makefile
	lib/libdevinfo/Makefile
	lib/libform/Makefile
	lib/libisc/Makefile
	lib/libmenu/Makefile
	lib/libmilter/Makefile
	lib/libpanel/Makefile

Replaced all `beforeinstall' targets for installing includes
with the INCS stuff.

Renamed INCDIR to INCSDIR, for consistency with FILES and SCRIPTS,
and for compatibility with NetBSD.  Similarly for INCOWN, INCGRP,
and INCMODE.

Consistently use INCLUDEDIR instead of /usr/include.

gnu/lib/libstdc++/Makefile and gnu/lib/libsupc++/Makefile changes
were only lightly tested due to the missing contrib/libstdc++-v3.
I fully tested the pre-WIP_GCC31 version of this patch with the
contrib/libstdc++.295 stuff.

These changes have been tested on i386 with the -DNO_WERROR "make
world" and "make release".
2002-05-12 16:01:00 +00:00
David E. O'Brien
5aa237561f Back out rev 1.118. 2002-05-12 13:48:53 +00:00
David E. O'Brien
e20b0b7333 [Ab]use LDFLAGS rather than CFLAGS.
BDE tells me POSIX pretends `ld' as a directly callable entity does not exist.
2002-05-10 09:32:39 +00:00
David E. O'Brien
bea805383e Pass CFLAGS to {CC} when using it as an `ld' replacement. 2002-05-10 01:30:34 +00:00
David E. O'Brien
d23aa1ef0f Pay attention to LDFLAGS when linking. 2002-05-09 16:43:07 +00:00
David E. O'Brien
8500d819cc Get rid of the INTERNALSTATICLIB knob and just use plain INTERNALLIB.
INTERNALLIB now implies NOPROFILE, NOMAN, and don't install anything.
Add a NOLIB knob.
2002-05-09 00:44:13 +00:00
Ruslan Ermilov
afeaaa846c Added internal, non-recursive (SUBDIR) versions of the `all-man'
and `maninstall' targets.  This fixes the issue where each subdir
was descended into twice during "make all", and also resurrects
the standardization of `maninstall'.

Urged by:	bde
2002-05-07 15:42:56 +00:00
Ruslan Ermilov
b90dab70f1 Install the manpages before descending into SUBDIRs. 2002-05-07 15:27:56 +00:00
Ruslan Ermilov
c5234b56b6 Abuse bsd.obj.mk for defining default distribute target. 2002-04-24 13:29:34 +00:00
David E. O'Brien
01df2ec328 Change the name of the 'bin' distribution to 'base'.
This is done since it contains much more than /bin, and also gets in the
way when making a combined install+fixit CD.

OK'ed by:	jkh
2002-04-23 22:16:41 +00:00
Ruslan Ermilov
b25a566d47 Merge bsd.obj.mk's version of the _SUBDIR target with bsd.subdir.mk.
Ensure all standard targets honor SUBDIR.  Now `make obj' descends into
SUBDIRs even if NOOBJ is set (some descendants may still need an object
directory, but we do not have such precedents).  Now `make install' in
non-bsd.subdir.mk makefiles runs `afterinstall' target _after_ `install'
in SUBDIRs, like we do in bsd.subdir.mk.  Nothing depended on the wrong
order anyway.

Fixed `distribute' targets (except for the bsd.subdir.mk version) so that
they do not depend on _SUBDIR; `distribute' calls `install' which already
depends on _SUBDIR.

De-standardize `maninstall', otherwise manpages would be installed twice.
(To be revised later.)
2002-04-23 09:03:56 +00:00
Ruslan Ermilov
72d5490744 Make .asm transformation rules synonyms to the .s rules. 2002-04-22 08:56:34 +00:00
Mark Murray
2738ffebcc Style. Fix long lines and a <tab> indent that should be 4 spaces. 2002-04-21 17:26:16 +00:00
David E. O'Brien
3b9a798ffc reorg a little. 2002-04-20 08:41:55 +00:00
David E. O'Brien
e517d11e8d Add .asm as an alias for .s. .asm is common in contribed sources.
Helps with:	gcc31 build.
2002-04-19 18:01:03 +00:00
Ruslan Ermilov
2bdaf7e81c Don't include bsd.own.mk from sys.mk, this makes it impossible
to use ``.if defined()'' inside bsd.own.mk to test for defines
in individual makefiles.  For example, setting DEBUG_FLAGS in
Makefile didn't take the desired effect on the STRIP assignment.

Added bsd.init.mk (like in NetBSD) that handles the inclusion
of ../Makefile.inc and bsd.own.mk from all bsd.*.mk files that
"build something".

Back out bsd.own.mk,v 1.15: moved OBJFORMAT initialization back
to sys.mk (several source tree makefiles want to check it early)
and removed MACHINE_ARCH initialization (it's hard to see from
looking at the commitlogs what the problem was at the time, but
now it serves no purpose).

Prohibit the direct inclusion of bsd.man.mk and bsd.libnames.mk.

Protect bsd.obj.mk from repetitive inclusion.  Prohibiting the
direct inclusion of bsd.obj.mk might be a good idea too.
2002-04-17 13:49:29 +00:00
Ruslan Ermilov
88505e11bc Fixed the nasty bug where .depend file that exists somewhere in
the .PATH (but not in the ${.OBJDIR}) would result in a leak of
the ${OBJS}: ${SRCS:M*.h} dependency hint.

Spotted by:	fixing the broken gnu/usr.bin/cc/cc1obj build
MFC after:	1 day
2002-04-07 14:58:12 +00:00
Dag-Erling Smørgrav
8fd9852b57 Install static and profiled libraries with -C. 2002-03-22 20:28:16 +00:00
Ruslan Ermilov
bbb467cd9a lint the previous lint commit.
Reviewed by:	markm
2002-03-18 09:35:45 +00:00
Mark Murray
766f7d6e03 Allow "make lint" to mostly work. Our sources are very unclean WRT
lint, so this is turned off by default. Setting WANT_LINT will turn
on generation of lint libraries for /usr/libdata/lint/*.ln.

Reviewd by:	silence in -audit.
2002-03-17 10:05:57 +00:00
David E. O'Brien
ec5d7223f1 Consistently use $PICFLAG. 2002-03-12 01:18:07 +00:00
David E. O'Brien
e3ed55f892 Spell pic "PIC" for sparc64. 2002-03-12 01:14:19 +00:00
Ruslan Ermilov
ea5c0da93b Obviate the need to set the COMPILER_PATH and LIBRARY_PATH in Makefile.inc1
to pick up the correct cross-tools (the compiler executables and binutils)
and special linker files (crt*.o).  This is now controlled by a single knob,
TOOLS_PREFIX, when building cross-tools.

Fixed regression in Makefile.inc1,v 1.203 (-nostdinc).  This clobbered target
architecture's CFLAGS with building host's CPUTYPE setting in /etc/make.conf,
and had a nice but nasty side effect of exposing some (normally hidden) bugs
in system headers.

(Attempt to move the "-nostdinc -I..." part of CFLAGS into the new CINCLUDES
(modeled after a similar CXXINCLUDES) eventually failed because hard-coding
${WORLDTMP}/usr/include to be the first in the include list does not always
work, e.g. lib/libbind.)

Compensate the -nostdinc removal by making cpp(1) built in the cross-tools
stage to not look for <> header files in the building host's /usr/include
(already committed as gnu/usr.bin/cc/cc_tools/freebsd-native.h, revisions
1.10-1.12, STANDARD_INCLUDE_DIR).

: $ /usr/obj/usr/src/i386/usr/bin/cpp -v /dev/null
:
: Before:
:
: #include <...> search starts here:
:  /usr/obj/usr/src/i386/usr/include
:  /usr/include
: End of search list.
:
: After:
:
: #include <...> search starts here:
:  /usr/obj/usr/src/i386/usr/include
:  /usr/obj/usr/src/i386/usr/include

(Disabling the use of GCC_INCLUDE_DIR in the FREEBSD_NATIVE case would fix
the duplicate above.)

Get rid of the (now unneeded) -I${DESTDIR}/usr/include magic in bsd.prog.mk
and bsd.lib.mk.  Finish the removal of LDDESTDIR in bsd.lib.mk,v 1.55 -- we
no longer have users of it.

The required changes to gcc were already committed as contrib/gcc.295/gcc.c,
revisions 1.23 and 1.24.

Basically, this allows for the changes above plus makes gcc(1) persistent
about path configuration, whether it's configured as a native or a cross
compiler:

: $ /usr/obj/usr/src/i386/usr/bin/cc -print-search-dirs
: install: /usr/obj/usr/src/i386/usr/libexec/(null)
: programs: /usr/obj/usr/src/i386/usr/libexec/elf/:/usr/obj/usr/src/i386/usr/libexec/
: libraries: /usr/obj/usr/src/i386/usr/lib/
:
: $ /usr/obj/alpha/usr/src/i386/usr/bin/cc -print-search-dirs
: install: /usr/obj/alpha/usr/src/i386/usr/libexec/(null)
: programs: /usr/obj/alpha/usr/src/i386/usr/libexec/elf/:/usr/obj/alpha/usr/src/i386/usr/libexec/
: libraries: /usr/obj/alpha/usr/src/i386/usr/lib/

Reviewed by:	bde, obrien
2002-02-21 10:23:41 +00:00
Bruce Evans
08b443022e Unbreak "make lint" for programs and "make llib-l${LIB}.ln" for
libraries a little by not passing all of ${CFLAGS} to lint.  Pass
only options matching -[DIU]*.  The important -nostdinc option can't
be passed like I first thought because lint misinterprets as
"-n -o stdinc".  The unimportant -B* option can't be passed because
lint doesn't support it.  Otherwise, we pass the same options as
to mkdep, exept for a bug in the latter: -U* is not passed.  All
this depends on option args not being separated from option flags
by a space.
2001-12-03 22:31:09 +00:00
Ruslan Ermilov
4448c79e47 Fix cross-building, etc:
1.  To cross-build, one now needs to set TARGET_ARCH, and not the
    MACHINE_ARCH.  MACHINE_ARCH should never be changed manually!

2.  Initialize DESTDIR= explicitly for bootstrap-tools, build-tools,
    and cross-tools stages.  This fixes broken header and library
    dependencies problem.  We build them in the host environment,
    and obviously want them to depend on host headers and libraries.
    The problem with broken header dependencies for bootstrap-tools
    and cross-tools was already partially solved (see BOOTSTRAPPING
    tests in bsd.prog.mk and bsd.lib.mk), but it was still there for
    build-tools if the user ran "make world DESTDIR=/foo".  Also,
    for all of these stages, the library dependencies were broken
    because of how bsd.libnames.mk define DPADD members.

    We still provide a glue to install bootstrap- and cross-tools
    under the ${WORLDTMP}.

    Removed PATH overrides for bootstrap-, build-, and cross-tools
    stages.  There is just no reason why we would need to override
    it, and the hacks to clean up the ${WORLDTMP} in the -DNOCLEAN
    case are no longer needed with fixes from this step.

    That is, we now never use ${WORLDTMP} headers and libraries,
    and we don't use any ${WORLDTMP} installed binaries during
    these stages.  Again, these stages depend solely on the host
    environment, including compiler, headers, and libraries.

3.  Moved "miniperl" back from cross-tools (it has nothing to do
    with a cross-compiler) to build-tools where it belongs.  The
    change from step 1 let to do this.  Also, to make this work,
    build-tools targets of "cc_tools" and "miniperl" were modified
    to call "depend".  Here follow the detailed explanations.

    There are two categories of build tools, for now.  In the first
    category there are "cc_tools" and "miniperl".  They occupy the
    whole (sub)directory, and nothing needs to be done in this
    subdirectory later during the "all" stage.  They are also
    constructed using system makefiles.  We must build the .depend
    early in the build-tools stage because:

    1)  They use (and depend on) the host environment.

    2)  If we don't do this in build-tools, the "depend" stage of
        buildworld will do this for us; wrong library and header
        dependencies will be recorded (DESTDIR=${WORLDTMP}) and,
        what's worse, the "all" stage may then clobber the
        build-architecture format tools (that we built in the
        build-tools stage) with the target-architecture format
        ones, breaking cross build.

    In the second category there are all other build-tools.  They
    share their directory with the "main" module that needs them
    in the "all" stage, and they don't show up themselves in the
    .depend file.  The portion of this fix was already committed
    in gnu/usr.bin/cc/cc_tools/Makefile,v 1.52.

4.  "libperl" is no longer a build tool, and "miniperl" is the
    stand-alone application.  I had to make this change because
    build-tools and "all" stages share the same object directory.
    Without this change, if we cross compile, libperl.a is first
    built for the build architecture during the build-tools stage
    (for the purposes of immediate linkage with "miniperl").
    Later on, the "all" stage sees this library as up-to-date,
    and doesn't rebuild it.  The effect is that the wrong format
    static libperl library is installed with installworld.

5.  Fixed "includes" to install secure/lib/libtelnet headers if
    required.

Reviewed by:	bde
2001-09-29 13:17:54 +00:00
Ruslan Ermilov
9222e100d6 When bootstrapping (build-tools and cross-tools), avoid
including the ${WORLDTMP}/usr/include headers that may
not match the installed host libraries.

This should fix the 20010919 UPDATING entry.
2001-09-21 08:17:48 +00:00
Kris Kennaway
d510ecb42b Bring in the WARNS directive from NetBSD, localized in a new bsd.sys.mk
to avoid polluting sys.mk.  This directive controls the addition of
compiler warning flags to CFLAGS in a relatively compiler-neutral manner.

The idea is that WARNS can be set in Makefile.inc or in individual
Makefiles as they become clean, to prevent the introduction of new
warnings in the code.  -Werror is added by default
2001-05-19 23:18:21 +00:00
Ruslan Ermilov
918fb560b4 Make it possible to build manpages for the entire source tree. 2001-03-27 08:43:28 +00:00
Ruslan Ermilov
b139be2503 Do not depend on ``all-man'' if -DNOMAN. 2001-03-26 07:46:57 +00:00
Peter Wemm
f45b036f46 Change "building the standard ${LIB} library" to "building the static
${LIB} library".  "standard" tends to imply the one that is normally
used... but by default it is not the case - the .so would be the
"standard" library.  Therefore, change this to 'static'.  Another option
might be "conventional ${LIB} library".
2000-10-02 08:48:49 +00:00
Bruce Evans
a8e97da092 When dubiously reprogramming .SUFFIXES, don't screw up the order of .S
relative to .s.  This fixes wrong sources being preferred after
"gcc -save-temps" creates .s files from .S files.
2000-06-08 18:11:15 +00:00
Ruslan Ermilov
1a66233dfb Unbroke PRECIOUSLIB feature (broken in rev 1.88).
Original version submitted by:	Jim Bloom <bloom@acm.org>
Reviewed by:	bde
Approved by:	jkh
2000-02-03 09:36:17 +00:00
Rodney W. Grimes
fccf86c1a4 Introduce the new mk internal target _includeinstall and add the
controlling knob defaults INCOWN, INCGRP, INCMODE, and INCDIR.

Reviewed by:	marcel, and make world
2000-01-14 07:41:11 +00:00
Peter Wemm
7f3dea244c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
Tim Vanderhoek
e902c1bb07 Add variable INSTALLFLAGS_EDIT used to remove arbitrary INSTALLFLAGS.
Specifically intended for removing -fschg ("INSTALLFLAGS_EDIT=:S/schg/uchg/")
this makes the NOFSCHG flag redundant.  NOFSCHG will still be honoured by
bsd.lib.mk but is valid for buildworld only.  NOFSCHG is still implemented in
the old way (ie. _not_ ".if NOFSCHG then { INSTALLFLAGS_EDIT+=:S/schg/,/ }"
to emphasize the fact that NOFSCHG is only supported in a limited
fashion and for buildworld.

The interface and implementation are such that future use of flags such
as sappnd can also be easily removed or altered (perhaps to uappnd).

This commit brought to you by the letters B, D, and E, and the numbers six,
one, thirteen, and three.
1999-07-31 20:27:33 +00:00
John-Mark Gurney
0099533a1c add support to buildworld as a normal user:
-DNOFSCHG	disables installation of libs with flag schg
	GAMEGRP		change the group with which games are installed

also organize the binary section into alphebetical order some what..
1999-06-24 22:50:24 +00:00
Bruce Evans
2336a7ea75 Removed all traces of LN_FLAGS. It was only used to produce a link
/usr/sbin/sysctl -> ${DESTDIR}/sbin/sysctl in some versions of 2.2,
and this link was broken if DESTDIR was set.

Added a SYMLINKS macro.  This works the same as LINKS, except it
creates symlinks and the linked-to pathname may be relative.  This
is more flexible than LN_FLAGS, since it supports installing
symlinks independently of hard links.

Use `ln -f[s] ...' instead of `rm -f ...; ln [-s] ...' for LINKS and
SYMLINKS.  This is equivalent if the target is neither a directory nor
a symlink to a directory.

PR:		8279
1999-03-23 03:06:25 +00:00
John Polstra
368c8de45c Introduce a new variable NEED_LIBNAMES. If it is defined,
<bsd.libnames.mk> is included regardless of the object file format.

This is needed to fix the a.out PAM breakage that manifests itself
when trying to build login.
1999-01-22 12:41:27 +00:00
John Polstra
f67eb0dce4 Add some capabilities to <bsd.lib.mk> so that it can be used for
building dlopen-able modules, and add features needed to build a
static PAM library.  I think I cleaned it up some, too, but beauty
is in the eye of the beholder.

You can now build a shared library without version numbers, by
defining SHLIB_NAME to something like "pam_unix.so".  If SHLIB_MAJOR
and/or SHLIB_MINOR are set, SHLIB_NAME gets the usual default value,
but it can be overridden if desired.  If none of these symbols are
set, no shared library is built.

SHLIB_LINK controls the name of the symbolic link that points to
the library.  If it is unset, no link is made.  In the usual case,
it gets the right default: e.g., "libc.so" for ELF, nothing for
a.out.  This can be overridden.

STATICOBJS can be set to a list of extra object files that should
be added to the static library but not to the shared library.
These objects are added to the profiled library too.

These changes should make it easy to use <bsd.lib.mk> for building
things such as PAM modules and dynamic linkers, for which <bsd.prog.mk>
has been abused until now.
1999-01-20 21:42:40 +00:00
John Polstra
f92bdbd010 Switch to using ".So" as the extension for PIC object files rather
than ".so".  The old extension conflicted with well-established
naming conventions for dynamically loadable modules.

The "clean" targets continue to remove ".so" files too, to deal with
old systems.
1999-01-09 21:51:00 +00:00
Bruce Evans
1749f1e3bf Removed bitrotted code for setting OBJFORMAT. 1998-12-06 17:14:37 +00:00
John Polstra
851ee3c484 For ELF, create a symbolic link libfoo.so -> libfoo.so.NNN in the
object tree too.  This makes it possible to link against a shared
library that hasn't been installed yet.
1998-11-18 00:48:11 +00:00
Warner Losh
830775aaf9 Default to aout only on i386. Before we defaulted to elf only on
Alpha.  This is a minor, but important distinction.  Should be a no-op
to the install base.  If OBJFORMAT is set elsewhere, things work
exactly as they did before.
1998-10-19 20:09:17 +00:00
David E. O'Brien
80db5fd640 Change lib specification in `clean' target to match ELF shared libs too.
Reported by:	Kris Kennaway <kkennawa@physics.adelaide.edu.au>
1998-09-20 19:49:44 +00:00
John Birrell
cdaa52cf0c BINFORMAT -> OBJFORMAT ready for E-day. 1998-08-30 20:33:27 +00:00
Peter Wemm
1cfd4a8b66 Clean up all temporaries that we can generate. 1998-08-08 13:22:06 +00:00
Peter Wemm
d9eb0d4d1b Use more standard ld commands when stripping symbols out; ld -O is a
freebsd-aout extension.  The binutils ld doesn't understand it.
Essentially this is backing out rev 1.33 for elf and other toolchain
support..
1998-08-08 13:11:44 +00:00
Peter Wemm
e0301e5d4b Make ../Makefile.inc handling more consistant to prevent multiple includes
when certain .mk files include other .mk files.  This will remove the
need for multiple include protection in some other makefiles around the
tree (and helps some elf conditionals).
1998-08-08 07:02:08 +00:00
Dmitrij Tejblum
c7cbe79e18 Recognize ".cpp" as a C++ suffix.
PR:		3476
1998-06-05 18:38:55 +00:00
Peter Wemm
31d33723f2 Hard coded /usr/lib reference 1998-06-04 15:15:38 +00:00
Bruce Evans
5d9599c863 Oops, forgot references in previous commit.
Submitted by:	Brian Cully <shmit@erols.com>
PR:		6178
1998-05-15 09:34:48 +00:00
Bruce Evans
70a6e3314e Support Objective C almost as well as C++.
Notes:
- We no longer use -fgnu-runtime in bsd.lib.mk, since it is the default
  and bsd.lib.mk is the wrong place to override it.
- Gnu C doesn't have a special compiler driver for Objective C like it
  does for C++.  The defaults are suitable for Gnu C.  Use `OBJCLIBS='
  in /etc/make.conf for POC.
1998-05-15 09:30:13 +00:00
Eivind Eklund
69b87d3e06 Introduce the 'regress' target.
Silently approved by:	-hackers, -current
1998-03-12 20:02:17 +00:00
Bruce Evans
fcccc50b75 Fixed generation of extra dependencies:
- the two `_EXTRADEPEND::' targets potentially clobbered each other for
  `make -jN'.  In practice, the output for the second target sometimes
  disappeared.
- bogus dependencies were generated for static libraries.
1998-03-07 13:13:41 +00:00
Bruce Evans
14172e4615 If .depend doesn exist, then pretend that all objects depend on all
headers in ${SRCS}, as in bsd.lmod.mk and bsd.prog.mk.  This helps
`make [-j]' work when .depend doesn't exist.  Even plain `make'
sometimes only worked because of magic ordering in ${SRCS}.
1998-03-06 08:08:36 +00:00
Bruce Evans
27cb203497 Removed default tags target. It was identical to the central one in
bsd.dep.mk.
1998-02-20 15:58:59 +00:00
John Birrell
5bd65ce6ad Choose the default binary format based on machine type.
Alpha is elf, not aout.
1998-01-13 06:00:56 +00:00
Bruce Evans
c0849ac85c Oops, rm -f can't handle empty lists. 1997-12-17 15:18:53 +00:00
Bruce Evans
e3ace70e1e Normally don't include <bsd.libnames.mk>. Include it in the !aout case
(as in bsd.prog.mk).  Include it if `checkdpadd' is being made, so that
it can be checked until it goes away.

Don't clean files that we don't create.

Fixed style of empty test.
1997-12-17 13:36:44 +00:00
Peter Wemm
e782d0b55d Restore the BINFORMAT?= in sys.mk, or it's painfully difficult to use
.if in Makefiles.  bsd.prog.mk and bsd.lib.mk do not depend on it however.

Allow overriding of the -soname arg when building the lib*crypt.so* libs
since libdescrypt.so and libscrupt.so both need a -soname of libcrypt.so
so that the symlink is obeyed at runtime rather than at compile time.
1997-09-05 11:45:15 +00:00
Peter Wemm
3ec75cc6df Change the BINFORMAT definitions so that they do not depend on sys.mk,
since 2.1.x make(1) apparently does not have the -m switch to set both
the the bsd.*.mk and sys.mk location, and this breaks 'make world' from a
2.1.x system.
1997-09-05 09:09:56 +00:00
Peter Wemm
8c05a446bf A first cut at some rules for building elf shared libs. Of particular
note, using "-Wl,-f" to generate a library objects list doesn't work
anymore since the hack to ld hasn't been incorporated into binutils-2.8.
(and the -f switch is used for something else already)

This is disabled by default, don't panic! :-)
1997-08-30 23:23:18 +00:00
Satoshi Asami
2799473b0c Merge buildworld/installworld patch to Makefile from RELENG_2_2. Patch
a couple *.mk files to enable -current world building on really old
machines (e.g., 2.1.5).

Reviewed by:	too many many people to list here, special thanks to bde
1997-08-05 03:49:49 +00:00
Jordan K. Hubbard
398ac038db Change the distribute targets so that a given item in our source tree
can place itself into n distributions, where n >= 1.
1997-06-21 15:40:34 +00:00
Satoshi Asami
e1eecc081e Add `B' to list of flags to pass through from C*FLAGS when using mkdep
(bsd.dep.mk) and compiling assembly language sources (bsd.lib.mk).
This doesn't change anything for our current source tree, but if you
want to use the -B switch in C*FLAGS to specify the location of
compiler subprograms, now you can do it.

Reviewed by:	bde (implicitly)
1997-06-18 03:39:34 +00:00
Doug Rabson
f8a7448fcc Add "-assert pure-text" to the link line. The warnings about RRS
relocations in text sections are now dependant on this flag.
1997-05-23 17:50:35 +00:00
Satoshi Asami
15db27b831 Change CXXINCLUDES to use "g++" explicitly. CXXINCLUDES was defined
with ${CXX} at the end; the only problem was, the directory name is
"g++" and ${CXX} is defined as "c++" in sys.mk.
1997-05-23 08:38:46 +00:00
John Polstra
ef431e2e9e Use "gcc -shared" instead of "ld -Bshareable" for building shared
libraries.  Remove the now-unneeded CPLUSPLUSLIB hack.  I will also
remove the CPLUSPLUSLIB definitions from the Makefiles that use it,
after the dust settles.

Use gcc's LIBRARY_PATH environment variable to handle DESTDIR,
instead of -L flags in LDDESTDIR.  LIBRARY_PATH is documented in
the gcc info pages.  It is better than using -L flags, because it
modifies the search for start-up files as well as for libraries.
A new variable LDDESTDIRENV is used to contain the normally-empty
LIBRARY_PATH environment setting.

LDDESTDIR is no longer set in <bsd.lib.mk>.  It is still honored for
the time being, because a couple of userland Makefiles still (wrongly)
set it.  These should be fixed, and LDDESTDIR should vanish.

Removed the commented-out "LDDESTDIR+=-nostdlib", because "gcc -shared"
doesn't link in any standard libraries anyway.

Removed the ".if defined(LDADD)" around the _EXTRADEPEND target for
shared libraries.  This target is always necessary now, because
c++rt0.o is linked into every shared library.

Don't merge this into -2.2 without first merging the support for
"gcc -shared".
1997-05-04 21:30:40 +00:00
Bruce Evans
32899676a8 Fixed missing strip step in .S.o and .S.po rules.
Fixed back to front -X and -x strip flags in .m.o and .m.po rules.
Fixed disordered .m.o and .m.po rules.  What is .m?

Stripping probably should be removed.  It makes problems in library
functions hard to debug...
1997-04-23 10:26:18 +00:00
Jordan K. Hubbard
6eb5e456f1 Support GLOBAL style tags. 1997-04-13 06:44:25 +00:00
John Polstra
9c8ff5b51f Use "-pg" instead of "-p" for generating profiled object files.
The two options differ only when linking, but "-p" is incorrect
because it is associated with the old-style "prof" command, which we
do not support.
1997-04-09 20:31:15 +00:00
Bruce Evans
663e9677d5 Use ld -f' (actually cc -Wl,-f') at `make depend' time to generate
almost perfect dependencies on crt0's and libraries.  DPADD and
bsd.libnames.mk should go away soon.  Use a new _EXTRADEPEND target
to implement this and to avoid editing of .depend when .depend isn;t
being rebuilt.  The afterdepend target doesn't seem to be good for
anything and is now unused.

Fixed LDDESTDIR for the DESTDIR case when ${SHLIBDIR} != /usr/lib.

Added commented-out -nostdlib to LDDESTDIR for the DESTDIR case.
The wrong libraries may be used without this; however it breaks
linkage to crt0 and libc.
1997-04-09 16:10:27 +00:00
Peter Wemm
b97fa2ef50 Revert $FreeBSD$ to $Id$ 1997-02-22 14:13:04 +00:00
Jean-Marc Zucconi
10a84c544f Fix a typo in the .s.o rule: asssembler -> assembler 1997-02-14 01:42:29 +00:00
Paul Traina
88636c0b6f Don't use /tmp for afterdepend cleanup target 1997-01-26 01:37:05 +00:00
Jordan K. Hubbard
1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
Bruce Evans
1a5ed802d2 Fixed dependencies on libraries which I broke in rev.1.39 of
bsd.prog.mk and didn't actually fix in rev.1.43 of bsd.lib.mk.
The library names must be defined before they are used in
dependencies.
1996-09-28 06:01:01 +00:00
Peter Wemm
0a5243c743 add -fgnu-runtime to the .m.o and .m.po rules, since we (will) have
the gnu libobjc rather than the NeXT one.  I do not understand objc
so I don't know the implications of this, but the gcc-2.7.2 libobjc is
built with this.
1996-09-19 07:01:45 +00:00
Steven Wallace
b3618bcf57 .TARGETOBJDIR has been removed from make and CANONICALOBJDIR set in
bsd.obj.mk.  Also, a make target called objwarn checks to see
if ${.OBJDIR} != ${.CURDIR} and ${.OBJDIR} != ${CANONICALOBJDIR}
and outputs a warning.  (No warning for the latter if MAKEOBJDIR or MAKEOBJDIRP
REFIX is set).  objwarn is called from all targets in bsd.prog.mk, bsd.kmod.mk,
and bsd.lib.mk.

Reviewed by:	bde
1996-09-18 06:09:19 +00:00
Bruce Evans
9b66eea42e Moved definitions of library names from bsd.prog.mk to a new central
file bsd.libnames.mk and include this file where necessary.  This fixes
null library names in ${DPADD}'s in library makefiles.
1996-09-05 18:05:08 +00:00
Jordan K. Hubbard
5c8baf29e9 Back out the recent DEPEND changes - as Bruce points out, it's bogus.
I'll leave any future Makefile hackery to him since he's clearly thought
about this a great deal more than I have.
1996-08-25 05:16:56 +00:00
Jordan K. Hubbard
67cebbd1da Make it possible to turn the depend pass off entirely with a NO_DEPEND
variable.
Requested-By: wollman
1996-08-23 22:33:33 +00:00
Jordan K. Hubbard
8d26610d5f Add depend to all target so that it's explicit. It's only done once,
even if make all is run multiple times, since the depend rule looks for
an existing .depend file.
1996-08-23 16:49:06 +00:00
Peter Wemm
6ba7f9ff84 Replace some leaky `cpp | as'' pipelines with `cc -x <lang>'' commands
to do the preprocessing and assembling.

(I've been running this for months, and had forgotten about it)
1996-08-11 12:24:44 +00:00
Jordan K. Hubbard
62eba8760b Use tsort -q 1996-08-03 06:43:05 +00:00
Poul-Henning Kamp
209396df73 Make cleandirs more safe
Suggested by:	bde
1996-06-29 03:12:49 +00:00
Jordan K. Hubbard
cd9a2f5c28 Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src.  This is the final version of the
patches, incorporating the feedback I've received from -current.
1996-06-24 04:26:21 +00:00
Poul-Henning Kamp
2b9cd23802 Add support for ${CLEANDIRS} that will be rm -rf'ed during clean & cleandir. 1996-06-17 15:59:52 +00:00
John Fieber
d6d88a1549 Fix incorrect handling of .cxx files in default rules. 1996-06-03 13:26:16 +00:00
Poul-Henning Kamp
50ef9020fd Avoid a ton of "mv" when making libs by using -O to ld.
Make lex rules reentrant.
1996-05-28 16:20:13 +00:00
Poul-Henning Kamp
4a6a373a1c Make some rules reentrant, and mark the onces that cannot be. 1996-05-09 13:01:44 +00:00
John Polstra
0bd0c3cc45 Add "-x" to the linker command for building shared libraries. This
eliminates many local symbols that could not be removed by the "ld -r -x"
steps on the individual object files.  It makes shared libraries
substantially smaller -- almost 11%, in the case of libc.so.3.0.
1996-04-21 17:45:38 +00:00
Wolfram Schneider
77ad77dd74 delete LIBDIR?= LINTLIBDIR?= LIBGRP?= LIBOWN?= LIBMODE?= SHLIBDIR?=
BINGRP?= BINOWN?= BINMODE?=
1996-03-24 00:21:04 +00:00
John Polstra
a659df8a06 Back out my previous change, which caused c++rt0.o to be linked into
every shared library, until I can diagnose the problems it is causing
for certain programs such as awk and groff.
1996-01-21 17:26:25 +00:00
John Polstra
19851e4b7f Always link /usr/lib/c++rt0.o into a shared library. CPLUSPLUSLIB is no
longer necessary, and can be removed from Makefiles.
1996-01-17 00:03:08 +00:00
Bruce Evans
8292bf7543 Don't run `ranlib -t' at install time. Our ld has never looked at the
timestamp on __.SYMDEF like ranlib.1 says it does, so changing the
timestamp has no benefits, and changing it breaks smart installs.
1995-10-09 05:09:37 +00:00
Garrett Wollman
973f098aab Compress manual pages (if desired) in the obj directory rather
than in the installation destination.  Should make release-building
substantially faster.  The msun Makefile changes simple adapt to the new
scheme.
1995-10-02 20:02:05 +00:00
David Greenman
670173822b Use lorder/tsort for shared libraries. It might help group things better.
Suggested by Garrett Wollman.
1995-08-02 22:31:52 +00:00
Nate Williams
a01bd386af Do what should have been done in v1.14
*Really* strip out unused local symbols from shared objects.

This was a typo on my part caused by an assumption that the profiled
libraries stripped symbols that same way as the non-profiled libraries.

Cut-n-Paste strikes again.

Obtained from: NetBSD
1995-03-28 17:54:11 +00:00
Poul-Henning Kamp
ffd87c071d "make distribute" have changed, beware if you use it. 1995-02-25 20:51:14 +00:00
Bruce Evans
cdaec7b1a1 More complete implementation of SUBDIR for programs, libraries and kmods.
`depend' wasn't supported.  This seems to have only broken `make depend'
in gnu/usr.bin/ld.

bsd.prog.mk:
Build the man pages in ${MANDEPEND} at build time.
1995-02-08 21:35:31 +00:00
Jordan K. Hubbard
6098353123 Add LN_FLAGS to all the places it makes sense. 1995-01-30 07:22:02 +00:00
Garrett Wollman
e7f8d55240 Slightly more complete implementation of SUBDIR for libraries. 1995-01-14 22:18:15 +00:00
Garrett Wollman
83fc2a702a Add SUBDIR facility to bsd.lib.mk like in bsd.prog.mk. 1995-01-14 22:14:54 +00:00
Jordan K. Hubbard
d9584d768f Change DISTRIBUTION names. Also make bsd.doc.mk go to doc distribution,
not bin.  Hmmm.
1995-01-14 07:51:10 +00:00
Andrey A. Chernov
b4289364f2 Remove INSTALL, now into sys.mk 1995-01-04 22:32:40 +00:00
Andrey A. Chernov
0cd1222834 Remove -T from ar, nm fixed now 1994-12-28 00:49:58 +00:00
Andrey A. Chernov
53df92ac8d Add T option back to ar until nm will be fixed. Sorry, nate. 1994-12-24 10:07:51 +00:00
Nate Williams
45f4664c72 Strip out unused local symbols from shared objects, and no longer
truncate archive members to 15 characters since it's no longer
necessary.
1994-12-23 22:50:45 +00:00
Bruce Evans
baa5e01a32 This change was actually made in the previous revision:
Define SHLIBDIR?= ${LIBDIR} and install shared libraries in
${DESTDIR}${SHLIBDIR} instead of in ${DESTDIR}${LIBDIR}.
SHLIBDIR may be defined in /etc/make.conf to override the
default of /usr/lib (I use /lib).  Other changes are required
for non-default shared library directories to actually work
(ld* and crtso have too many hard-coded paths).

Bruce
1994-11-14 06:28:20 +00:00