NetBSD/sys/lib/libkern/Makefile.inc
drochner 192b3c733c Build libraries for kernel/standalone code from within their compilation
directories and use .PATH to lookup the source files.
(Formerly, the libs were built from the source dirs, with MAKEOBJDIR
set to the compilation directory.)
This solves 2 problems:
-"mkdep" and "make" are now consistent about the file lookup, this fixes
 bad interactions with amd reported in PR bin/7374 (Arne Juul) and
 lossage reported by Andrew Gillham ("obj" dirs and relative paths still
 don't work well together)
-kernel compile trees can be moved around without forcing a new
 "make depend" - fixing PR kern/4021 by Martin Husemann
1999-05-07 14:28:50 +00:00

84 lines
2.5 KiB
Makefile

# $NetBSD: Makefile.inc,v 1.31 1999/05/07 14:28:50 drochner Exp $
#
# Configuration variables (default values are below):
#
# S must be set to the top of the 'sys' tree.
# KERNDST may be set to the location of the directory where library
# objects are to be built. Defaults to ${.OBJDIR}/lib/kern.
# KERN_AS may be set to 'obj' to build a object from the library's
# object files. (Otherwise, a library will be built.)
# Defaults to 'library'.
# KERNMISCCPPFLAGS
# Miscellaneous cpp flags to be passed to the library's Makefile
# when building.
# KERNMISCMAKEFLAGS
# Miscellaneous flags to be passed to the library's Makefile when
# building. See library's Makefile for more details about
# supported flags and their default values.
# Default values:
KERNDST?= ${.OBJDIR}/lib/kern
KERN_AS?= library
KERNDOTDIR?= ../../.
KERNDIR= ${S:S@^.@${KERNDOTDIR}@:Q}/lib/libkern
.if (${KERN_AS} == "obj")
KERNLIB= ${KERNDST}/libkern.o
KERNLIB_PROF= ${KERNDST}/libkern.po
.else
KERNLIB= ${KERNDST}/libkern.a
KERNLIB_PROF= ${KERNDST}/libkern_p.a
.endif
KERNMAKE= \
cd ${KERNDST} && ${MAKE} -f ${KERNDIR:Q}/Makefile \
KERNDIR=${KERNDIR:Q} \
CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
LORDER=${LORDER:Q} \
TSORT=${TSORT:Q} \
LD=${LD:Q} STRIP=${STRIP:Q} \
AR=${AR:Q} NM=${NM:Q} \
RANLIB=${RANLIB:Q} SIZE=${SIZE:Q} \
MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
KERNCPPFLAGS=${CPPFLAGS:S@^-I.@-I${KERNDOTDIR}@g:Q} \
KERNMISCCPPFLAGS=${KERNMISCCPPFLAGS:Q} \
${KERNMISCMAKEFLAGS}
${KERNLIB}: .NOTMAIN __always_make_kernlib
@echo making sure the kern library is up to date...
.if (${KERN_AS} == "library")
@${KERNMAKE} libkern.a
.else
@${KERNMAKE} libkern.o
.endif
${KERNLIB_PROF}: .NOTMAIN __always_make_kernlib
@echo making sure the profiled kern library is up to date...
.if (${KERN_AS} == "library")
@${KERNMAKE} libkern_p.a
.else
@${KERNMAKE} libkern.po
.endif
clean: .NOTMAIN cleankernlib
cleankernlib: .NOTMAIN __always_make_kernlib
@echo cleaning the kern library objects
@${KERNMAKE} clean
cleandir distclean: .NOTMAIN cleandirkernlib
cleandirkernlib: .NOTMAIN __always_make_kernlib
@echo cleandiring the kern library objects
@${KERNMAKE} cleandir
depend: .NOTMAIN dependkernlib
dependkernlib: .NOTMAIN __always_make_kernlib
@echo depending the kern library objects
@${KERNMAKE} depend
__always_make_kernlib: .NOTMAIN
@(mkdir -p ${KERNDST})
.PHONY: __always_make_kernlib
.PHONY: cleankernlib cleandirkernlib dependkernlib