aboutsummaryrefslogtreecommitdiffstats
path: root/Mk/Uses
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2014-05-08 21:32:12 +0800
committerbapt <bapt@FreeBSD.org>2014-05-08 21:32:12 +0800
commit2c28a093aff0b77d69eb1bdf7ad99bbe6388185a (patch)
treed863220c25939293fe3a6643b8b67922d3449b58 /Mk/Uses
parentf4a1a128b3a453962a7706bd81fecc8028043119 (diff)
downloadfreebsd-ports-gnome-2c28a093aff0b77d69eb1bdf7ad99bbe6388185a.tar.gz
freebsd-ports-gnome-2c28a093aff0b77d69eb1bdf7ad99bbe6388185a.tar.zst
freebsd-ports-gnome-2c28a093aff0b77d69eb1bdf7ad99bbe6388185a.zip
Add a USES to handle objective C (chosing compiler adding the right dependency on the runtime library)
Diffstat (limited to 'Mk/Uses')
-rw-r--r--Mk/Uses/objc.mk65
1 files changed, 65 insertions, 0 deletions
diff --git a/Mk/Uses/objc.mk b/Mk/Uses/objc.mk
new file mode 100644
index 000000000000..68c9265b19e4
--- /dev/null
+++ b/Mk/Uses/objc.mk
@@ -0,0 +1,65 @@
+# $FreeBSD$
+#
+# Objective C support
+#
+# Feature: objc
+# Usage: USES=objc
+#
+# MAINTAINER: objc@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_OBJC_MK)
+_INCLUDE_USES_OBJC_MK= yes
+
+.if defined(objc_ARGS)
+IGNORE= USES=objc takes no arguments
+.endif
+
+_CCVERSION!= ${CC} --version
+COMPILER_VERSION= ${_CCVERSION:M[0-9].[0-9]*:C/([0-9]).([0-9]).*/\1\2/g}
+.if ${_CCVERSION:Mclang}
+COMPILER_TYPE= clang
+.else
+COMPILER_TYPE= gcc
+.endif
+
+ALT_COMPILER_VERSION= 0
+ALT_COMPILER_TYPE= none
+_ALTCCVERSION=
+.if ${COMPILER_TYPE} == gcc && exists(/usr/bin/clang)
+_ALTCCVERSION!= /usr/bin/clang --version
+.elif ${COMPILER_TYPE} == clang && exists(/usr/bin/gcc)
+_ALTCCVERSION!= /usr/bin/gcc --version
+.endif
+
+ALT_COMPILER_VERSION= ${_ALTCCVERSION:M[0-9].[0-9]*:C/([0-9]).([0-9]).*/\1\2/g}
+.if ${_ALTCCVERSION:Mclang}
+ALT_COMPILER_TYPE= clang
+.elif !empty(_ALTCCVERSION)
+ALT_COMPILER_TYPE= gcc
+.endif
+
+# We do always need clang
+.if (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 33) || ${COMPILER_TYPE} != clang
+.if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 33
+CC= /usr/bin/clang
+CPP= /usr/bin/clang-cpp
+CXX= /usr/bin/clang++
+.else
+BUILD_DEPENDS+= ${LOCALBASE}/bin/clang33:${PORTSDIR}/lang/clang33
+CPP= ${LOCALBASE}/bin/clang-cpp33
+CC= ${LOCALBASE}/bin/clang33
+CXX= ${LOCALBASE}/bin/clang++33
+.if ${OSVERSION} < 900033
+USE_BINUTILS= yes
+LDFLAGS+= -B${LOCALBASE}/bin
+.endif
+.endif
+.endif
+
+LIB_DEPENDS+= libobjc.so.4.6:${PORTSDIR}/lang/libobjc2
+OBJCFLAGS+= -I${LOCALBASE}/include
+LDFLAGS+= -L${LOCALBASE}/lib
+CONFIGURE_ENV+= OBJC="${CC}" OBJCFLAGS="${OBJCFLAGS}"
+MAKE_ENV+= OBJC="${CC}" OBJCFLAGS="${OBJCFLAGS}"
+
+.endif