aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
authortheraven <theraven@FreeBSD.org>2019-02-03 23:37:58 +0800
committertheraven <theraven@FreeBSD.org>2019-02-03 23:37:58 +0800
commit0699c59a70f510b71506ecb61199c2ee997c9c8a (patch)
tree8d55e3d4d3e216787ab6284b0e649a7a6d2f047d /Mk
parent4b9483ae175d050dbe0859050aa4f4857a2d608b (diff)
downloadfreebsd-ports-gnome-0699c59a70f510b71506ecb61199c2ee997c9c8a.tar.gz
freebsd-ports-gnome-0699c59a70f510b71506ecb61199c2ee997c9c8a.tar.zst
freebsd-ports-gnome-0699c59a70f510b71506ecb61199c2ee997c9c8a.zip
Move Objective-C ports to the v2 GNUstep ABI.
* Bump the LLVM revision used for GNUstep to 7, the minimum to support the new ABI. * GNUstep-back does not work with lld, so mark it to use Gold (BFD LD doesn't seem able to link Objective-C things). * Turn off some annoying debug logs in GNUstep back, which generate several messages per second when you move the mouse. These should never have been enabled in a release build anyway. * Downgrade Cenon to 4.0.2. This was the last version to actually work with GNUstep (the later ones use XCode >= 5 .xib files, which GNUstep can't parse). * Update gorm to git head. The current release doesn't work with the new Objective-C ABI, but -head has the patches to fix it. * Update PikoPixel and add it to the gnustep-app meta-package. * Update the three core GNUstep packages to the latest release. * Update gnumail and pantomime to the latest release and fix a linking error with the new ABI. * Update GNUstep FTP to the latest version. Reviewed by: bapt (previous version)
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/gnustep.mk8
-rw-r--r--Mk/Uses/objc.mk12
2 files changed, 15 insertions, 5 deletions
diff --git a/Mk/Uses/gnustep.mk b/Mk/Uses/gnustep.mk
index 225bf46b13be..130249b807dc 100644
--- a/Mk/Uses/gnustep.mk
+++ b/Mk/Uses/gnustep.mk
@@ -40,6 +40,14 @@ MAKE_ENV+= ADDITIONAL_${a}="${ADDITIONAL_${a}} ${${a}}"
MAKE_ENV+= ADDITIONAL_${a}="${ADDITIONAL_${a}}"
.endfor
MAKE_ARGS+=messages=yes
+# BFD ld can't link Objective-C programs for some reason. Most things are fine
+# with LLD, but the things that don't (e.g. sope) need gold.
+.if defined(LLD_UNSAFE)
+MAKE_ARGS+=LDFLAGS='-fuse-ld=gold'
+BUILD_DEPENDS+= ${LOCALBASE}/bin/ld.gold:devel/binutils
+.else
+MAKE_ARGS+=LDFLAGS='-fuse-ld=${OBJC_LLD}'
+.endif
MAKEFILE= GNUmakefile
#MAKE_ENV+= GNUSTEP_CONFIG_FILE=${PORTSDIR}/devel/gnustep-make/files/GNUstep.conf
diff --git a/Mk/Uses/objc.mk b/Mk/Uses/objc.mk
index 00c76007ba77..5583e9861cf0 100644
--- a/Mk/Uses/objc.mk
+++ b/Mk/Uses/objc.mk
@@ -10,7 +10,7 @@
.if !defined(_INCLUDE_USES_OBJC_MK)
_INCLUDE_USES_OBJC_MK= yes
-OBJC_CLANG_VERSION=60
+OBJC_CLANG_VERSION=70
objc_ARGS?=
.if !empty(objc_ARGS) && ! ${objc_ARGS:Mcompiler}
@@ -61,11 +61,13 @@ ALT_COMPILER_TYPE= gcc
CC= /usr/bin/clang
CPP= /usr/bin/clang-cpp
CXX= /usr/bin/clang++
+OBJC_LLD= lld
.else
-BUILD_DEPENDS+= ${LOCALBASE}/bin/clang${OBJC_CLANG_VERSION}:devel/llvm${OBJC_CLANG_VERSION}
-CPP= ${LOCALBASE}/bin/clang-cpp${OBJC_CLANG_VERSION}
-CC= ${LOCALBASE}/bin/clang${OBJC_CLANG_VERSION}
-CXX= ${LOCALBASE}/bin/clang++${OBJC_CLANG_VERSION}
+BUILD_DEPENDS+= ${LOCALBASE}/bin/clang${OBJC_CLANG_VERSION}:devel/llvm${OBJC_CLANG_VERSION}
+CPP= ${LOCALBASE}/bin/clang-cpp${OBJC_CLANG_VERSION}
+CC= ${LOCALBASE}/bin/clang${OBJC_CLANG_VERSION}
+CXX= ${LOCALBASE}/bin/clang++${OBJC_CLANG_VERSION}
+OBJC_LLD= lld${OBJC_CLANG_VERSION}
.endif
.endif