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
RANTOUCH may be defined in /etc/make.conf as
`${ECHO} skipping ${RANLIB} -t' to help stop `make install' from
changing the timestamps on unchanged libraries, thus making the
uninstalled binaries appear to be out of date... Other changes
are required to stop install from clobbering the timestamps.
Comment about missing libraries for LIBDES, LIBKDB, LIBKRB, LIBMP, LIBPC
and LIBPLOT.
Don't define LIBDBM since it was replaced by db in libc.
Remove duplication. ${DESTDIR}/usr/lib/... gives /usr/lib/... even when
DESTDIR is not defined.
put the stuff into the right "distribution". As default things end up
in "bindist".
Normal (ie: most) makefiles know naught of this.
More commits will follow, which will direct various parts of the tree
into the distribution we want them in.
Some of the grief of being release-engineer is supposed to go away with this.
about them.. :-) The patches/* won't work, it needs to be patches/patch-*
to avoid catching things like CVS files when working with a checked-out
copy of ports! Whoops!
1. Make build rely on a BUILD_COOKIE now. I'm tired of builds
being redone gratuitously while I'm trying to debug a tree build
problem.
2. Remove all the literal `touch -f' commands and indirect them through
variables. This lets you "leave tracks" in different ways, depending
on the medium. Just part 1 of my planned changes to make builds
directly off the CD work.
cc/Makefile.inc use (abuse?) LDDESTDIR for their internal libraries
so "?=" hides non-default external libraries. Adding multiple paths
to LDDESTDIR works except it makes it even harder than usual to
decide which libraries will actually be linked against.
is an interactive port, and requires user input somewhere along
the way (either fetching, configuring, building or installing).
If the user then sets BATCH in their environment, this port will be
skipped. If the user sets INTERACTIVE, then ONLY those ports marked
interactive are run (allowing one to do all ports in two passes).
If the user sets both BATCH and INTERACTIVE, then a metal claw extends
from the CRT and brutally yanks their nose off.
install cookie work any other way (perhaps I'm just being stupid).
In any case, INSTALL_COOKIE now works as advertised, and prevents duplicate
installations. pre-install users will have to keep their own cookies if
they wish to avoid duplicate installations, or tell me how to make the
rules run properly.
2. Update the list of library names and variables.
3. Update to reflect forth coming bsd.inc.mk file.
4. Update which .mk files include other .mk files.
Submitted by: Bruce Evans (partial, enhanced by me)
1. Make DEPENDS fully qualified, and not implictly assume relative
to ${PORTSDIR}. This allows more arbitrary dependencies to be
specified. This also means that DEPENDS= x11/foo needs to be changed
to DEPENDS= ${PORTSDIR}/x11/foo in any Makefiles. I'll try to do
these changes myself.
2. Add an option NO_DEPENDS to disable the automagic building of depended
ports.
Submitted by: rww
Make DEPENDS now does a `make is_depended' in the target port.
This defaults to `all install' globally, but can be overriden locally
by a port if it wants to do different things when other ports depend on it.
the light. `env' can be used to pass environment variables to shell
scripts this way, which means that all *configure/post-build scripts
_no longer take any arguments_; everything they should need (and more)
is now available in the environment. I'm working now to adapt the older
shell scripts over, but if you want beat me to it on some of your own
ports, don't let me stop you! :)
Submitted by: witr
if requested. LKMs which need it should use:
SRCS+= vnode_if.h
CLEANFILES+= vnode_if.h vnode_if.c
These rules were already present for VFS LKMs; now they are enabled all
the time. (VFS LKMs do not need the fragment above; it is still done for them.)
to a reasonable compromise:
MASTER_SITES now contains a space seperated list of sites for which each
DISTFILE may be retrieved. This should be a directory spec, which will be
concatenated with each file in DISTFILES. HOME_LOCATION is *gone* now
and isn't used for anything, so you can delete it from your Makefiles.
If you want to force a fetch from a given location, simply do something like:
MASTER_SITES= ftp://fnord.foo.bar/pub/dist
DISTFILES= a.tar.gz b.tar.gz
Your entry in MASTER_SITES will be tried first to fetch a.tar.gz and
b.tar.gz, followed by any master sites we have set up (right now, only
freebsd.cdrom.com).
1. DISTFILE is gone and replaced by DISTFILES, which can contain one or
more file specifications.
2. MASTER_SITE created, which points to the distfiles directory on
freebsd.cdrom.com (which I'll set up in a moment).
3. HOME_LOCATION is now simply a hint, and is never directly used except
to inform the user when ncftp unable to transfer a file from
MASTER_SITE.
4. ncftp is now assumed to live somewhere in the path, in preparation for
Andrew bringing it in on a more permanant basis.
5. XMKMF defined - it was not before.
Thanks to Andrew (ache) for many helpful suggestions.
multiple targets when dealing with creating a set of distribution files
from scratch. Another problem is *verifying* that a given file fetched
from its HOME_LOCATION is the one we wanted (what if the stupid ftp site
maintainer updated it in place?). Rich Morin pointed this out and suggested
some solutions. I need to think about it some more (suggestions?).
For now, we have a seperate `fetch' and `extract' target.
Submitted by: jkh
be easy to change to /usr/X11R6 if and when the time comes. This is
to deal with things like xditview which otherwise had hardcoded assumptions
about where X lived. Yuck.
Submitted by: jkh
remains, and that's that this does not work with multiple targets, which
sort of throws the tk and fvwm distributions into a mess. tk needs both
a tarball and a patch file from the same site, fvwm needs up to 3 different
files if you want all the options. If anyone wants to take this the last
few steps of the way towards somehow handling cases like this, I'd be very
happy.
Submitted by: jkh
${DISTDIR}/${DISTNAME}${EXTRACT_SUFX}
With simply `${DISTFILE}' which defaults to the above. This lets you
easily name distribution files that don't cooperate with any rational
naming syntax.
Similarly, make a variable called ${PKGFILE} which fills the same purpose
for packages.
Just trying to make this thing really really general to suit every need.
Now I need somebody to figure out how to make the extract target auto-fetch
things from ${HOME_LOCATION} with ncftp *if* ncftp is installed and it
looks possible to reach the foreign site. That will take some fancy footwork,
but would be slick. I've changed this too so that HOME_LOCATION is no longer
set by default, allowing you to do an .if defined(..) check for it. The
extract rule now does this too.
Submitted by: jkh
Build an intermediate object file even when there is only one source
file. This costs a little space but saves time if the target is rebuilt
a lot, and it stops the target varying with the name of temporary
intermediates.
Use ${ECHO} instead of `echo' so that `make -s' is fairly quiet.
Use ${ECHODIR} instead of echo for printing directory names so that
`make -ss' is very quiet.
previous commit:
+ Everything is initialized using ?= instead of =.
+ Nicer formatting (more white space).
+ .c: rule.
Add macros ECHO and ECHODIR. Both are normally `echo', but when
the make flags include -s, ECHO is set to `true' and when the make
flags include two or more -s's ECHODIR is set to `true'. @${ECHO}
should be used instead of @echo in most cases. ${ECHODIR} is
intended to be used mainly for messages about directory names.
PRECIOUSLIB causes the shared library to be installed with the system
immutable flag (schg) set. (You can add other flags for shared-library
installation by modifying SHLINSTALLFLAGS.)
INTERNALLIB disables the generation of non-shared versions of the library.
This may be of use for programs like Taylor UUCP and GCC which have large
internal libraries shared among a number of programs.
Add pre-{build,extract,install,...} targets for Torsten, who apparently
needs them. Can't do effective post-* targets without major work, sorry.
Jordan
Reviewed by:
Submitted by:
special ports building targets and will recurse properly. Sorry,
Julian E - no fancy prompts, just recursion! :-)
Added a `bundle' target. Purpose is as follows:
You want to give someone a complete tree sans distfiles (for
sticking on CDROM perhaps?) but the difficulty there is that
the first time the user types `make clean', all the unpacked
sources are gone again. Typing `make bundle' recreates the
original distfile if it can, so someone can "back up" their
unpacked tree easily with one command.
Whoops, just thought of something - it should warn if you
configured the working source.
Ok, next commit! :)
Submitted by: jkh
1. New variable DEPENDS lets you list packages that this depends on,
relative to the top (lang/tcl, x11/tk, etc). These packages will
always get made first.
2. Don't configure again if you've already done so successfully.
3. Add pre-configure and post-configure hooks. You can now do a pre-configure,
a local configure, a port-provided configure and finally a post-configure
if you really really want to. I can't imagine anything this will leave us
not being able to do! :) [ Yes, I have actually found a use for at least
two of these in one port - see x11/tk!].
Submitted by: jkh
Makefiles.
DANGER WILL ROBINSON!
This will cause repeat installs of certain programs, such as `init' and
`rcp', to fail unless one of the two conditions is met:
1) You are in single-user mode.
2) Your security level is set to 0 or -1.
If you have compiled a kernel from the latest sources, your kernel
security level is set to -1 by default, which will keep `init' from
fiddling with it. You can increase it, but not decrease it, from the
command line with the command `sysctl -w kern.securelevel=<new value>'.
I believe that -1 is the most appropriate value to use while we are still
developing the code, although when we ship it should be changed back to 0.
See init(8) for more information.