On aarch64, the usual C++ linkage is "c++ c++abi pthread". Does this seem a reasonable way to handle it? (and change stdc++ to ${CXXLIB} in port Makefiles).
check-lib-depends isn't perfect but at least this way it stops porters on x86 re-adding stdc++ everywhere. People running it on a libc++ arch will add an unnecessary pthread if they don't check on a gcc arch as well, but I don't think there's much that can be done about that. Index: mk/arch-defines.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/arch-defines.mk,v retrieving revision 1.32 diff -u -p -r1.32 arch-defines.mk --- mk/arch-defines.mk 1 Mar 2017 21:58:53 -0000 1.32 +++ mk/arch-defines.mk 7 Apr 2017 19:13:56 -0000 @@ -39,3 +39,9 @@ PROPERTIES += ${PROP:L} . endif . endfor .endfor + +.if ${PROPERTIES:Mclang} +CXXLIB = c++ c++abi pthread +.else +CXXLIB = stdc++ +.endif Index: mk/bsd.port.mk =================================================================== RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v retrieving revision 1.1339 diff -u -p -r1.1339 bsd.port.mk --- mk/bsd.port.mk 28 Feb 2017 21:31:46 -0000 1.1339 +++ mk/bsd.port.mk 7 Apr 2017 19:42:09 -0000 @@ -961,7 +961,7 @@ _lt_libs += lib${_n:S/+/_/g:S/-/_/g:S/./ # Create the generic variable substitution list, from subst vars SUBST_VARS += MACHINE_ARCH ARCH HOMEPAGE ^PREFIX ^SYSCONFDIR FLAVOR_EXT \ FULLPKGNAME MAINTAINER ^BASE_PKGPATH ^LOCALBASE ^X11BASE ^TRUEPREFIX \ - ^RCDIR ^LOCALSTATEDIR + ^RCDIR ^LOCALSTATEDIR CXXLIB _tmpvars = _PKG_ADD_AUTO ?= Index: bin/check-lib-depends =================================================================== RCS file: /cvs/ports/infrastructure/bin/check-lib-depends,v retrieving revision 1.37 diff -u -p -r1.37 check-lib-depends --- bin/check-lib-depends 11 Feb 2017 12:52:58 -0000 1.37 +++ bin/check-lib-depends 7 Apr 2017 19:13:56 -0000 @@ -459,6 +459,8 @@ sub print_list my $line = ""; for my $k (sort keys %$h) { + next if $k eq 'c++abi'; + $k =~ s/^(std)?c\+\+$/\${CXXLIB}/; if (length $line > 50) { $state->say_with_context("#1#2", $head, $line); $line = "";