8fb9b278d9
shared object of libobjc, we end up linking in from the archive version. This is wrong, because we don't compile the archive version suitable for inclusion in shared objects. On ia64 this causes actual breakages. Compile the archive version with PIC on ia64 to avoid the breakage there and also to avoid changing the status quo on other architectures. If other architectures have the same problem, we probably should start building a shared library. There's no indication however that other architectures actually need it. Building the archive version with PIC on ia64 does pessimize linking complete binaries (ie fully archive), but we don't use Objective-C ourselves and so far I haven't seen non-shared executables written in Objective-C, so I'm sure this will be nothing but academic. Trigger case: ports/lang/gnustep-base
44 lines
1.1 KiB
Makefile
44 lines
1.1 KiB
Makefile
# $FreeBSD$
|
|
|
|
OBJCDIR=${.CURDIR}/../../../contrib/libobjc
|
|
GCCDIR= ${.CURDIR}/../../../contrib/gcc
|
|
|
|
.PATH: ${OBJCDIR}/objc ${OBJCDIR}
|
|
|
|
LIB= objc
|
|
NOMAN= sorry
|
|
NOPIC= works but method lookup slowdown is significant
|
|
|
|
SRCS= archive.c class.c encoding.c gc.c hash.c init.c misc.c \
|
|
nil_method.c objects.c sarray.c selector.c sendmsg.c \
|
|
thr.c thr-posix.c \
|
|
NXConstStr.m Object.m Protocol.m linking.m
|
|
|
|
INCS= encoding.h hash.h objc-api.h objc-list.h objc.h runtime.h \
|
|
sarray.h thr.h typedstream.h NXConstStr.h Object.h Protocol.h
|
|
INCSDIR=${INCLUDEDIR}/objc
|
|
|
|
.if ${MACHINE_ARCH} == "ia64"
|
|
CFLAGS+= -fpic
|
|
.endif
|
|
|
|
CFLAGS+= -fgnu-runtime -DHAVE_GTHR_DEFAULT -DIN_TARGET_LIBS
|
|
CFLAGS+= -I. -I${.CURDIR}/../../usr.bin/cc/cc_tools
|
|
CFLAGS+= -I${OBJCDIR}/objc -I${OBJCDIR}
|
|
CFLAGS+= -I${GCCDIR}/config -I${GCCDIR}
|
|
|
|
GENHDRS= runtime-info.h tconfig.h
|
|
CLEANFILES+= ${GENHDRS}
|
|
SRCS+= ${GENHDRS}
|
|
|
|
${OBJS}: ${GENHDRS}
|
|
|
|
runtime-info.h:
|
|
`${CC} --print-prog-name=cc1obj` -print-objc-runtime-info \
|
|
< /dev/null > ${.TARGET}
|
|
|
|
tconfig.h: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile
|
|
${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} ${.TARGET}
|
|
|
|
.include <bsd.lib.mk>
|