92 Commits

Author SHA1 Message Date
bde
7a9902fea5 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
ru
e0edb0b456 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
rgrimes
2801ff847c 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
76f0c923fe $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
hoek
ea145ecb4c 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
jmg
5ebdb91f86 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
bde
9c2168a7db 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
jdp
d149f7d8f9 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
jdp
c5b38af5ff 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
jdp
ffcc901f03 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
bde
f64d6c31be Removed bitrotted code for setting OBJFORMAT. 1998-12-06 17:14:37 +00:00
jdp
95ea24932d 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
imp
f651fc063e 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
obrien
10a29b9e34 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
jb
d87af5ad40 BINFORMAT -> OBJFORMAT ready for E-day. 1998-08-30 20:33:27 +00:00
peter
619dff5a8c Clean up all temporaries that we can generate. 1998-08-08 13:22:06 +00:00
peter
6e4221c1c8 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
912ec94d68 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
dt
ff5abf883c Recognize ".cpp" as a C++ suffix.
PR:		3476
1998-06-05 18:38:55 +00:00
peter
8ea8c4495b Hard coded /usr/lib reference 1998-06-04 15:15:38 +00:00
bde
b50e223076 Oops, forgot references in previous commit.
Submitted by:	Brian Cully <shmit@erols.com>
PR:		6178
1998-05-15 09:34:48 +00:00
bde
680f5e79ae 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
4e506c209b Introduce the 'regress' target.
Silently approved by:	-hackers, -current
1998-03-12 20:02:17 +00:00
bde
59afc22831 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
bde
3875d4d80e 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
bde
15ed497b91 Removed default tags target. It was identical to the central one in
bsd.dep.mk.
1998-02-20 15:58:59 +00:00
jb
6a931ec2e7 Choose the default binary format based on machine type.
Alpha is elf, not aout.
1998-01-13 06:00:56 +00:00
bde
60c58bdca7 Oops, rm -f can't handle empty lists. 1997-12-17 15:18:53 +00:00
bde
c0bce29b7d 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
aceb39e183 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
e74698834a 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
f8d0d61b62 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
asami
f48e1d0fca 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
jkh
a8bb7ab7de 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
asami
afb7547b1d 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
dfr
9e9ba7449d 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
asami
a9639d5208 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
jdp
4b4c7c227f 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
bde
d164e41abb 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
jkh
1b2fdd568d Support GLOBAL style tags. 1997-04-13 06:44:25 +00:00
jdp
d49945b521 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
bde
b531e6bb86 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
83b3c2c161 Revert $FreeBSD$ to $Id$ 1997-02-22 14:13:04 +00:00
jmz
d5bf85c184 Fix a typo in the .s.o rule: asssembler -> assembler 1997-02-14 01:42:29 +00:00
pst
df3d05262d Don't use /tmp for afterdepend cleanup target 1997-01-26 01:37:05 +00:00
jkh
808a36ef65 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
bde
6f8724483d 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
9c57d97f8c 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
swallace
bf917b5852 .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
bde
aeb8c7e8c5 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