I tried to get boost to build with clang, but failed pretty miserably because I don't know what I'm doing.
If anybody wants to look into this, here's what I got: * Configure with --with-toolset=clang * Fix boost_has_nl_types_h.ipp, from upstream. * Some haphazard changes to clang-linux.jam, patterned after those to gcc.jam. Likely incomplete. I got stumped at the first non-trivial problem: ./boost/type_traits/is_convertible.hpp:86:63: error: too many arguments provided to function-like macro invocation static decltype(test_aux<To1>(boost::declval<From1>()), one()) test(int); ^ /usr/include/c++/v1/__config:673:11: note: macro 'decltype' defined here # define decltype(__x) __decltype(__x) ^ As far as I can google, decltype(a, b) is valid, but it fails due to our macro. FreeBSD somehow doesn't run into this, but I don't know why. Index: Makefile =================================================================== RCS file: /cvs/ports/devel/boost/Makefile,v retrieving revision 1.61 diff -u -p -r1.61 Makefile --- Makefile 10 Apr 2017 11:45:25 -0000 1.61 +++ Makefile 18 Apr 2017 18:11:22 -0000 @@ -1,6 +1,8 @@ # $OpenBSD: Makefile,v 1.61 2017/04/10 11:45:25 sthen Exp $ -ONLY_FOR_ARCHS= ${GCC4_ARCHS} +ONLY_FOR_ARCHS= ${CLANG_ARCHS} ${GCC4_ARCHS} + +DPB_PROPERTIES= parallel COMMENT= free peer-reviewed portable C++ source libraries @@ -84,7 +86,7 @@ BOOTSTRAP= --with-bjam=${WRKSRC}/bjam \ --with-python=${MODPY_BIN} \ --with-python-root=${LOCALBASE} \ --with-python-version=${MODPY_VERSION} \ - --with-toolset=gcc \ + --with-toolset=${TOOLSET} \ --without-icu \ --without-libraries=context,coroutine @@ -93,8 +95,6 @@ CONFIGURE_STYLE= none CONFIGURE_ENV= BJAM_CONFIG="${BJAM_CONFIG}" \ CXX="${CXX}" CXXFLAGS="${CXXFLAGS}" -DPB_PROPERTIES= parallel - NO_TEST= Yes SUBST_VARS+= SO_VERSION @@ -124,5 +124,14 @@ do-install: find boost -type d -exec ${INSTALL_DATA_DIR} ${PREFIX}/include/{} \; @cd ${WRKSRC} && \ find boost ! -name \*.orig -type f -exec ${INSTALL_DATA} {} ${PREFIX}/include/{} \; + +.include <bsd.port.arch.mk> + +# assumes that CC/CXX is not overridden with a different compiler +.if ${PROPERTIES:Mclang} +TOOLSET= clang +.elif ${PROPERTIES:Mgcc4} +TOOLSET= gcc +.endif .include <bsd.port.mk> Index: patches/patch-libs_config_test_boost_has_nl_types_h_ipp =================================================================== RCS file: patches/patch-libs_config_test_boost_has_nl_types_h_ipp diff -N patches/patch-libs_config_test_boost_has_nl_types_h_ipp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-libs_config_test_boost_has_nl_types_h_ipp 18 Apr 2017 18:11:22 -0000 @@ -0,0 +1,12 @@ +$OpenBSD$ +--- libs/config/test/boost_has_nl_types_h.ipp.orig Tue Mar 24 19:27:48 2015 ++++ libs/config/test/boost_has_nl_types_h.ipp Tue Apr 18 16:02:33 2017 +@@ -17,7 +17,7 @@ namespace boost_has_nl_types_h{ + int test() + { + nl_catd cat = catopen("foo", 0); +- if(cat >= 0) catclose(cat); ++ if(cat != (nl_catd)-1) catclose(cat); + return 0; + } + Index: patches/patch-tools_build_src_tools_clang-linux_jam =================================================================== RCS file: patches/patch-tools_build_src_tools_clang-linux_jam diff -N patches/patch-tools_build_src_tools_clang-linux_jam --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-tools_build_src_tools_clang-linux_jam 18 Apr 2017 18:11:22 -0000 @@ -0,0 +1,31 @@ +$OpenBSD$ +--- tools/build/src/tools/clang-linux.jam.orig Sat Apr 4 19:25:07 2015 ++++ tools/build/src/tools/clang-linux.jam Tue Apr 18 16:29:59 2017 +@@ -70,7 +70,7 @@ toolset.flags clang-linux.compile OPTIONS <cflags> ; + toolset.flags clang-linux.compile.c++ OPTIONS <cxxflags> ; + + toolset.flags clang-linux.compile OPTIONS <optimization>off : ; +-toolset.flags clang-linux.compile OPTIONS <optimization>speed : -O3 ; ++toolset.flags clang-linux.compile OPTIONS <optimization>speed : ; + toolset.flags clang-linux.compile OPTIONS <optimization>space : -Os ; + + # note: clang silently ignores some of these inlining options +@@ -180,6 +180,7 @@ rule link ( targets * : sources * : properties * ) { + } + + actions link bind LIBRARIES { ++ echo "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + +@@ -207,8 +208,8 @@ rule setup-threading ( targets * : sources * : propert + } + } + +-# Differ from 'link' above only by -shared. ++# Differ from 'link' above only by -shared and -fPIC. + actions link.dll bind LIBRARIES { +- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" -Wl,-soname$(SPACE)-Wl,$(<[1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ++ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" -Wl,-soname$(SPACE)-Wl,$(<[1]:D=) -shared -fPIC $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + -- Christian "naddy" Weisgerber na...@mips.inka.de