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.
(as given by "uname -m") by which you can specify which
architectures the port is appropriate for.
Idea borrowed from: NetBSD, OpenBSD
Reviewed by: simokawa
(2) New variable PERL_ARCH (value: ${ARCH}-freebsd) that is also
passed to ${PLIST_SUB}. Use it to simplify PLISTs.
Submitted by: simokawa
(3) Check OSVERSION as well as existence of /usr/bin/perl5 before
assuming USE_PERL5 is to be a no-op. Basically to allow building
of 2.2-INDEX on a 3.0 machine.
(4) Change USE_QT definition to use new shlib version (2) and
directory (qt142).
(5) Uncomment temporary Motif dependency for parallel package
building. We still need to figure out a way to install the pkg
database files, but it's a start.
(6) Move EXTRACT_SUFX up into the pre.mk area so it can be used in
exists() tests.
(7) Add MASTER_SITE_COMP_SOURCES. Note that this is defined like
"/pub/usenet/comp.sources.%SUBDIR%/" so you can specify something
like "SUBDIR=x/volume18" to select the newsgroup as well as
subdirectory name.
Submitted by: "distfiles" fenner
(8) Other misc. master site cleanup.
Submitted by: "distfiles" fenner
(9) New target "maintainer". I intend to use it to auto-mail failure
build failure notices to the maintainer.
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.
don't recurse in "make describe". The new INDEX target in
ports/Makefile invokes a perl script to recurse and convert them
into package names.
While I'm here, change the name of targets and move them around a
little bit for the sake of consistency.
It is also probably worth noting here that the meaning of the
"build dependency" list in INDEX has been changed slightly
changed. The old list was "build depends and its build depends"
-- not particularly useful if you had things like autoconf, which
run-depend on gm4 (you install all the things listed here and
you'll get an autoconf that won't run).
It is now "build depends and its run depends" -- you install
everything listed here, and you'll be able to build the port.
Submitted by: steve
(0') Fast README.html generation. It uses ports/INDEX to find
dependencies instead of embarking on to a recursive loop.
Submitted by: steve
(1) Remove NO_WRKDIR and NO_EXTRACT. Their functionality are easily
replacable with NO_WRKSUBDIR=t and EXTRACT_ONLY= (nothing on right
side), and they get in the way of read-only port trees.
(2) Surround first few variable definitions with ".if !defined()".
This will make cross-compilation easier and also speed up make
processes.
(3) Call sysctl with absolute path. Prefer the one in /sbin over the
one in /usr/sbin.
(4) Add four new variables
PKGINSTALL?= ${PKGDIR}/INSTALL
PKGDEINSTALL?= ${PKGDIR}/DEINSTALL
PKGREQ?= ${PKGDIR}/REQ
PKGMESSAGE?= ${PKGDIR}/MESSAGE
and use them in PKG_ARGS. Frobbing with PKG_ARGS directly is
strongly discouraged.
(5) Change PKG_SUFX to ".tar" (instead of ".tgz") if PKG_NOCOMPRESS is
defined. This is intended only for our own use.
(6) Add more sites to MASTER_SITE_GNU.
Submitted by: billf
(7) Override MANUAL_PACKAGE_BUILD if PARALLEL_PACKAGE_BUILD is
defined. This is intended only for our own use.
(8) Add new target "ignorelist" which will print out the package name
if the port is not going to be built on this machine. This is
intended only for our own use.
(9) Make mtree a little quieter.
break one way or another. With it goes the package-loop and the
describe loop.
(2) Add new variable MASTERDIR to make it easier to share files between ports.
bsd.port.mk will find things like ${PKGDIR} underneath
${MASTERDIR} (which defaults to ${.CURDIR}).
(3) Do not allow MD5_FILE to be renamed. Funny things can happen if
you do that.
(4) Use a few more absolute paths in the bsd.port.pre.mk part. I
can't use absolute paths for sysctl because it moved recently.
a few variables that could be used in the port Makefile for ".if exists()"
tests. bsd.port.post.mk defines the rest.
Note: if you define USE_X_PREFIX or USE_IMAKE, put it before including
bsd.port.pre.mk. These are the only two variables used in the first part.
In reality, bsd.port.pre.mk and bsd.port.post.mk just include bsd.port.mk
with special variables to turn part of it off.
list. The old MAKE_FLAGS was a little hard to use since it had a weird
default ("-f").
Suggested by: Shigeyuki FUKUSHIMA <shige@kuis.kyoto-u.ac.jp>
(2) Add new targets clean-restricted and clean-for-cdrom, which will
delete RESTRICTED and NO_CDROM packages and distfiles from the top.
Reviewed by: jkh
(3) Add depends to list of things to recurse on. It will help people
who are trying to fetch some ports plus their dependencies.
Requested by: Chris Dillon <cdillon@wolves.k12.mo.us>
packages from a single port. LOOP_VAR is the name of the variable
and LOOP_OPTIONS is a space-separated list of values it should
take. When these are set, the target "package-loop" will go
through a clean and package loop for all the options. The
"package-loop" target is defined as "package" when LOOP_VAR is not
defined, so if you are in the business for building packages, you
should use "package-loop" all the time. (This target is added to
bsd.port.subdir.mk too.)
Also, the "describe" target prints out multiple lines so that all
options will go into the INDEX. (In other words, if you define
these variables, INDEX is going to look real silly if you don't
put ${${LOOP_VAR}} in PKGNAME.)
Seconded by: obrien ("ANYTHING")
(2) Turn off regexp support for LIB_DEPENDS. It is a fixed string of
the form <NAME>.<VER> now.
Tested by: several rounds of complete package builds
(3) Check checksum even if NO_EXTRACT is defined.
(4) Cosmetic fix for message in MANUAL_PACKAGE_BUILD case.
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.
name conversion. Use it for binary ports that come with its own private
shlib dirs, ports that install linux compatibility libraries (thus following
their naming conventions and not ours), etc.
Reviewed by: Martin Cracauer <cracauer@FreeBSD.ORG>
version number part (i.e., "<directory>/perl"). Use this to
substitute #! lines in your perl5 scripts.
Requested and reviewed by: ache
(2) Add new variable WRKDIRPREFIX (defaults to ""). The "work"
directories are now in ${WRKDIRPREFIX}${.CURDIR}/work by default.
You can have a read-only ports tree (modulo any broken ports that
write something to places other than ${WRKDIR}) by setting this to
a writable location.
Ports that set WRKDIR explicitly should append this to front so
they will work when the user has WRKDIRPREFIX set.
Reviewed by: Toshihiko Kodama <kodama@ayame.mfd.cs.fujitsu.co.jp>
since ports are not supposed to be broken during the process of
conversion to ELF -- please proceed with caution.)
(2) Support for checking file size before fetching. The essential
parts are commented out for now, so I won't lose the submission
while we discuss how to do it.
Submitted by: se (mostly)
(3) Don't run "fetch" twice. It was due to the change in checksum
target chaining. It used to be fetch -> checksum -> extract,
after 1.285 it was fetch -> checksum and checksum was also
explicitly called from extract. Fix it by not calling fetch from
checksum when it's invoked by extract.
Noticed by: pre-fetch target of lesstif being run twice
(4) Don't try to remove non-existent distfiles and patchfiles in
distclean.
Submitted by: anto@netscape.net
PR: 7988
Submitted by: "Eugene M. Kim" <gene@nttlabs.com>
(2) Check for exact version of perl5 in /usr/bin and exit with error
message if USE_PERL5 is defined and version does not match
${PERL_VERSION}.
(3) Note LIB_DEPENDS should not have any regular expressions. Remove
those in USE_XLIB and USE_QT.
Submitted by: hoek
(2) ELF support.
2a. Variable PORTOBJFORMAT specifies the object format of the system.
It is passed down to configure/make via CONFIGURE_ENV/MAKE_ENV,
and is given to generate-plist via PLIST_SUB.
2b. In PLIST, substitute lines that end with "/libFOO.so.X" with
"/libFOO.so.X.0". (This means PLISTs should only list ELF
libraries.)
Reviewed by: jb, jdp, hoek, jseger, steve
(3) Perl5-in-system support. Basically turns USE_PERL5 into a no-op
if there exists a "/usr/bin/perl5". Also fix prior breakage by
dima (${PREFIX} => ${LOCALBASE} in perl5 path).
Reviewed by: markm (sort of)
(4) Install requirement file as "+REQUIRE" so it will be executed
correctly by pkg_delete.
Reported by: Shigeyuki FUKUSHIMA <shige@kuis.kyoto-u.ac.jp>
(5) Do not disable checksum and makesum when NO_EXTRACT is set.
Pointed out by: hoek and kiri, among other people
src/lkm/Makefile.inc. This fixes broken builds of the syscons LKMs
when OBJFORMAT=elf. Removed src/lkm/Makefile.inc since it became
empty and is worse than useless.
the way, most of the things below are "Reviewed by: hoek" as well.)
The changes are (roughly in order of appearance):
(1) Revamp comments at beginning of file. Major rewrites. Reorder
them into more relevant sections. Make clear which ones are user
variables and not to be set in ports' Makefiles.
Reviewed by: hoek (well, he's the only one who sent any comments)
(2) Include ${.CURDIR}/Makefile.local if it exists. This is a local
configuration file (ala rc.conf.local and make.conf.local) so
please do not commit a file with this name to the repository.
Suggested by: dillon
(3) MANCOMPRESSED now takes three possible values: "yes", "no" and
"maybe". (It used to be a binary variable -- the old behavior is
now accomplished by "MANCOMPRESSED=yes". Ports that defined this
variable to other values have been corrected.)
"yes" means the manpages are installed compressed, "no" means they
are not, and "maybe" means the port already respects the value of
NOMANCOMPRESS. The default is "yes" for USE_IMAKE ports without
NO_INSTALL_MANPAGES, and "no" otherwise.
Add "compress-man" target and move manpage {,de}compression there.
Reviewed by: hoek etc. and a full build of the ports tree
(4) Add LIBDIR="${LIBDIR}" to MAKE_ENV. Makes easier to "fix" ports
for /usr/lib/aout mess.
Submitted by: ohashi@mickey.ai.kyutech.ac.jp (Takeshi Ohashi)
(5) Change ${TMPPLIST} from ${WRKDIR}/PLIST.mktmp to
${WRKDIR}/.PLIST.mktmp.
Suggested by: hoek
Strongly seconded by: steve
(6) Change a couple more relative pathnames to absolute ones.
Submitted by: hoek
(7) Move checksum into real-extract.
(8) Change way rules are chained. Instead of:
build: configure ${BUILD_COOKIE}
${BUILD_COOKIE}:
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} real-build
we now have
build: ${BUILD_COOKIE}
${BUILD_COOKIE}:
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} configure
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} real-build
Other than being more PC (pmake clean), this really speeds up
skipping ports already built. For instance, "make package" on a
fully packaged games subtree used to take 269 seconds on average,
now it's 45 seconds on average.
The flip side of this is that it will create more processes when
the targets actually chain, but when you're actually compiling
things, your make is creating half a bazzilion processes anyway so
I don't think it matters.
(9) ${TMPPLIST} is now a real dependency. Create "generate-plist"
target to generate ${TMPPLIST}. Make sure it's called when needed
(usually between do-install and post-install), and that the
required files exist.
(10) Change some messages so we can tell where "make index" failed.
(11) Check if LIB_DEPENDS really generated the required shared lib or
not.
Seconded by: "Brent J. Nordquist" <bjn@visi.com>
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).
means (change PREFIX to ${X11BASE}) and add a new variable USE_X11
which means "this port requires the X window system (actually the
library)". USE_X_PREFIX implies USE_X11. USE_X11 adds a
LIB_DEPENDS to libX11 with the x11/XFree86 port.
Reviewed by: the ports list, hoek in particular
(2) Remove NO_CONFIGURE and NO_PATCH, which never meant anything.
Yell if they are defined.
Reviewed by: the ports list
(3) Add new variable OSREL, which is automatically set to the
numeric OS version (e.g., 2.2.1, 3.0). It can be used to refer to
files in gcc installations, for instance.
(4) Finally remove EXEC_DEPENDS hack after all these years.
Submitted by: hoek
(5) Put quotes around some echo ${*_DEPENDS} statements so they won't
blow up when the variables include regular expressions like
"qt\\.1\\.\\\(33\\\|40\\\):${PORTSDIR}/x11/qt140".
recently added definitions from sys.mk to bsd.own.mk. Include the
src-relative bsd.own.mk in src/Makefile to pick up all new definitions.
Don't check that MACHINE_ARCH is defined in src/Makefile, since it is
(and should have been) guaranteed to be defined.
(mostly for includes) separate from direct dependencies (so that ${.ALLSRC}
can be used to find full paths to the sources for the direct dependencies
only). The `::' hack just forgot the indirect dependendencies. This
broke building doc/usd/13.viref with `make -jN' - the index got corrupted
by being built twice concurrently.
Cleaned up the ${DFILE} rule. There was a .else clause with dead code in
it following a .else clause (make accepts this bad syntax). ${.ALLSRC}
now works in the USE_SOELIMPP case. Some client Makefiles no longer need
the SRCDIR=${.OBJDIR} hack.
`make world' to avoid problems with picking up (new) target or (stale)
host shared libraries.
Don't honor -static in LDFLAGS for linking LKMs. LDFLAGS is not
actually for ld, but we use it anyway, and must prevent -static being
misinterpreted as -s.
Don't hide any of the link steps.
Move a.out libraries to /usr/lib/aout to make space for ELF libs.
Make rtld usr /usr/lib/aout as default library path.
Make ldconfig reject /usr/lib as an a.out library path.
Fix various Makefiles for LIBDIR!=/usr/lib breakage.
This will after a make world & reboot give a system that no
longer uses /usr/lib/*, infact one could remove all the old
libraries there, they are not used anymore.
We are getting close to an ELF make world, but I'll let this
all settle for a week or two...
the right solution or not, bsd.port.mk is broken unless bsd.locale.mk
is installed.
Note that if LOCALE is not defined, port-building explodes:
"/usr/share/mk/bsd.locale.mk", line 135: if-less elif
"/usr/share/mk/bsd.locale.mk", line 135: Need an operator
(For each .if testing LOCALE)
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.
is used in the dependency list for ${DEPENDFILE}. `make depend' was
broken for a few days. `make world' only uses `make depend' when
NOCLEAN is defined, so only a few people noticed the bug.
Submitted by: mostly by jmg
bsd.obj.mk instead of bsd.dep.mk for defining the _SUBDIR target
and a default tags target. Abuse bsd.obj.mk for defining default
cleandepend and depend targets.
that want a y.tab.h file. This want must be specified by putting y.tab.h
in SRCS (and defaulting to or putting -d in YFLAGS). This only works if
there is only one yacc parser, of course. One improvement: copy y.tab.c
to foo.c instead of renaming it, so that `#line...y.tab.c' statements in
it refer to an existing file.
Regress to not generating explicit rules for .l and .y sources containing
slashes. This case is unusual and hard to handle properly.
Don't generate an unused dependency when -d is not in YFLAGS.