Index: third_party/instrumented_libraries/BUILD.gn |
diff --git a/third_party/instrumented_libraries/BUILD.gn b/third_party/instrumented_libraries/BUILD.gn |
index cbaf7f57b024fea6cdb35656b549057f8bf88a89..2309519a46ccd44ef1817b83a13a22947f6266cc 100644 |
--- a/third_party/instrumented_libraries/BUILD.gn |
+++ b/third_party/instrumented_libraries/BUILD.gn |
@@ -3,6 +3,15 @@ |
# found in the LICENSE file. |
import("//build/config/sanitizers/sanitizers.gni") |
+import("//build/toolchain/goma.gni") |
+ |
+declare_args() { |
+ # The default number of jobs to use when building instrumented libraries. |
+ instrumented_libraries_jobs = 8 |
+ |
+ # The platform on which the instrumented libraries are being built. |
+ instrumented_libraries_platform = "trusty" |
+} |
group("deps") { |
if (use_prebuilt_instrumented_libraries) { |
@@ -16,6 +25,19 @@ group("deps") { |
":prebuilt", |
] |
} |
+ if (use_locally_built_instrumented_libraries) { |
+ deps = [ |
+ ":locally_built", |
+ ] |
+ } |
+} |
+ |
+if (is_msan) { |
+ sanitizer_type = "msan" |
+} else if (is_asan) { |
+ sanitizer_type = "asan" |
+} else if (is_tsan) { |
+ sanitizer_type = "tsan" |
} |
if (prebuilt_instrumented_libraries_available) { |
@@ -31,7 +53,6 @@ if (prebuilt_instrumented_libraries_available) { |
} |
if (is_msan) { |
- sanitizer_type = "msan" |
if (msan_track_origins == 0) { |
archive_prefix = "msan-no-origins" |
} else if (msan_track_origins == 2) { |
@@ -49,8 +70,8 @@ if (prebuilt_instrumented_libraries_available) { |
args = [ |
archive_prefix, |
rebase_path("binaries"), |
- rebase_path(root_build_dir + "/instrumented_libraries_prebuilt"), |
- rebase_path(target_out_dir, root_build_dir), |
+ rebase_path(root_out_dir + "/instrumented_libraries_prebuilt"), |
+ rebase_path(target_out_dir, root_out_dir), |
] |
outputs = [ |
"$target_out_dir/$archive_prefix.txt", |
@@ -69,4 +90,731 @@ if (prebuilt_instrumented_libraries_available) { |
] |
} |
} |
-# TODO(GYP): Support building instrumented libraries from source. |
+ |
+if (use_locally_built_instrumented_libraries) { |
+ if (instrumented_libraries_platform == "precise") { |
+ is_precise = true |
+ is_trusty = false |
+ } else if (instrumented_libraries_platform == "trusty") { |
+ is_precise = false |
+ is_trusty = true |
+ } else { |
+ assert(false, "Unsupported platform " + instrumented_libraries_platform) |
+ } |
+ group("locally_built") { |
+ visibility = [ ":deps" ] |
+ deps = [ |
+ ":atk1.0", |
+ ":brltty", |
+ ":dee", |
+ ":freetype", |
+ ":libappindicator1", |
+ ":libasound2", |
+ ":libcairo2", |
+ ":libcap2", |
+ ":libcredentialkit_pkcs11", |
+ ":libdbus-1-3", |
+ ":libdbus-glib-1-2", |
+ ":libdbusmenu", |
+ ":libdbusmenu-glib4", |
+ ":libexpat1", |
+ ":libffi6", |
+ ":libfontconfig1", |
+ ":libgconf-2-4", |
+ ":libgcrypt11", |
+ ":libgdk-pixbuf2.0-0", |
+ ":libglib2.0-0", |
+ ":libgnome-keyring0", |
+ ":libgpg-error0", |
+ ":libgtk2.0-0", |
+ ":libnspr4", |
+ ":libp11-kit0", |
+ ":libpci3", |
+ ":libpcre3", |
+ ":libpixman-1-0", |
+ ":libunity9", |
+ ":libva1", |
+ ":libx11-6", |
+ ":libxau6", |
+ ":libxcb1", |
+ ":libxcomposite1", |
+ ":libxcursor1", |
+ ":libxdamage1", |
+ ":libxdmcp6", |
+ ":libxext6", |
+ ":libxfixes3", |
+ ":libxi6", |
+ ":libxinerama1", |
+ ":libxrandr2", |
+ ":libxrender1", |
+ ":libxss1", |
+ ":libxtst6", |
+ ":nss", |
+ ":pango1.0", |
+ ":pulseaudio", |
+ ":udev", |
+ ":zlib1g", |
+ ] |
+ if (is_precise) { |
+ deps += [ ":libtasn1-3" ] |
+ } |
+ if (is_trusty) { |
+ deps += [ |
+ ":harfbuzz", |
+ ":libsecret", |
+ ":libtasn1-6", |
+ ] |
+ } |
+ if (is_msan) { |
+ deps += [ ":libcups2" ] |
+ } |
+ if (!is_tsan) { |
+ deps += [ ":libpng12-0" ] |
+ } |
+ data = [ |
+ "${root_out_dir}/instrumented_libraries/${sanitizer_type}/lib", |
+ ] |
+ } |
+ |
+ config("locally_built_ldflags") { |
+ ldflags = [ |
+ # Add a relative RPATH entry to Chromium binaries. This puts instrumented |
+ # DSOs before system-installed versions in library search path. |
+ "-Wl,-R,\$ORIGIN/instrumented_libraries/${sanitizer_type}/lib", |
+ "-Wl,-z,origin", |
+ ] |
+ } |
+ |
+ template("instrumented_library") { |
+ action(target_name) { |
+ script = "scripts/download_build_install.py" |
+ build_method = "destdir" |
+ if (defined(invoker.build_method)) { |
+ build_method = invoker.build_method |
+ } |
+ |
+ cc = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang") |
+ cxx = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang++") |
+ if (use_goma) { |
+ cc = "${goma_dir}/gomacc ${cc}" |
+ cxx = "${goma_dir}/gomacc ${cxx}" |
+ } |
+ jobs = instrumented_libraries_jobs |
+ if (defined(invoker.jobs)) { |
+ jobs = invoker.jobs |
+ } |
+ package_cflags = [ |
+ "-O2", |
+ "-gline-tables-only", |
+ "-fPIC", |
+ "-w", |
+ "-U_FORITFY_SOURCE", |
+ "-fno-omit-frame-pointer", |
+ ] |
+ package_ldflags = [] |
+ if (is_asan) { |
+ package_cflags += [ "-fsanitize=address" ] |
+ package_ldflags = [ "-fsanitize=address" ] |
+ } else if (is_msan) { |
+ package_cflags += [ |
+ "-fsanitize=memory", |
+ "-fsanitize-memory-track-origins=${msan_track_origins}", |
+ ] |
+ package_ldflags = [ "-fsanitize=memory" ] |
+ } else if (is_tsan) { |
+ package_cflags += [ "-fsanitize=thread" ] |
+ package_ldflags = [ "-fsanitize=thread" ] |
+ } |
+ if (defined(invoker.package_cflags)) { |
+ package_cflags += invoker.package_cflags |
+ } |
+ if (defined(invoker.package_ldflags)) { |
+ package_ldflags += invoker.package_ldflags |
+ } |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ product_dir = rebase_path(root_out_dir) |
+ intermediate_dir = rebase_path(target_gen_dir) |
+ args = [ |
+ "--build-method=${build_method}", |
+ "--cc=${cc}", |
+ "--cxx=${cxx}", |
+ "--intermediate-dir=${intermediate_dir}", |
+ "--jobs=${jobs}", |
+ "--libdir=lib", |
+ "--package=${target_name}", |
+ "--product-dir=${product_dir}", |
+ "--cflags=${package_cflags}", |
+ "--ldflags=${package_ldflags}", |
+ "--sanitizer=${sanitizer_type}", |
+ ] |
+ outputs = [ |
+ "${root_out_dir}/instrumented_libraries/${sanitizer_type}/${target_name}.txt", |
+ ] |
+ inputs = [] |
+ if (defined(invoker.pre_build)) { |
+ inputs += [ invoker.pre_build ] |
+ args += [ "--pre-build=${invoker.pre_build}" ] |
+ } |
+ if (defined(invoker.patch)) { |
+ inputs += [ invoker.patch ] |
+ args += [ "--patch=${invoker.patch}" ] |
+ } |
+ if (defined(invoker.asan_blacklist)) { |
+ if (is_asan) { |
+ inputs += [ invoker.asan_blacklist ] |
+ args += [ "--sanitizer-blacklist=${invoker.asan_blacklist}" ] |
+ } else { |
+ assert(invoker.asan_blacklist != "", "") |
+ } |
+ } |
+ if (defined(invoker.msan_blacklist)) { |
+ if (is_msan) { |
+ inputs += [ invoker.msan_blacklist ] |
+ args += [ "--sanitizer-blacklist=${invoker.msan_blacklist}" ] |
+ } else { |
+ assert(invoker.msan_blacklist != "", "") |
+ } |
+ } |
+ |
+ if (defined(invoker.extra_configure_flags)) { |
+ args += [ "--extra-configure-flags=${invoker.extra_configure_flags}" ] |
+ } |
+ } |
+ } |
+ |
+ instrumented_library("atk1.0") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ } |
+ |
+ instrumented_library("brltty") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--without-viavoice", |
+ "--without-theta", |
+ "--without-swift", |
+ "--bindir=/sbin", |
+ "--with-curses=ncursesw", |
+ "--disable-stripping", |
+ |
+ # We don't need any of those. |
+ "--disable-java-bindings", |
+ "--disable-lisp-bindings", |
+ "--disable-ocaml-bindings", |
+ "--disable-python-bindings", |
+ "--disable-tcl-bindings", |
+ ] |
+ } |
+ |
+ instrumented_library("dee") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("freetype") { |
+ pre_build = "scripts/pre-build/freetype.sh" |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("harfbuzz") { |
+ package_cflags = [ "-Wno-c++11-narrowing" ] |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--with-graphite2=yes", |
+ "--with-gobject", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ } |
+ |
+ instrumented_library("libappindicator1") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ jobs = 1 |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("libasound2") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ pre_build = "scripts/pre-build/libasound2.sh" |
+ } |
+ |
+ instrumented_library("libcairo2") { |
+ extra_configure_flags = [ |
+ "--disable-gtk-doc", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libcap2") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ build_method = "custom_libcap" |
+ } |
+ |
+ instrumented_library("libcredentialkit_pkcs11") { |
+ build_method = "stub" |
+ } |
+ |
+ instrumented_library("libcups2") { |
+ patch = "patches/libcups2.diff" |
+ jobs = 1 |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # All from debian/rules. |
+ "--localedir=/usr/share/cups/locale", |
+ "--enable-slp", |
+ "--enable-libpaper", |
+ "--enable-ssl", |
+ "--enable-gnutls", |
+ "--disable-openssl", |
+ "--enable-threads", |
+ "--enable-debug", |
+ "--enable-dbus", |
+ "--with-dbusdir=/etc/dbus-1", |
+ "--enable-gssapi", |
+ "--enable-avahi", |
+ "--with-pdftops=/usr/bin/gs", |
+ "--disable-launchd", |
+ "--with-cups-group=lp", |
+ "--with-system-groups=lpadmin", |
+ "--with-printcap=/var/run/cups/printcap", |
+ "--with-log-file-perm=0640", |
+ "--with-local_protocols=\"CUPS dnssd\"", |
+ "--with-remote_protocols=\"CUPS dnssd\"", |
+ "--enable-libusb", |
+ ] |
+ pre_build = "scripts/pre-build/libcups2.sh" |
+ } |
+ |
+ instrumented_library("libdbus-1-3") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--disable-libaudit", |
+ "--enable-apparmor", |
+ "--enable-systemd", |
+ "--libexecdir=/lib/dbus-1.0", |
+ "--with-systemdsystemunitdir=/lib/systemd/system", |
+ "--disable-tests", |
+ "--exec-prefix=/", |
+ |
+ # From dh_auto_configure. |
+ "--prefix=/usr", |
+ "--localstatedir=/var", |
+ ] |
+ } |
+ |
+ instrumented_library("libdbus-glib-1-2") { |
+ extra_configure_flags = [ |
+ # Use system dbus-binding-tool. The just-built one is instrumented but |
+ # doesn't have the correct RPATH, and will crash. |
+ "--with-dbus-binding-tool=dbus-binding-tool", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libdbusmenu") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--disable-scrollkeeper", |
+ "--with-gtk=2", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ "--disable-vala", |
+ ] |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("libdbusmenu-glib4") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--disable-scrollkeeper", |
+ "--enable-gtk-doc", |
+ |
+ # --enable-introspection introduces a build step that attempts to run |
+ # a just-built binary and crashes. Vala requires introspection. |
+ # TODO(eugenis): find a better fix. |
+ "--disable-introspection", |
+ "--disable-vala", |
+ ] |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("libexpat1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libffi6") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libfontconfig1") { |
+ extra_configure_flags = [ |
+ "--disable-docs", |
+ "--sysconfdir=/etc/", |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--with-add-fonts=/usr/X11R6/lib/X11/fonts,/usr/local/share/fonts", |
+ ] |
+ patch = "patches/libfontconfig.${instrumented_libraries_platform}.diff" |
+ } |
+ |
+ instrumented_library("libgconf-2-4") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. (Even though --with-gtk=3.0 doesn't make sense.) |
+ "--with-gtk=3.0", |
+ "--disable-orbit", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ } |
+ |
+ instrumented_library("libgcrypt11") { |
+ package_ldflags = [ "-Wl,-z,muldefs" ] |
+ extra_configure_flags = [ |
+ # From debian/rules. |
+ "--enable-noexecstack", |
+ "--enable-ld-version-script", |
+ "--disable-static", |
+ |
+ # http://crbug.com/344505 |
+ "--disable-asm", |
+ ] |
+ } |
+ |
+ instrumented_library("libgdk-pixbuf2.0-0") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--with-libjasper", |
+ "--with-x11", |
+ |
+ # Make the build less problematic. |
+ "--disable-introspection", |
+ |
+ # Do not use loadable modules. Same as with Pango, there's no easy way |
+ # to make gdk-pixbuf pick instrumented versions over system-installed |
+ # ones. |
+ "--disable-modules", |
+ ] |
+ pre_build = "scripts/pre-build/libgdk-pixbuf2.0-0.sh" |
+ } |
+ |
+ instrumented_library("libglib2.0-0") { |
+ extra_configure_flags = [ |
+ "--disable-gtk-doc", |
+ "--disable-gtk-doc-html", |
+ "--disable-gtk-doc-pdf", |
+ "--disable-static", |
+ ] |
+ asan_blacklist = "blacklists/asan/libglib2.0-0.txt" |
+ msan_blacklist = "blacklists/msan/libglib2.0-0.txt" |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("libgnome-keyring0") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ "--enable-tests=no", |
+ |
+ # Make the build less problematic. |
+ "--disable-introspection", |
+ ] |
+ package_ldflags = [ "-Wl,--as-needed" ] |
+ } |
+ |
+ instrumented_library("libgpg-error0") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libgtk2.0-0") { |
+ package_cflags = [ "-Wno-return-type" ] |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--prefix=/usr", |
+ "--sysconfdir=/etc", |
+ "--enable-test-print-backend", |
+ "--enable-introspection=no", |
+ "--with-xinput=yes", |
+ ] |
+ patch = "patches/libgtk2.0-0.${instrumented_libraries_platform}.diff" |
+ pre_build = "scripts/pre-build/libgtk2.0-0.sh" |
+ } |
+ |
+ instrumented_library("libnspr4") { |
+ extra_configure_flags = [ |
+ "--enable-64bit", |
+ "--disable-static", |
+ |
+ # TSan reports data races on debug variables. |
+ "--disable-debug", |
+ ] |
+ pre_build = "scripts/pre-build/libnspr4.sh" |
+ } |
+ |
+ instrumented_library("libp11-kit0") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ |
+ # Required on Trusty due to autoconf version mismatch. |
+ pre_build = "scripts/pre-build/autoreconf.sh" |
+ } |
+ |
+ instrumented_library("libpci3") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ build_method = "custom_libpci3" |
+ jobs = 1 |
+ } |
+ |
+ instrumented_library("libpcre3") { |
+ extra_configure_flags = [ |
+ "--enable-utf8", |
+ "--enable-unicode-properties", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libpixman-1-0") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--disable-gtk", |
+ "--disable-silent-rules", |
+ |
+ # Avoid a clang issue. http://crbug.com/449183 |
+ "--disable-mmx", |
+ ] |
+ patch = "patches/libpixman-1-0.diff" |
+ } |
+ |
+ instrumented_library("libpng12-0") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libsecret") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # See above. |
+ "--disable-introspection", |
+ ] |
+ pre_build = "scripts/pre-build/autoreconf.sh" |
+ } |
+ |
+ instrumented_library("libtasn1-3") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--enable-ld-version-script", |
+ ] |
+ } |
+ |
+ instrumented_library("libtasn1-6") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--enable-ld-version-script", |
+ ] |
+ } |
+ |
+ instrumented_library("libunity9") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ pre_build = "scripts/pre-build/autogen.sh" |
+ } |
+ |
+ instrumented_library("libva1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ |
+ # Backport a use-after-free fix: |
+ # http://cgit.freedesktop.org/libva/diff/va/va.c?h=staging&id=d4988142a3f2256e38c5c5cdcdfc1b4f5f3c1ea9 |
+ patch = "patches/libva1.diff" |
+ pre_build = "scripts/pre-build/libva1.sh" |
+ } |
+ |
+ instrumented_library("libx11-6") { |
+ extra_configure_flags = [ |
+ "--disable-specs", |
+ "--disable-static", |
+ ] |
+ msan_blacklist = "blacklists/msan/libx11-6.txt" |
+ |
+ # Required on Trusty due to autoconf version mismatch. |
+ pre_build = "scripts/pre-build/autoreconf.sh" |
+ } |
+ |
+ instrumented_library("libxau6") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxcb1") { |
+ extra_configure_flags = [ |
+ "--disable-build-docs", |
+ "--disable-static", |
+ ] |
+ pre_build = "scripts/pre-build/autoreconf.sh" |
+ if (is_precise) { |
+ patch = "patches/libxcb1.precise.diff" |
+ } |
+ } |
+ |
+ instrumented_library("libxcomposite1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxcursor1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxdamage1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxdmcp6") { |
+ extra_configure_flags = [ |
+ "--disable-docs", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libxext6") { |
+ extra_configure_flags = [ |
+ "--disable-specs", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libxfixes3") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxi6") { |
+ extra_configure_flags = [ |
+ "--disable-specs", |
+ "--disable-docs", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("libxinerama1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxrandr2") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxrender1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxss1") { |
+ extra_configure_flags = [ "--disable-static" ] |
+ } |
+ |
+ instrumented_library("libxtst6") { |
+ extra_configure_flags = [ |
+ "--disable-specs", |
+ "--disable-static", |
+ ] |
+ } |
+ |
+ instrumented_library("nss") { |
+ # TODO(eugenis): get rid of this dependency |
+ deps = [ |
+ ":libnspr4", |
+ ] |
+ patch = "patches/nss.diff" |
+ build_method = "custom_nss" |
+ } |
+ |
+ instrumented_library("pango1.0") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # Avoid https://bugs.gentoo.org/show_bug.cgi?id=425620 |
+ "--enable-introspection=no", |
+ |
+ # Pango is normally used with dynamically loaded modules. However, |
+ # ensuring pango is able to find instrumented versions of those modules |
+ # is a huge pain in the neck. Let's link them statically instead, and |
+ # hope for the best. |
+ "--with-included-modules=yes", |
+ ] |
+ } |
+ |
+ instrumented_library("pulseaudio") { |
+ # New location of libpulsecommon. |
+ if (is_precise) { |
+ patch = "patches/pulseaudio.precise.diff" |
+ jobs = 1 |
+ } |
+ if (is_trusty) { |
+ package_ldflags = [ "-Wl,-R,XORIGIN/pulseaudio/." ] |
+ } |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # From debian/rules. |
+ "--enable-x11", |
+ "--disable-hal-compat", |
+ |
+ # Disable some ARM-related code that fails compilation. No idea why |
+ # this even impacts x86-64 builds. |
+ "--disable-neon-opt", |
+ ] |
+ pre_build = "scripts/pre-build/pulseaudio.sh" |
+ } |
+ |
+ instrumented_library("udev") { |
+ extra_configure_flags = [ |
+ "--disable-static", |
+ |
+ # Without this flag there's a linking step that doesn't honor LDFLAGS |
+ # and fails. |
+ # TODO(eugenis): find a better fix. |
+ "--disable-gudev", |
+ ] |
+ pre_build = "scripts/pre-build/udev.sh" |
+ } |
+ |
+ instrumented_library("zlib1g") { |
+ # --disable-static is not supported |
+ patch = "patches/zlib1g.diff" |
+ } |
+} |