Bug 196031 - [patch] unbreak www/webkit-gtk3 build on FreeBSD 8
Summary: [patch] unbreak www/webkit-gtk3 build on FreeBSD 8
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-gnome (Nobody)
URL:
Keywords:
Depends on:
Blocks: 196078 196079
  Show dependency treegraph
 
Reported: 2014-12-16 17:43 UTC by Don Lewis
Modified: 2015-01-15 16:52 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (gnome)


Attachments
patch to unbreak www/webkit-gtk3 build on FreeBSD 8 (1.45 KB, patch)
2014-12-16 17:43 UTC, Don Lewis
no flags Details | Diff
updated patch to unbreak www/webkit-gtk3 build on FreeBSD 8 (1.77 KB, patch)
2014-12-17 19:50 UTC, Don Lewis
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Don Lewis freebsd_committer 2014-12-16 17:43:18 UTC
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)
Comment 1 Bugzilla Automation freebsd_committer 2014-12-16 17:43:18 UTC
Auto-assigned to maintainer gnome@FreeBSD.org
Comment 2 Antoine Brodin freebsd_committer 2014-12-16 22:52:11 UTC
(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
Comment 3 Don Lewis freebsd_committer 2014-12-17 19:47:27 UTC
(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.
Comment 4 Don Lewis freebsd_committer 2014-12-17 19:50:11 UTC
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.
Comment 5 commit-hook freebsd_committer 2015-01-10 10:04:35 UTC
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