99# This is a makefile fragment that defines the build of flashrom
1010#
1111
12- FLASHROM_VERSION = 0.9.8
13- FLASHROM_TARBALL = flashrom-$(FLASHROM_VERSION ) .tar.bz2
14- FLASHROM_TARBALL_URLS += $(ONIE_MIRROR ) http ://download.flashrom.org/releases/
12+ FLASHROM_VERSION = 1.7.0
13+ FLASHROM_TARBALL = flashrom-v $(FLASHROM_VERSION ) .tar.xz
14+ FLASHROM_TARBALL_URLS += $(ONIE_MIRROR ) https ://download.flashrom.org/releases/
1515FLASHROM_BUILD_DIR = $(USER_BUILDDIR ) /flashrom
16- FLASHROM_DIR = $(FLASHROM_BUILD_DIR ) /flashrom-$(FLASHROM_VERSION )
16+ FLASHROM_DIR = $(FLASHROM_BUILD_DIR ) /flashrom-v$(FLASHROM_VERSION )
17+ FLASHROM_MESON_BUILD = $(FLASHROM_DIR ) /onie-build
18+ FLASHROM_CROSS_FILE = $(FLASHROM_DIR ) /onie-cross.ini
1719
18- FLASHROM_SRCPATCHDIR = $(PATCHDIR ) /flashrom
1920FLASHROM_DOWNLOAD_STAMP = $(DOWNLOADDIR ) /flashrom-download
2021FLASHROM_SOURCE_STAMP = $(USER_STAMPDIR ) /flashrom-source
21- FLASHROM_PATCH_STAMP = $(USER_STAMPDIR ) /flashrom-patch
2222FLASHROM_BUILD_STAMP = $(USER_STAMPDIR ) /flashrom-build
2323FLASHROM_INSTALL_STAMP = $(STAMPDIR ) /flashrom-install
2424FLASHROM_STAMP = $(FLASHROM_SOURCE_STAMP ) \
25- $(FLASHROM_PATCH_STAMP ) \
2625 $(FLASHROM_BUILD_STAMP ) \
2726 $(FLASHROM_INSTALL_STAMP )
2827
2928FLASHROM_PROGRAMS = flashrom
3029
30+ # flashrom 1.x builds with meson/ninja (the old Makefile was dropped after
31+ # 0.9.x). Select the programmers ONIE needs: 'internal' for on-board chipset
32+ # flashing and 'nicintel_eeprom' to program the Intel NIC EEPROM (useful in
33+ # manufacturing to set the eth0 MAC). Both rely only on libpci, so no extra
34+ # USB/FTDI/serial dependencies are pulled in. A platform can override this to
35+ # enable additional programmers.
36+ FLASHROM_PROGRAMMERS ?= internal,nicintel_eeprom
37+
3138PHONY += flashrom flashrom-download flashrom-source flashrom-build \
3239 flashrom-install flashrom-clean flashrom-download-clean
3340
@@ -50,39 +57,48 @@ $(FLASHROM_SOURCE_STAMP): $(USER_TREE_STAMP) $(FLASHROM_DOWNLOAD_STAMP)
5057 $(Q ) $(SCRIPTDIR ) /extract-package $(FLASHROM_BUILD_DIR ) $(DOWNLOADDIR ) /$(FLASHROM_TARBALL )
5158 $(Q ) touch $@
5259
53- # Disable all flashrom methods, except for 'internal' by default.
54- # Individual platforms can define FLASHROM_MAKE_CONFIG_PLATFORM to
55- # enable support for specific flashing methods, for example:
56- #
57- # FLASHROM_MAKE_CONFIG_PLATFORM = CONFIG_XYZ=yes
58- #
59- # See the Makefile in the flashrom source directory for the complete
60- # list of CONFIG_XYZ variables.
61- #
62- # Note: Leaving the Intel NIC EEPROMs enabled, as that could be useful
63- # in manufacturing to program the MAC address for eth0.
64- FLASHROM_MAKE_CONFIG = \
65- CC=$(CROSSPREFIX ) gcc CFLAGS="-Wall -Wshadow $(ONIE_CFLAGS ) " \
66- LDFLAGS="$(ONIE_LDFLAGS ) " \
67- PREFIX=/usr DESTDIR=$(DEV_SYSROOT ) \
68- CONFIG_SERPROG=no CONFIG_RAYER_SPI=no CONFIG_PONY_SPI=no \
69- CONFIG_NIC3COM=no CONFIG_GFXNVIDIA=no CONFIG_SATASII=no \
70- CONFIG_ATAHPT=no CONFIG_ATAVIA=no CONFIG_FT2232_SPI=no \
71- CONFIG_USBBLASTER_SPI=no CONFIG_MSTARDDC_SPI=no CONFIG_PICKIT2_SPI=no \
72- CONFIG_DRKAISER=no CONFIG_NICREALTEK=no CONFIG_NICNATSEMI=no \
73- CONFIG_OGP_SPI=no CONFIG_BUSPIRATE_SPI=no CONFIG_DEDIPROG=no \
74- CONFIG_SATAMV=no CONFIG_IT8212=no CONFIG_PRINT_WIKI=no \
75- $(FLASHROM_MAKE_CONFIG_PLATFORM )
76-
7760flashrom-build : $(FLASHROM_BUILD_STAMP )
7861$(FLASHROM_BUILD_STAMP ) : $(FLASHROM_SOURCE_STAMP ) $(PCIUTILS_BUILD_STAMP ) \
7962 | $(DEV_SYSROOT_INIT_STAMP )
8063 $(Q ) rm -f $@ && eval $(PROFILE_STAMP )
8164 $(Q ) echo " ==== Building flashrom-$( FLASHROM_VERSION) ===="
82- $(Q ) PATH=' $(CROSSBIN):$(PATH)' $(MAKE ) -C $(FLASHROM_DIR ) \
83- $(FLASHROM_MAKE_CONFIG ) all
84- $(Q ) PATH=' $(CROSSBIN):$(PATH)' $(MAKE ) -C $(FLASHROM_DIR ) \
85- $(FLASHROM_MAKE_CONFIG ) install
65+ # Generate a meson cross file describing the ONIE cross toolchain.
66+ # flashrom is only enabled for x86_64 (see arch/x86_64.make).
67+ $(Q ) { \
68+ echo " [binaries]" ; \
69+ echo " c = '$( CROSSPREFIX) gcc'" ; \
70+ echo " ar = '$( CROSSPREFIX) ar'" ; \
71+ echo " strip = '$( CROSSPREFIX) strip'" ; \
72+ echo " pkgconfig = 'pkg-config'" ; \
73+ echo " " ; \
74+ echo " [host_machine]" ; \
75+ echo " system = 'linux'" ; \
76+ echo " cpu_family = 'x86_64'" ; \
77+ echo " cpu = 'x86_64'" ; \
78+ echo " endian = 'little'" ; \
79+ echo " " ; \
80+ echo " [properties]" ; \
81+ echo " sys_root = '$( DEV_SYSROOT) '" ; \
82+ echo " " ; \
83+ echo " [built-in options]" ; \
84+ echo " c_args = ['-Os']" ; \
85+ echo " c_link_args = ['--sysroot=$( DEV_SYSROOT) ']" ; \
86+ } > $(FLASHROM_CROSS_FILE )
87+ $(Q ) rm -rf $(FLASHROM_MESON_BUILD )
88+ $(Q ) cd $(FLASHROM_DIR ) && PATH=' $(CROSSBIN):$(PATH)' $(ONIE_PKG_CONFIG ) \
89+ meson setup --cross-file $(FLASHROM_CROSS_FILE ) --prefix=/usr \
90+ -Dprogrammer=$(FLASHROM_PROGRAMMERS ) \
91+ -Dclassic_cli=enabled \
92+ -Dtests=disabled \
93+ -Dman-pages=disabled \
94+ -Ddocumentation=disabled \
95+ -Dich_descriptors_tool=disabled \
96+ -Dbash_completion=disabled \
97+ -Duse_git_version=disabled \
98+ onie-build
99+ $(Q ) PATH=' $(CROSSBIN):$(PATH)' ninja -C $(FLASHROM_MESON_BUILD )
100+ $(Q ) PATH=' $(CROSSBIN):$(PATH)' DESTDIR=$(DEV_SYSROOT ) \
101+ ninja -C $(FLASHROM_MESON_BUILD ) install
86102 $(Q ) touch $@
87103
88104flashrom-install : $(FLASHROM_INSTALL_STAMP )
0 commit comments