| OLD | NEW | 
|    1 # Copyright 2015 The Chromium Authors. All rights reserved. |    1 # Copyright 2015 The Chromium Authors. All rights reserved. | 
|    2 # Use of this source code is governed by a BSD-style license that can be |    2 # Use of this source code is governed by a BSD-style license that can be | 
|    3 # found in the LICENSE file. |    3 # found in the LICENSE file. | 
|    4  |    4  | 
|    5 import("//build/config/sanitizers/sanitizers.gni") |    5 import("//build/config/sanitizers/sanitizers.gni") | 
 |    6 import("//build/toolchain/goma.gni") | 
 |    7  | 
 |    8 declare_args() { | 
 |    9   # The default number of jobs to use when building instrumented libraries. | 
 |   10   instrumented_libraries_jobs = 8 | 
 |   11  | 
 |   12   # The platform on which the instrumented libraries are being built. | 
 |   13   instrumented_libraries_platform = "trusty" | 
 |   14 } | 
|    6  |   15  | 
|    7 group("deps") { |   16 group("deps") { | 
|    8   if (use_prebuilt_instrumented_libraries) { |   17   if (use_prebuilt_instrumented_libraries) { | 
|    9     assert(prebuilt_instrumented_libraries_available, |   18     assert(prebuilt_instrumented_libraries_available, | 
|   10            "Prebuilt instrumented libraries are only available when " + |   19            "Prebuilt instrumented libraries are only available when " + | 
|   11                "is_msan = true and msan_track_origins = {0, 2}") |   20                "is_msan = true and msan_track_origins = {0, 2}") | 
|   12     deps = [ |   21     deps = [ | 
|   13       ":prebuilt", |   22       ":prebuilt", | 
|   14     ] |   23     ] | 
|   15     data_deps = [ |   24     data_deps = [ | 
|   16       ":prebuilt", |   25       ":prebuilt", | 
|   17     ] |   26     ] | 
|   18   } |   27   } | 
 |   28   if (use_locally_built_instrumented_libraries) { | 
 |   29     deps = [ | 
 |   30       ":locally_built", | 
 |   31     ] | 
 |   32   } | 
|   19 } |   33 } | 
|   20  |   34  | 
 |   35 if (is_msan) { | 
 |   36   sanitizer_type = "msan" | 
 |   37 } else if (is_asan) { | 
 |   38   sanitizer_type = "asan" | 
 |   39 } else if (is_tsan) { | 
 |   40   sanitizer_type = "tsan" | 
 |   41 } | 
 |   42  | 
|   21 if (prebuilt_instrumented_libraries_available) { |   43 if (prebuilt_instrumented_libraries_available) { | 
|   22   group("prebuilt") { |   44   group("prebuilt") { | 
|   23     visibility = [ ":deps" ] |   45     visibility = [ ":deps" ] | 
|   24  |   46  | 
|   25     deps = [ |   47     deps = [ | 
|   26       ":extract_prebuilt_instrumented_libraries", |   48       ":extract_prebuilt_instrumented_libraries", | 
|   27     ] |   49     ] | 
|   28     data_deps = [ |   50     data_deps = [ | 
|   29       ":extract_prebuilt_instrumented_libraries", |   51       ":extract_prebuilt_instrumented_libraries", | 
|   30     ] |   52     ] | 
|   31   } |   53   } | 
|   32  |   54  | 
|   33   if (is_msan) { |   55   if (is_msan) { | 
|   34     sanitizer_type = "msan" |  | 
|   35     if (msan_track_origins == 0) { |   56     if (msan_track_origins == 0) { | 
|   36       archive_prefix = "msan-no-origins" |   57       archive_prefix = "msan-no-origins" | 
|   37     } else if (msan_track_origins == 2) { |   58     } else if (msan_track_origins == 2) { | 
|   38       archive_prefix = "msan-chained-origins" |   59       archive_prefix = "msan-chained-origins" | 
|   39     } |   60     } | 
|   40   } |   61   } | 
|   41  |   62  | 
|   42   # TODO(GYP): scripts/download_binaries.py uses GYP_DEFINES to decide whether |   63   # TODO(GYP): scripts/download_binaries.py uses GYP_DEFINES to decide whether | 
|   43   # to download the archives extracted here. |   64   # to download the archives extracted here. | 
|   44   # Note: This requires a clobber whenever Ubuntu version changes. |   65   # Note: This requires a clobber whenever Ubuntu version changes. | 
|   45   action("extract_prebuilt_instrumented_libraries") { |   66   action("extract_prebuilt_instrumented_libraries") { | 
|   46     visibility = [ ":prebuilt" ] |   67     visibility = [ ":prebuilt" ] | 
|   47     script = "scripts/unpack_binaries.py" |   68     script = "scripts/unpack_binaries.py" | 
|   48     depfile = "$target_out_dir/$archive_prefix.d" |   69     depfile = "$target_out_dir/$archive_prefix.d" | 
|   49     args = [ |   70     args = [ | 
|   50       archive_prefix, |   71       archive_prefix, | 
|   51       rebase_path("binaries"), |   72       rebase_path("binaries"), | 
|   52       rebase_path(root_build_dir + "/instrumented_libraries_prebuilt"), |   73       rebase_path(root_out_dir + "/instrumented_libraries_prebuilt"), | 
|   53       rebase_path(target_out_dir, root_build_dir), |   74       rebase_path(target_out_dir, root_out_dir), | 
|   54     ] |   75     ] | 
|   55     outputs = [ |   76     outputs = [ | 
|   56       "$target_out_dir/$archive_prefix.txt", |   77       "$target_out_dir/$archive_prefix.txt", | 
|   57     ] |   78     ] | 
|   58     data = [ |   79     data = [ | 
|   59       "$root_out_dir/instrumented_libraries_prebuilt/", |   80       "$root_out_dir/instrumented_libraries_prebuilt/", | 
|   60     ] |   81     ] | 
|   61   } |   82   } | 
|   62  |   83  | 
|   63   config("prebuilt_ldflags") { |   84   config("prebuilt_ldflags") { | 
|   64     ldflags = [ |   85     ldflags = [ | 
|   65       # Add a relative RPATH entry to Chromium binaries. This puts instrumented |   86       # Add a relative RPATH entry to Chromium binaries. This puts instrumented | 
|   66       # DSOs before system-installed versions in library search path. |   87       # DSOs before system-installed versions in library search path. | 
|   67       "-Wl,-R,\$ORIGIN/instrumented_libraries_prebuilt/$sanitizer_type/lib", |   88       "-Wl,-R,\$ORIGIN/instrumented_libraries_prebuilt/$sanitizer_type/lib", | 
|   68       "-Wl,-z,origin", |   89       "-Wl,-z,origin", | 
|   69     ] |   90     ] | 
|   70   } |   91   } | 
|   71 } |   92 } | 
|   72 # TODO(GYP): Support building instrumented libraries from source. |   93  | 
 |   94 if (use_locally_built_instrumented_libraries) { | 
 |   95   if (instrumented_libraries_platform == "precise") { | 
 |   96     is_precise = true | 
 |   97     is_trusty = false | 
 |   98   } else if (instrumented_libraries_platform == "trusty") { | 
 |   99     is_precise = false | 
 |  100     is_trusty = true | 
 |  101   } else { | 
 |  102     assert(false, "Unsupported platform " + instrumented_libraries_platform) | 
 |  103   } | 
 |  104   group("locally_built") { | 
 |  105     visibility = [ ":deps" ] | 
 |  106     deps = [ | 
 |  107       ":atk1.0", | 
 |  108       ":brltty", | 
 |  109       ":dee", | 
 |  110       ":freetype", | 
 |  111       ":libappindicator1", | 
 |  112       ":libasound2", | 
 |  113       ":libcairo2", | 
 |  114       ":libcap2", | 
 |  115       ":libcredentialkit_pkcs11", | 
 |  116       ":libdbus-1-3", | 
 |  117       ":libdbus-glib-1-2", | 
 |  118       ":libdbusmenu", | 
 |  119       ":libdbusmenu-glib4", | 
 |  120       ":libexpat1", | 
 |  121       ":libffi6", | 
 |  122       ":libfontconfig1", | 
 |  123       ":libgconf-2-4", | 
 |  124       ":libgcrypt11", | 
 |  125       ":libgdk-pixbuf2.0-0", | 
 |  126       ":libglib2.0-0", | 
 |  127       ":libgnome-keyring0", | 
 |  128       ":libgpg-error0", | 
 |  129       ":libgtk2.0-0", | 
 |  130       ":libnspr4", | 
 |  131       ":libp11-kit0", | 
 |  132       ":libpci3", | 
 |  133       ":libpcre3", | 
 |  134       ":libpixman-1-0", | 
 |  135       ":libunity9", | 
 |  136       ":libva1", | 
 |  137       ":libx11-6", | 
 |  138       ":libxau6", | 
 |  139       ":libxcb1", | 
 |  140       ":libxcomposite1", | 
 |  141       ":libxcursor1", | 
 |  142       ":libxdamage1", | 
 |  143       ":libxdmcp6", | 
 |  144       ":libxext6", | 
 |  145       ":libxfixes3", | 
 |  146       ":libxi6", | 
 |  147       ":libxinerama1", | 
 |  148       ":libxrandr2", | 
 |  149       ":libxrender1", | 
 |  150       ":libxss1", | 
 |  151       ":libxtst6", | 
 |  152       ":nss", | 
 |  153       ":pango1.0", | 
 |  154       ":pulseaudio", | 
 |  155       ":udev", | 
 |  156       ":zlib1g", | 
 |  157     ] | 
 |  158     if (is_precise) { | 
 |  159       deps += [ ":libtasn1-3" ] | 
 |  160     } | 
 |  161     if (is_trusty) { | 
 |  162       deps += [ | 
 |  163         ":harfbuzz", | 
 |  164         ":libsecret", | 
 |  165         ":libtasn1-6", | 
 |  166       ] | 
 |  167     } | 
 |  168     if (is_msan) { | 
 |  169       deps += [ ":libcups2" ] | 
 |  170     } | 
 |  171     if (!is_tsan) { | 
 |  172       deps += [ ":libpng12-0" ] | 
 |  173     } | 
 |  174     data = [ | 
 |  175       "${root_out_dir}/instrumented_libraries/${sanitizer_type}/lib", | 
 |  176     ] | 
 |  177   } | 
 |  178  | 
 |  179   config("locally_built_ldflags") { | 
 |  180     ldflags = [ | 
 |  181       # Add a relative RPATH entry to Chromium binaries. This puts instrumented | 
 |  182       # DSOs before system-installed versions in library search path. | 
 |  183       "-Wl,-R,\$ORIGIN/instrumented_libraries/${sanitizer_type}/lib", | 
 |  184       "-Wl,-z,origin", | 
 |  185     ] | 
 |  186   } | 
 |  187  | 
 |  188   template("instrumented_library") { | 
 |  189     action(target_name) { | 
 |  190       script = "scripts/download_build_install.py" | 
 |  191       build_method = "destdir" | 
 |  192       if (defined(invoker.build_method)) { | 
 |  193         build_method = invoker.build_method | 
 |  194       } | 
 |  195  | 
 |  196       cc = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang") | 
 |  197       cxx = rebase_path("//third_party/llvm-build/Release+Asserts/bin/clang++") | 
 |  198       if (use_goma) { | 
 |  199         cc = "${goma_dir}/gomacc ${cc}" | 
 |  200         cxx = "${goma_dir}/gomacc ${cxx}" | 
 |  201       } | 
 |  202       jobs = instrumented_libraries_jobs | 
 |  203       if (defined(invoker.jobs)) { | 
 |  204         jobs = invoker.jobs | 
 |  205       } | 
 |  206       package_cflags = [ | 
 |  207         "-O2", | 
 |  208         "-gline-tables-only", | 
 |  209         "-fPIC", | 
 |  210         "-w", | 
 |  211         "-U_FORITFY_SOURCE", | 
 |  212         "-fno-omit-frame-pointer", | 
 |  213       ] | 
 |  214       package_ldflags = [] | 
 |  215       if (is_asan) { | 
 |  216         package_cflags += [ "-fsanitize=address" ] | 
 |  217         package_ldflags = [ "-fsanitize=address" ] | 
 |  218       } else if (is_msan) { | 
 |  219         package_cflags += [ | 
 |  220           "-fsanitize=memory", | 
 |  221           "-fsanitize-memory-track-origins=${msan_track_origins}", | 
 |  222         ] | 
 |  223         package_ldflags = [ "-fsanitize=memory" ] | 
 |  224       } else if (is_tsan) { | 
 |  225         package_cflags += [ "-fsanitize=thread" ] | 
 |  226         package_ldflags = [ "-fsanitize=thread" ] | 
 |  227       } | 
 |  228       if (defined(invoker.package_cflags)) { | 
 |  229         package_cflags += invoker.package_cflags | 
 |  230       } | 
 |  231       if (defined(invoker.package_ldflags)) { | 
 |  232         package_ldflags += invoker.package_ldflags | 
 |  233       } | 
 |  234       if (defined(invoker.deps)) { | 
 |  235         deps = invoker.deps | 
 |  236       } | 
 |  237       product_dir = rebase_path(root_out_dir) | 
 |  238       intermediate_dir = rebase_path(target_gen_dir) | 
 |  239       args = [ | 
 |  240         "--build-method=${build_method}", | 
 |  241         "--cc=${cc}", | 
 |  242         "--cxx=${cxx}", | 
 |  243         "--intermediate-dir=${intermediate_dir}", | 
 |  244         "--jobs=${jobs}", | 
 |  245         "--libdir=lib", | 
 |  246         "--package=${target_name}", | 
 |  247         "--product-dir=${product_dir}", | 
 |  248         "--cflags=${package_cflags}", | 
 |  249         "--ldflags=${package_ldflags}", | 
 |  250         "--sanitizer=${sanitizer_type}", | 
 |  251       ] | 
 |  252       outputs = [ | 
 |  253         "${root_out_dir}/instrumented_libraries/${sanitizer_type}/${target_name}
     .txt", | 
 |  254       ] | 
 |  255       inputs = [] | 
 |  256       if (defined(invoker.pre_build)) { | 
 |  257         inputs += [ invoker.pre_build ] | 
 |  258         args += [ "--pre-build=${invoker.pre_build}" ] | 
 |  259       } | 
 |  260       if (defined(invoker.patch)) { | 
 |  261         inputs += [ invoker.patch ] | 
 |  262         args += [ "--patch=${invoker.patch}" ] | 
 |  263       } | 
 |  264       if (defined(invoker.asan_blacklist)) { | 
 |  265         if (is_asan) { | 
 |  266           inputs += [ invoker.asan_blacklist ] | 
 |  267           args += [ "--sanitizer-blacklist=${invoker.asan_blacklist}" ] | 
 |  268         } else { | 
 |  269           assert(invoker.asan_blacklist != "", "") | 
 |  270         } | 
 |  271       } | 
 |  272       if (defined(invoker.msan_blacklist)) { | 
 |  273         if (is_msan) { | 
 |  274           inputs += [ invoker.msan_blacklist ] | 
 |  275           args += [ "--sanitizer-blacklist=${invoker.msan_blacklist}" ] | 
 |  276         } else { | 
 |  277           assert(invoker.msan_blacklist != "", "") | 
 |  278         } | 
 |  279       } | 
 |  280  | 
 |  281       if (defined(invoker.extra_configure_flags)) { | 
 |  282         args += [ "--extra-configure-flags=${invoker.extra_configure_flags}" ] | 
 |  283       } | 
 |  284     } | 
 |  285   } | 
 |  286  | 
 |  287   instrumented_library("atk1.0") { | 
 |  288     extra_configure_flags = [ | 
 |  289       "--disable-static", | 
 |  290  | 
 |  291       # See above. | 
 |  292       "--disable-introspection", | 
 |  293     ] | 
 |  294   } | 
 |  295  | 
 |  296   instrumented_library("brltty") { | 
 |  297     extra_configure_flags = [ | 
 |  298       "--disable-static", | 
 |  299  | 
 |  300       # From debian/rules. | 
 |  301       "--without-viavoice", | 
 |  302       "--without-theta", | 
 |  303       "--without-swift", | 
 |  304       "--bindir=/sbin", | 
 |  305       "--with-curses=ncursesw", | 
 |  306       "--disable-stripping", | 
 |  307  | 
 |  308       # We don't need any of those. | 
 |  309       "--disable-java-bindings", | 
 |  310       "--disable-lisp-bindings", | 
 |  311       "--disable-ocaml-bindings", | 
 |  312       "--disable-python-bindings", | 
 |  313       "--disable-tcl-bindings", | 
 |  314     ] | 
 |  315   } | 
 |  316  | 
 |  317   instrumented_library("dee") { | 
 |  318     extra_configure_flags = [ | 
 |  319       "--disable-static", | 
 |  320  | 
 |  321       # See above. | 
 |  322       "--disable-introspection", | 
 |  323     ] | 
 |  324     pre_build = "scripts/pre-build/autogen.sh" | 
 |  325   } | 
 |  326  | 
 |  327   instrumented_library("freetype") { | 
 |  328     pre_build = "scripts/pre-build/freetype.sh" | 
 |  329     extra_configure_flags = [ "--disable-static" ] | 
 |  330   } | 
 |  331  | 
 |  332   instrumented_library("harfbuzz") { | 
 |  333     package_cflags = [ "-Wno-c++11-narrowing" ] | 
 |  334     extra_configure_flags = [ | 
 |  335       "--disable-static", | 
 |  336  | 
 |  337       # From debian/rules. | 
 |  338       "--with-graphite2=yes", | 
 |  339       "--with-gobject", | 
 |  340  | 
 |  341       # See above. | 
 |  342       "--disable-introspection", | 
 |  343     ] | 
 |  344   } | 
 |  345  | 
 |  346   instrumented_library("libappindicator1") { | 
 |  347     extra_configure_flags = [ | 
 |  348       "--disable-static", | 
 |  349  | 
 |  350       # See above. | 
 |  351       "--disable-introspection", | 
 |  352     ] | 
 |  353     jobs = 1 | 
 |  354     pre_build = "scripts/pre-build/autogen.sh" | 
 |  355   } | 
 |  356  | 
 |  357   instrumented_library("libasound2") { | 
 |  358     extra_configure_flags = [ "--disable-static" ] | 
 |  359     pre_build = "scripts/pre-build/libasound2.sh" | 
 |  360   } | 
 |  361  | 
 |  362   instrumented_library("libcairo2") { | 
 |  363     extra_configure_flags = [ | 
 |  364       "--disable-gtk-doc", | 
 |  365       "--disable-static", | 
 |  366     ] | 
 |  367   } | 
 |  368  | 
 |  369   instrumented_library("libcap2") { | 
 |  370     extra_configure_flags = [ "--disable-static" ] | 
 |  371     build_method = "custom_libcap" | 
 |  372   } | 
 |  373  | 
 |  374   instrumented_library("libcredentialkit_pkcs11") { | 
 |  375     build_method = "stub" | 
 |  376   } | 
 |  377  | 
 |  378   instrumented_library("libcups2") { | 
 |  379     patch = "patches/libcups2.diff" | 
 |  380     jobs = 1 | 
 |  381     extra_configure_flags = [ | 
 |  382       "--disable-static", | 
 |  383  | 
 |  384       # All from debian/rules. | 
 |  385       "--localedir=/usr/share/cups/locale", | 
 |  386       "--enable-slp", | 
 |  387       "--enable-libpaper", | 
 |  388       "--enable-ssl", | 
 |  389       "--enable-gnutls", | 
 |  390       "--disable-openssl", | 
 |  391       "--enable-threads", | 
 |  392       "--enable-debug", | 
 |  393       "--enable-dbus", | 
 |  394       "--with-dbusdir=/etc/dbus-1", | 
 |  395       "--enable-gssapi", | 
 |  396       "--enable-avahi", | 
 |  397       "--with-pdftops=/usr/bin/gs", | 
 |  398       "--disable-launchd", | 
 |  399       "--with-cups-group=lp", | 
 |  400       "--with-system-groups=lpadmin", | 
 |  401       "--with-printcap=/var/run/cups/printcap", | 
 |  402       "--with-log-file-perm=0640", | 
 |  403       "--with-local_protocols=\"CUPS dnssd\"", | 
 |  404       "--with-remote_protocols=\"CUPS dnssd\"", | 
 |  405       "--enable-libusb", | 
 |  406     ] | 
 |  407     pre_build = "scripts/pre-build/libcups2.sh" | 
 |  408   } | 
 |  409  | 
 |  410   instrumented_library("libdbus-1-3") { | 
 |  411     extra_configure_flags = [ | 
 |  412       "--disable-static", | 
 |  413  | 
 |  414       # From debian/rules. | 
 |  415       "--disable-libaudit", | 
 |  416       "--enable-apparmor", | 
 |  417       "--enable-systemd", | 
 |  418       "--libexecdir=/lib/dbus-1.0", | 
 |  419       "--with-systemdsystemunitdir=/lib/systemd/system", | 
 |  420       "--disable-tests", | 
 |  421       "--exec-prefix=/", | 
 |  422  | 
 |  423       # From dh_auto_configure. | 
 |  424       "--prefix=/usr", | 
 |  425       "--localstatedir=/var", | 
 |  426     ] | 
 |  427   } | 
 |  428  | 
 |  429   instrumented_library("libdbus-glib-1-2") { | 
 |  430     extra_configure_flags = [ | 
 |  431       # Use system dbus-binding-tool. The just-built one is instrumented but | 
 |  432       # doesn't have the correct RPATH, and will crash. | 
 |  433       "--with-dbus-binding-tool=dbus-binding-tool", | 
 |  434       "--disable-static", | 
 |  435     ] | 
 |  436   } | 
 |  437  | 
 |  438   instrumented_library("libdbusmenu") { | 
 |  439     extra_configure_flags = [ | 
 |  440       "--disable-static", | 
 |  441  | 
 |  442       # From debian/rules. | 
 |  443       "--disable-scrollkeeper", | 
 |  444       "--with-gtk=2", | 
 |  445  | 
 |  446       # See above. | 
 |  447       "--disable-introspection", | 
 |  448       "--disable-vala", | 
 |  449     ] | 
 |  450     pre_build = "scripts/pre-build/autogen.sh" | 
 |  451   } | 
 |  452  | 
 |  453   instrumented_library("libdbusmenu-glib4") { | 
 |  454     extra_configure_flags = [ | 
 |  455       "--disable-static", | 
 |  456  | 
 |  457       # From debian/rules. | 
 |  458       "--disable-scrollkeeper", | 
 |  459       "--enable-gtk-doc", | 
 |  460  | 
 |  461       # --enable-introspection introduces a build step that attempts to run | 
 |  462       # a just-built binary and crashes. Vala requires introspection. | 
 |  463       # TODO(eugenis): find a better fix. | 
 |  464       "--disable-introspection", | 
 |  465       "--disable-vala", | 
 |  466     ] | 
 |  467     pre_build = "scripts/pre-build/autogen.sh" | 
 |  468   } | 
 |  469  | 
 |  470   instrumented_library("libexpat1") { | 
 |  471     extra_configure_flags = [ "--disable-static" ] | 
 |  472   } | 
 |  473  | 
 |  474   instrumented_library("libffi6") { | 
 |  475     extra_configure_flags = [ "--disable-static" ] | 
 |  476   } | 
 |  477  | 
 |  478   instrumented_library("libfontconfig1") { | 
 |  479     extra_configure_flags = [ | 
 |  480       "--disable-docs", | 
 |  481       "--sysconfdir=/etc/", | 
 |  482       "--disable-static", | 
 |  483  | 
 |  484       # From debian/rules. | 
 |  485       "--with-add-fonts=/usr/X11R6/lib/X11/fonts,/usr/local/share/fonts", | 
 |  486     ] | 
 |  487     patch = "patches/libfontconfig.${instrumented_libraries_platform}.diff" | 
 |  488   } | 
 |  489  | 
 |  490   instrumented_library("libgconf-2-4") { | 
 |  491     extra_configure_flags = [ | 
 |  492       "--disable-static", | 
 |  493  | 
 |  494       # From debian/rules. (Even though --with-gtk=3.0 doesn't make sense.) | 
 |  495       "--with-gtk=3.0", | 
 |  496       "--disable-orbit", | 
 |  497  | 
 |  498       # See above. | 
 |  499       "--disable-introspection", | 
 |  500     ] | 
 |  501   } | 
 |  502  | 
 |  503   instrumented_library("libgcrypt11") { | 
 |  504     package_ldflags = [ "-Wl,-z,muldefs" ] | 
 |  505     extra_configure_flags = [ | 
 |  506       # From debian/rules. | 
 |  507       "--enable-noexecstack", | 
 |  508       "--enable-ld-version-script", | 
 |  509       "--disable-static", | 
 |  510  | 
 |  511       # http://crbug.com/344505 | 
 |  512       "--disable-asm", | 
 |  513     ] | 
 |  514   } | 
 |  515  | 
 |  516   instrumented_library("libgdk-pixbuf2.0-0") { | 
 |  517     extra_configure_flags = [ | 
 |  518       "--disable-static", | 
 |  519  | 
 |  520       # From debian/rules. | 
 |  521       "--with-libjasper", | 
 |  522       "--with-x11", | 
 |  523  | 
 |  524       # Make the build less problematic. | 
 |  525       "--disable-introspection", | 
 |  526  | 
 |  527       # Do not use loadable modules. Same as with Pango, there's no easy way | 
 |  528       # to make gdk-pixbuf pick instrumented versions over system-installed | 
 |  529       # ones. | 
 |  530       "--disable-modules", | 
 |  531     ] | 
 |  532     pre_build = "scripts/pre-build/libgdk-pixbuf2.0-0.sh" | 
 |  533   } | 
 |  534  | 
 |  535   instrumented_library("libglib2.0-0") { | 
 |  536     extra_configure_flags = [ | 
 |  537       "--disable-gtk-doc", | 
 |  538       "--disable-gtk-doc-html", | 
 |  539       "--disable-gtk-doc-pdf", | 
 |  540       "--disable-static", | 
 |  541     ] | 
 |  542     asan_blacklist = "blacklists/asan/libglib2.0-0.txt" | 
 |  543     msan_blacklist = "blacklists/msan/libglib2.0-0.txt" | 
 |  544     pre_build = "scripts/pre-build/autogen.sh" | 
 |  545   } | 
 |  546  | 
 |  547   instrumented_library("libgnome-keyring0") { | 
 |  548     extra_configure_flags = [ | 
 |  549       "--disable-static", | 
 |  550       "--enable-tests=no", | 
 |  551  | 
 |  552       # Make the build less problematic. | 
 |  553       "--disable-introspection", | 
 |  554     ] | 
 |  555     package_ldflags = [ "-Wl,--as-needed" ] | 
 |  556   } | 
 |  557  | 
 |  558   instrumented_library("libgpg-error0") { | 
 |  559     extra_configure_flags = [ "--disable-static" ] | 
 |  560   } | 
 |  561  | 
 |  562   instrumented_library("libgtk2.0-0") { | 
 |  563     package_cflags = [ "-Wno-return-type" ] | 
 |  564     extra_configure_flags = [ | 
 |  565       "--disable-static", | 
 |  566  | 
 |  567       # From debian/rules. | 
 |  568       "--prefix=/usr", | 
 |  569       "--sysconfdir=/etc", | 
 |  570       "--enable-test-print-backend", | 
 |  571       "--enable-introspection=no", | 
 |  572       "--with-xinput=yes", | 
 |  573     ] | 
 |  574     patch = "patches/libgtk2.0-0.${instrumented_libraries_platform}.diff" | 
 |  575     pre_build = "scripts/pre-build/libgtk2.0-0.sh" | 
 |  576   } | 
 |  577  | 
 |  578   instrumented_library("libnspr4") { | 
 |  579     extra_configure_flags = [ | 
 |  580       "--enable-64bit", | 
 |  581       "--disable-static", | 
 |  582  | 
 |  583       # TSan reports data races on debug variables. | 
 |  584       "--disable-debug", | 
 |  585     ] | 
 |  586     pre_build = "scripts/pre-build/libnspr4.sh" | 
 |  587   } | 
 |  588  | 
 |  589   instrumented_library("libp11-kit0") { | 
 |  590     extra_configure_flags = [ "--disable-static" ] | 
 |  591  | 
 |  592     # Required on Trusty due to autoconf version mismatch. | 
 |  593     pre_build = "scripts/pre-build/autoreconf.sh" | 
 |  594   } | 
 |  595  | 
 |  596   instrumented_library("libpci3") { | 
 |  597     extra_configure_flags = [ "--disable-static" ] | 
 |  598     build_method = "custom_libpci3" | 
 |  599     jobs = 1 | 
 |  600   } | 
 |  601  | 
 |  602   instrumented_library("libpcre3") { | 
 |  603     extra_configure_flags = [ | 
 |  604       "--enable-utf8", | 
 |  605       "--enable-unicode-properties", | 
 |  606       "--disable-static", | 
 |  607     ] | 
 |  608   } | 
 |  609  | 
 |  610   instrumented_library("libpixman-1-0") { | 
 |  611     extra_configure_flags = [ | 
 |  612       "--disable-static", | 
 |  613  | 
 |  614       # From debian/rules. | 
 |  615       "--disable-gtk", | 
 |  616       "--disable-silent-rules", | 
 |  617  | 
 |  618       # Avoid a clang issue. http://crbug.com/449183 | 
 |  619       "--disable-mmx", | 
 |  620     ] | 
 |  621     patch = "patches/libpixman-1-0.diff" | 
 |  622   } | 
 |  623  | 
 |  624   instrumented_library("libpng12-0") { | 
 |  625     extra_configure_flags = [ "--disable-static" ] | 
 |  626   } | 
 |  627  | 
 |  628   instrumented_library("libsecret") { | 
 |  629     extra_configure_flags = [ | 
 |  630       "--disable-static", | 
 |  631  | 
 |  632       # See above. | 
 |  633       "--disable-introspection", | 
 |  634     ] | 
 |  635     pre_build = "scripts/pre-build/autoreconf.sh" | 
 |  636   } | 
 |  637  | 
 |  638   instrumented_library("libtasn1-3") { | 
 |  639     extra_configure_flags = [ | 
 |  640       "--disable-static", | 
 |  641  | 
 |  642       # From debian/rules. | 
 |  643       "--enable-ld-version-script", | 
 |  644     ] | 
 |  645   } | 
 |  646  | 
 |  647   instrumented_library("libtasn1-6") { | 
 |  648     extra_configure_flags = [ | 
 |  649       "--disable-static", | 
 |  650  | 
 |  651       # From debian/rules. | 
 |  652       "--enable-ld-version-script", | 
 |  653     ] | 
 |  654   } | 
 |  655  | 
 |  656   instrumented_library("libunity9") { | 
 |  657     extra_configure_flags = [ "--disable-static" ] | 
 |  658     pre_build = "scripts/pre-build/autogen.sh" | 
 |  659   } | 
 |  660  | 
 |  661   instrumented_library("libva1") { | 
 |  662     extra_configure_flags = [ "--disable-static" ] | 
 |  663  | 
 |  664     # Backport a use-after-free fix: | 
 |  665     # http://cgit.freedesktop.org/libva/diff/va/va.c?h=staging&id=d4988142a3f225
     6e38c5c5cdcdfc1b4f5f3c1ea9 | 
 |  666     patch = "patches/libva1.diff" | 
 |  667     pre_build = "scripts/pre-build/libva1.sh" | 
 |  668   } | 
 |  669  | 
 |  670   instrumented_library("libx11-6") { | 
 |  671     extra_configure_flags = [ | 
 |  672       "--disable-specs", | 
 |  673       "--disable-static", | 
 |  674     ] | 
 |  675     msan_blacklist = "blacklists/msan/libx11-6.txt" | 
 |  676  | 
 |  677     # Required on Trusty due to autoconf version mismatch. | 
 |  678     pre_build = "scripts/pre-build/autoreconf.sh" | 
 |  679   } | 
 |  680  | 
 |  681   instrumented_library("libxau6") { | 
 |  682     extra_configure_flags = [ "--disable-static" ] | 
 |  683   } | 
 |  684  | 
 |  685   instrumented_library("libxcb1") { | 
 |  686     extra_configure_flags = [ | 
 |  687       "--disable-build-docs", | 
 |  688       "--disable-static", | 
 |  689     ] | 
 |  690     pre_build = "scripts/pre-build/autoreconf.sh" | 
 |  691     if (is_precise) { | 
 |  692       patch = "patches/libxcb1.precise.diff" | 
 |  693     } | 
 |  694   } | 
 |  695  | 
 |  696   instrumented_library("libxcomposite1") { | 
 |  697     extra_configure_flags = [ "--disable-static" ] | 
 |  698   } | 
 |  699  | 
 |  700   instrumented_library("libxcursor1") { | 
 |  701     extra_configure_flags = [ "--disable-static" ] | 
 |  702   } | 
 |  703  | 
 |  704   instrumented_library("libxdamage1") { | 
 |  705     extra_configure_flags = [ "--disable-static" ] | 
 |  706   } | 
 |  707  | 
 |  708   instrumented_library("libxdmcp6") { | 
 |  709     extra_configure_flags = [ | 
 |  710       "--disable-docs", | 
 |  711       "--disable-static", | 
 |  712     ] | 
 |  713   } | 
 |  714  | 
 |  715   instrumented_library("libxext6") { | 
 |  716     extra_configure_flags = [ | 
 |  717       "--disable-specs", | 
 |  718       "--disable-static", | 
 |  719     ] | 
 |  720   } | 
 |  721  | 
 |  722   instrumented_library("libxfixes3") { | 
 |  723     extra_configure_flags = [ "--disable-static" ] | 
 |  724   } | 
 |  725  | 
 |  726   instrumented_library("libxi6") { | 
 |  727     extra_configure_flags = [ | 
 |  728       "--disable-specs", | 
 |  729       "--disable-docs", | 
 |  730       "--disable-static", | 
 |  731     ] | 
 |  732   } | 
 |  733  | 
 |  734   instrumented_library("libxinerama1") { | 
 |  735     extra_configure_flags = [ "--disable-static" ] | 
 |  736   } | 
 |  737  | 
 |  738   instrumented_library("libxrandr2") { | 
 |  739     extra_configure_flags = [ "--disable-static" ] | 
 |  740   } | 
 |  741  | 
 |  742   instrumented_library("libxrender1") { | 
 |  743     extra_configure_flags = [ "--disable-static" ] | 
 |  744   } | 
 |  745  | 
 |  746   instrumented_library("libxss1") { | 
 |  747     extra_configure_flags = [ "--disable-static" ] | 
 |  748   } | 
 |  749  | 
 |  750   instrumented_library("libxtst6") { | 
 |  751     extra_configure_flags = [ | 
 |  752       "--disable-specs", | 
 |  753       "--disable-static", | 
 |  754     ] | 
 |  755   } | 
 |  756  | 
 |  757   instrumented_library("nss") { | 
 |  758     # TODO(eugenis): get rid of this dependency | 
 |  759     deps = [ | 
 |  760       ":libnspr4", | 
 |  761     ] | 
 |  762     patch = "patches/nss.diff" | 
 |  763     build_method = "custom_nss" | 
 |  764   } | 
 |  765  | 
 |  766   instrumented_library("pango1.0") { | 
 |  767     extra_configure_flags = [ | 
 |  768       "--disable-static", | 
 |  769  | 
 |  770       # Avoid https://bugs.gentoo.org/show_bug.cgi?id=425620 | 
 |  771       "--enable-introspection=no", | 
 |  772  | 
 |  773       # Pango is normally used with dynamically loaded modules. However, | 
 |  774       # ensuring pango is able to find instrumented versions of those modules | 
 |  775       # is a huge pain in the neck. Let's link them statically instead, and | 
 |  776       # hope for the best. | 
 |  777       "--with-included-modules=yes", | 
 |  778     ] | 
 |  779   } | 
 |  780  | 
 |  781   instrumented_library("pulseaudio") { | 
 |  782     # New location of libpulsecommon. | 
 |  783     if (is_precise) { | 
 |  784       patch = "patches/pulseaudio.precise.diff" | 
 |  785       jobs = 1 | 
 |  786     } | 
 |  787     if (is_trusty) { | 
 |  788       package_ldflags = [ "-Wl,-R,XORIGIN/pulseaudio/." ] | 
 |  789     } | 
 |  790     extra_configure_flags = [ | 
 |  791       "--disable-static", | 
 |  792  | 
 |  793       # From debian/rules. | 
 |  794       "--enable-x11", | 
 |  795       "--disable-hal-compat", | 
 |  796  | 
 |  797       # Disable some ARM-related code that fails compilation. No idea why | 
 |  798       # this even impacts x86-64 builds. | 
 |  799       "--disable-neon-opt", | 
 |  800     ] | 
 |  801     pre_build = "scripts/pre-build/pulseaudio.sh" | 
 |  802   } | 
 |  803  | 
 |  804   instrumented_library("udev") { | 
 |  805     extra_configure_flags = [ | 
 |  806       "--disable-static", | 
 |  807  | 
 |  808       # Without this flag there's a linking step that doesn't honor LDFLAGS | 
 |  809       # and fails. | 
 |  810       # TODO(eugenis): find a better fix. | 
 |  811       "--disable-gudev", | 
 |  812     ] | 
 |  813     pre_build = "scripts/pre-build/udev.sh" | 
 |  814   } | 
 |  815  | 
 |  816   instrumented_library("zlib1g") { | 
 |  817     # --disable-static is not supported | 
 |  818     patch = "patches/zlib1g.diff" | 
 |  819   } | 
 |  820 } | 
| OLD | NEW |