xref: /freebsd/contrib/bmake/mk/lib.mk (revision 6a7405f5a6b639682cacf01e35d561411ff556aa)
1*6a7405f5SSimon J. Gerraty# $Id: lib.mk,v 1.85 2024/12/12 19:56:36 sjg Exp $
23cbdda60SSimon J. Gerraty
3c59c3bf3SSimon J. Gerraty# should be set properly in sys.mk
4c59c3bf3SSimon J. Gerraty_this ?= ${.PARSEFILE:S,bsd.,,}
5c59c3bf3SSimon J. Gerraty
6c59c3bf3SSimon J. Gerraty.if !target(__${_this}__)
7c59c3bf3SSimon J. Gerraty__${_this}__: .NOTMAIN
83cbdda60SSimon J. Gerraty
93cbdda60SSimon J. Gerraty.include <init.mk>
103cbdda60SSimon J. Gerraty
113cbdda60SSimon J. Gerraty.if ${OBJECT_FMT} == "ELF"
123cbdda60SSimon J. GerratyNEED_SOLINKS?= yes
133cbdda60SSimon J. Gerraty.endif
143cbdda60SSimon J. Gerraty
1545447996SSimon J. GerratySHLIB_VERSION_FILE?= ${.CURDIR}/shlib_version
1645447996SSimon J. Gerraty.if !defined(SHLIB_MAJOR) && exists(${SHLIB_VERSION_FILE})
1745447996SSimon J. GerratySHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major
1845447996SSimon J. GerratySHLIB_MINOR != . ${SHLIB_VERSION_FILE} ; echo $$minor
1945447996SSimon J. GerratySHLIB_TEENY != . ${SHLIB_VERSION_FILE} ; echo $$teeny
203cbdda60SSimon J. Gerraty.endif
213cbdda60SSimon J. Gerraty
2245447996SSimon J. Gerraty.for x in major minor teeny
2345447996SSimon J. Gerratyprint-shlib-$x:
2445447996SSimon J. Gerraty.if defined(SHLIB_${x:tu}) && ${MK_PIC} != "no"
2545447996SSimon J. Gerraty	@echo ${SHLIB_${x:tu}}
263cbdda60SSimon J. Gerraty.else
273cbdda60SSimon J. Gerraty	@false
283cbdda60SSimon J. Gerraty.endif
2945447996SSimon J. Gerraty.endfor
303cbdda60SSimon J. Gerraty
313cbdda60SSimon J. GerratySHLIB_FULLVERSION ?= ${${SHLIB_MAJOR} ${SHLIB_MINOR} ${SHLIB_TEENY}:L:ts.}
323cbdda60SSimon J. GerratySHLIB_FULLVERSION := ${SHLIB_FULLVERSION}
333cbdda60SSimon J. Gerraty
343cbdda60SSimon J. Gerraty# add additional suffixes not exported.
353cbdda60SSimon J. Gerraty# .po is used for profiling object files.
36c59c3bf3SSimon J. Gerraty.SUFFIXES: .out .a .ln ${PICO} ${PCM} .po .o .s .S .c ${CXX_SUFFIXES} \
37c59c3bf3SSimon J. Gerraty	${CCM_SUFFIXES} .m .F .f .r .y .l .cl .p .h \
38c59c3bf3SSimon J. Gerraty	.sh .m4 .m
393cbdda60SSimon J. Gerraty
403cbdda60SSimon J. GerratyCFLAGS+=	${COPTS}
413cbdda60SSimon J. Gerraty
4250d2e745SSimon J. GerratyMETA_NOECHO?= echo
4350d2e745SSimon J. Gerraty
44cac6fd11SSimon J. Gerraty# Originally derrived from NetBSD-1.6
453cbdda60SSimon J. Gerraty
463cbdda60SSimon J. Gerraty# Set PICFLAGS to cc flags for producing position-independent code,
473cbdda60SSimon J. Gerraty# if not already set.  Includes -DPIC, if required.
483cbdda60SSimon J. Gerraty
493cbdda60SSimon J. Gerraty# Data-driven table using make variables to control how shared libraries
503cbdda60SSimon J. Gerraty# are built for different platforms and object formats.
513cbdda60SSimon J. Gerraty# OBJECT_FMT:		currently either "ELF" or "a.out", from <bsd.own.mk>
523cbdda60SSimon J. Gerraty# SHLIB_SOVERSION:	version number to be compiled into a shared library
535bcb7424SSimon J. Gerraty#			via -soname. Usually ${SHLIB_MAJOR} on ELF.
543cbdda60SSimon J. Gerraty#			NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR}
553cbdda60SSimon J. Gerraty#			[.${SHLIB_TEENY}]]
563cbdda60SSimon J. Gerraty# SHLIB_SHFLAGS:	Flags to tell ${LD} to emit shared library.
573cbdda60SSimon J. Gerraty#			with ELF, also set shared-lib version for ld.so.
583cbdda60SSimon J. Gerraty# SHLIB_LDSTARTFILE:	support .o file, call C++ file-level constructors
593cbdda60SSimon J. Gerraty# SHLIB_LDENDFILE:	support .o file, call C++ file-level destructors
6045447996SSimon J. Gerraty# FPICFLAGS:		flags for ${FC} to compile .[fF] files to ${PICO} objects.
613cbdda60SSimon J. Gerraty# CPPICFLAGS:		flags for ${CPP} to preprocess .[sS] files for ${AS}
6245447996SSimon J. Gerraty# CPICFLAGS:		flags for ${CC} to compile .[cC] files to ${PICO} objects.
633cbdda60SSimon J. Gerraty# CAPICFLAGS		flags for {$CC} to compiling .[Ss] files
643cbdda60SSimon J. Gerraty#		 	(usually just ${CPPPICFLAGS} ${CPICFLAGS})
6545447996SSimon J. Gerraty# APICFLAGS:		flags for ${AS} to assemble .[sS] to ${PICO} objects.
663cbdda60SSimon J. Gerraty
67d5e0a182SSimon J. Gerraty# we simplify life by letting the toolchain do most of the work
68d5e0a182SSimon J. Gerraty# _CCLINK is set by init.mk based on whether we are doing C++ or not
69d5e0a182SSimon J. GerratySHLIB_LD ?= ${_CCLINK}
70d5e0a182SSimon J. Gerraty
713cbdda60SSimon J. Gerraty.if ${TARGET_OSNAME} == "NetBSD"
723cbdda60SSimon J. Gerraty.if ${MACHINE_ARCH} == "alpha"
733cbdda60SSimon J. Gerraty		# Alpha-specific shared library flags
743cbdda60SSimon J. GerratyFPICFLAGS ?= -fPIC
753cbdda60SSimon J. GerratyCPICFLAGS ?= -fPIC -DPIC
763cbdda60SSimon J. GerratyCPPPICFLAGS?= -DPIC
773cbdda60SSimon J. GerratyCAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
783cbdda60SSimon J. GerratyAPICFLAGS ?=
793cbdda60SSimon J. Gerraty.elif ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb"
803cbdda60SSimon J. Gerraty		# mips-specific shared library flags
813cbdda60SSimon J. Gerraty
823cbdda60SSimon J. Gerraty# On mips, all libs are compiled with ABIcalls, not just sharedlibs.
833cbdda60SSimon J. GerratyMKPICLIB= no
843cbdda60SSimon J. Gerraty
853cbdda60SSimon J. Gerraty# so turn shlib PIC flags on for ${AS}.
863cbdda60SSimon J. GerratyAINC+=-DABICALLS
873cbdda60SSimon J. GerratyAFLAGS+= -fPIC
883cbdda60SSimon J. GerratyAS+=	-KPIC
893cbdda60SSimon J. Gerraty
903cbdda60SSimon J. Gerraty.elif ${MACHINE_ARCH} == "vax" && ${OBJECT_FMT} == "ELF"
913cbdda60SSimon J. Gerraty# On the VAX, all object are PIC by default, not just sharedlibs.
923cbdda60SSimon J. GerratyMKPICLIB= no
933cbdda60SSimon J. Gerraty
943cbdda60SSimon J. Gerraty.elif (${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64") && \
953cbdda60SSimon J. Gerraty       ${OBJECT_FMT} == "ELF"
963cbdda60SSimon J. Gerraty# If you use -fPIC you need to define BIGPIC to turn on 32-bit
973cbdda60SSimon J. Gerraty# relocations in asm code
983cbdda60SSimon J. GerratyFPICFLAGS ?= -fPIC
993cbdda60SSimon J. GerratyCPICFLAGS ?= -fPIC -DPIC
1003cbdda60SSimon J. GerratyCPPPICFLAGS?= -DPIC -DBIGPIC
1013cbdda60SSimon J. GerratyCAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
1023cbdda60SSimon J. GerratyAPICFLAGS ?= -KPIC
1033cbdda60SSimon J. Gerraty
1043cbdda60SSimon J. Gerraty.else
1053cbdda60SSimon J. Gerraty
1063cbdda60SSimon J. Gerraty# Platform-independent flags for NetBSD a.out shared libraries
1073cbdda60SSimon J. GerratySHLIB_SOVERSION=${SHLIB_FULLVERSION}
1083cbdda60SSimon J. GerratySHLIB_SHFLAGS=
1093cbdda60SSimon J. GerratyFPICFLAGS ?= -fPIC
1103cbdda60SSimon J. GerratyCPICFLAGS?= -fPIC -DPIC
1113cbdda60SSimon J. GerratyCPPPICFLAGS?= -DPIC
1123cbdda60SSimon J. GerratyCAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
1133cbdda60SSimon J. GerratyAPICFLAGS?= -k
1143cbdda60SSimon J. Gerraty
1153cbdda60SSimon J. Gerraty.endif
1163cbdda60SSimon J. Gerraty
1173cbdda60SSimon J. Gerraty# Platform-independent linker flags for ELF shared libraries
1183cbdda60SSimon J. Gerraty.if ${OBJECT_FMT} == "ELF"
1193cbdda60SSimon J. GerratySHLIB_SOVERSION=	${SHLIB_MAJOR}
120d5e0a182SSimon J. GerratySHLIB_SHFLAGS=		-Wl,-soname,lib${LIB}.so.${SHLIB_SOVERSION}
1213cbdda60SSimon J. GerratySHLIB_LDSTARTFILE?=	/usr/lib/crtbeginS.o
1223cbdda60SSimon J. GerratySHLIB_LDENDFILE?=	/usr/lib/crtendS.o
1233cbdda60SSimon J. Gerraty.endif
1243cbdda60SSimon J. Gerraty
1255bcb7424SSimon J. Gerraty# for compatibility with the following
1263cbdda60SSimon J. GerratyCC_PIC?= ${CPICFLAGS}
1273cbdda60SSimon J. GerratyLD_shared=${SHLIB_SHFLAGS}
1283cbdda60SSimon J. Gerraty
1293cbdda60SSimon J. Gerraty.endif # NetBSD
1303cbdda60SSimon J. Gerraty
1313cbdda60SSimon J. Gerraty.if ${TARGET_OSNAME} == "FreeBSD"
1323cbdda60SSimon J. Gerraty.if ${OBJECT_FMT} == "ELF"
1333cbdda60SSimon J. GerratySHLIB_SOVERSION=	${SHLIB_MAJOR}
134d5e0a182SSimon J. GerratySHLIB_SHFLAGS=		-Wl,-soname,lib${LIB}.so.${SHLIB_SOVERSION}
1353cbdda60SSimon J. Gerraty.else
1363cbdda60SSimon J. GerratySHLIB_SHFLAGS=		-assert pure-text
1373cbdda60SSimon J. Gerraty.endif
1383cbdda60SSimon J. GerratySHLIB_LDSTARTFILE=
1393cbdda60SSimon J. GerratySHLIB_LDENDFILE=
1403cbdda60SSimon J. GerratyCC_PIC?= -fpic
1413cbdda60SSimon J. GerratyLD_shared=${SHLIB_SHFLAGS}
1423cbdda60SSimon J. Gerraty
1433cbdda60SSimon J. Gerraty.endif # FreeBSD
1443cbdda60SSimon J. Gerraty
1453cbdda60SSimon J. GerratyMKPICLIB?= yes
1463cbdda60SSimon J. Gerraty
1473cbdda60SSimon J. Gerraty# sys.mk can override these
1483cbdda60SSimon J. GerratyLD_X?=-X
1493cbdda60SSimon J. GerratyLD_x?=-x
1503cbdda60SSimon J. GerratyLD_r?=-r
1513cbdda60SSimon J. Gerraty
1523cbdda60SSimon J. Gerraty# Non BSD machines will be using bmake.
1533cbdda60SSimon J. Gerraty.if ${TARGET_OSNAME} == "SunOS"
1543cbdda60SSimon J. GerratyLD_shared=-assert pure-text
1553cbdda60SSimon J. Gerraty.if ${OBJECT_FMT} == "ELF" || ${MACHINE} == "solaris"
1563cbdda60SSimon J. Gerraty# Solaris
1573cbdda60SSimon J. GerratyLD_shared=-h lib${LIB}.so.${SHLIB_MAJOR} -G
1583cbdda60SSimon J. Gerraty.endif
1593cbdda60SSimon J. Gerraty.elif ${TARGET_OSNAME} == "HP-UX"
1603cbdda60SSimon J. GerratyLD_shared=-b
1613cbdda60SSimon J. GerratyLD_so=sl
1623cbdda60SSimon J. GerratyDLLIB=
1633cbdda60SSimon J. Gerraty# HPsUX lorder does not grok anything but .o
16445447996SSimon J. GerratyLD_sobjs=`${LORDER} ${OBJS} | ${TSORT} | sed 's,\.o,${PICO},'`
1653cbdda60SSimon J. GerratyLD_pobjs=`${LORDER} ${OBJS} | ${TSORT} | sed 's,\.o,.po,'`
1663cbdda60SSimon J. Gerraty.elif ${TARGET_OSNAME} == "OSF1"
1673cbdda60SSimon J. GerratyLD_shared= -msym -shared -expect_unresolved '*'
1683cbdda60SSimon J. GerratyLD_solib= -all lib${LIB}_pic.a
1693cbdda60SSimon J. GerratyDLLIB=
1703cbdda60SSimon J. Gerraty# lorder does not grok anything but .o
17145447996SSimon J. GerratyLD_sobjs=`${LORDER} ${OBJS} | ${TSORT} | sed 's,\.o,${PICO},'`
1723cbdda60SSimon J. GerratyLD_pobjs=`${LORDER} ${OBJS} | ${TSORT} | sed 's,\.o,.po,'`
1733cbdda60SSimon J. GerratyAR_cq= -cqs
1743cbdda60SSimon J. Gerraty.elif ${TARGET_OSNAME} == "FreeBSD"
1753cbdda60SSimon J. GerratyLD_solib= lib${LIB}_pic.a
1763cbdda60SSimon J. Gerraty.elif ${TARGET_OSNAME} == "Linux"
1773cbdda60SSimon J. Gerraty# this is ambiguous of course
17812904384SSimon J. GerratyLD_shared=-shared -Wl,-soname,lib${LIB}.so.${SHLIB_MAJOR}
1795bcb7424SSimon J. GerratyLD_solib= -Wl,--whole-archive lib${LIB}_pic.a -Wl,--no-whole-archive
18049caa483SSimon J. Gerraty.if ${COMPILER_TYPE} == "gcc"
1813cbdda60SSimon J. Gerraty# Linux uses GNU ld, which is a multi-pass linker
1823cbdda60SSimon J. Gerraty# so we don't need to use lorder or tsort
1833cbdda60SSimon J. GerratyLD_objs = ${OBJS}
1843cbdda60SSimon J. GerratyLD_pobjs = ${POBJS}
1853cbdda60SSimon J. GerratyLD_sobjs = ${SOBJS}
18649caa483SSimon J. Gerraty.endif
1873cbdda60SSimon J. Gerraty.elif ${TARGET_OSNAME} == "Darwin"
1883cbdda60SSimon J. GerratySHLIB_INSTALL_VERSION ?= ${SHLIB_MAJOR}
1893cbdda60SSimon J. GerratySHLIB_COMPATABILITY_VERSION ?= ${SHLIB_MAJOR}.${SHLIB_MINOR:U0}
1903cbdda60SSimon J. GerratySHLIB_COMPATABILITY ?= \
1913cbdda60SSimon J. Gerraty	-compatibility_version ${SHLIB_COMPATABILITY_VERSION} \
1923cbdda60SSimon J. Gerraty	-current_version ${SHLIB_FULLVERSION}
1933cbdda60SSimon J. GerratyLD_shared = -dynamiclib \
1943cbdda60SSimon J. Gerraty	-flat_namespace -undefined suppress \
1953cbdda60SSimon J. Gerraty	-install_name ${LIBDIR}/lib${LIB}.${SHLIB_INSTALL_VERSION}.${LD_solink} \
1963cbdda60SSimon J. Gerraty	${SHLIB_COMPATABILITY}
1973cbdda60SSimon J. GerratySHLIB_LINKS =
1983cbdda60SSimon J. Gerraty.for v in ${SHLIB_COMPATABILITY_VERSION} ${SHLIB_INSTALL_VERSION}
1993cbdda60SSimon J. Gerraty.if "$v" != "${SHLIB_FULLVERSION}"
2003cbdda60SSimon J. GerratySHLIB_LINKS += lib${LIB}.$v.${LD_solink}
2013cbdda60SSimon J. Gerraty.endif
2023cbdda60SSimon J. Gerraty.endfor
2033cbdda60SSimon J. Gerraty.if ${MK_LINKLIB} != "no"
2043cbdda60SSimon J. GerratySHLIB_LINKS += lib${LIB}.${LD_solink}
2053cbdda60SSimon J. Gerraty.endif
2063cbdda60SSimon J. Gerraty
2073cbdda60SSimon J. GerratyLD_so = ${SHLIB_FULLVERSION}.dylib
2083cbdda60SSimon J. GerratyLD_sobjs = ${SOBJS:O:u}
2093cbdda60SSimon J. GerratyLD_solib = ${LD_sobjs}
2103cbdda60SSimon J. GerratySOLIB = ${LD_sobjs}
2113cbdda60SSimon J. GerratyLD_solink = dylib
2123cbdda60SSimon J. Gerraty.if ${MACHINE_ARCH} == "i386"
2133cbdda60SSimon J. GerratyPICFLAG ?= -fPIC
2143cbdda60SSimon J. Gerraty.else
2153cbdda60SSimon J. GerratyPICFLAG ?= -fPIC -fno-common
2163cbdda60SSimon J. Gerraty.endif
2173cbdda60SSimon J. GerratyRANLIB = :
2183cbdda60SSimon J. Gerraty.endif
2193cbdda60SSimon J. Gerraty
2203cbdda60SSimon J. Gerraty.if !empty(SHLIB_MAJOR)
2213cbdda60SSimon J. Gerraty.if ${NEED_SOLINKS} && empty(SHLIB_LINKS)
2223cbdda60SSimon J. Gerraty.if ${MK_LINKLIB} != "no"
2233cbdda60SSimon J. GerratySHLIB_LINKS = lib${LIB}.${LD_solink}
2243cbdda60SSimon J. Gerraty.endif
2253cbdda60SSimon J. Gerraty.if "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}"
2263cbdda60SSimon J. GerratySHLIB_LINKS += lib${LIB}.${LD_solink}.${SHLIB_MAJOR}
2273cbdda60SSimon J. Gerraty.endif
2283cbdda60SSimon J. Gerraty.endif
2293cbdda60SSimon J. Gerraty.endif
2303cbdda60SSimon J. Gerraty
2313cbdda60SSimon J. GerratyLIBTOOL?=libtool
2323cbdda60SSimon J. GerratyLD_shared ?= -Bshareable -Bforcearchive
2333cbdda60SSimon J. GerratyLD_so ?= so.${SHLIB_FULLVERSION}
2343cbdda60SSimon J. GerratyLD_solink ?= so
2353cbdda60SSimon J. Gerraty.if empty(LORDER)
2363cbdda60SSimon J. GerratyLD_objs ?= ${OBJS}
2373cbdda60SSimon J. GerratyLD_pobjs ?= ${POBJS}
2383cbdda60SSimon J. GerratyLD_sobjs ?= ${SOBJS}
2393cbdda60SSimon J. Gerraty.else
2403cbdda60SSimon J. GerratyLD_objs ?= `${LORDER} ${OBJS} | ${TSORT}`
2413cbdda60SSimon J. GerratyLD_sobjs ?= `${LORDER} ${SOBJS} | ${TSORT}`
2423cbdda60SSimon J. GerratyLD_pobjs ?= `${LORDER} ${POBJS} | ${TSORT}`
2433cbdda60SSimon J. Gerraty.endif
2443cbdda60SSimon J. GerratyLD_solib ?= ${LD_sobjs}
2453cbdda60SSimon J. GerratyAR_cq ?= cq
2463cbdda60SSimon J. Gerraty.if exists(/netbsd) && exists(${DESTDIR}/usr/lib/libdl.so)
2473cbdda60SSimon J. GerratyDLLIB ?= -ldl
2483cbdda60SSimon J. Gerraty.endif
2493cbdda60SSimon J. Gerraty
25045447996SSimon J. Gerraty# some libs have lots of objects, and scanning all .o, .po and ${PICO} meta files
2513cbdda60SSimon J. Gerraty# is a waste of time, this tells meta.autodep.mk to just pick one
25245447996SSimon J. Gerraty# (typically ${PICO})
2533cbdda60SSimon J. Gerraty# yes, 42 is a random number.
254ac3446e9SSimon J. Gerraty.if ${MK_DIRDEPS_BUILD} == "yes" && ${SRCS:Uno:[\#]} > 42
2553cbdda60SSimon J. GerratyOPTIMIZE_OBJECT_META_FILES ?= yes
2563cbdda60SSimon J. Gerraty.endif
2573cbdda60SSimon J. Gerraty
2583cbdda60SSimon J. Gerraty
2593cbdda60SSimon J. Gerraty.if ${MK_LIBTOOL} == "yes"
2605bcb7424SSimon J. Gerraty# because libtool is so fascist about naming the object files,
2613cbdda60SSimon J. Gerraty# we cannot (yet) build profiled libs
2623cbdda60SSimon J. GerratyMK_PROFILE=no
2633cbdda60SSimon J. Gerraty_LIBS=lib${LIB}.a
2643cbdda60SSimon J. Gerraty.if exists(${.CURDIR}/shlib_version)
2653cbdda60SSimon J. GerratySHLIB_AGE != . ${.CURDIR}/shlib_version ; echo $$age
2663cbdda60SSimon J. Gerraty.endif
2673cbdda60SSimon J. Gerraty.else
2683cbdda60SSimon J. Gerraty# for the normal .a we do not want to strip symbols
2693cbdda60SSimon J. Gerraty.c.o:
2703cbdda60SSimon J. Gerraty	${COMPILE.c} ${.IMPSRC}
2713cbdda60SSimon J. Gerraty
272c59c3bf3SSimon J. Gerraty# precompiled C++ Modules
273c59c3bf3SSimon J. Gerraty${CCM_SUFFIXES:%=%${PCM}}:
274c59c3bf3SSimon J. Gerraty	${COMPILE.pcm} ${.IMPSRC}
275c59c3bf3SSimon J. Gerraty
2763cbdda60SSimon J. Gerraty# for the normal .a we do not want to strip symbols
277e48f47ddSSimon J. Gerraty${CXX_SUFFIXES:%=%.o}:
2783cbdda60SSimon J. Gerraty	${COMPILE.cc} ${.IMPSRC}
2793cbdda60SSimon J. Gerraty
2803cbdda60SSimon J. Gerraty.S.o .s.o:
2818695518cSSimon J. Gerraty	${COMPILE.S} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC}
2823cbdda60SSimon J. Gerraty
2833cbdda60SSimon J. Gerraty.if (${LD_X} == "")
2843cbdda60SSimon J. Gerraty.c.po:
28551ee2c1cSSimon J. Gerraty	${COMPILE.c} ${CC_PG} ${PROFFLAGS} ${.IMPSRC} -o ${.TARGET}
2863cbdda60SSimon J. Gerraty
287e48f47ddSSimon J. Gerraty${CXX_SUFFIXES:%=%.po}:
2883cbdda60SSimon J. Gerraty	${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}
2893cbdda60SSimon J. Gerraty
29045447996SSimon J. Gerraty.S${PICO} .s${PICO}:
2913cbdda60SSimon J. Gerraty	${COMPILE.S} ${PICFLAG} ${CC_PIC} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
2923cbdda60SSimon J. Gerraty.else
2933cbdda60SSimon J. Gerraty.c.po:
2948695518cSSimon J. Gerraty	${COMPILE.c} ${CC_PG} ${PROFFLAGS} ${.IMPSRC} -o ${.TARGET}.o
2953cbdda60SSimon J. Gerraty	@${LD} ${LD_X} ${LD_r} ${.TARGET}.o -o ${.TARGET}
2963cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
2973cbdda60SSimon J. Gerraty
298e48f47ddSSimon J. Gerraty${CXX_SUFFIXES:%=%.po}:
2998695518cSSimon J. Gerraty	${COMPILE.cc} ${CXX_PG} ${.IMPSRC} -o ${.TARGET}.o
3008695518cSSimon J. Gerraty	${LD} ${LD_X} ${LD_r} ${.TARGET}.o -o ${.TARGET}
3013cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
3023cbdda60SSimon J. Gerraty
30345447996SSimon J. Gerraty.S${PICO} .s${PICO}:
3048695518cSSimon J. Gerraty	${COMPILE.S} ${PICFLAG} ${CC_PIC} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
3058695518cSSimon J. Gerraty	${LD} ${LD_x} ${LD_r} ${.TARGET}.o -o ${.TARGET}
3063cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
3073cbdda60SSimon J. Gerraty.endif
3083cbdda60SSimon J. Gerraty
3093cbdda60SSimon J. Gerraty.if (${LD_x} == "")
31045447996SSimon J. Gerraty.c${PICO}:
3113cbdda60SSimon J. Gerraty	${COMPILE.c} ${PICFLAG} ${CC_PIC} ${.IMPSRC} -o ${.TARGET}
3123cbdda60SSimon J. Gerraty
31345447996SSimon J. Gerraty${CXX_SUFFIXES:%=%${PICO}}:
3143cbdda60SSimon J. Gerraty	${COMPILE.cc} ${PICFLAG} ${CC_PIC} ${.IMPSRC} -o ${.TARGET}
3153cbdda60SSimon J. Gerraty
3163cbdda60SSimon J. Gerraty.S.po .s.po:
31751ee2c1cSSimon J. Gerraty	${COMPILE.S} ${PROFFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
3183cbdda60SSimon J. Gerraty.else
3193cbdda60SSimon J. Gerraty
32045447996SSimon J. Gerraty.c${PICO}:
3218695518cSSimon J. Gerraty	${COMPILE.c} ${PICFLAG} ${CC_PIC} ${.IMPSRC} -o ${.TARGET}.o
3228695518cSSimon J. Gerraty	${LD} ${LD_x} ${LD_r} ${.TARGET}.o -o ${.TARGET}
3233cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
3243cbdda60SSimon J. Gerraty
32545447996SSimon J. Gerraty${CXX_SUFFIXES:%=%${PICO}}:
3268695518cSSimon J. Gerraty	${COMPILE.cc} ${PICFLAG} ${CC_PIC} ${.IMPSRC} -o ${.TARGET}.o
3278695518cSSimon J. Gerraty	${LD} ${LD_x} ${LD_r} ${.TARGET}.o -o ${.TARGET}
3283cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
3293cbdda60SSimon J. Gerraty
3303cbdda60SSimon J. Gerraty.S.po .s.po:
3318695518cSSimon J. Gerraty	${COMPILE.S} ${PROFFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
3328695518cSSimon J. Gerraty	${LD} ${LD_X} ${LD_r} ${.TARGET}.o -o ${.TARGET}
3333cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}.o
3343cbdda60SSimon J. Gerraty
3353cbdda60SSimon J. Gerraty.endif
3363cbdda60SSimon J. Gerraty.endif
3373cbdda60SSimon J. Gerraty
3383cbdda60SSimon J. Gerraty.c.ln:
3393cbdda60SSimon J. Gerraty	${LINT} ${LINTFLAGS} ${CFLAGS:M-[IDU]*} -i ${.IMPSRC}
3403cbdda60SSimon J. Gerraty
3413cbdda60SSimon J. Gerraty.if ${MK_LIBTOOL} != "yes"
3423cbdda60SSimon J. Gerraty
3433cbdda60SSimon J. Gerraty.if !defined(PICFLAG)
3443cbdda60SSimon J. GerratyPICFLAG=-fpic
3453cbdda60SSimon J. Gerraty.endif
3463cbdda60SSimon J. Gerraty
3473cbdda60SSimon J. Gerraty_LIBS=
3483cbdda60SSimon J. Gerraty
3493cbdda60SSimon J. Gerraty.if ${MK_ARCHIVE} != "no"
3503cbdda60SSimon J. Gerraty_LIBS += lib${LIB}.a
3513cbdda60SSimon J. Gerraty.endif
3523cbdda60SSimon J. Gerraty
3533cbdda60SSimon J. Gerraty.if ${MK_PROFILE} != "no"
3543cbdda60SSimon J. Gerraty_LIBS+=lib${LIB}_p.a
3553cbdda60SSimon J. GerratyPOBJS+=${OBJS:.o=.po}
3563cbdda60SSimon J. Gerraty.endif
3573cbdda60SSimon J. Gerraty
3583cbdda60SSimon J. Gerraty.if ${MK_PIC} != "no"
3593cbdda60SSimon J. Gerraty.if ${MK_PICLIB} == "no"
3603cbdda60SSimon J. GerratySOLIB ?= lib${LIB}.a
3613cbdda60SSimon J. Gerraty.else
3623cbdda60SSimon J. GerratySOLIB=lib${LIB}_pic.a
3633cbdda60SSimon J. Gerraty_LIBS+=${SOLIB}
3643cbdda60SSimon J. Gerraty.endif
3653cbdda60SSimon J. Gerraty.if !empty(SHLIB_FULLVERSION)
3663cbdda60SSimon J. Gerraty_LIBS+=lib${LIB}.${LD_so}
3673cbdda60SSimon J. Gerraty.endif
3683cbdda60SSimon J. Gerraty.endif
3693cbdda60SSimon J. Gerraty
3703cbdda60SSimon J. Gerraty.if ${MK_LINT} != "no"
3713cbdda60SSimon J. Gerraty_LIBS+=llib-l${LIB}.ln
3723cbdda60SSimon J. Gerraty.endif
3733cbdda60SSimon J. Gerraty
3743cbdda60SSimon J. Gerraty# here is where you can define what LIB* are
3753cbdda60SSimon J. Gerraty.-include <libnames.mk>
3763cbdda60SSimon J. Gerraty.if ${MK_DPADD_MK} == "yes"
3773cbdda60SSimon J. Gerraty# lots of cool magic, but might not suit everyone.
3783cbdda60SSimon J. Gerraty.include <dpadd.mk>
3793cbdda60SSimon J. Gerraty.endif
3803cbdda60SSimon J. Gerraty
381cac6fd11SSimon J. Gerraty.if empty(LIB)
382cac6fd11SSimon J. Gerraty_LIBS=
38350d2e745SSimon J. Gerraty.elif ${MK_LDORDER_MK} != "no"
38450d2e745SSimon J. Gerraty# Record any libs that we need to be linked with
38550d2e745SSimon J. Gerraty_LIBS+= ${libLDORDER_INC}
38650d2e745SSimon J. Gerraty
38750d2e745SSimon J. Gerraty.include <ldorder.mk>
388cac6fd11SSimon J. Gerraty.endif
389c59c3bf3SSimon J. Gerraty# avoid -dL errors
390c59c3bf3SSimon J. GerratyLDADD_LDORDER ?=
391cac6fd11SSimon J. Gerraty
3923cbdda60SSimon J. Gerraty.if !defined(_SKIP_BUILD)
393cac6fd11SSimon J. Gerratyrealbuild: ${_LIBS}
3943cbdda60SSimon J. Gerraty.endif
395cac6fd11SSimon J. Gerraty
3963cbdda60SSimon J. Gerratyall: _SUBDIRUSE
3973cbdda60SSimon J. Gerraty
398*6a7405f5SSimon J. Gerraty.for s in ${SRCS:${OBJS_SRCS_PRE_FILTER:ts:}:M*/*}
399*6a7405f5SSimon J. Gerraty${.o .po .lo:L:@o@${s:${OBJS_SRCS_FILTER:ts:}}$o@}: $s
4003cbdda60SSimon J. Gerraty.endfor
4013cbdda60SSimon J. Gerraty
402*6a7405f5SSimon J. GerratyOBJS_SRCS = ${SRCS:${OBJS_SRCS_FILTER:ts:}}
403*6a7405f5SSimon J. Gerraty.if !empty(OBJS_SRCS)
404*6a7405f5SSimon J. GerratyOBJS+=	${OBJS_SRCS:S/$/.o/g}
405*6a7405f5SSimon J. Gerraty.endif
406*6a7405f5SSimon J. Gerraty
4073cbdda60SSimon J. Gerraty.NOPATH:	${OBJS}
4083cbdda60SSimon J. Gerraty
4093cbdda60SSimon J. Gerraty.if ${MK_LIBTOOL} == "yes"
4103cbdda60SSimon J. Gerraty.if ${MK_PIC} == "no"
4113cbdda60SSimon J. GerratyLT_STATIC=-static
4123cbdda60SSimon J. Gerraty.else
4133cbdda60SSimon J. GerratyLT_STATIC=
4143cbdda60SSimon J. Gerraty.endif
4153cbdda60SSimon J. GerratySHLIB_AGE?=0
4163cbdda60SSimon J. Gerraty
4173cbdda60SSimon J. Gerraty# .lo's are created as a side effect
4183cbdda60SSimon J. Gerraty.s.o .S.o .c.o:
4193cbdda60SSimon J. Gerraty	${LIBTOOL} --mode=compile ${CC} ${LT_STATIC} ${CFLAGS} ${CPPFLAGS} ${IMPFLAGS} -c ${.IMPSRC}
4203cbdda60SSimon J. Gerraty
4215bcb7424SSimon J. Gerraty# can't really do profiled libs with libtool - its too fascist about
4223cbdda60SSimon J. Gerraty# naming the output...
42349caa483SSimon J. Gerratylib${LIB}.a: ${OBJS}
4243cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}
4253cbdda60SSimon J. Gerraty	${LIBTOOL} --mode=link ${CC} ${LT_STATIC} -o ${.TARGET:.a=.la} ${OBJS:.o=.lo} -rpath ${SHLIBDIR}:/usr/lib -version-info ${SHLIB_MAJOR}:${SHLIB_MINOR}:${SHLIB_AGE}
4263cbdda60SSimon J. Gerraty	@ln .libs/${.TARGET} .
4273cbdda60SSimon J. Gerraty
42849caa483SSimon J. Gerratylib${LIB}.${LD_so}: lib${LIB}.a
4293cbdda60SSimon J. Gerraty	@[ -s ${.TARGET}.${SHLIB_AGE} ] || { ln -s .libs/lib${LIB}.${LD_so}* . 2>/dev/null; : }
4303cbdda60SSimon J. Gerraty	@[ -s ${.TARGET} ] || ln -s ${.TARGET}.${SHLIB_AGE} ${.TARGET}
4313cbdda60SSimon J. Gerraty
4323cbdda60SSimon J. Gerraty.else  # MK_LIBTOOL=yes
4333cbdda60SSimon J. Gerraty
43449caa483SSimon J. Gerratylib${LIB}.a: ${OBJS}
4358695518cSSimon J. Gerraty	@${META_NOECHO} building standard ${LIB} library
4363cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}
4373cbdda60SSimon J. Gerraty	@${AR} ${AR_cq} ${.TARGET} ${LD_objs}
4383cbdda60SSimon J. Gerraty	${RANLIB} ${.TARGET}
4393cbdda60SSimon J. Gerraty
4403cbdda60SSimon J. GerratyPOBJS+=	${OBJS:.o=.po}
4413cbdda60SSimon J. Gerraty.NOPATH:	${POBJS}
44249caa483SSimon J. Gerratylib${LIB}_p.a: ${POBJS}
4438695518cSSimon J. Gerraty	@${META_NOECHO} building profiled ${LIB} library
4443cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}
4453cbdda60SSimon J. Gerraty	@${AR} ${AR_cq} ${.TARGET} ${LD_pobjs}
4463cbdda60SSimon J. Gerraty	${RANLIB} ${.TARGET}
4473cbdda60SSimon J. Gerraty
44845447996SSimon J. GerratySOBJS+=	${OBJS:.o=${PICO}}
4493cbdda60SSimon J. Gerraty.NOPATH:	${SOBJS}
45049caa483SSimon J. Gerratylib${LIB}_pic.a: ${SOBJS}
4518695518cSSimon J. Gerraty	@${META_NOECHO} building shared object ${LIB} library
4523cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}
4533cbdda60SSimon J. Gerraty	@${AR} ${AR_cq} ${.TARGET} ${LD_sobjs}
4543cbdda60SSimon J. Gerraty	${RANLIB} ${.TARGET}
4553cbdda60SSimon J. Gerraty
4563cbdda60SSimon J. Gerraty# bound to be non-portable...
4573cbdda60SSimon J. Gerraty# this is known to work for NetBSD 1.6 and FreeBSD 4.2
4583cbdda60SSimon J. Gerratylib${LIB}.${LD_so}: ${SOLIB} ${DPADD}
4598695518cSSimon J. Gerraty	@${META_NOECHO} building shared ${LIB} library \(version ${SHLIB_FULLVERSION}\)
4603cbdda60SSimon J. Gerraty	@rm -f ${.TARGET}
4618c973ee2SSimon J. Gerraty.if ${TARGET_OSNAME:NFreeBSD:NNetBSD} == ""
4623cbdda60SSimon J. Gerraty.if ${OBJECT_FMT} == "ELF"
463d5e0a182SSimon J. Gerraty	${SHLIB_LD} -shared -Wl,-x ${SHLIB_SHFLAGS} ${LDFLAGS} -o ${.TARGET} \
464d5e0a182SSimon J. Gerraty	    -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive \
465d5e0a182SSimon J. Gerraty	    ${LDADD} ${SHLIB_LDADD}
4663cbdda60SSimon J. Gerraty.else
4678c973ee2SSimon J. Gerraty	${SHLIB_LD} ${LD_x} ${LD_shared} ${LDFLAGS} \
4688c973ee2SSimon J. Gerraty	    -o ${.TARGET} ${SOLIB} ${LDADD} ${SHLIB_LDADD}
4693cbdda60SSimon J. Gerraty.endif
4703cbdda60SSimon J. Gerraty.else
4718c973ee2SSimon J. Gerraty	${SHLIB_LD} ${LDFLAGS} -o ${.TARGET} \
4728c973ee2SSimon J. Gerraty	    ${LD_shared} ${LD_solib} ${DLLIB} ${LDADD} ${SHLIB_LDADD}
4733cbdda60SSimon J. Gerraty.endif
4743cbdda60SSimon J. Gerraty.endif
4753cbdda60SSimon J. Gerraty.if !empty(SHLIB_LINKS)
4763cbdda60SSimon J. Gerraty	rm -f ${SHLIB_LINKS}; ${SHLIB_LINKS:O:u:@x@ln -s ${.TARGET} $x;@}
4773cbdda60SSimon J. Gerraty.endif
4783cbdda60SSimon J. Gerraty
4793cbdda60SSimon J. GerratyLOBJS+=	${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
4803cbdda60SSimon J. Gerraty.NOPATH:	${LOBJS}
4813cbdda60SSimon J. GerratyLLIBS?=	-lc
4823cbdda60SSimon J. Gerratyllib-l${LIB}.ln: ${LOBJS}
4838695518cSSimon J. Gerraty	@${META_NOECHO} building llib-l${LIB}.ln
4843cbdda60SSimon J. Gerraty	@rm -f llib-l${LIB}.ln
4853cbdda60SSimon J. Gerraty	@${LINT} -C${LIB} ${LOBJS} ${LLIBS}
4863cbdda60SSimon J. Gerraty
4873cbdda60SSimon J. Gerraty.if !target(clean)
4883cbdda60SSimon J. Gerratycleanlib: .PHONY
4893cbdda60SSimon J. Gerraty	rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES}
4903cbdda60SSimon J. Gerraty	rm -f lib${LIB}.a ${OBJS}
4913cbdda60SSimon J. Gerraty	rm -f lib${LIB}_p.a ${POBJS}
492d5e0a182SSimon J. Gerraty	rm -f lib${LIB}_pic.a lib${LIB}*${LD_solink} lib${LIB}*${LD_solink}.* ${SOBJS}
4933cbdda60SSimon J. Gerraty	rm -f llib-l${LIB}.ln ${LOBJS}
4943cbdda60SSimon J. Gerraty.if !empty(SHLIB_LINKS)
4953cbdda60SSimon J. Gerraty	rm -f ${SHLIB_LINKS}
4963cbdda60SSimon J. Gerraty.endif
4973cbdda60SSimon J. Gerraty
4983cbdda60SSimon J. Gerratyclean: _SUBDIRUSE cleanlib
4993cbdda60SSimon J. Gerratycleandir: _SUBDIRUSE cleanlib
5003cbdda60SSimon J. Gerraty.else
5013cbdda60SSimon J. Gerratycleandir: _SUBDIRUSE clean
5023cbdda60SSimon J. Gerraty.endif
5033cbdda60SSimon J. Gerraty
5043cbdda60SSimon J. Gerraty.if defined(SRCS) && (!defined(MKDEP) || ${MKDEP} != autodep)
5053cbdda60SSimon J. Gerratyafterdepend: .depend
5063cbdda60SSimon J. Gerraty	@(TMP=/tmp/_depend$$$$; \
50745447996SSimon J. Gerraty	    sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1${PICO} \1.ln:/' \
5083cbdda60SSimon J. Gerraty	      < .depend > $$TMP; \
5093cbdda60SSimon J. Gerraty	    mv $$TMP .depend)
5103cbdda60SSimon J. Gerraty.endif
5113cbdda60SSimon J. Gerraty
5123cbdda60SSimon J. Gerraty.if !target(install)
5133cbdda60SSimon J. Gerraty.if !target(beforeinstall)
5143cbdda60SSimon J. Gerratybeforeinstall:
5153cbdda60SSimon J. Gerraty.endif
5163cbdda60SSimon J. Gerraty
5173cbdda60SSimon J. Gerraty.if !empty(LIBOWN)
5183cbdda60SSimon J. GerratyLIB_INSTALL_OWN ?= -o ${LIBOWN} -g ${LIBGRP}
5193cbdda60SSimon J. Gerraty.endif
5203cbdda60SSimon J. Gerraty
5213cbdda60SSimon J. Gerraty.include <links.mk>
5223cbdda60SSimon J. Gerraty
5238695518cSSimon J. Gerraty.if !target(libinstall) && !empty(LIB)
5243cbdda60SSimon J. Gerratyrealinstall: libinstall
5253cbdda60SSimon J. Gerratylibinstall:
5263cbdda60SSimon J. Gerraty	[ -d ${DESTDIR}/${LIBDIR} ] || \
5273cbdda60SSimon J. Gerraty	${INSTALL} -d ${LIB_INSTALL_OWN} -m 775 ${DESTDIR}${LIBDIR}
5283cbdda60SSimon J. Gerraty.if ${MK_ARCHIVE} != "no"
52950d2e745SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 lib${LIB}.a \
5303cbdda60SSimon J. Gerraty	    ${DESTDIR}${LIBDIR}
5313cbdda60SSimon J. Gerraty	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}.a
5323cbdda60SSimon J. Gerraty	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}.a
5333cbdda60SSimon J. Gerraty.endif
5343cbdda60SSimon J. Gerraty.if ${MK_PROFILE} != "no"
53550d2e745SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
5363cbdda60SSimon J. Gerraty	    lib${LIB}_p.a ${DESTDIR}${LIBDIR}
5373cbdda60SSimon J. Gerraty	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
5383cbdda60SSimon J. Gerraty	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
5393cbdda60SSimon J. Gerraty.endif
54050d2e745SSimon J. Gerraty.if ${MK_LDORDER_MK} != "no"
54150d2e745SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
54250d2e745SSimon J. Gerraty		lib${LIB}.ldorder.inc ${DESTDIR}${LIBDIR}
54350d2e745SSimon J. Gerraty.endif
5443cbdda60SSimon J. Gerraty.if ${MK_PIC} != "no"
5453cbdda60SSimon J. Gerraty.if ${MK_PICLIB} != "no"
54650d2e745SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m 644 \
5473cbdda60SSimon J. Gerraty	    lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
5483cbdda60SSimon J. Gerraty	${RANLIB} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
5493cbdda60SSimon J. Gerraty	chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
5503cbdda60SSimon J. Gerraty.endif
5513cbdda60SSimon J. Gerraty.if !empty(SHLIB_MAJOR)
5523cbdda60SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m ${LIBMODE} \
5533cbdda60SSimon J. Gerraty	    lib${LIB}.${LD_so} ${DESTDIR}${LIBDIR}
5543cbdda60SSimon J. Gerraty.if !empty(SHLIB_LINKS)
5553cbdda60SSimon J. Gerraty	(cd ${DESTDIR}${LIBDIR} && { rm -f ${SHLIB_LINKS}; ${SHLIB_LINKS:O:u:@x@ln -s lib${LIB}.${LD_so} $x;@} })
5563cbdda60SSimon J. Gerraty.endif
5573cbdda60SSimon J. Gerraty.endif
5583cbdda60SSimon J. Gerraty.endif
5593cbdda60SSimon J. Gerraty.if ${MK_LINT} != "no" && ${MK_LINKLIB} != "no" && !empty(LOBJS)
5603cbdda60SSimon J. Gerraty	${INSTALL} ${COPY} ${LIB_INSTALL_OWN} -m ${LIBMODE} \
5613cbdda60SSimon J. Gerraty	    llib-l${LIB}.ln ${DESTDIR}${LINTLIBDIR}
5623cbdda60SSimon J. Gerraty.endif
5633cbdda60SSimon J. Gerraty.if defined(LINKS) && !empty(LINKS)
5643cbdda60SSimon J. Gerraty	@set ${LINKS}; ${_LINKS_SCRIPT}
5653cbdda60SSimon J. Gerraty.endif
5663cbdda60SSimon J. Gerraty.endif
5673cbdda60SSimon J. Gerraty
568cac6fd11SSimon J. Gerraty.if ${MK_MAN} != "no"
5693cbdda60SSimon J. Gerratyinstall: maninstall _SUBDIRUSE
5703cbdda60SSimon J. Gerratymaninstall: afterinstall
571cac6fd11SSimon J. Gerraty.endif
5723cbdda60SSimon J. Gerratyafterinstall: realinstall
57395e3ed2cSSimon J. Gerratylibinstall: beforeinstall
5743cbdda60SSimon J. Gerratyrealinstall: beforeinstall
5753cbdda60SSimon J. Gerraty.endif
5763cbdda60SSimon J. Gerraty
577cac6fd11SSimon J. Gerraty.if defined(FILES) || defined(FILESGROUPS)
578cac6fd11SSimon J. Gerraty.include <files.mk>
579cac6fd11SSimon J. Gerraty.endif
580cac6fd11SSimon J. Gerraty
5813cbdda60SSimon J. Gerraty.if ${MK_MAN} != "no"
5823cbdda60SSimon J. Gerraty.include <man.mk>
5833cbdda60SSimon J. Gerraty.endif
5843cbdda60SSimon J. Gerraty
5853cbdda60SSimon J. Gerraty.if ${MK_NLS} != "no"
5863cbdda60SSimon J. Gerraty.include <nls.mk>
5873cbdda60SSimon J. Gerraty.endif
5883cbdda60SSimon J. Gerraty
5893cbdda60SSimon J. Gerraty.include <obj.mk>
5903cbdda60SSimon J. Gerraty.include <inc.mk>
5913cbdda60SSimon J. Gerraty.include <dep.mk>
5923cbdda60SSimon J. Gerraty.include <subdir.mk>
5933cbdda60SSimon J. Gerraty.endif
5943cbdda60SSimon J. Gerraty
5953cbdda60SSimon J. Gerraty# during building we usually need/want to install libs somewhere central
5963cbdda60SSimon J. Gerraty# note that we do NOT ch{own,grp} as that would likely fail at this point.
5973cbdda60SSimon J. Gerraty# otherwise it is the same as realinstall
5983cbdda60SSimon J. Gerraty# Note that we don't need this when using dpadd.mk
5993cbdda60SSimon J. Gerraty.libinstall:	${_LIBS}
6003cbdda60SSimon J. Gerraty	test -d ${DESTDIR}${LIBDIR} || ${INSTALL} -d -m775 ${DESTDIR}${LIBDIR}
6013cbdda60SSimon J. Gerraty.for _lib in ${_LIBS:M*.a}
6023cbdda60SSimon J. Gerraty	${INSTALL} ${COPY} -m 644 ${_lib} ${DESTDIR}${LIBDIR}
6033cbdda60SSimon J. Gerraty	${RANLIB} ${DESTDIR}${LIBDIR}/${_lib}
6043cbdda60SSimon J. Gerraty.endfor
6053cbdda60SSimon J. Gerraty.for _lib in ${_LIBS:M*.${LD_solink}*:O:u}
6063cbdda60SSimon J. Gerraty	${INSTALL} ${COPY} -m ${LIBMODE} ${_lib} ${DESTDIR}${LIBDIR}
6073cbdda60SSimon J. Gerraty.if !empty(SHLIB_LINKS)
6083cbdda60SSimon J. Gerraty	(cd ${DESTDIR}${LIBDIR} && { ${SHLIB_LINKS:O:u:@x@ln -sf ${_lib} $x;@}; })
6093cbdda60SSimon J. Gerraty.endif
6103cbdda60SSimon J. Gerraty.endfor
6113cbdda60SSimon J. Gerraty	@touch ${.TARGET}
6123cbdda60SSimon J. Gerraty
613cac6fd11SSimon J. Gerraty.if !empty(LIB)
614cac6fd11SSimon J. GerratySTAGE_LIBDIR?= ${STAGE_OBJTOP}${LIBDIR}
615cac6fd11SSimon J. Gerratystage_libs: ${_LIBS}
61698875883SSimon J. Gerraty
61798875883SSimon J. Gerraty__libtoken ?= __lib${LIB:C,[^a-zA-Z0-9_],_,g}__
61898875883SSimon J. Gerraty__libtoken := ${__libtoken}
61998875883SSimon J. GerratyCOPTS += -D${__libtoken}
620cac6fd11SSimon J. Gerraty.endif
621cac6fd11SSimon J. Gerraty
6223cbdda60SSimon J. Gerraty.include <final.mk>
6233cbdda60SSimon J. Gerraty.endif
624