1*1a96fba6SXin Li# Copyright 2019 The Chromium OS Authors. All rights reserved. 2*1a96fba6SXin Li# Use of this source code is governed by a BSD-style license that can be 3*1a96fba6SXin Li# found in the LICENSE file. 4*1a96fba6SXin Li 5*1a96fba6SXin Liimport("//common-mk/deps.gni") 6*1a96fba6SXin Liimport("//common-mk/pkg_config.gni") 7*1a96fba6SXin Liimport("//common-mk/proto_library.gni") 8*1a96fba6SXin Li 9*1a96fba6SXin Ligroup("all") { 10*1a96fba6SXin Li deps = [ 11*1a96fba6SXin Li ":libbrillo", 12*1a96fba6SXin Li ":libbrillo-glib", 13*1a96fba6SXin Li ":libbrillo-test", 14*1a96fba6SXin Li ":libinstallattributes", 15*1a96fba6SXin Li ":libpolicy", 16*1a96fba6SXin Li ] 17*1a96fba6SXin Li if (use.test) { 18*1a96fba6SXin Li deps += [ 19*1a96fba6SXin Li ":libbrillo_tests", 20*1a96fba6SXin Li ":libinstallattributes_tests", 21*1a96fba6SXin Li ":libpolicy_tests", 22*1a96fba6SXin Li ] 23*1a96fba6SXin Li } 24*1a96fba6SXin Li if (use.fuzzer) { 25*1a96fba6SXin Li deps += [ 26*1a96fba6SXin Li ":libbrillo_data_encoding_fuzzer", 27*1a96fba6SXin Li ":libbrillo_dbus_data_serialization_fuzzer", 28*1a96fba6SXin Li ":libbrillo_http_form_data_fuzzer", 29*1a96fba6SXin Li ] 30*1a96fba6SXin Li } 31*1a96fba6SXin Li} 32*1a96fba6SXin Li 33*1a96fba6SXin Lidefault_pkg_deps = [ "libchrome-${libbase_ver}" ] 34*1a96fba6SXin Lipkg_config("target_defaults_pkg_deps") { 35*1a96fba6SXin Li pkg_deps = default_pkg_deps 36*1a96fba6SXin Li} 37*1a96fba6SXin Li 38*1a96fba6SXin Liconfig("target_defaults") { 39*1a96fba6SXin Li configs = [ ":target_defaults_pkg_deps" ] 40*1a96fba6SXin Li include_dirs = [ "../libbrillo" ] 41*1a96fba6SXin Li defines = [ 42*1a96fba6SXin Li "USE_DBUS=${use.dbus}", 43*1a96fba6SXin Li "USE_RTTI_FOR_TYPE_TAGS", 44*1a96fba6SXin Li ] 45*1a96fba6SXin Li} 46*1a96fba6SXin Li 47*1a96fba6SXin Liconfig("libbrillo_configs") { 48*1a96fba6SXin Li include_dirs = [ "../libbrillo" ] 49*1a96fba6SXin Li} 50*1a96fba6SXin Li 51*1a96fba6SXin Li# Properties of shared libraries which libbrillo consists of. 52*1a96fba6SXin Li# Stored to variables once before actually declaring the targets, so that 53*1a96fba6SXin Li# another target can collect information for making the .pc and .so files. 54*1a96fba6SXin Lilibbrillo_sublibs = [ 55*1a96fba6SXin Li { 56*1a96fba6SXin Li # |library_name| is library file name without "lib" prefix. This is needed 57*1a96fba6SXin Li # for composing -l*** flags in libbrillo-${libbasever}.so. 58*1a96fba6SXin Li # (Current version of GN deployed to ChromeOS doesn't have string_replace.) 59*1a96fba6SXin Li library_name = "brillo-core" 60*1a96fba6SXin Li if (use.dbus) { 61*1a96fba6SXin Li all_dependent_pkg_deps = [ "dbus-1" ] 62*1a96fba6SXin Li } 63*1a96fba6SXin Li libs = [ "modp_b64" ] 64*1a96fba6SXin Li sources = [ 65*1a96fba6SXin Li "brillo/asynchronous_signal_handler.cc", 66*1a96fba6SXin Li "brillo/backoff_entry.cc", 67*1a96fba6SXin Li "brillo/daemons/daemon.cc", 68*1a96fba6SXin Li "brillo/data_encoding.cc", 69*1a96fba6SXin Li "brillo/errors/error.cc", 70*1a96fba6SXin Li "brillo/errors/error_codes.cc", 71*1a96fba6SXin Li "brillo/file_utils.cc", 72*1a96fba6SXin Li "brillo/files/file_util.cc", 73*1a96fba6SXin Li "brillo/files/safe_fd.cc", 74*1a96fba6SXin Li "brillo/flag_helper.cc", 75*1a96fba6SXin Li "brillo/key_value_store.cc", 76*1a96fba6SXin Li "brillo/message_loops/base_message_loop.cc", 77*1a96fba6SXin Li "brillo/message_loops/message_loop.cc", 78*1a96fba6SXin Li "brillo/message_loops/message_loop_utils.cc", 79*1a96fba6SXin Li "brillo/mime_utils.cc", 80*1a96fba6SXin Li "brillo/osrelease_reader.cc", 81*1a96fba6SXin Li "brillo/process.cc", 82*1a96fba6SXin Li "brillo/process_information.cc", 83*1a96fba6SXin Li "brillo/process_reaper.cc", 84*1a96fba6SXin Li "brillo/scoped_umask.cc", 85*1a96fba6SXin Li "brillo/secure_blob.cc", 86*1a96fba6SXin Li "brillo/strings/string_utils.cc", 87*1a96fba6SXin Li "brillo/syslog_logging.cc", 88*1a96fba6SXin Li "brillo/timezone/tzif_parser.cc", 89*1a96fba6SXin Li "brillo/type_name_undecorate.cc", 90*1a96fba6SXin Li "brillo/url_utils.cc", 91*1a96fba6SXin Li "brillo/userdb_utils.cc", 92*1a96fba6SXin Li "brillo/value_conversion.cc", 93*1a96fba6SXin Li ] 94*1a96fba6SXin Li if (use.dbus) { 95*1a96fba6SXin Li sources += [ 96*1a96fba6SXin Li "brillo/any.cc", 97*1a96fba6SXin Li "brillo/daemons/dbus_daemon.cc", 98*1a96fba6SXin Li "brillo/dbus/async_event_sequencer.cc", 99*1a96fba6SXin Li "brillo/dbus/data_serialization.cc", 100*1a96fba6SXin Li "brillo/dbus/dbus_connection.cc", 101*1a96fba6SXin Li "brillo/dbus/dbus_method_invoker.cc", 102*1a96fba6SXin Li "brillo/dbus/dbus_method_response.cc", 103*1a96fba6SXin Li "brillo/dbus/dbus_object.cc", 104*1a96fba6SXin Li "brillo/dbus/dbus_service_watcher.cc", 105*1a96fba6SXin Li "brillo/dbus/dbus_signal.cc", 106*1a96fba6SXin Li "brillo/dbus/exported_object_manager.cc", 107*1a96fba6SXin Li "brillo/dbus/exported_property_set.cc", 108*1a96fba6SXin Li "brillo/dbus/introspectable_helper.cc", 109*1a96fba6SXin Li "brillo/dbus/utils.cc", 110*1a96fba6SXin Li ] 111*1a96fba6SXin Li } 112*1a96fba6SXin Li }, 113*1a96fba6SXin Li 114*1a96fba6SXin Li { 115*1a96fba6SXin Li library_name = "brillo-blockdeviceutils" 116*1a96fba6SXin Li deps = [ ":libbrillo-core" ] 117*1a96fba6SXin Li sources = [ "brillo/blkdev_utils/loop_device.cc" ] 118*1a96fba6SXin Li if (use.device_mapper) { 119*1a96fba6SXin Li pkg_deps = [ "devmapper" ] 120*1a96fba6SXin Li sources += [ 121*1a96fba6SXin Li "brillo/blkdev_utils/device_mapper.cc", 122*1a96fba6SXin Li "brillo/blkdev_utils/device_mapper_task.cc", 123*1a96fba6SXin Li ] 124*1a96fba6SXin Li } 125*1a96fba6SXin Li }, 126*1a96fba6SXin Li 127*1a96fba6SXin Li { 128*1a96fba6SXin Li library_name = "brillo-http" 129*1a96fba6SXin Li deps = [ 130*1a96fba6SXin Li ":libbrillo-core", 131*1a96fba6SXin Li ":libbrillo-streams", 132*1a96fba6SXin Li ] 133*1a96fba6SXin Li all_dependent_pkg_deps = [ "libcurl" ] 134*1a96fba6SXin Li sources = [ 135*1a96fba6SXin Li "brillo/http/curl_api.cc", 136*1a96fba6SXin Li "brillo/http/http_connection_curl.cc", 137*1a96fba6SXin Li "brillo/http/http_form_data.cc", 138*1a96fba6SXin Li "brillo/http/http_request.cc", 139*1a96fba6SXin Li "brillo/http/http_transport.cc", 140*1a96fba6SXin Li "brillo/http/http_transport_curl.cc", 141*1a96fba6SXin Li "brillo/http/http_utils.cc", 142*1a96fba6SXin Li ] 143*1a96fba6SXin Li if (use.dbus) { 144*1a96fba6SXin Li sources += [ "brillo/http/http_proxy.cc" ] 145*1a96fba6SXin Li } 146*1a96fba6SXin Li }, 147*1a96fba6SXin Li 148*1a96fba6SXin Li { 149*1a96fba6SXin Li library_name = "brillo-streams" 150*1a96fba6SXin Li deps = [ ":libbrillo-core" ] 151*1a96fba6SXin Li all_dependent_pkg_deps = [ "openssl" ] 152*1a96fba6SXin Li sources = [ 153*1a96fba6SXin Li "brillo/streams/file_stream.cc", 154*1a96fba6SXin Li "brillo/streams/input_stream_set.cc", 155*1a96fba6SXin Li "brillo/streams/memory_containers.cc", 156*1a96fba6SXin Li "brillo/streams/memory_stream.cc", 157*1a96fba6SXin Li "brillo/streams/openssl_stream_bio.cc", 158*1a96fba6SXin Li "brillo/streams/stream.cc", 159*1a96fba6SXin Li "brillo/streams/stream_errors.cc", 160*1a96fba6SXin Li "brillo/streams/stream_utils.cc", 161*1a96fba6SXin Li "brillo/streams/tls_stream.cc", 162*1a96fba6SXin Li ] 163*1a96fba6SXin Li }, 164*1a96fba6SXin Li 165*1a96fba6SXin Li { 166*1a96fba6SXin Li library_name = "brillo-cryptohome" 167*1a96fba6SXin Li all_dependent_pkg_deps = [ "openssl" ] 168*1a96fba6SXin Li sources = [ "brillo/cryptohome.cc" ] 169*1a96fba6SXin Li }, 170*1a96fba6SXin Li 171*1a96fba6SXin Li { 172*1a96fba6SXin Li library_name = "brillo-namespaces" 173*1a96fba6SXin Li deps = [ ":libbrillo-core" ] 174*1a96fba6SXin Li sources = [ 175*1a96fba6SXin Li "brillo/namespaces/mount_namespace.cc", 176*1a96fba6SXin Li "brillo/namespaces/platform.cc", 177*1a96fba6SXin Li "brillo/scoped_mount_namespace.cc", 178*1a96fba6SXin Li ] 179*1a96fba6SXin Li }, 180*1a96fba6SXin Li 181*1a96fba6SXin Li { 182*1a96fba6SXin Li library_name = "brillo-minijail" 183*1a96fba6SXin Li all_dependent_pkg_deps = [ "libminijail" ] 184*1a96fba6SXin Li sources = [ "brillo/minijail/minijail.cc" ] 185*1a96fba6SXin Li }, 186*1a96fba6SXin Li 187*1a96fba6SXin Li { 188*1a96fba6SXin Li library_name = "brillo-protobuf" 189*1a96fba6SXin Li all_dependent_pkg_deps = [ "protobuf" ] 190*1a96fba6SXin Li sources = [ "brillo/proto_file_io.cc" ] 191*1a96fba6SXin Li }, 192*1a96fba6SXin Li] 193*1a96fba6SXin Li 194*1a96fba6SXin Liif (use.udev) { 195*1a96fba6SXin Li libbrillo_sublibs += [ 196*1a96fba6SXin Li { 197*1a96fba6SXin Li library_name = "brillo-udev" 198*1a96fba6SXin Li all_dependent_pkg_deps = [ "libudev" ] 199*1a96fba6SXin Li sources = [ 200*1a96fba6SXin Li "brillo/udev/udev.cc", 201*1a96fba6SXin Li "brillo/udev/udev_device.cc", 202*1a96fba6SXin Li "brillo/udev/udev_enumerate.cc", 203*1a96fba6SXin Li "brillo/udev/udev_list_entry.cc", 204*1a96fba6SXin Li "brillo/udev/udev_monitor.cc", 205*1a96fba6SXin Li ] 206*1a96fba6SXin Li }, 207*1a96fba6SXin Li ] 208*1a96fba6SXin Li} 209*1a96fba6SXin Li 210*1a96fba6SXin Li# Generate shared libraries. 211*1a96fba6SXin Liforeach(attr, libbrillo_sublibs) { 212*1a96fba6SXin Li shared_library("lib" + attr.library_name) { 213*1a96fba6SXin Li sources = attr.sources 214*1a96fba6SXin Li if (defined(attr.deps)) { 215*1a96fba6SXin Li deps = attr.deps 216*1a96fba6SXin Li } 217*1a96fba6SXin Li if (defined(attr.libs)) { 218*1a96fba6SXin Li libs = attr.libs 219*1a96fba6SXin Li } 220*1a96fba6SXin Li if (defined(attr.pkg_deps)) { 221*1a96fba6SXin Li pkg_deps = attr.pkg_deps 222*1a96fba6SXin Li } 223*1a96fba6SXin Li if (defined(attr.public_pkg_deps)) { 224*1a96fba6SXin Li public_pkg_deps = attr.public_pkg_deps 225*1a96fba6SXin Li } 226*1a96fba6SXin Li if (defined(attr.all_dependent_pkg_deps)) { 227*1a96fba6SXin Li all_dependent_pkg_deps = attr.all_dependent_pkg_deps 228*1a96fba6SXin Li } 229*1a96fba6SXin Li if (defined(attr.cflags)) { 230*1a96fba6SXin Li cflags = attr.cflags 231*1a96fba6SXin Li } 232*1a96fba6SXin Li if (defined(attr.configs)) { 233*1a96fba6SXin Li configs += attr.configs 234*1a96fba6SXin Li } 235*1a96fba6SXin Li configs += [ ":target_defaults" ] 236*1a96fba6SXin Li } 237*1a96fba6SXin Li} 238*1a96fba6SXin Li 239*1a96fba6SXin Ligenerate_pkg_config("libbrillo-${libbase_ver}_pc") { 240*1a96fba6SXin Li name = "libbrillo" 241*1a96fba6SXin Li output_name = "libbrillo-${libbase_ver}" 242*1a96fba6SXin Li description = "brillo base library" 243*1a96fba6SXin Li version = libbase_ver 244*1a96fba6SXin Li requires_private = default_pkg_deps 245*1a96fba6SXin Li foreach(sublib, libbrillo_sublibs) { 246*1a96fba6SXin Li if (defined(sublib.pkg_deps)) { 247*1a96fba6SXin Li requires_private += sublib.pkg_deps 248*1a96fba6SXin Li } 249*1a96fba6SXin Li if (defined(sublib.public_pkg_deps)) { 250*1a96fba6SXin Li requires_private += sublib.public_pkg_deps 251*1a96fba6SXin Li } 252*1a96fba6SXin Li if (defined(sublib.all_dependent_pkg_deps)) { 253*1a96fba6SXin Li requires_private += sublib.all_dependent_pkg_deps 254*1a96fba6SXin Li } 255*1a96fba6SXin Li } 256*1a96fba6SXin Li defines = [ "USE_RTTI_FOR_TYPE_TAGS" ] 257*1a96fba6SXin Li libs = [ "-lbrillo" ] 258*1a96fba6SXin Li} 259*1a96fba6SXin Li 260*1a96fba6SXin Ligenerate_pkg_config("libbrillo_pc") { 261*1a96fba6SXin Li name = "libbrillo" 262*1a96fba6SXin Li output_name = "libbrillo" 263*1a96fba6SXin Li description = "brillo base library" 264*1a96fba6SXin Li version = libbase_ver 265*1a96fba6SXin Li requires_private = default_pkg_deps 266*1a96fba6SXin Li foreach(sublib, libbrillo_sublibs) { 267*1a96fba6SXin Li if (defined(sublib.pkg_deps)) { 268*1a96fba6SXin Li requires_private += sublib.pkg_deps 269*1a96fba6SXin Li } 270*1a96fba6SXin Li if (defined(sublib.public_pkg_deps)) { 271*1a96fba6SXin Li requires_private += sublib.public_pkg_deps 272*1a96fba6SXin Li } 273*1a96fba6SXin Li if (defined(sublib.all_dependent_pkg_deps)) { 274*1a96fba6SXin Li requires_private += sublib.all_dependent_pkg_deps 275*1a96fba6SXin Li } 276*1a96fba6SXin Li } 277*1a96fba6SXin Li defines = [ "USE_RTTI_FOR_TYPE_TAGS" ] 278*1a96fba6SXin Li libs = [ "-lbrillo" ] 279*1a96fba6SXin Li} 280*1a96fba6SXin Li 281*1a96fba6SXin Liaction("libbrillo") { 282*1a96fba6SXin Li deps = [ 283*1a96fba6SXin Li ":libbrillo-${libbase_ver}_pc", 284*1a96fba6SXin Li ":libbrillo_pc", 285*1a96fba6SXin Li ] 286*1a96fba6SXin Li foreach(sublib, libbrillo_sublibs) { 287*1a96fba6SXin Li deps += [ ":lib" + sublib.library_name ] 288*1a96fba6SXin Li } 289*1a96fba6SXin Li script = "//common-mk/write_args.py" 290*1a96fba6SXin Li outputs = [ "${root_out_dir}/lib/libbrillo.so" ] 291*1a96fba6SXin Li args = [ "--output" ] + outputs + [ "--" ] + [ 292*1a96fba6SXin Li "GROUP", 293*1a96fba6SXin Li "(", 294*1a96fba6SXin Li "AS_NEEDED", 295*1a96fba6SXin Li "(", 296*1a96fba6SXin Li ] 297*1a96fba6SXin Li foreach(sublib, libbrillo_sublibs) { 298*1a96fba6SXin Li args += [ "-l" + sublib.library_name ] 299*1a96fba6SXin Li } 300*1a96fba6SXin Li args += [ 301*1a96fba6SXin Li ")", 302*1a96fba6SXin Li ")", 303*1a96fba6SXin Li ] 304*1a96fba6SXin Li} 305*1a96fba6SXin Li 306*1a96fba6SXin Lilibbrillo_test_deps = [ "libbrillo-http" ] 307*1a96fba6SXin Li 308*1a96fba6SXin Ligenerate_pkg_config("libbrillo-test-${libbase_ver}_pc") { 309*1a96fba6SXin Li name = "libbrillo-test" 310*1a96fba6SXin Li output_name = "libbrillo-test-${libbase_ver}" 311*1a96fba6SXin Li description = "brillo test library" 312*1a96fba6SXin Li version = libbase_ver 313*1a96fba6SXin Li 314*1a96fba6SXin Li # Because libbrillo-test is static, we have to depend directly on everything. 315*1a96fba6SXin Li requires = [ "libbrillo" ] + default_pkg_deps 316*1a96fba6SXin Li foreach(name, libbrillo_test_deps) { 317*1a96fba6SXin Li foreach(t, libbrillo_sublibs) { 318*1a96fba6SXin Li if ("lib" + t.library_name == name) { 319*1a96fba6SXin Li if (defined(t.pkg_deps)) { 320*1a96fba6SXin Li requires += t.pkg_deps 321*1a96fba6SXin Li } 322*1a96fba6SXin Li if (defined(t.public_pkg_deps)) { 323*1a96fba6SXin Li requires += t.public_pkg_deps 324*1a96fba6SXin Li } 325*1a96fba6SXin Li if (defined(t.all_dependent_pkg_deps)) { 326*1a96fba6SXin Li requires += t.all_dependent_pkg_deps 327*1a96fba6SXin Li } 328*1a96fba6SXin Li } 329*1a96fba6SXin Li } 330*1a96fba6SXin Li } 331*1a96fba6SXin Li libs = [ "-lbrillo-test" ] 332*1a96fba6SXin Li} 333*1a96fba6SXin Li 334*1a96fba6SXin Ligenerate_pkg_config("libbrillo-test_pc") { 335*1a96fba6SXin Li name = "libbrillo-test" 336*1a96fba6SXin Li output_name = "libbrillo-test" 337*1a96fba6SXin Li description = "brillo test library" 338*1a96fba6SXin Li version = libbase_ver 339*1a96fba6SXin Li 340*1a96fba6SXin Li # Because libbrillo-test is static, we have to depend directly on everything. 341*1a96fba6SXin Li requires = [ "libbrillo" ] + default_pkg_deps 342*1a96fba6SXin Li foreach(name, libbrillo_test_deps) { 343*1a96fba6SXin Li foreach(t, libbrillo_sublibs) { 344*1a96fba6SXin Li if ("lib" + t.library_name == name) { 345*1a96fba6SXin Li if (defined(t.pkg_deps)) { 346*1a96fba6SXin Li requires += t.pkg_deps 347*1a96fba6SXin Li } 348*1a96fba6SXin Li if (defined(t.public_pkg_deps)) { 349*1a96fba6SXin Li requires += t.public_pkg_deps 350*1a96fba6SXin Li } 351*1a96fba6SXin Li if (defined(t.all_dependent_pkg_deps)) { 352*1a96fba6SXin Li requires += t.all_dependent_pkg_deps 353*1a96fba6SXin Li } 354*1a96fba6SXin Li } 355*1a96fba6SXin Li } 356*1a96fba6SXin Li } 357*1a96fba6SXin Li libs = [ "-lbrillo-test" ] 358*1a96fba6SXin Li} 359*1a96fba6SXin Li 360*1a96fba6SXin Listatic_library("libbrillo-test") { 361*1a96fba6SXin Li configs -= [ "//common-mk:use_thin_archive" ] 362*1a96fba6SXin Li configs += [ 363*1a96fba6SXin Li "//common-mk:nouse_thin_archive", 364*1a96fba6SXin Li ":target_defaults", 365*1a96fba6SXin Li ] 366*1a96fba6SXin Li deps = [ 367*1a96fba6SXin Li ":libbrillo-http", 368*1a96fba6SXin Li ":libbrillo-test-${libbase_ver}_pc", 369*1a96fba6SXin Li ":libbrillo-test_pc", 370*1a96fba6SXin Li ] 371*1a96fba6SXin Li foreach(name, libbrillo_test_deps) { 372*1a96fba6SXin Li deps += [ ":" + name ] 373*1a96fba6SXin Li } 374*1a96fba6SXin Li sources = [ 375*1a96fba6SXin Li "brillo/blkdev_utils/loop_device_fake.cc", 376*1a96fba6SXin Li "brillo/http/http_connection_fake.cc", 377*1a96fba6SXin Li "brillo/http/http_transport_fake.cc", 378*1a96fba6SXin Li "brillo/message_loops/fake_message_loop.cc", 379*1a96fba6SXin Li "brillo/streams/fake_stream.cc", 380*1a96fba6SXin Li "brillo/unittest_utils.cc", 381*1a96fba6SXin Li ] 382*1a96fba6SXin Li if (use.device_mapper) { 383*1a96fba6SXin Li sources += [ "brillo/blkdev_utils/device_mapper_fake.cc" ] 384*1a96fba6SXin Li } 385*1a96fba6SXin Li} 386*1a96fba6SXin Li 387*1a96fba6SXin Lishared_library("libinstallattributes") { 388*1a96fba6SXin Li configs += [ ":target_defaults" ] 389*1a96fba6SXin Li deps = [ 390*1a96fba6SXin Li ":libinstallattributes-includes", 391*1a96fba6SXin Li "../common-mk/external_dependencies:install_attributes-proto", 392*1a96fba6SXin Li ] 393*1a96fba6SXin Li all_dependent_pkg_deps = [ "protobuf-lite" ] 394*1a96fba6SXin Li sources = [ "install_attributes/libinstallattributes.cc" ] 395*1a96fba6SXin Li} 396*1a96fba6SXin Li 397*1a96fba6SXin Lishared_library("libpolicy") { 398*1a96fba6SXin Li configs += [ ":target_defaults" ] 399*1a96fba6SXin Li deps = [ 400*1a96fba6SXin Li ":libinstallattributes", 401*1a96fba6SXin Li ":libpolicy-includes", 402*1a96fba6SXin Li "../common-mk/external_dependencies:policy-protos", 403*1a96fba6SXin Li ] 404*1a96fba6SXin Li all_dependent_pkg_deps = [ 405*1a96fba6SXin Li "openssl", 406*1a96fba6SXin Li "protobuf-lite", 407*1a96fba6SXin Li ] 408*1a96fba6SXin Li ldflags = [ "-Wl,--version-script,${platform2_root}/libbrillo/libpolicy.ver" ] 409*1a96fba6SXin Li sources = [ 410*1a96fba6SXin Li "policy/device_policy.cc", 411*1a96fba6SXin Li "policy/device_policy_impl.cc", 412*1a96fba6SXin Li "policy/libpolicy.cc", 413*1a96fba6SXin Li "policy/policy_util.cc", 414*1a96fba6SXin Li "policy/resilient_policy_util.cc", 415*1a96fba6SXin Li ] 416*1a96fba6SXin Li} 417*1a96fba6SXin Li 418*1a96fba6SXin Lilibbrillo_glib_pkg_deps = [ 419*1a96fba6SXin Li "glib-2.0", 420*1a96fba6SXin Li "gobject-2.0", 421*1a96fba6SXin Li] 422*1a96fba6SXin Liif (use.dbus) { 423*1a96fba6SXin Li libbrillo_glib_pkg_deps += [ 424*1a96fba6SXin Li "dbus-1", 425*1a96fba6SXin Li "dbus-glib-1", 426*1a96fba6SXin Li ] 427*1a96fba6SXin Li} 428*1a96fba6SXin Li 429*1a96fba6SXin Ligenerate_pkg_config("libbrillo-glib-${libbase_ver}_pc") { 430*1a96fba6SXin Li name = "libbrillo-glib" 431*1a96fba6SXin Li output_name = "libbrillo-glib-${libbase_ver}" 432*1a96fba6SXin Li description = "brillo glib wrapper library" 433*1a96fba6SXin Li version = libbase_ver 434*1a96fba6SXin Li requires_private = libbrillo_glib_pkg_deps 435*1a96fba6SXin Li libs = [ "-lbrillo-glib" ] 436*1a96fba6SXin Li} 437*1a96fba6SXin Li 438*1a96fba6SXin Ligenerate_pkg_config("libbrillo-glib_pc") { 439*1a96fba6SXin Li name = "libbrillo-glib" 440*1a96fba6SXin Li output_name = "libbrillo-glib" 441*1a96fba6SXin Li description = "brillo glib wrapper library" 442*1a96fba6SXin Li version = libbase_ver 443*1a96fba6SXin Li requires_private = libbrillo_glib_pkg_deps 444*1a96fba6SXin Li libs = [ "-lbrillo-glib" ] 445*1a96fba6SXin Li} 446*1a96fba6SXin Li 447*1a96fba6SXin Lishared_library("libbrillo-glib") { 448*1a96fba6SXin Li configs += [ ":target_defaults" ] 449*1a96fba6SXin Li deps = [ 450*1a96fba6SXin Li ":libbrillo", 451*1a96fba6SXin Li ":libbrillo-glib-${libbase_ver}_pc", 452*1a96fba6SXin Li ":libbrillo-glib_pc", 453*1a96fba6SXin Li ] 454*1a96fba6SXin Li all_dependent_pkg_deps = libbrillo_glib_pkg_deps 455*1a96fba6SXin Li if (use.dbus) { 456*1a96fba6SXin Li sources = [ 457*1a96fba6SXin Li "brillo/glib/abstract_dbus_service.cc", 458*1a96fba6SXin Li "brillo/glib/dbus.cc", 459*1a96fba6SXin Li ] 460*1a96fba6SXin Li } 461*1a96fba6SXin Li cflags = [ 462*1a96fba6SXin Li # glib uses the deprecated "register" attribute in some header files. 463*1a96fba6SXin Li "-Wno-deprecated-register", 464*1a96fba6SXin Li ] 465*1a96fba6SXin Li} 466*1a96fba6SXin Li 467*1a96fba6SXin Liif (use.test) { 468*1a96fba6SXin Li static_library("libbrillo_static") { 469*1a96fba6SXin Li configs += [ ":target_defaults" ] 470*1a96fba6SXin Li deps = [ 471*1a96fba6SXin Li ":libbrillo-${libbase_ver}_pc", 472*1a96fba6SXin Li ":libbrillo_pc", 473*1a96fba6SXin Li ":libinstallattributes", 474*1a96fba6SXin Li ":libpolicy", 475*1a96fba6SXin Li ] 476*1a96fba6SXin Li foreach(sublib, libbrillo_sublibs) { 477*1a96fba6SXin Li deps += [ ":lib" + sublib.library_name ] 478*1a96fba6SXin Li } 479*1a96fba6SXin Li public_configs = [ ":libbrillo_configs" ] 480*1a96fba6SXin Li } 481*1a96fba6SXin Li proto_library("libbrillo_tests_proto") { 482*1a96fba6SXin Li proto_in_dir = "brillo/dbus" 483*1a96fba6SXin Li proto_out_dir = "include/brillo/dbus" 484*1a96fba6SXin Li sources = [ "${proto_in_dir}/test.proto" ] 485*1a96fba6SXin Li } 486*1a96fba6SXin Li executable("libbrillo_tests") { 487*1a96fba6SXin Li configs += [ 488*1a96fba6SXin Li "//common-mk:test", 489*1a96fba6SXin Li ":target_defaults", 490*1a96fba6SXin Li ] 491*1a96fba6SXin Li deps = [ 492*1a96fba6SXin Li ":libbrillo-glib", 493*1a96fba6SXin Li ":libbrillo-test", 494*1a96fba6SXin Li ":libbrillo_static", 495*1a96fba6SXin Li ":libbrillo_tests_proto", 496*1a96fba6SXin Li ] 497*1a96fba6SXin Li pkg_deps = [ "libchrome-test-${libbase_ver}" ] 498*1a96fba6SXin Li cflags = [ "-Wno-format-zero-length" ] 499*1a96fba6SXin Li 500*1a96fba6SXin Li if (is_debug) { 501*1a96fba6SXin Li cflags += [ 502*1a96fba6SXin Li "-fprofile-arcs", 503*1a96fba6SXin Li "-ftest-coverage", 504*1a96fba6SXin Li "-fno-inline", 505*1a96fba6SXin Li ] 506*1a96fba6SXin Li libs = [ "gcov" ] 507*1a96fba6SXin Li } 508*1a96fba6SXin Li sources = [ 509*1a96fba6SXin Li "brillo/asynchronous_signal_handler_test.cc", 510*1a96fba6SXin Li "brillo/backoff_entry_test.cc", 511*1a96fba6SXin Li "brillo/blkdev_utils/loop_device_test.cc", 512*1a96fba6SXin Li "brillo/data_encoding_test.cc", 513*1a96fba6SXin Li "brillo/enum_flags_test.cc", 514*1a96fba6SXin Li "brillo/errors/error_codes_test.cc", 515*1a96fba6SXin Li "brillo/errors/error_test.cc", 516*1a96fba6SXin Li "brillo/file_utils_test.cc", 517*1a96fba6SXin Li "brillo/files/file_util_test.cc", 518*1a96fba6SXin Li "brillo/files/safe_fd_test.cc", 519*1a96fba6SXin Li "brillo/flag_helper_test.cc", 520*1a96fba6SXin Li "brillo/glib/object_test.cc", 521*1a96fba6SXin Li "brillo/http/http_connection_curl_test.cc", 522*1a96fba6SXin Li "brillo/http/http_form_data_test.cc", 523*1a96fba6SXin Li "brillo/http/http_request_test.cc", 524*1a96fba6SXin Li "brillo/http/http_transport_curl_test.cc", 525*1a96fba6SXin Li "brillo/http/http_utils_test.cc", 526*1a96fba6SXin Li "brillo/key_value_store_test.cc", 527*1a96fba6SXin Li "brillo/map_utils_test.cc", 528*1a96fba6SXin Li "brillo/message_loops/base_message_loop_test.cc", 529*1a96fba6SXin Li "brillo/message_loops/fake_message_loop_test.cc", 530*1a96fba6SXin Li "brillo/message_loops/message_loop_test.cc", 531*1a96fba6SXin Li "brillo/mime_utils_test.cc", 532*1a96fba6SXin Li "brillo/namespaces/mount_namespace_test.cc", 533*1a96fba6SXin Li "brillo/osrelease_reader_test.cc", 534*1a96fba6SXin Li "brillo/process_reaper_test.cc", 535*1a96fba6SXin Li "brillo/process_test.cc", 536*1a96fba6SXin Li "brillo/scoped_umask_test.cc", 537*1a96fba6SXin Li "brillo/secure_blob_test.cc", 538*1a96fba6SXin Li "brillo/streams/fake_stream_test.cc", 539*1a96fba6SXin Li "brillo/streams/file_stream_test.cc", 540*1a96fba6SXin Li "brillo/streams/input_stream_set_test.cc", 541*1a96fba6SXin Li "brillo/streams/memory_containers_test.cc", 542*1a96fba6SXin Li "brillo/streams/memory_stream_test.cc", 543*1a96fba6SXin Li "brillo/streams/openssl_stream_bio_test.cc", 544*1a96fba6SXin Li "brillo/streams/stream_test.cc", 545*1a96fba6SXin Li "brillo/streams/stream_utils_test.cc", 546*1a96fba6SXin Li "brillo/strings/string_utils_test.cc", 547*1a96fba6SXin Li "brillo/timezone/tzif_parser_test.cc", 548*1a96fba6SXin Li "brillo/unittest_utils.cc", 549*1a96fba6SXin Li "brillo/url_utils_test.cc", 550*1a96fba6SXin Li "brillo/value_conversion_test.cc", 551*1a96fba6SXin Li "testrunner.cc", 552*1a96fba6SXin Li ] 553*1a96fba6SXin Li if (use.dbus) { 554*1a96fba6SXin Li sources += [ 555*1a96fba6SXin Li "brillo/any_internal_impl_test.cc", 556*1a96fba6SXin Li "brillo/any_test.cc", 557*1a96fba6SXin Li "brillo/dbus/async_event_sequencer_test.cc", 558*1a96fba6SXin Li "brillo/dbus/data_serialization_test.cc", 559*1a96fba6SXin Li "brillo/dbus/dbus_method_invoker_test.cc", 560*1a96fba6SXin Li "brillo/dbus/dbus_object_test.cc", 561*1a96fba6SXin Li "brillo/dbus/dbus_param_reader_test.cc", 562*1a96fba6SXin Li "brillo/dbus/dbus_param_writer_test.cc", 563*1a96fba6SXin Li "brillo/dbus/dbus_signal_handler_test.cc", 564*1a96fba6SXin Li "brillo/dbus/exported_object_manager_test.cc", 565*1a96fba6SXin Li "brillo/dbus/exported_property_set_test.cc", 566*1a96fba6SXin Li "brillo/http/http_proxy_test.cc", 567*1a96fba6SXin Li "brillo/type_name_undecorate_test.cc", 568*1a96fba6SXin Li "brillo/variant_dictionary_test.cc", 569*1a96fba6SXin Li ] 570*1a96fba6SXin Li } 571*1a96fba6SXin Li if (use.device_mapper) { 572*1a96fba6SXin Li sources += [ "brillo/blkdev_utils/device_mapper_test.cc" ] 573*1a96fba6SXin Li } 574*1a96fba6SXin Li } 575*1a96fba6SXin Li 576*1a96fba6SXin Li executable("libinstallattributes_tests") { 577*1a96fba6SXin Li configs += [ 578*1a96fba6SXin Li "//common-mk:test", 579*1a96fba6SXin Li ":target_defaults", 580*1a96fba6SXin Li ] 581*1a96fba6SXin Li deps = [ 582*1a96fba6SXin Li ":libinstallattributes", 583*1a96fba6SXin Li "../common-mk/external_dependencies:install_attributes-proto", 584*1a96fba6SXin Li "../common-mk/testrunner:testrunner", 585*1a96fba6SXin Li ] 586*1a96fba6SXin Li sources = [ "install_attributes/tests/libinstallattributes_test.cc" ] 587*1a96fba6SXin Li } 588*1a96fba6SXin Li 589*1a96fba6SXin Li executable("libpolicy_tests") { 590*1a96fba6SXin Li configs += [ 591*1a96fba6SXin Li "//common-mk:test", 592*1a96fba6SXin Li ":target_defaults", 593*1a96fba6SXin Li ] 594*1a96fba6SXin Li deps = [ 595*1a96fba6SXin Li ":libinstallattributes", 596*1a96fba6SXin Li ":libpolicy", 597*1a96fba6SXin Li "../common-mk/external_dependencies:install_attributes-proto", 598*1a96fba6SXin Li "../common-mk/external_dependencies:policy-protos", 599*1a96fba6SXin Li "../common-mk/testrunner:testrunner", 600*1a96fba6SXin Li ] 601*1a96fba6SXin Li sources = [ 602*1a96fba6SXin Li "install_attributes/mock_install_attributes_reader.cc", 603*1a96fba6SXin Li "policy/tests/device_policy_impl_test.cc", 604*1a96fba6SXin Li "policy/tests/libpolicy_test.cc", 605*1a96fba6SXin Li "policy/tests/policy_util_test.cc", 606*1a96fba6SXin Li "policy/tests/resilient_policy_util_test.cc", 607*1a96fba6SXin Li ] 608*1a96fba6SXin Li } 609*1a96fba6SXin Li} 610*1a96fba6SXin Li 611*1a96fba6SXin Liif (use.fuzzer) { 612*1a96fba6SXin Li executable("libbrillo_data_encoding_fuzzer") { 613*1a96fba6SXin Li sources = [ "brillo/data_encoding_fuzzer.cc" ] 614*1a96fba6SXin Li 615*1a96fba6SXin Li configs += [ "//common-mk/common_fuzzer:common_fuzzer" ] 616*1a96fba6SXin Li 617*1a96fba6SXin Li pkg_deps = [ "libchrome-${libbase_ver}" ] 618*1a96fba6SXin Li 619*1a96fba6SXin Li include_dirs = [ "../libbrillo" ] 620*1a96fba6SXin Li 621*1a96fba6SXin Li deps = [ ":libbrillo-core" ] 622*1a96fba6SXin Li } 623*1a96fba6SXin Li 624*1a96fba6SXin Li executable("libbrillo_dbus_data_serialization_fuzzer") { 625*1a96fba6SXin Li sources = [ "brillo/dbus/data_serialization_fuzzer.cc" ] 626*1a96fba6SXin Li 627*1a96fba6SXin Li configs += [ "//common-mk/common_fuzzer:common_fuzzer" ] 628*1a96fba6SXin Li 629*1a96fba6SXin Li pkg_deps = [ "libchrome-${libbase_ver}" ] 630*1a96fba6SXin Li 631*1a96fba6SXin Li include_dirs = [ "../libbrillo" ] 632*1a96fba6SXin Li 633*1a96fba6SXin Li deps = [ ":libbrillo-core" ] 634*1a96fba6SXin Li } 635*1a96fba6SXin Li 636*1a96fba6SXin Li executable("libbrillo_http_form_data_fuzzer") { 637*1a96fba6SXin Li sources = [ "brillo/http/http_form_data_fuzzer.cc" ] 638*1a96fba6SXin Li 639*1a96fba6SXin Li configs += [ "//common-mk/common_fuzzer:common_fuzzer" ] 640*1a96fba6SXin Li 641*1a96fba6SXin Li pkg_deps = [ "libchrome-${libbase_ver}" ] 642*1a96fba6SXin Li 643*1a96fba6SXin Li include_dirs = [ "../libbrillo" ] 644*1a96fba6SXin Li 645*1a96fba6SXin Li deps = [ 646*1a96fba6SXin Li ":libbrillo-http", 647*1a96fba6SXin Li ":libbrillo-streams", 648*1a96fba6SXin Li ] 649*1a96fba6SXin Li } 650*1a96fba6SXin Li} 651*1a96fba6SXin Li 652*1a96fba6SXin Licopy("libinstallattributes-includes") { 653*1a96fba6SXin Li sources = [ "install_attributes/libinstallattributes.h" ] 654*1a96fba6SXin Li outputs = 655*1a96fba6SXin Li [ "${root_gen_dir}/include/install_attributes/{{source_file_part}}" ] 656*1a96fba6SXin Li} 657*1a96fba6SXin Li 658*1a96fba6SXin Licopy("libpolicy-includes") { 659*1a96fba6SXin Li sources = [ 660*1a96fba6SXin Li "policy/device_policy.h", 661*1a96fba6SXin Li "policy/device_policy_impl.h", 662*1a96fba6SXin Li "policy/libpolicy.h", 663*1a96fba6SXin Li "policy/mock_device_policy.h", 664*1a96fba6SXin Li "policy/mock_libpolicy.h", 665*1a96fba6SXin Li "policy/policy_util.h", 666*1a96fba6SXin Li "policy/resilient_policy_util.h", 667*1a96fba6SXin Li ] 668*1a96fba6SXin Li outputs = [ "${root_gen_dir}/include/policy/{{source_file_part}}" ] 669*1a96fba6SXin Li} 670