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