Home | History | Annotate | Line # | Download | only in libobjc
Makefile revision 1.12
      1 #	$NetBSD: Makefile,v 1.12 2014/05/15 14:37:08 joerg Exp $
      2 
      3 REQUIRETOOLS=	yes
      4 NOLINT=		# defined
      5 
      6 UNSUPPORTED_COMPILER.clang=	# defined
      7 
      8 .include <bsd.own.mk>
      9 
     10 LIB=		objc
     11 GCC_MACHINE_ARCH?=	${MACHINE_ARCH:S/earmv5/earm/}
     12 
     13 .if ${MKGCC} != "no"
     14 
     15 SHLIB_MAJOR=	4
     16 SHLIB_MINOR=	0
     17 
     18 # XXX just while all platforms defs.mk are updated..
     19 .if exists(${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk)
     20 # Machine-dependent definitions (include file names).
     21 .include "${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk"
     22 EXTRA_FAKEHEADERS=
     23 .else
     24 # Machine-independent definitions (include file names).
     25 .include "${.CURDIR}/defs.mk"
     26 EXTRA_FAKEHEADERS=
     27 .endif
     28 
     29 LIBGCCOBJ!=    cd ${.CURDIR}/../libgcc/libgcc && ${PRINTOBJDIR}
     30 
     31 DIST=		${NETBSDSRCDIR}/external/gpl3/gcc/dist
     32 GNUHOSTDIST=	${NETBSDSRCDIR}/external/gpl3/gcc/dist
     33 GCCARCH=	${NETBSDSRCDIR}/external/gpl3/gcc/usr.bin/gcc/arch/${GCC_MACHINE_ARCH}
     34 LIBOBJCARCH=	${NETBSDSRCDIR}/external/gpl3/gcc/lib/libobjc/arch/${GCC_MACHINE_ARCH}
     35 GCCLIBXX=	${NETBSDSRCDIR}/external/gpl3/gcc/lib/libstdc++-v3/arch/${GCC_MACHINE_ARCH}
     36 
     37 SRCS=		${G_OBJC_SOURCE_FILES} ${G_C_SOURCE_FILES}
     38 
     39 GCPPFLAGS=	${G_ALL_CFLAGS} ${G_INCLUDES}
     40 CPPFLAGS+=	-I. -I${.CURDIR}/arch/${GCC_MACHINE_ARCH}
     41 CPPFLAGS+=	-I${GCCARCH} ${GCPPFLAGS:M-D*} ${GCPPFLAGS:M-I*:N-I.*}
     42 CPPFLAGS+=	-I${GCCLIBXX}
     43 CPPFLAGS+=	-I${DIST}/libobjc/objc-private
     44 
     45 BUILDSYMLINKS=	${.CURDIR}/../libstdc++-v3/arch/${GCC_MACHINE_ARCH} bits
     46 DPSRCS+=	bits
     47 
     48 .for f in Protocol.m Object.m NXConstStr.m linking.m
     49 OBJCOPTS.${f}=	-fgnu-runtime
     50 .endfor
     51 
     52 .for f in thr.c thr-objc.c
     53 COPTS.${f}=	-Wno-missing-noreturn
     54 .endfor
     55 
     56 COPTS+=		-fno-strict-aliasing -fexceptions
     57 OBJCOPTS+=	-fno-strict-aliasing -fexceptions
     58 
     59 OBJCOPTS.Object.m = -Wno-stack-protector
     60 COPTS.sendmsg.c = -Wno-stack-protector
     61 COPTS.objc-act.c = -Wno-stack-protector
     62 
     63 INCS=		${G_OBJC_H}
     64 INCSDIR=	/usr/include/objc
     65 
     66 DPSRCS+=	runtime-info.h
     67 CLEANFILES+=	rtscratch rtscratch.s runtime-info.h
     68 runtime-info.h:
     69 	${_MKTARGET_CREATE}
     70 	touch rtscratch
     71 	`${OBJC} --print-prog-name=cc1obj` -print-objc-runtime-info rtscratch >$@
     72 
     73 .PATH: ${DIST}/libobjc ${DIST}/libobjc/objc ${DIST}/libobjc/objc-private
     74 
     75 ${OBJS} ${POBJS} ${SOBJS}: runtime-info.h
     76 
     77 ${SRCS}: tconfig.h options.h
     78 
     79 .if ${HAVE_LIBGCC_EH} == "no"
     80 G_CONFIGLINKS:= ${G_CONFIGLINKS:S,libgcc/config/arm/unwind-arm.h,libgcc/unwind-generic.h,}
     81 .endif
     82 
     83 .if ${MKGCC} != "no"
     84 .if defined(G_CONFIGLINKS) && !empty(G_CONFIGLINKS)
     85 BUILDSYMLINKS+=	${G_CONFIGLINKS}
     86 .for _src _dst in ${G_CONFIGLINKS}
     87 DPSRCS+=	${_dst}
     88 .endfor
     89 .endif
     90 .endif
     91 
     92 .include "../Makefile.tconfigh"
     93 .include "../Makefile.hacks"
     94 
     95 # XXX just while all platforms defs.mk are updated..
     96 .if exists(${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk)
     97 optionlist: ${G_ALL_OPT_FILES} ${LIBOBJCARCH}/defs.mk Makefile ${DIST}/gcc/opt-gather.awk
     98 	${TOOL_AWK} -f ${DIST}/gcc/opt-gather.awk ${G_ALL_OPT_FILES} \
     99 		> ${.TARGET}
    100 
    101 .if ${MACHINE_ARCH} == "vax" || ${MACHINE_ARCH} == "mipseb"
    102 OPTION_FLAGS=-v header_name="config.h system.h coretypes.h options.h tm.h" \
    103 	-f ${DIST}/gcc/opt-read.awk
    104 OPTION_DEPS=${DIST}/gcc/opt-read.awk
    105 .endif
    106 
    107 options.h: optionlist ${DIST}/gcc/opt-functions.awk ${DIST}/gcc/opth-gen.awk \
    108 	${OPTION_DEPS}
    109 	${TOOL_AWK} -f ${DIST}/gcc/opt-functions.awk \
    110 		-f ${DIST}/gcc/opth-gen.awk ${OPTION_FLAGS} \
    111 		< optionlist > ${.TARGET}
    112 
    113 CLEANFILES+=	options.h optionlist
    114 .endif
    115 
    116 .include <bsd.lib.mk>
    117 
    118 .else
    119 .include <bsd.prog.mk>	# do nothing
    120 .endif
    121 
    122 COPTS.archive.c+=	-Wno-error
    123 COPTS.sendmsg.c+=	-Wno-error
    124