pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/bootstrap/mods/mk Gimme a bsd.lib.mk that actually can...
details: https://anonhg.NetBSD.org/pkgsrc/rev/d39671303d73
branches: trunk
changeset: 487689:d39671303d73
user: tv <tv%pkgsrc.org@localhost>
date: Tue Jan 18 17:49:26 2005 +0000
description:
Gimme a bsd.lib.mk that actually can build shlibs on Interix.
diffstat:
bootstrap/mods/mk/Interix.bsd.lib.mk | 471 +++++++++++++++++++++++++++++++++++
1 files changed, 471 insertions(+), 0 deletions(-)
diffs (truncated from 475 to 300 lines):
diff -r 588dd1f2ea80 -r d39671303d73 bootstrap/mods/mk/Interix.bsd.lib.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bootstrap/mods/mk/Interix.bsd.lib.mk Tue Jan 18 17:49:26 2005 +0000
@@ -0,0 +1,471 @@
+# $NetBSD: Interix.bsd.lib.mk,v 1.1 2005/01/18 17:49:26 tv Exp $
+# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
+
+.if !target(__initialized__)
+__initialized__:
+.if exists(${.CURDIR}/../Makefile.inc)
+.include "${.CURDIR}/../Makefile.inc"
+.endif
+.include <bsd.own.mk>
+.include <bsd.obj.mk>
+.include <bsd.depall.mk>
+.MAIN: all
+.endif
+
+.PHONY: checkver cleanlib libinstall
+realinstall: checkver libinstall
+clean cleandir: cleanlib
+
+.if exists(${SHLIB_VERSION_FILE})
+SHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major
+SHLIB_MINOR != . ${SHLIB_VERSION_FILE} ; echo $$minor
+SHLIB_TEENY != . ${SHLIB_VERSION_FILE} ; echo $$teeny
+
+# Check for higher installed library versions.
+.if !defined(NOCHECKVER) && !defined(NOCHECKVER_${LIB}) && \
+ exists(${BSDSRCDIR}/lib/checkver)
+checkver:
+ @(cd ${.CURDIR} && \
+ sh ${BSDSRCDIR}/lib/checkver -v ${SHLIB_VERSION_FILE} \
+ -d ${DESTDIR}${LIBDIR} ${LIB})
+.endif
+.endif
+
+.if !target(checkver)
+checkver:
+.endif
+
+print-shlib-major:
+.if defined(SHLIB_MAJOR)
+ @echo ${SHLIB_MAJOR}
+.else
+ @false
+.endif
+
+print-shlib-minor:
+.if defined(SHLIB_MINOR)
+ @echo ${SHLIB_MINOR}
+.else
+ @false
+.endif
+
+print-shlib-teeny:
+.if defined(SHLIB_TEENY)
+ @echo ${SHLIB_TEENY}
+.else
+ @false
+.endif
+
+.if defined(SHLIB_MAJOR) && !empty(SHLIB_MAJOR)
+.if defined(SHLIB_MINOR) && !empty(SHLIB_MINOR)
+.if defined(SHLIB_TEENY) && !empty(SHLIB_TEENY)
+SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}.${SHLIB_TEENY}
+.else
+SHLIB_FULLVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}
+.endif
+.else
+SHLIB_FULLVERSION=${SHLIB_MAJOR}
+.endif
+.endif
+
+# add additional suffixes not exported.
+# .po is used for profiling object files.
+# .so is used for PIC object files.
+.SUFFIXES: .out .a .ln .so .po .o .s .S .c .cc .C .m .F .f .r .y .l .cl .p .h
+.SUFFIXES: .sh .m4 .m
+
+
+# Set PICFLAGS to cc flags for producing position-independent code,
+# if not already set. Includes -DPIC, if required.
+
+# Data-driven table using make variables to control how shared libraries
+# are built for different platforms and object formats.
+# OBJECT_FMT: currently either "ELF" or "a.out", from <bsd.own.mk>
+# SHLIB_SOVERSION: version number to be compiled into a shared library
+# via -soname. Usualy ${SHLIB_MAJOR} on ELF.
+# NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR}
+# [.${SHLIB_TEENY}]]
+# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library.
+# with ELF, also set shared-lib version for ld.so.
+# SHLIB_LDSTARTFILE: support .o file, call C++ file-level constructors
+# SHLIB_LDENDFILE: support .o file, call C++ file-level destructors
+# FPICFLAGS: flags for ${FC} to compile .[fF] files to .so objects.
+# CPPICFLAGS: flags for ${CPP} to preprocess .[sS] files for ${AS}
+# CPICFLAGS: flags for ${CC} to compile .[cC] files to .so objects.
+# CAPICFLAGS flags for {$CC} to compiling .[Ss] files
+# (usually just ${CPPPICFLAGS} ${CPICFLAGS})
+# APICFLAGS: flags for ${AS} to assemble .[sS] to .so objects.
+
+SHLIB_LDSTARTFILE=
+SHLIB_LDENDFILE=
+SHLIB_SOVERSION= ${SHLIB_MAJOR}
+SHLIB_SHFLAGS= -Wl,-h,lib${LIB}.so.${SHLIB_SOVERSION}
+FPICFLAGS?=
+CPICFLAGS?= -DPIC
+CPPPICFLAGS?= -DPIC
+CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
+APICFLAGS?=
+
+MKPICLIB?= yes
+
+CFLAGS+= ${COPTS}
+FFLAGS+= ${FOPTS}
+
+.c.o:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.c} ${.IMPSRC}
+.else
+ @echo ${COMPILE.c:Q} ${.IMPSRC}
+ @${COMPILE.c} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.c.po:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.c} -pg ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.c:Q} -pg ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.c} -pg ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.c.so:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.c} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.c:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.c} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.c.ln:
+ ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
+
+.cc.o .C.o:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.cc} ${.IMPSRC}
+.else
+ @echo ${COMPILE.cc:Q} ${.IMPSRC}
+ @${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.cc.po .C.po:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.cc:Q} -pg ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.cc.so .C.so:
+.if defined(COPTS) && !empty(COPTS:M*-g*)
+ ${COMPILE.cc} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.cc:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.cc} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.f.o:
+.if defined(FOPTS) && !empty(FOPTS:M*-g*)
+ ${COMPILE.f} ${.IMPSRC}
+.else
+ @echo ${COMPILE.f:Q} ${.IMPSRC}
+ @${COMPILE.f} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.f.po:
+.if defined(FOPTS) && !empty(FOPTS:M*-g*)
+ ${COMPILE.f} -pg ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.f:Q} -pg ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.f} -pg ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.f.so:
+.if defined(FOPTS) && !empty(FOPTS:M*-g*)
+ ${COMPILE.f} ${FPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.f:Q} ${FPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.f} ${FPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.f.ln:
+ ${ECHO} Skipping lint for Fortran libraries.
+
+.m.o:
+.if defined(OBJCFLAGS) && !empty(OBJCFLAGS:M*-g*)
+ ${COMPILE.m} ${.IMPSRC}
+.else
+ @echo ${COMPILE.m:Q} ${.IMPSRC}
+ @${COMPILE.m} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.m.po:
+.if defined(OBJCFLAGS) && !empty(OBJCFLAGS:M*-g*)
+ ${COMPILE.m} -pg ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.m:Q} -pg ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.m} -pg ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.m.so:
+.if defined(OBJCFLAGS) && !empty(OBJCFLAGS:M*-g*)
+ ${COMPILE.m} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+.else
+ @echo ${COMPILE.m:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.m} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+.endif
+
+.S.o .s.o:
+ @echo ${COMPILE.S:Q} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC}
+ @${COMPILE.S} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+
+.S.po .s.po:
+ @echo ${COMPILE.S:Q} -DGPROF -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.S} -DGPROF -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+
+.S.so .s.so:
+ @echo ${COMPILE.S:Q} ${CAPICFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
+ @${COMPILE.S} ${CAPICFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
+ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
+ @rm -f ${.TARGET}.o
+
+.if ${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \
+ || ${MKLINKLIB} != "no"
+_LIBS=lib${LIB}.a
+.else
+_LIBS=
+.endif
+
+OBJS+=${SRCS:N*.h:N*.sh:R:S/$/.o/g}
+
+.if ${MKPROFILE} != "no"
+_LIBS+=lib${LIB}_p.a
+POBJS+=${OBJS:.o=.po}
+.endif
+
+.if ${MKPIC} != "no"
+.if ${MKPICLIB} == "no"
+SOLIB=lib${LIB}.a
+.else
+SOLIB=lib${LIB}_pic.a
+_LIBS+=${SOLIB}
+SOBJS+=${OBJS:.o=.so}
+.endif
+.if defined(SHLIB_FULLVERSION)
+_LIBS+=lib${LIB}.so.${SHLIB_FULLVERSION}
+.endif
+.endif
+
+LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
+.if ${MKLINT} != "no" && ${MKLINKLIB} != "no" && !empty(LOBJS)
+_LIBS+=llib-l${LIB}.ln
+.endif
+
+.if ${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \
+ || ${MKLINKLIB} != "no"
+ALLOBJS=${OBJS} ${POBJS} ${SOBJS}
+.else
+ALLOBJS=${POBJS} ${SOBJS}
+.endif
+.if ${MKLINT} != "no" && ${MKLINKLIB} != "no" && !empty(LOBJS)
Home |
Main Index |
Thread Index |
Old Index