Created attachment 150647 [details] patch to unbreak www/webkit-gtk3 build on FreeBSD 8 Building www/webkit-gtk3 fails on FreeBSD 8 with the following errors (prior to r374432 which marked the port broken): CXXLD Programs/LLIntOffsetsExtractor /usr/local/lib/libc++.so.1: undefined reference to `iswalpha_l' /usr/local/lib/libc++.so.1: undefined reference to `wctob_l' /usr/local/lib/libc++.so.1: undefined reference to `snprintf_l' /usr/local/lib/libc++.so.1: undefined reference to `iswprint_l' /usr/local/lib/libc++.so.1: undefined reference to `iswlower_l' /usr/local/lib/libc++.so.1: undefined reference to `mbrtowc_l' /usr/local/lib/libc++.so.1: undefined reference to `towlower_l' /usr/local/lib/libc++.so.1: undefined reference to `mbsrtowcs_l' /usr/local/lib/libc++.so.1: undefined reference to `tolower_l' /usr/local/lib/libc++.so.1: undefined reference to `iswxdigit_l' /usr/local/lib/libc++.so.1: undefined reference to `strxfrm_l' /usr/local/lib/libc++.so.1: undefined reference to `strftime_l' /usr/local/lib/libc++.so.1: undefined reference to `toupper_l' /usr/local/lib/libc++.so.1: undefined reference to `isxdigit_l' /usr/local/lib/libc++.so.1: undefined reference to `wcsxfrm_l' /usr/local/lib/libc++.so.1: undefined reference to `__mb_cur_max_l' /usr/local/lib/libc++.so.1: undefined reference to `newlocale' /usr/local/lib/libc++.so.1: undefined reference to `iswdigit_l' /usr/local/lib/libc++.so.1: undefined reference to `iswctype_l' /usr/local/lib/libc++.so.1: undefined reference to `mbrlen_l' /usr/local/lib/libc++.so.1: undefined reference to `btowc_l' /usr/local/lib/libc++.so.1: undefined reference to `wcrtomb_l' /usr/local/lib/libc++.so.1: undefined reference to `mbsnrtowcs_l' /usr/local/lib/libc++.so.1: undefined reference to `iswcntrl_l' /usr/local/lib/libc++.so.1: undefined reference to `localeconv_l' /usr/local/lib/libc++.so.1: undefined reference to `asprintf_l' /usr/local/lib/libc++.so.1: undefined reference to `mbtowc_l' /usr/local/lib/libc++.so.1: undefined reference to `strcoll_l' /usr/local/lib/libc++.so.1: undefined reference to `iswpunct_l' /usr/local/lib/libc++.so.1: undefined reference to `iswspace_l' /usr/local/lib/libc++.so.1: undefined reference to `towupper_l' /usr/local/lib/libc++.so.1: undefined reference to `iswupper_l' /usr/local/lib/libc++.so.1: undefined reference to `wcsnrtombs_l' /usr/local/lib/libc++.so.1: undefined reference to `freelocale' /usr/local/lib/libc++.so.1: undefined reference to `isdigit_l' /usr/local/lib/libc++.so.1: undefined reference to `wcscoll_l' /usr/local/lib/libc++.so.1: undefined reference to `sscanf_l' clang: error: linker command failed with exit code 1 (use -v to see invocation) GNUmakefile:40531: recipe for target 'Programs/LLIntOffsetsExtractor' failed gmake: *** [Programs/LLIntOffsetsExtractor] Error 1 *** Error code 1 This seems to rule out the use of clang and libc++ from ports on FreeBSD 8. The port Makefile contains the following code to test OSVERSION and force the use of clang from ports on FreeBSD 8 and 9: # We need clang + libc++ or gcc 4.7+. gcc has libstdc++ conflict between # gcc port and base. This originates from icu .if ${OSVERSION} < 900000 BROKEN= Fails to build .endif .if ${OSVERSION}<1000019 CXXFLAGS+= -stdlib=libc++ -I${LOCALBASE}/include/c++/v1 LDFLAGS+= -stdlib=libc++ BUILD_DEPENDS+= clang34>=3.4:${PORTSDIR}/lang/clang34 \ libc++>=0:${PORTSDIR}/devel/libc++ RUN_DEPENDS+= libc++>=0:${PORTSDIR}/devel/libc++ CC= clang34 CXX= clang++34 CPP= clang-cpp34 CONFIGURE_ENV+= CC=${CC} CXX=${CXX} CPP=${CPP} .endif Forcing the use of clang and libc++ for FreeBSD 9 is probably also incorrect. Although the port successfully builds on FreeBSD 9, any ports that depend on webkit-gtk3 will get linked with both libstdc++ (because icu is built with gcc and libstdc++ from base) and libc++, which is likely to cause application crashes. For example devel/seed: # ldd /usr/local/bin/seed /usr/local/bin/seed: libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x80081b000) libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x800a1c000) libintl.so.8 => /usr/local/lib/libintl.so.8 (0x800d1c000) libseed-gtk3.so.0 => /usr/local/lib/libseed-gtk3.so.0 (0x800f27000) libwebkitgtk-3.0.so.0 => /usr/local/lib/libwebkitgtk-3.0.so.0 (0x801148000) libthr.so.3 => /lib/libthr.so.3 (0x8032ca000) libc.so.7 => /lib/libc.so.7 (0x8034ed000) libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x803848000) libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x803b44000) libgirepository-1.0.so.1 => /usr/local/lib/libgirepository-1.0.so.1 (0x803dab000) libgtk-3.so.0 => /usr/local/lib/libgtk-3.so.0 (0x803fdc000) libgdk-3.so.0 => /usr/local/lib/libgdk-3.so.0 (0x804849000) libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x804ad9000) libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x804ce5000) libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0 (0x804f2e000) libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x805153000) libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x80535b000) libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x805654000) libsoup-2.4.so.1 => /usr/local/lib/libsoup-2.4.so.1 (0x805874000) libjavascriptcoregtk-3.0.so.0 => /usr/local/lib/libjavascriptcoregtk-3.0.so.0 (0x805b3f000) libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x806340000) libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x8066a4000) libffi.so.6 => /usr/local/lib/libffi.so.6 (0x8068f1000) libenchant.so.1 => /usr/local/lib/libenchant.so.1 (0x806af8000) libharfbuzz-icu.so.0 => /usr/local/lib/libharfbuzz-icu.so.0 (0x806d03000) libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x806f05000) libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x807173000) libgstapp-1.0.so.0 => /usr/local/lib/libgstapp-1.0.so.0 (0x807376000) libgstaudio-1.0.so.0 => /usr/local/lib/libgstaudio-1.0.so.0 (0x807582000) libgstfft-1.0.so.0 => /usr/local/lib/libgstfft-1.0.so.0 (0x8077ce000) libgstpbutils-1.0.so.0 => /usr/local/lib/libgstpbutils-1.0.so.0 (0x8079d7000) libgstvideo-1.0.so.0 => /usr/local/lib/libgstvideo-1.0.so.0 (0x807bfc000) libgstbase-1.0.so.0 => /usr/local/lib/libgstbase-1.0.so.0 (0x807e44000) libgstreamer-1.0.so.0 => /usr/local/lib/libgstreamer-1.0.so.0 (0x80809d000) libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x808399000) libsecret-1.so.0 => /usr/local/lib/libsecret-1.so.0 (0x8085d0000) libxslt.so.1 => /usr/local/lib/libxslt.so.1 (0x808820000) libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x808a5b000) libGL.so.1 => /usr/local/lib/libGL.so.1 (0x808dbc000) libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x80903b000) libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x80924f000) libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x80948a000) libpng15.so.15 => /usr/local/lib/libpng15.so.15 (0x80971c000) libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x80994b000) libicui18n.so.53 => /usr/local/lib/libicui18n.so.53 (0x809c01000) libicuuc.so.53 => /usr/local/lib/libicuuc.so.53 (0x80a083000) libicudata.so.53 => /usr/local/lib/libicudata.so.53 (0x80a418000) libwebp.so.5 => /usr/local/lib/libwebp.so.5 (0x80bb07000) libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1 (0x80bd69000) libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x80bf6b000) libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x80c16d000) libXrender.so.1 => /usr/local/lib/libXrender.so.1 (0x80c372000) libXt.so.6 => /usr/local/lib/libXt.so.6 (0x80c57b000) libX11.so.6 => /usr/local/lib/libX11.so.6 (0x80c7dd000) libz.so.6 => /lib/libz.so.6 (0x80cb13000) libc++.so.1 => /usr/local/lib/libc++.so.1 (0x80cd27000) libcxxrt.so => /usr/local/lib/libcxxrt.so (0x80cfe7000) libm.so.5 => /lib/libm.so.5 (0x80d203000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80d424000) libXinerama.so.1 => /usr/local/lib/libXinerama.so.1 (0x80d632000) libXrandr.so.2 => /usr/local/lib/libXrandr.so.2 (0x80d834000) libXcursor.so.1 => /usr/local/lib/libXcursor.so.1 (0x80da3d000) libXext.so.6 => /usr/local/lib/libXext.so.6 (0x80dc47000) libXi.so.6 => /usr/local/lib/libXi.so.6 (0x80de58000) libatk-bridge-2.0.so.0 => /usr/local/lib/libatk-bridge-2.0.so.0 (0x80e067000) libpixman-1.so.0 => /usr/local/lib/libpixman-1.so.0 (0x80e297000) libxcb-shm.so.0 => /usr/local/lib/libxcb-shm.so.0 (0x80e537000) libxcb-render.so.0 => /usr/local/lib/libxcb-render.so.0 (0x80e739000) libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x80e942000) libgraphite2.so.3 => /usr/local/lib/libgraphite2.so.3 (0x80eb61000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x80ed8e000) libgsttag-1.0.so.0 => /usr/local/lib/libgsttag-1.0.so.0 (0x80f095000) liborc-0.4.so.0 => /usr/local/lib/liborc-0.4.so.0 (0x80f2cd000) libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x80f554000) libgpg-error.so.0 => /usr/local/lib/libgpg-error.so.0 (0x80f800000) liblzma.so.5 => /usr/lib/liblzma.so.5 (0x80fa10000) libglapi.so.0 => /usr/local/lib/libglapi.so.0 (0x80fc33000) libX11-xcb.so.1 => /usr/local/lib/libX11-xcb.so.1 (0x80fe88000) libxcb-glx.so.0 => /usr/local/lib/libxcb-glx.so.0 (0x810089000) libxcb-dri2.so.0 => /usr/local/lib/libxcb-dri2.so.0 (0x8102a1000) libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1 (0x8104a5000) libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x8106aa000) libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x8108b5000) libbz2.so.4 => /usr/lib/libbz2.so.4 (0x810ad9000) libSM.so.6 => /usr/local/lib/libSM.so.6 (0x810ce9000) libICE.so.6 => /usr/local/lib/libICE.so.6 (0x810ef0000) librpcsvc.so.5 => /usr/lib/librpcsvc.so.5 (0x81110b000) librt.so.1 => /usr/lib/librt.so.1 (0x811314000) libatspi.so.0 => /usr/local/lib/libatspi.so.0 (0x811519000) libdbus-1.so.3 => /usr/local/lib/libdbus-1.so.3 (0x811747000) libXau.so.6 => /usr/local/lib/libXau.so.6 (0x81199a000) libpthread-stubs.so.0 => /usr/local/lib/libpthread-stubs.so.0 (0x811b9c000) libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x811d9d000) Solely relying on OSVERSION will also not do the right thing on FreeBSD 10 if the base compiler is set to be gcc (and clang might not even be present). I don't understand the Makefile comment "gcc has libstdc++ conflict between gcc port and base". Both the libstdc++ in base and the version of this library in the default gcc port have the same shared library version number, so they should be binary compatible and only one of them will get linked into the executable. The attached patch adds USES=compiler:c++11-lib to the Makefile to force the use of gcc and libstdc++ from ports when building on a system where clang is not the base compiler. On a system where clang is the base compiler, then webkit-gtk3 is built with clang and libc++ from base. NOTE: Executables built using webkit-gtk3 with this patch have not been run tested. NOTE: When building with gcc from ports on i386, CPUTYPE must be set to a value that specifies an architecture that has 8 byte atomic op support (i686 or higher?). If CPUTYPE is not set, the build will fail with an undefined reference to __atomic_fetch_add_8. FreeBSD 8: # ldd /usr/local/bin/seed /usr/local/bin/seed: libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x2808f000) libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x28091000) libintl.so.8 => /usr/local/lib/libintl.so.8 (0x28185000) libseed-gtk3.so.0 => /usr/local/lib/libseed-gtk3.so.0 (0x2818e000) libwebkitgtk-3.0.so.0 => /usr/local/lib/libwebkitgtk-3.0.so.0 (0x281ab000) libthr.so.3 => /lib/libthr.so.3 (0x2a38c000) libc.so.7 => /lib/libc.so.7 (0x2a3a1000) libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x2a4bd000) libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x2a5b5000) libgirepository-1.0.so.1 => /usr/local/lib/libgirepository-1.0.so.1 (0x2a61e000) libgtk-3.so.0 => /usr/local/lib/libgtk-3.so.0 (0x2a64d000) libgdk-3.so.0 => /usr/local/lib/libgdk-3.so.0 (0x2ac49000) libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x2acc4000) libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x2accf000) libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0 (0x2ad12000) libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x2ad2f000) libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x2ad3e000) libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0 (0x2ae28000) libsoup-2.4.so.1 => /usr/local/lib/libsoup-2.4.so.1 (0x2ae46000) libjavascriptcoregtk-3.0.so.0 => /usr/local/lib/libjavascriptcoregtk-3.0.so.0 (0x2aeda000) libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x2b5ad000) libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x2b6ed000) libffi.so.6 => /usr/local/lib/libffi.so.6 (0x2b731000) libenchant.so.1 => /usr/local/lib/libenchant.so.1 (0x2b737000) libharfbuzz-icu.so.0 => /usr/local/lib/libharfbuzz-icu.so.0 (0x2b741000) libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x2b744000) libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x2b7ab000) libgstapp-1.0.so.0 => /usr/local/lib/libgstapp-1.0.so.0 (0x2b7af000) libgstaudio-1.0.so.0 => /usr/local/lib/libgstaudio-1.0.so.0 (0x2b7bb000) libgstfft-1.0.so.0 => /usr/local/lib/libgstfft-1.0.so.0 (0x2b806000) libgstpbutils-1.0.so.0 => /usr/local/lib/libgstpbutils-1.0.so.0 (0x2b812000) libgstvideo-1.0.so.0 => /usr/local/lib/libgstvideo-1.0.so.0 (0x2b833000) libgstbase-1.0.so.0 => /usr/local/lib/libgstbase-1.0.so.0 (0x2b876000) libgstreamer-1.0.so.0 => /usr/local/lib/libgstreamer-1.0.so.0 (0x2b8d1000) libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x2b9b7000) libsecret-1.so.0 => /usr/local/lib/libsecret-1.so.0 (0x2b9ee000) libxslt.so.1 => /usr/local/lib/libxslt.so.1 (0x2ba30000) libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x2ba67000) libGL.so.1 => /usr/local/lib/libGL.so.1 (0x2bb9c000) libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x2bbef000) libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x2bc01000) libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x2bc34000) libpng15.so.15 => /usr/local/lib/libpng15.so.15 (0x2bcb5000) libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x2bce0000) libicui18n.so.53 => /usr/local/lib/libicui18n.so.53 (0x2bd85000) libicuuc.so.53 => /usr/local/lib/libicuuc.so.53 (0x2bfef000) libicudata.so.53 => /usr/local/lib/libicudata.so.53 (0x2c164000) libwebp.so.5 => /usr/local/lib/libwebp.so.5 (0x2d5ed000) libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1 (0x2d64c000) libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x2d64f000) libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x2d652000) libXrender.so.1 => /usr/local/lib/libXrender.so.1 (0x2d657000) libXt.so.6 => /usr/local/lib/libXt.so.6 (0x2d65f000) libX11.so.6 => /usr/local/lib/libX11.so.6 (0x2d6ae000) libz.so.5 => /lib/libz.so.5 (0x2d7c7000) libstdc++.so.6 => /usr/local/lib/gcc48/libstdc++.so.6 (0x2d7d9000) libm.so.5 => /lib/libm.so.5 (0x2d8c9000) libgcc_s.so.1 => /usr/local/lib/gcc48/libgcc_s.so.1 (0x2d8e3000) libXinerama.so.1 => /usr/local/lib/libXinerama.so.1 (0x2d8fe000) libXrandr.so.2 => /usr/local/lib/libXrandr.so.2 (0x2d901000) libXcursor.so.1 => /usr/local/lib/libXcursor.so.1 (0x2d90a000) libXext.so.6 => /usr/local/lib/libXext.so.6 (0x2d913000) libXi.so.6 => /usr/local/lib/libXi.so.6 (0x2d922000) libatk-bridge-2.0.so.0 => /usr/local/lib/libatk-bridge-2.0.so.0 (0x2d930000) libpixman-1.so.0 => /usr/local/lib/libpixman-1.so.0 (0x2d963000) libxcb-shm.so.0 => /usr/local/lib/libxcb-shm.so.0 (0x2d9ff000) libxcb-render.so.0 => /usr/local/lib/libxcb-render.so.0 (0x2da02000) libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x2da0a000) libgraphite2.so.3 => /usr/local/lib/libgraphite2.so.3 (0x2da24000) libgsttag-1.0.so.0 => /usr/local/lib/libgsttag-1.0.so.0 (0x2da4f000) liborc-0.4.so.0 => /usr/local/lib/liborc-0.4.so.0 (0x2da84000) libgcrypt.so.20 => /usr/local/lib/libgcrypt.so.20 (0x2db03000) libgpg-error.so.0 => /usr/local/lib/libgpg-error.so.0 (0x2db9c000) liblzma.so.5 => /usr/lib/liblzma.so.5 (0x2dbab000) libglapi.so.0 => /usr/local/lib/libglapi.so.0 (0x2dbce000) libX11-xcb.so.1 => /usr/local/lib/libX11-xcb.so.1 (0x2dbec000) libxcb-glx.so.0 => /usr/local/lib/libxcb-glx.so.0 (0x2dbee000) libxcb-dri2.so.0 => /usr/local/lib/libxcb-dri2.so.0 (0x2dc00000) libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1 (0x2dc04000) libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x2dc09000) libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x2dc13000) libbz2.so.4 => /usr/lib/libbz2.so.4 (0x2dc33000) libSM.so.6 => /usr/local/lib/libSM.so.6 (0x2dc44000) libICE.so.6 => /usr/local/lib/libICE.so.6 (0x2dc4c000) librpcsvc.so.5 => /usr/lib/librpcsvc.so.5 (0x2dc63000) libatspi.so.0 => /usr/local/lib/libatspi.so.0 (0x2dc6c000) libdbus-1.so.3 => /usr/local/lib/libdbus-1.so.3 (0x2dc92000) libXau.so.6 => /usr/local/lib/libXau.so.6 (0x2dcda000) libpthread-stubs.so.0 => /usr/local/lib/libpthread-stubs.so.0 (0x2dcdd000) libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x2dcdf000) FreeBSD 10: # ldd /usr/local/bin/seed /usr/local/bin/seed: libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x80081e000) libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x800a1f000) libintl.so.8 => /usr/local/lib/libintl.so.8 (0x800d26000) libseed-gtk3.so.0 => /usr/local/lib/libseed-gtk3.so.0 (0x800f31000) libthr.so.3 => /lib/libthr.so.3 (0x801152000) libc.so.7 => /lib/libc.so.7 (0x801377000) libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x801721000) libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x801a1b000) libgirepository-1.0.so.1 => /usr/local/lib/libgirepository-1.0.so.1 (0x801c8e000) libjavascriptcoregtk-3.0.so.0 => /usr/local/lib/libjavascriptcoregtk-3.0.so.0 (0x801ec6000) libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x8026d2000) libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x802a39000) libffi.so.6 => /usr/local/lib/libffi.so.6 (0x802c81000) libm.so.5 => /lib/libm.so.5 (0x802e88000) libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x8030b0000) libz.so.6 => /lib/libz.so.6 (0x8032b3000) libicui18n.so.53 => /usr/local/lib/libicui18n.so.53 (0x8034c9000) libicuuc.so.53 => /usr/local/lib/libicuuc.so.53 (0x803936000) libicudata.so.53 => /usr/local/lib/libicudata.so.53 (0x803cc4000) libc++.so.1 => /usr/lib/libc++.so.1 (0x8053a7000) libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x805667000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x805883000)
Auto-assigned to maintainer gnome@FreeBSD.org
(In reply to Don Lewis from comment #0) > NOTE: When building with gcc from ports on i386, CPUTYPE must be set to > a value that specifies an architecture that has 8 byte atomic op support > (i686 or higher?). If CPUTYPE is not set, the build will fail with an > undefined reference to __atomic_fetch_add_8. I think you have to add this kind of hack (untested, not sure about i586): .if ${ARCH} == i386 && ! ${CFLAGS:M-march=*} # Needed for __atomic_fetch_add_8 CFLAGS+= -march=i586 .endif
(In reply to Antoine Brodin from comment #2) > (In reply to Don Lewis from comment #0) > > NOTE: When building with gcc from ports on i386, CPUTYPE must be set to > > a value that specifies an architecture that has 8 byte atomic op support > > (i686 or higher?). If CPUTYPE is not set, the build will fail with an > > undefined reference to __atomic_fetch_add_8. > > I think you have to add this kind of hack (untested, not sure about i586): > > .if ${ARCH} == i386 && ! ${CFLAGS:M-march=*} > # Needed for __atomic_fetch_add_8 > CFLAGS+= -march=i586 > .endif Definitely a bit hackish, but it seems to work. An online search didn't turn up any info on what the minimum CPU is for atomic_fetch_add_8, but i586 seems to be sufficient. I suspect that it is pretty unlikely for anyone to want to use webkit-gtk3 on an i386 or i486.
Created attachment 150689 [details] updated patch to unbreak www/webkit-gtk3 build on FreeBSD 8 Update my original patch with Antoine's hack to allow automatic portbuilding to work. Also fix a whitespace nit that portlint was complaining about.
A commit references this bug: Author: kwm Date: Sat Jan 10 10:03:41 UTC 2015 New revision: 376685 URL: https://svnweb.freebsd.org/changeset/ports/376685 Log: MFH: r376609 Update webkit-gtk[23] to 1.4.8. Switch webkit-gtk3 to compiler:c++11-lib instead of homegrown clang code [2]. This unbreaks the build on 8.x. Axe WEBGL and WEBAUDIO options and turn them on by default (like upstream intended). Disabling them leads to wierd build failures, due to untested build paths. [1] Only set -Qunused-arguments if the compiler is clang [2] Fix SSL connection issues with some websites after the POODLE vulnerability fix. PR: 196333 [1], 196031 [2], 195628 [2], 196296 [1] Submitted by: peo@bsdlabs.com and david@catwhisker.org [1], truckman@ [2] Security: e9ccdb28-9802-11e4-9d9c-bcaec565249c Security: CVE-2014-1344, CVE-2014-1384, CVE-2014-1385, CVE-2014-1386 Security: CVE-2014-1387, CVE-2014-1388, CVE-2014-1389, CVE-2014-1390 Approved by: portmgr (zi@) Changes: _U branches/2015Q1/ branches/2015Q1/www/webkit-gtk2/Makefile branches/2015Q1/www/webkit-gtk2/distinfo branches/2015Q1/www/webkit-gtk2/pkg-plist branches/2015Q1/www/webkit-gtk3/Makefile branches/2015Q1/www/webkit-gtk3/distinfo branches/2015Q1/www/webkit-gtk3/pkg-plist