package { default_applicable_licenses: ["external_flashrom_license"], } license { name: "external_flashrom_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-BSD", "SPDX-license-identifier-GPL", "SPDX-license-identifier-GPL-2.0", ], license_text: [ "COPYING", "LICENSE", ], } genrule { name: "flashrom_version.h", srcs: ["VERSION"], cmd: "cat $(in) | xargs printf -- '#define FLASHROM_VERSION \"%s\"\n' > $(out)", out: ["flashrom_version.h"], } cc_defaults { name: "flashrom_defaults", host_supported: true, cflags: [ "-Os", "-std=c99", "-Werror", "-Wshadow", "-Wmissing-prototypes", "-Wwrite-strings", "-Wno-unused-parameter", "-Wno-address-of-packed-member", "-Wno-enum-conversion", "-Wno-missing-braces", "-Wno-error=gnu-pointer-arith", "-D_DEFAULT_SOURCE", "-D_POSIX_C_SOURCE=200809L", "-D_BSD_SOURCE", "-D__BSD_VISIBLE", "-D__XSI_VISIBLE", "-D_NETBSD_SOURCE", "-D_DARWIN_C_SOURCE", "-DCONFIG_DEFAULT_PROGRAMMER_NAME=&programmer_internal", "-DCONFIG_DEFAULT_PROGRAMMER_ARGS=\"\"", "-DCONFIG_DELAY_MINIMUM_SLEEP_US=100000", "-DHAVE_CLOCK_GETTIME=1", "-DHAVE_STRNLEN=1", "-DHAVE_GETOPT_H=1", "-DHAVE_PCIUTILS_PCI_H=1", "-DHAVE_UTSNAME=1", // Only LittleEndian platforms are supported. Feel free to add BigEndian support. "-D__FLASHROM_LITTLE_ENDIAN__", "-include flashrom_version.h", // programmers config "-DCONFIG_DUMMY=1", "-DCONFIG_INTERNAL=1", "-DCONFIG_INTERNAL_DMI=1", "-DCONFIG_IT8212=1", "-DCONFIG_LINUX_MTD=1", "-DCONFIG_LINUX_SPI=1", "-DCONFIG_MEDIATEK_I2C_SPI=1", "-DCONFIG_PARADE_LSPCON=1", "-DCONFIG_RAIDEN_DEBUG_SPI=1", "-DCONFIG_REALTEK_MST_I2C_SPI=1", "-DCONFIG_SERPROG=1", "-DCONFIG_STLINKV3_SPI=1", "-DCONFIG_CROS_EC=1", "-DUSE_BIG_LOCK=1", ], generated_headers: ["flashrom_version.h"], include_dirs: ["external/libusb/include/libusb"], static_libs: ["libpci"], shared_libs: ["libusb"], } cc_library { name: "libflashrom", defaults: ["flashrom_defaults"], host_supported: true, vendor_available: true, visibility: ["//external/vboot_reference"], init_rc: ["flashrom.rc"], target: { linux: { cflags: ["-DIS_WINDOWS=0"], srcs: [ "custom_baud_linux.c", "hwaccess_physmap.c", ], }, linux_x86: { srcs: [ "hwaccess_x86_msr.c", "hwaccess_x86_io.c", ], }, linux_x86_64: { srcs: [ "hwaccess_x86_msr.c", "hwaccess_x86_io.c", ], }, windows: { cflags: ["-DIS_WINDOWS=1"], srcs: ["custom_baud.c"], }, }, arch: { x86: { srcs: [ "processor_enable.c", "chipset_enable.c", "board_enable.c", "cbtable.c", "internal.c", "internal_par.c", "it87spi.c", "sb600spi.c", "superio.c", "amd_imc.c", "wbsio_spi.c", "mcp6x_spi.c", "ichspi.c", "dmi.c", "pcidev.c", "known_boards.c", ], }, x86_64: { srcs: [ "processor_enable.c", "chipset_enable.c", "board_enable.c", "cbtable.c", "internal.c", "internal_par.c", "it87spi.c", "sb600spi.c", "superio.c", "amd_imc.c", "wbsio_spi.c", "mcp6x_spi.c", "ichspi.c", "dmi.c", "pcidev.c", "known_boards.c", ], }, arm: { srcs: [ "board_enable.c", "cbtable.c", "chipset_enable.c", "internal.c", "internal_par.c", "processor_enable.c", "pcidev.c", "known_boards.c", ], }, arm64: { srcs: [ "board_enable.c", "cbtable.c", "chipset_enable.c", "internal.c", "internal_par.c", "processor_enable.c", "pcidev.c", "known_boards.c", ], }, }, srcs: [ "82802ab.c", "at45db.c", "bitbang_spi.c", "edi.c", "en29lv640b.c", "erasure_layout.c", "flashchips.c", "flashrom.c", "fmap.c", "helpers.c", "helpers_fileio.c", "ich_descriptors.c", "jedec.c", "printlock.c", "layout.c", "libflashrom.c", "opaque.c", "parallel.c", "print.c", "programmer.c", "programmer_table.c", "s25f.c", "sfdp.c", "spi25.c", "spi25_statusreg.c", "spi95.c", "spi.c", "sst28sf040.c", "sst49lfxxxc.c", "sst_fwhub.c", "stm50.c", "w29ee011.c", "w39.c", "writeprotect.c", "writeprotect_ranges.c", "udelay.c", "power.c", "action_descriptor.c", "flashchips_crosbl.c", "cros_ec.c", "big_lock.c", "file_lock.c", // Programmers "dummyflasher.c", "it8212.c", "linux_mtd.c", "linux_spi.c", "parade_lspcon.c", "i2c_helper_linux.c", "mediatek_i2c_spi.c", "raiden_debug_spi.c", "usb_device.c", "realtek_mst_i2c_spi.c", "serprog.c", "serial.c", "stlinkv3_spi.c", "usbdev.c", // Platform "platform/endian_little.c", "platform/memaccess.c", ], export_include_dirs: ["include"], static_libs: ["libz"], } cc_binary { name: "flashrom", defaults: ["flashrom_defaults"], vendor: true, srcs: [ "cli_classic.c", "cli_common.c", "cli_output.c", ], shared_libs: ["libflashrom"], }