Peter Marheine has submitted this change. ( https://review.coreboot.org/c/flashrom/+/83673?usp=email )
Change subject: Remove the Makefile ......................................................................
Remove the Makefile
As was described in the version 1.4 release notes, this deletes the Makefile and supporting elements leaving Meson as the only supported buildsystem.
Signed-off-by: Peter Marheine pmarheine@chromium.org Change-Id: Ib3cf22cf636ef9b70527b734ffa34aead2a74edd Reviewed-on: https://review.coreboot.org/c/flashrom/+/83673 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Anastasia Klimchuk aklm@chromium.org --- M .gitignore M MAINTAINERS D Makefile D Makefile.d/arch_test.h D Makefile.d/cc_test.c D Makefile.d/clock_gettime_test.c D Makefile.d/endian_test.h D Makefile.d/ft232h_test.c D Makefile.d/getopt_test.c D Makefile.d/linux_i2c_test.c D Makefile.d/linux_mtd_test.c D Makefile.d/linux_spi_test.c D Makefile.d/os_test.h D Makefile.d/pciutils_test.c D Makefile.d/utsname_test.c D Makefile.include M README.rst D doc/dev_guide/building_with_make.rst M doc/dev_guide/index.rst A doc/release_notes/devel.rst M doc/release_notes/index.rst M test_build.sh D util/ich_descriptors_tool/Makefile 23 files changed, 27 insertions(+), 1,820 deletions(-)
Approvals: build bot (Jenkins): Verified Anastasia Klimchuk: Looks good to me, approved
diff --git a/.gitignore b/.gitignore index 4e38739..d1cf656 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *.d -!Makefile.d/ *.o /.doctrees /.features diff --git a/MAINTAINERS b/MAINTAINERS index 619bc27..c54eceb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -79,13 +79,9 @@ BUILD SYSTEM M: Peter Marheine pmarheine@chromium.org S: Maintained -F: Makefile* F: meson* -F: Makefile*/ F: */meson* -F: */Makefile* F: util/ich_descriptors_tool/meson* -F: util/ich_descriptors_tool/Makefile*
ERASE/WRITE ALGORITHM M: Aarya Chaumal aarya.chaumal@gmail.com diff --git a/Makefile b/Makefile deleted file mode 100644 index 97f56b8..0000000 --- a/Makefile +++ /dev/null @@ -1,1150 +0,0 @@ -# -# This file is part of the flashrom project. -# -# Copyright (C) 2005 coresystems GmbH stepan@coresystems.de -# Copyright (C) 2009,2010,2012 Carl-Daniel Hailfinger -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# - -PROGRAM = flashrom - -############################################################################### -# Defaults for the toolchain. - -# If you want to cross-compile, just run e.g. -# make CC=i586-pc-msdosdjgpp-gcc -# You may have to specify STRIP/AR/RANLIB as well. -# -# Note for anyone editing this Makefile: gnumake will happily ignore any -# changes in this Makefile to variables set on the command line. -STRIP ?= strip -STRIP_ARGS = -s -INSTALL = install -PREFIX ?= /usr/local -MANDIR ?= $(PREFIX)/share/man -BASHCOMPDIR ?= $(PREFIX)/share/bash-completion/completions -CFLAGS ?= -Os -Wall -Wextra -Wno-unused-parameter -Wshadow -Wmissing-prototypes -Wwrite-strings -EXPORTDIR ?= . -RANLIB ?= ranlib -PKG_CONFIG ?= pkg-config -BUILD_DETAILS_FILE ?= build_details.txt -SPHINXBUILD ?= sphinx-build - -# The following parameter changes the default programmer that will be used if there is no -p/--programmer -# argument given when running flashrom. The predefined setting does not enable any default so that every -# user has to declare the programmer he wants to use on every run. The rationale for this to be not set -# (to e.g. the internal programmer) is that forgetting to specify this when working with another programmer -# easily puts the system attached to the default programmer at risk (e.g. you want to flash coreboot to another -# system attached to an external programmer while the default programmer is set to the internal programmer, and -# you forget to use the -p parameter. This would (try to) overwrite the existing firmware of the computer -# running flashrom). Please do not enable this without thinking about the possible consequences. Possible -# values can be found when running 'flashrom --list-supported' under the 'Supported programmers' section. -CONFIG_DEFAULT_PROGRAMMER_NAME ?= -# The following adds a default parameter for the default programmer set above (only). -CONFIG_DEFAULT_PROGRAMMER_ARGS ?= -# Example: compiling with -# make CONFIG_DEFAULT_PROGRAMMER_NAME=serprog CONFIG_DEFAULT_PROGRAMMER_ARGS="dev=/dev/ttyUSB0:1500000" -# would make executing './flashrom' (almost) equivialent to './flashrom -p serprog:dev=/dev/ttyUSB0:1500000'. - -# The user can provide CPP, C and LDFLAGS and the Makefile will extend these -override CPPFLAGS := $(CPPFLAGS) -override CFLAGS := $(CFLAGS) -override LDFLAGS := $(LDFLAGS) - -# If your compiler spits out excessive warnings, run make WARNERROR=no -# You shouldn't have to change this flag. -WARNERROR ?= yes - -ifeq ($(WARNERROR), yes) -override CFLAGS += -Werror -endif - -ifdef LIBS_BASE -PKG_CONFIG_LIBDIR ?= $(LIBS_BASE)/lib/pkgconfig -override CPPFLAGS += -I$(LIBS_BASE)/include -override LDFLAGS += -L$(LIBS_BASE)/lib -Wl,-rpath -Wl,$(LIBS_BASE)/lib -endif - -ifeq ($(CONFIG_STATIC),yes) -override LDFLAGS += -static -endif - -# Set LC_ALL=C to minimize influences of the locale. -# However, this won't work for the majority of relevant commands because they use the $(shell) function and -# GNU make does not relay variables exported within the makefile to their environment. -LC_ALL=C -export LC_ALL - -dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUILD_DETAILS_FILE)) - -# Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr -# in the build details file together with the original stdout output. -debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ',''',$(1)) ; }' >&2; \ - { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE)) - -include Makefile.include - -############################################################################### -# Dependency handling. - -DEPENDS_ON_SERIAL := \ - CONFIG_BUSPIRATE_SPI \ - CONFIG_PONY_SPI \ - CONFIG_SERPROG \ - -DEPENDS_ON_SOCKETS := \ - CONFIG_SERPROG \ - -DEPENDS_ON_BITBANG_SPI := \ - CONFIG_DEVELOPERBOX_SPI \ - CONFIG_INTERNAL_X86 \ - CONFIG_NICINTEL_SPI \ - CONFIG_OGP_SPI \ - CONFIG_PONY_SPI \ - CONFIG_RAYER_SPI \ - -DEPENDS_ON_RAW_MEM_ACCESS := \ - CONFIG_ATAPROMISE \ - CONFIG_DRKAISER \ - CONFIG_GFXNVIDIA \ - CONFIG_INTERNAL \ - CONFIG_INTERNAL_X86 \ - CONFIG_IT8212 \ - CONFIG_NICINTEL \ - CONFIG_NICINTEL_EEPROM \ - CONFIG_NICINTEL_SPI \ - CONFIG_OGP_SPI \ - CONFIG_SATAMV \ - CONFIG_SATASII \ - -DEPENDS_ON_X86_MSR := \ - CONFIG_INTERNAL_X86 \ - -DEPENDS_ON_X86_PORT_IO := \ - CONFIG_ATAHPT \ - CONFIG_ATAPROMISE \ - CONFIG_INTERNAL_X86 \ - CONFIG_NIC3COM \ - CONFIG_NICNATSEMI \ - CONFIG_NICREALTEK \ - CONFIG_RAYER_SPI \ - CONFIG_SATAMV \ - -DEPENDS_ON_LIBPCI := \ - CONFIG_ASM106X \ - CONFIG_ATAHPT \ - CONFIG_ATAPROMISE \ - CONFIG_ATAVIA \ - CONFIG_DRKAISER \ - CONFIG_GFXNVIDIA \ - CONFIG_INTERNAL \ - CONFIG_IT8212 \ - CONFIG_NIC3COM \ - CONFIG_NICINTEL \ - CONFIG_NICINTEL_EEPROM \ - CONFIG_NICINTEL_SPI \ - CONFIG_NICNATSEMI \ - CONFIG_NICREALTEK \ - CONFIG_OGP_SPI \ - CONFIG_SATAMV \ - CONFIG_SATASII \ - -DEPENDS_ON_LIBUSB1 := \ - CONFIG_CH341A_SPI \ - CONFIG_CH347_SPI \ - CONFIG_DEDIPROG \ - CONFIG_DEVELOPERBOX_SPI \ - CONFIG_DIGILENT_SPI \ - CONFIG_PICKIT2_SPI \ - CONFIG_RAIDEN_DEBUG_SPI \ - CONFIG_STLINKV3_SPI \ - CONFIG_DIRTYJTAG_SPI \ - -DEPENDS_ON_LIBFTDI1 := \ - CONFIG_FT2232_SPI \ - CONFIG_USBBLASTER_SPI \ - -DEPENDS_ON_LIBJAYLINK := \ - CONFIG_JLINK_SPI \ - -DEPENDS_ON_LIB_NI845X := \ - CONFIG_NI845X_SPI \ - -DEPENDS_ON_LINUX_I2C := \ - CONFIG_MSTARDDC_SPI \ - CONFIG_PARADE_LSPCON \ - CONFIG_REALTEK_MST_I2C_SPI \ - CONFIG_MEDIATEK_I2C_SPI \ - -ifeq ($(CONFIG_ENABLE_LIBUSB1_PROGRAMMERS), no) -$(call disable_all,$(DEPENDS_ON_LIBUSB1)) -endif - -ifeq ($(CONFIG_ENABLE_LIBPCI_PROGRAMMERS), no) -$(call disable_all,$(DEPENDS_ON_LIBPCI)) -endif - -############################################################################### -# General OS-specific settings. -# 1. Prepare for later by gathering information about host and target OS -# 2. Set compiler flags and parameters according to OSes -# 3. Likewise verify user-supplied CONFIG_* variables. - -# HOST_OS is only used to work around local toolchain issues. -HOST_OS ?= $(shell uname) -ifeq ($(findstring MINGW, $(HOST_OS)), MINGW) -# Explicitly set CC = gcc on MinGW, otherwise: "cc: command not found". -CC = gcc -endif - -CC_WORKING := $(call c_compile_test, Makefile.d/cc_test.c) - -# Configs for dependencies. Can be overwritten by commandline -CONFIG_LIBFTDI1_VERSION := $(call dependency_version, libftdi1) -CONFIG_LIBFTDI1_CFLAGS := $(call dependency_cflags, libftdi1) -CONFIG_LIBFTDI1_LDFLAGS := $(call dependency_ldflags, libftdi1) - -CONFIG_NI845X_LIBRARY_PATH := 'C:\Program Files (x86)\National Instruments\NI-845x\MS Visual C' -CONFIG_LIB_NI845X_CFLAGS := -I$(CONFIG_NI845X_LIBRARY_PATH) -CONFIG_LIB_NI845X_LDFLAGS := -L$(CONFIG_NI845X_LIBRARY_PATH) -lni845x - -CONFIG_LIBJAYLINK_VERSION := $(call dependency_version, libjaylink) -CONFIG_LIBJAYLINK_CFLAGS := $(call dependency_cflags, libjaylink) -CONFIG_LIBJAYLINK_LDFLAGS := $(call dependency_ldflags, libjaylink) - -CONFIG_LIBUSB1_VERSION := $(call dependency_version, libusb-1.0) -CONFIG_LIBUSB1_CFLAGS := $(call dependency_cflags, libusb-1.0) -CONFIG_LIBUSB1_LDFLAGS := $(call dependency_ldflags, libusb-1.0) - -CONFIG_LIBPCI_VERSION := $(call dependency_version, libpci) -CONFIG_LIBPCI_CFLAGS := $(call dependency_cflags, libpci) -CONFIG_LIBPCI_LDFLAGS := $(call dependency_ldflags, libpci) - -CONFIG_SPHINXBUILD_VERSION := -CONFIG_SPHINXBUILD_MAJOR := 0 - - -# Determine the destination OS, architecture and endian -# IMPORTANT: The following lines must be placed before TARGET_OS, ARCH or ENDIAN -# is ever used (of course), but should come after any lines setting CC because -# the lines below use CC itself. -override TARGET_OS := $(call c_macro_test, Makefile.d/os_test.h) -override ARCH := $(call c_macro_test, Makefile.d/arch_test.h) -override ENDIAN := $(call c_macro_test, Makefile.d/endian_test.h) - - -HAS_LIBFTDI1 := $(call find_dependency, libftdi1) -HAS_LIB_NI845X := no -HAS_LIBJAYLINK := $(call find_dependency, libjaylink) -HAS_LIBUSB1 := $(call find_dependency, libusb-1.0) -HAS_LIBPCI := $(call find_dependency, libpci) - -HAS_GETOPT := $(call c_compile_test, Makefile.d/getopt_test.c) -HAS_FT232H := $(call c_compile_test, Makefile.d/ft232h_test.c, $(CONFIG_LIBFTDI1_CFLAGS)) -HAS_UTSNAME := $(call c_compile_test, Makefile.d/utsname_test.c) -HAS_CLOCK_GETTIME := $(call c_compile_test, Makefile.d/clock_gettime_test.c) -HAS_EXTERN_LIBRT := $(call c_link_test, Makefile.d/clock_gettime_test.c, , -lrt) -HAS_LINUX_MTD := $(call c_compile_test, Makefile.d/linux_mtd_test.c) -HAS_LINUX_SPI := $(call c_compile_test, Makefile.d/linux_spi_test.c) -HAS_LINUX_I2C := $(call c_compile_test, Makefile.d/linux_i2c_test.c) -HAS_PCIUTILS := $(call c_compile_test, Makefile.d/pciutils_test.c) -HAS_SERIAL := $(strip $(if $(filter $(TARGET_OS), DOS libpayload), no, yes)) -HAS_SPHINXBUILD := $(shell command -v $(SPHINXBUILD) >/dev/null 2>/dev/null && echo yes || echo no) -EXEC_SUFFIX := $(strip $(if $(filter $(TARGET_OS), DOS MinGW), .exe)) - -override CFLAGS += -Iinclude - -ifeq ($(TARGET_OS), DOS) -# DJGPP has odd uint*_t definitions which cause lots of format string warnings. -override CFLAGS += -Wno-format -override LDFLAGS += -lgetopt -endif - -ifeq ($(TARGET_OS), $(filter $(TARGET_OS), MinGW Cygwin)) -$(call mark_unsupported,$(DEPENDS_ON_RAW_MEM_ACCESS)) -$(call mark_unsupported,$(DEPENDS_ON_X86_PORT_IO)) -$(call mark_unsupported,$(DEPENDS_ON_X86_MSR)) -FEATURE_FLAGS += -D'IS_WINDOWS=1' -else -FEATURE_FLAGS += -D'IS_WINDOWS=0' -endif - -# FIXME: Should we check for Cygwin/MSVC as well? -ifeq ($(TARGET_OS), MinGW) -# MinGW doesn't have the ffs() function, but we can use gcc's __builtin_ffs(). -FLASHROM_CFLAGS += -Dffs=__builtin_ffs -# Some functions provided by Microsoft do not work as described in C99 specifications. This macro fixes that -# for MinGW. See http://sourceforge.net/p/mingw-w64/wiki2/printf%20and%20scanf%20family/ */ -FLASHROM_CFLAGS += -D__USE_MINGW_ANSI_STDIO=1 - -# For now we disable all PCI-based programmers on Windows/MinGW (no libpci). -$(call mark_unsupported,$(DEPENDS_ON_LIBPCI)) -# And programmers that need raw access. -$(call mark_unsupported,$(DEPENDS_ON_RAW_MEM_ACCESS)) - -else # No MinGW - -# NI USB-845x only supported on Windows at the moment -$(call mark_unsupported,CONFIG_NI845X_SPI) - -endif - -ifeq ($(TARGET_OS), libpayload) -ifeq ($(MAKECMDGOALS),) -.DEFAULT_GOAL := libflashrom.a -$(info Setting default goal to libflashrom.a) -endif -$(call mark_unsupported,CONFIG_DUMMY) -# libpayload does not provide the romsize field in struct pci_dev that the atapromise code requires. -$(call mark_unsupported,CONFIG_ATAPROMISE) -# Dediprog, Developerbox, USB-Blaster, PICkit2, CH341A and FT2232 are not supported with libpayload (missing libusb support). -$(call mark_unsupported,$(DEPENDS_ON_LIBUSB1) $(DEPENDS_ON_LIBFTDI) $(DEPENDS_ON_LIBJAYLINK)) -endif - -ifeq ($(HAS_LINUX_MTD), no) -$(call mark_unsupported,CONFIG_LINUX_MTD) -endif - -ifeq ($(HAS_LINUX_SPI), no) -$(call mark_unsupported,CONFIG_LINUX_SPI) -endif - -ifeq ($(HAS_LINUX_I2C), no) -$(call mark_unsupported,DEPENDS_ON_LINUX_I2C) -endif - -ifeq ($(TARGET_OS), Android) -# Android on x86 (currently) does not provide raw PCI port I/O operations. -$(call mark_unsupported,$(DEPENDS_ON_X86_PORT_IO)) -endif - -# Disable the internal programmer on unsupported architectures or systems -ifeq ($(or $(filter $(ARCH), x86), $(filter $(TARGET_OS), Linux)), ) -$(call mark_unsupported,CONFIG_INTERNAL) -endif - -ifeq ($(HAS_LIBPCI), no) -$(call mark_unsupported,$(DEPENDS_ON_LIBPCI)) -endif - -ifeq ($(HAS_LIBFTDI1), no) -$(call mark_unsupported,$(DEPENDS_ON_LIBFTDI1)) -endif - -ifeq ($(HAS_LIB_NI845X), no) -$(call mark_unsupported,$(DEPENDS_ON_LIB_NI845X)) -endif - -ifeq ($(HAS_LIBJAYLINK), no) -$(call mark_unsupported,$(DEPENDS_ON_LIBJAYLINK)) -endif - -ifeq ($(HAS_LIBUSB1), no) -$(call mark_unsupported,$(DEPENDS_ON_LIBUSB1)) -endif - -ifeq ($(HAS_SERIAL), no) -$(call mark_unsupported, $(DEPENDS_ON_SERIAL)) -endif - -ifeq ($(ENDIAN), little) -FEATURE_FLAGS += -D'__FLASHROM_LITTLE_ENDIAN__=1' -endif -ifeq ($(ENDIAN), big) -FEATURE_FLAGS += -D'__FLASHROM_BIG_ENDIAN__=1' -endif - -# PCI port I/O support is unimplemented on PPC/MIPS/SPARC and unavailable on ARM. -# Right now this means the drivers below only work on x86. -ifneq ($(ARCH), x86) -$(call mark_unsupported,$(DEPENDS_ON_X86_MSR)) -$(call mark_unsupported,$(DEPENDS_ON_X86_PORT_IO)) -endif - -# Additionally disable all drivers needing raw access (memory, PCI, port I/O) -# on architectures with unknown raw access properties. -# Right now those architectures are alpha hppa m68k sh s390 -ifneq ($(ARCH), $(filter $(ARCH), x86 mips ppc arm sparc arc e2k)) -$(call mark_unsupported,$(DEPENDS_ON_RAW_MEM_ACCESS)) -endif - -############################################################################### -# Flash chip drivers and bus support infrastructure. - -CHIP_OBJS = jedec.o printlock.o stm50.o w39.o w29ee011.o \ - sst28sf040.o 82802ab.o \ - sst49lfxxxc.o sst_fwhub.o edi.o flashchips.o spi.o spi25.o spi25_statusreg.o \ - spi95.o opaque.o sfdp.o en29lv640b.o at45db.o s25f.o \ - writeprotect.o writeprotect_ranges.o - -############################################################################### -# Library code. - -LIB_OBJS = libflashrom.o layout.o erasure_layout.o flashrom.o parallel.o programmer.o programmer_table.o \ - helpers.o helpers_fileio.o ich_descriptors.o fmap.o platform/endian_$(ENDIAN).o platform/memaccess.o - -ifeq ($(TARGET_OS), DOS) - LIB_OBJS += udelay_dos.o -else - LIB_OBJS += udelay.o -endif - -############################################################################### -# Frontend related stuff. - -CLI_OBJS = cli_classic.o cli_output.o cli_common.o print.o - -VERSION ?= $(shell cat ./VERSION) -VERSION_GIT ?= $(shell git describe 2>/dev/null) -ifneq ($(VERSION_GIT),) - VERSION := "$(VERSION) (git:$(VERSION_GIT))" -else - VERSION := "$(VERSION)" -endif - -# No spaces in release names unless set explicitly -RELEASENAME ?= $(shell echo "$(VERSION)" | sed -e 's/ /_/') - -############################################################################### -# Default settings of CONFIG_* variables. - -# Always enable internal/onboard support for now. -CONFIG_INTERNAL ?= yes -CONFIG_INTERNAL_X86 ?= yes - -# Always enable serprog for now. -CONFIG_SERPROG ?= yes - -# RayeR SPIPGM hardware support -CONFIG_RAYER_SPI ?= yes - -# ChromiumOS servo DUT debug board hardware support -CONFIG_RAIDEN_DEBUG_SPI ?= yes - -# PonyProg2000 SPI hardware support -CONFIG_PONY_SPI ?= yes - -# Always enable 3Com NICs for now. -CONFIG_NIC3COM ?= yes - -# Enable NVIDIA graphics cards. Note: write and erase do not work properly. -CONFIG_GFXNVIDIA ?= yes - -# Always enable SiI SATA controllers for now. -CONFIG_SATASII ?= yes - -# ASMedia ASM106x -CONFIG_ASM106X ?= yes - -# Highpoint (HPT) ATA/RAID controller support. -# IMPORTANT: This code is not yet working! -CONFIG_ATAHPT ?= no - -# VIA VT6421A LPC memory support -CONFIG_ATAVIA ?= yes - -# Promise ATA controller support. -CONFIG_ATAPROMISE ?= no - -# Always enable FT2232 SPI dongles for now. -CONFIG_FT2232_SPI ?= yes - -# Always enable Altera USB-Blaster dongles for now. -CONFIG_USBBLASTER_SPI ?= yes - -# MSTAR DDC support needs more tests/reviews/cleanups. -CONFIG_MSTARDDC_SPI ?= no - -# Always enable PICkit2 SPI dongles for now. -CONFIG_PICKIT2_SPI ?= yes - -# Always enable STLink V3 -CONFIG_STLINKV3_SPI ?= yes - -# Disables Parade LSPCON support until the i2c helper supports multiple systems. -CONFIG_PARADE_LSPCON ?= no - -# Disables MediaTek support until the i2c helper supports multiple systems. -CONFIG_MEDIATEK_I2C_SPI ?= no - -# Disables REALTEK_MST support until the i2c helper supports multiple systems. -CONFIG_REALTEK_MST_I2C_SPI ?= no - -# Always enable dummy tracing for now. -CONFIG_DUMMY ?= yes - -# Always enable Dr. Kaiser for now. -CONFIG_DRKAISER ?= yes - -# Always enable Realtek NICs for now. -CONFIG_NICREALTEK ?= yes - -# Disable National Semiconductor NICs until support is complete and tested. -CONFIG_NICNATSEMI ?= no - -# Always enable Intel NICs for now. -CONFIG_NICINTEL ?= yes - -# Always enable SPI on Intel NICs for now. -CONFIG_NICINTEL_SPI ?= yes - -# Always enable EEPROM on Intel NICs for now. -CONFIG_NICINTEL_EEPROM ?= yes - -# Always enable SPI on OGP cards for now. -CONFIG_OGP_SPI ?= yes - -# Always enable Bus Pirate SPI for now. -CONFIG_BUSPIRATE_SPI ?= yes - -# Always enable Dediprog SF100 for now. -CONFIG_DEDIPROG ?= yes - -# Always enable Developerbox emergency recovery for now. -CONFIG_DEVELOPERBOX_SPI ?= yes - -# Always enable Marvell SATA controllers for now. -CONFIG_SATAMV ?= yes - -# Enable Linux spidev and MTD interfaces by default. We disable them on non-Linux targets. -CONFIG_LINUX_MTD ?= yes -CONFIG_LINUX_SPI ?= yes - -# Always enable ITE IT8212F PATA controllers for now. -CONFIG_IT8212 ?= yes - -# Winchiphead CH341A -CONFIG_CH341A_SPI ?= yes - -# Winchiphead CH347 -CONFIG_CH347_SPI ?= yes - -# Digilent Development board JTAG -CONFIG_DIGILENT_SPI ?= yes - -# DirtyJTAG -CONFIG_DIRTYJTAG_SPI ?= yes - -# Disable J-Link for now. -CONFIG_JLINK_SPI ?= no - -# National Instruments USB-845x is Windows only and needs a proprietary library. -CONFIG_NI845X_SPI ?= no - -# Disable wiki printing by default. It is only useful if you have wiki access. -CONFIG_PRINT_WIKI ?= no - -# Minimum time in microseconds to suspend execution for (rather than polling) -# when a delay is required. Larger values may perform better on machines with -# low timer resolution, at the cost of increased power. -CONFIG_DELAY_MINIMUM_SLEEP_US ?= 100000 - -# Disable all features if CONFIG_NOTHING=yes is given unless CONFIG_EVERYTHING was also set -ifeq ($(CONFIG_NOTHING), yes) - ifeq ($(CONFIG_EVERYTHING), yes) - $(error Setting CONFIG_NOTHING=yes and CONFIG_EVERYTHING=yes does not make sense) - endif - $(foreach var, $(filter CONFIG_%, $(.VARIABLES)),\ - $(if $(filter yes, $($(var))),\ - $(eval $(var)=no))) -endif - -# Enable all features if CONFIG_EVERYTHING=yes is given -ifeq ($(CONFIG_EVERYTHING), yes) -$(foreach var, $(filter CONFIG_%, $(.VARIABLES)),\ - $(if $(filter no, $($(var))),\ - $(eval $(var)=yes))) -endif - -############################################################################### -# Handle CONFIG_* variables that depend on others set (and verified) above. - -# The external DMI decoder (dmidecode) does not work in libpayload. Bail out if the internal one got disabled. -ifeq ($(TARGET_OS), libpayload) -ifeq ($(CONFIG_INTERNAL), yes) -ifeq ($(CONFIG_INTERNAL_DMI), no) -UNSUPPORTED_FEATURES += CONFIG_INTERNAL_DMI=no -else -override CONFIG_INTERNAL_DMI = yes -endif -endif -endif - -# Use internal DMI/SMBIOS decoder by default instead of relying on dmidecode. -CONFIG_INTERNAL_DMI ?= yes - -############################################################################### -# Programmer drivers and programmer support infrastructure. -# Depending on the CONFIG_* variables set and verified above we set compiler flags and parameters below. - -ifdef CONFIG_DEFAULT_PROGRAMMER_NAME -FEATURE_FLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_NAME=&programmer_$(CONFIG_DEFAULT_PROGRAMMER_NAME)' -else -FEATURE_FLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_NAME=NULL' -endif - -FEATURE_FLAGS += -D'CONFIG_DEFAULT_PROGRAMMER_ARGS="$(CONFIG_DEFAULT_PROGRAMMER_ARGS)"' -FEATURE_FLAGS += -D'CONFIG_DELAY_MINIMUM_SLEEP_US=$(CONFIG_DELAY_MINIMUM_SLEEP_US)' - -################################################################################ - -ifeq ($(ARCH), x86) -ifeq ($(CONFIG_INTERNAL) $(CONFIG_INTERNAL_X86), yes yes) -FEATURE_FLAGS += -D'CONFIG_INTERNAL=1' -PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o \ - internal.o internal_par.o it87spi.o sb600spi.o superio.o amd_imc.o wbsio_spi.o mcp6x_spi.o \ - ichspi.o dmi.o known_boards.o -ACTIVE_PROGRAMMERS += internal -endif -else -ifeq ($(CONFIG_INTERNAL), yes) -FEATURE_FLAGS += -D'CONFIG_INTERNAL=1' -PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o internal.o internal_par.o known_boards.o -ACTIVE_PROGRAMMERS += internal -endif -endif - -ifeq ($(CONFIG_INTERNAL_DMI), yes) -FEATURE_FLAGS += -D'CONFIG_INTERNAL_DMI=1' -endif - -ifeq ($(CONFIG_SERPROG), yes) -FEATURE_FLAGS += -D'CONFIG_SERPROG=1' -PROGRAMMER_OBJS += serprog.o -ACTIVE_PROGRAMMERS += serprog -endif - -ifeq ($(CONFIG_RAYER_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_RAYER_SPI=1' -PROGRAMMER_OBJS += rayer_spi.o -ACTIVE_PROGRAMMERS += rayer_spi -endif - -ifeq ($(CONFIG_RAIDEN_DEBUG_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_RAIDEN_DEBUG_SPI=1' -PROGRAMMER_OBJS += raiden_debug_spi.o -ACTIVE_PROGRAMMERS += raiden_debug_spi -endif - -ifeq ($(CONFIG_PONY_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_PONY_SPI=1' -PROGRAMMER_OBJS += pony_spi.o -ACTIVE_PROGRAMMERS += pony_spi -endif - -ifeq ($(CONFIG_NIC3COM), yes) -FEATURE_FLAGS += -D'CONFIG_NIC3COM=1' -PROGRAMMER_OBJS += nic3com.o -ACTIVE_PROGRAMMERS += nic3com -endif - -ifeq ($(CONFIG_GFXNVIDIA), yes) -FEATURE_FLAGS += -D'CONFIG_GFXNVIDIA=1' -PROGRAMMER_OBJS += gfxnvidia.o -ACTIVE_PROGRAMMERS += gfxnvidia -endif - -ifeq ($(CONFIG_SATASII), yes) -FEATURE_FLAGS += -D'CONFIG_SATASII=1' -PROGRAMMER_OBJS += satasii.o -ACTIVE_PROGRAMMERS += satasii -endif - -ifeq ($(CONFIG_ASM106X), yes) -FEATURE_FLAGS += -D'CONFIG_ASM106X=1' -PROGRAMMER_OBJS += asm106x.o -ACTIVE_PROGRAMMERS += asm106x -endif - -ifeq ($(CONFIG_ATAHPT), yes) -FEATURE_FLAGS += -D'CONFIG_ATAHPT=1' -PROGRAMMER_OBJS += atahpt.o -ACTIVE_PROGRAMMERS += atahpt -endif - -ifeq ($(CONFIG_ATAVIA), yes) -FEATURE_FLAGS += -D'CONFIG_ATAVIA=1' -PROGRAMMER_OBJS += atavia.o -ACTIVE_PROGRAMMERS += atavia -endif - -ifeq ($(CONFIG_ATAPROMISE), yes) -FEATURE_FLAGS += -D'CONFIG_ATAPROMISE=1' -PROGRAMMER_OBJS += atapromise.o -ACTIVE_PROGRAMMERS += atapromise -endif - -ifeq ($(CONFIG_IT8212), yes) -FEATURE_FLAGS += -D'CONFIG_IT8212=1' -PROGRAMMER_OBJS += it8212.o -ACTIVE_PROGRAMMERS += it8212 -endif - -ifeq ($(CONFIG_FT2232_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_FT2232_SPI=1' -PROGRAMMER_OBJS += ft2232_spi.o -ACTIVE_PROGRAMMERS += ft2232_spi -endif - -ifeq ($(CONFIG_USBBLASTER_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_USBBLASTER_SPI=1' -PROGRAMMER_OBJS += usbblaster_spi.o -ACTIVE_PROGRAMMERS += usbblaster_spi -endif - -ifeq ($(CONFIG_PICKIT2_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_PICKIT2_SPI=1' -PROGRAMMER_OBJS += pickit2_spi.o -ACTIVE_PROGRAMMERS += pickit2_spi -endif - -ifeq ($(CONFIG_STLINKV3_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_STLINKV3_SPI=1' -PROGRAMMER_OBJS += stlinkv3_spi.o -ACTIVE_PROGRAMMERS += stlinkv3_spi -endif - -ifeq ($(CONFIG_PARADE_LSPCON), yes) -FEATURE_FLAGS += -D'CONFIG_PARADE_LSPCON=1' -PROGRAMMER_OBJS += parade_lspcon.o -ACTIVE_PROGRAMMERS += parade_lspcon -endif - -ifeq ($(CONFIG_MEDIATEK_I2C_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_MEDIATEK_I2C_SPI=1' -PROGRAMMER_OBJS += mediatek_i2c_spi.o -ACTIVE_PROGRAMMERS += mediatek_i2c_spi -endif - -ifeq ($(CONFIG_REALTEK_MST_I2C_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_REALTEK_MST_I2C_SPI=1' -PROGRAMMER_OBJS += realtek_mst_i2c_spi.o -ACTIVE_PROGRAMMERS += realtek_mst_i2c_spi -endif - -ifeq ($(CONFIG_DUMMY), yes) -FEATURE_FLAGS += -D'CONFIG_DUMMY=1' -PROGRAMMER_OBJS += dummyflasher.o -ACTIVE_PROGRAMMERS += dummyflasher -endif - -ifeq ($(CONFIG_DRKAISER), yes) -FEATURE_FLAGS += -D'CONFIG_DRKAISER=1' -PROGRAMMER_OBJS += drkaiser.o -ACTIVE_PROGRAMMERS += drkaiser -endif - -ifeq ($(CONFIG_NICREALTEK), yes) -FEATURE_FLAGS += -D'CONFIG_NICREALTEK=1' -PROGRAMMER_OBJS += nicrealtek.o -ACTIVE_PROGRAMMERS += nicrealtek -endif - -ifeq ($(CONFIG_NICNATSEMI), yes) -FEATURE_FLAGS += -D'CONFIG_NICNATSEMI=1' -PROGRAMMER_OBJS += nicnatsemi.o -ACTIVE_PROGRAMMERS += nicnatsemi -endif - -ifeq ($(CONFIG_NICINTEL), yes) -FEATURE_FLAGS += -D'CONFIG_NICINTEL=1' -PROGRAMMER_OBJS += nicintel.o -ACTIVE_PROGRAMMERS += nicintel -endif - -ifeq ($(CONFIG_NICINTEL_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_NICINTEL_SPI=1' -PROGRAMMER_OBJS += nicintel_spi.o -ACTIVE_PROGRAMMERS += nicintel_spi -endif - -ifeq ($(CONFIG_NICINTEL_EEPROM), yes) -FEATURE_FLAGS += -D'CONFIG_NICINTEL_EEPROM=1' -PROGRAMMER_OBJS += nicintel_eeprom.o -ACTIVE_PROGRAMMERS += nicintel_eeprom -endif - -ifeq ($(CONFIG_OGP_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_OGP_SPI=1' -PROGRAMMER_OBJS += ogp_spi.o -ACTIVE_PROGRAMMERS += ogp_spi -endif - -ifeq ($(CONFIG_BUSPIRATE_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_BUSPIRATE_SPI=1' -PROGRAMMER_OBJS += buspirate_spi.o -ACTIVE_PROGRAMMERS += buspirate_spi -endif - -ifeq ($(CONFIG_DEDIPROG), yes) -FEATURE_FLAGS += -D'CONFIG_DEDIPROG=1' -PROGRAMMER_OBJS += dediprog.o -ACTIVE_PROGRAMMERS += dediprog -endif - -ifeq ($(CONFIG_DEVELOPERBOX_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_DEVELOPERBOX_SPI=1' -PROGRAMMER_OBJS += developerbox_spi.o -ACTIVE_PROGRAMMERS += developerbox_spi -endif - -ifeq ($(CONFIG_SATAMV), yes) -FEATURE_FLAGS += -D'CONFIG_SATAMV=1' -PROGRAMMER_OBJS += satamv.o -ACTIVE_PROGRAMMERS += satamv -endif - -ifeq ($(CONFIG_LINUX_MTD), yes) -FEATURE_FLAGS += -D'CONFIG_LINUX_MTD=1' -PROGRAMMER_OBJS += linux_mtd.o -ACTIVE_PROGRAMMERS += linux_mtd -endif - -ifeq ($(CONFIG_LINUX_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_LINUX_SPI=1' -PROGRAMMER_OBJS += linux_spi.o -ACTIVE_PROGRAMMERS += linux_spi -endif - -ifeq ($(CONFIG_MSTARDDC_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_MSTARDDC_SPI=1' -PROGRAMMER_OBJS += mstarddc_spi.o -ACTIVE_PROGRAMMERS += mstarddc_spi -endif - -ifeq ($(CONFIG_CH341A_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_CH341A_SPI=1' -PROGRAMMER_OBJS += ch341a_spi.o -ACTIVE_PROGRAMMERS += ch341a_spi -endif - -ifeq ($(CONFIG_CH347_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_CH347_SPI=1' -PROGRAMMER_OBJS += ch347_spi.o -endif - -ifeq ($(CONFIG_DIGILENT_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_DIGILENT_SPI=1' -PROGRAMMER_OBJS += digilent_spi.o -ACTIVE_PROGRAMMERS += digilent_spi -endif - -ifeq ($(CONFIG_DIRTYJTAG_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_DIRTYJTAG_SPI=1' -PROGRAMMER_OBJS += dirtyjtag_spi.o -ACTIVE_PROGRAMMERS += dirtyjtag_spi -endif - -ifeq ($(CONFIG_JLINK_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_JLINK_SPI=1' -PROGRAMMER_OBJS += jlink_spi.o -ACTIVE_PROGRAMMERS += jlink_spi -endif - -ifeq ($(CONFIG_NI845X_SPI), yes) -FEATURE_FLAGS += -D'CONFIG_NI845X_SPI=1' -PROGRAMMER_OBJS += ni845x_spi.o -ACTIVE_PROGRAMMERS += ni845x_spi -endif - -USE_BITBANG_SPI := $(if $(call filter_deps,$(DEPENDS_ON_BITBANG_SPI)),yes,no) -ifeq ($(USE_BITBANG_SPI), yes) -LIB_OBJS += bitbang_spi.o -endif - -USE_LINUX_I2C := $(if $(call filter_deps,$(DEPENDS_ON_LINUX_I2C)),yes,no) -ifeq ($(USE_LINUX_I2C), yes) -LIB_OBJS += i2c_helper_linux.o -endif - -USE_SERIAL := $(if $(call filter_deps,$(DEPENDS_ON_SERIAL)),yes,no) -ifeq ($(USE_SERIAL), yes) -LIB_OBJS += serial.o -ifeq ($(TARGET_OS), Linux) -LIB_OBJS += custom_baud_linux.o -else -ifeq ($(TARGET_OS), Darwin) -LIB_OBJS += custom_baud_darwin.o -else -LIB_OBJS += custom_baud.o -endif -endif -endif - -USE_SOCKETS := $(if $(call filter_deps,$(DEPENDS_ON_SOCKETS)),yes,no) -ifeq ($(USE_SOCKETS), yes) -ifeq ($(TARGET_OS), SunOS) -override LDFLAGS += -lsocket -lnsl -endif -endif - -USE_X86_MSR := $(if $(call filter_deps,$(DEPENDS_ON_X86_MSR)),yes,no) -ifeq ($(USE_X86_MSR), yes) -PROGRAMMER_OBJS += hwaccess_x86_msr.o -endif - -USE_X86_PORT_IO := $(if $(call filter_deps,$(DEPENDS_ON_X86_PORT_IO)),yes,no) -ifeq ($(USE_X86_PORT_IO), yes) -FEATURE_FLAGS += -D'__FLASHROM_HAVE_OUTB__=1' -PROGRAMMER_OBJS += hwaccess_x86_io.o -endif - -USE_RAW_MEM_ACCESS := $(if $(call filter_deps,$(DEPENDS_ON_RAW_MEM_ACCESS)),yes,no) -ifeq ($(USE_RAW_MEM_ACCESS), yes) -PROGRAMMER_OBJS += hwaccess_physmap.o -endif - -ifeq (Darwin yes, $(TARGET_OS) $(filter $(USE_X86_MSR) $(USE_X86_PORT_IO) $(USE_RAW_MEM_ACCESS), yes)) -override LDFLAGS += -framework IOKit -framework DirectHW -endif - -ifeq (NetBSD yes, $(TARGET_OS) $(filter $(USE_X86_MSR) $(USE_X86_PORT_IO), yes)) -override LDFLAGS += -l$(shell uname -p) -endif - -ifeq (OpenBSD yes, $(TARGET_OS) $(filter $(USE_X86_MSR) $(USE_X86_PORT_IO), yes)) -override LDFLAGS += -l$(shell uname -m) -endif - -USE_LIBPCI := $(if $(call filter_deps,$(DEPENDS_ON_LIBPCI)),yes,no) -ifeq ($(USE_LIBPCI), yes) -PROGRAMMER_OBJS += pcidev.o -override CFLAGS += $(CONFIG_LIBPCI_CFLAGS) -override LDFLAGS += $(CONFIG_LIBPCI_LDFLAGS) -endif - -USE_LIBUSB1 := $(if $(call filter_deps,$(DEPENDS_ON_LIBUSB1)),yes,no) -ifeq ($(USE_LIBUSB1), yes) -override CFLAGS += $(CONFIG_LIBUSB1_CFLAGS) -override LDFLAGS += $(CONFIG_LIBUSB1_LDFLAGS) -PROGRAMMER_OBJS +=usbdev.o usb_device.o -endif - -USE_LIBFTDI1 := $(if $(call filter_deps,$(DEPENDS_ON_LIBFTDI1)),yes,no) -ifeq ($(USE_LIBFTDI1), yes) -override CFLAGS += $(CONFIG_LIBFTDI1_CFLAGS) -override LDFLAGS += $(CONFIG_LIBFTDI1_LDFLAGS) -ifeq ($(HAS_FT232H), yes) -FEATURE_FLAGS += -D'HAVE_FT232H=1' -endif -endif - -USE_LIB_NI845X := $(if $(call filter_deps,$(DEPENDS_ON_LIB_NI845X)),yes,no) -ifeq ($(USE_LIB_NI845X), yes) -override CFLAGS += $(CONFIG_LIB_NI845X_CFLAGS) -override LDFLAGS += $(CONFIG_LIB_NI845X_LDFLAGS) -endif - -USE_LIBJAYLINK := $(if $(call filter_deps,$(DEPENDS_ON_LIBJAYLINK)),yes,no) -ifeq ($(USE_LIBJAYLINK), yes) -override CFLAGS += $(CONFIG_LIBJAYLINK_CFLAGS) -override LDFLAGS += $(CONFIG_LIBJAYLINK_LDFLAGS) -endif - -ifeq ($(CONFIG_PRINT_WIKI), yes) -FEATURE_FLAGS += -D'CONFIG_PRINT_WIKI=1' -CLI_OBJS += print_wiki.o -endif - -ifeq ($(HAS_UTSNAME), yes) -FEATURE_FLAGS += -D'HAVE_UTSNAME=1' -endif - -ifeq ($(HAS_CLOCK_GETTIME), yes) -FEATURE_FLAGS += -D'HAVE_CLOCK_GETTIME=1' -ifeq ($(HAS_EXTERN_LIBRT), yes) -override LDFLAGS += -lrt -endif -endif - -ifeq ($(HAS_GETOPT), yes) -override CFLAGS += -D'HAVE_GETOPT_H=1' -endif - -ifeq ($(HAS_PCIUTILS), yes) -override CFLAGS += -D'HAVE_PCIUTILS_PCI_H=1' -endif - -OBJS = $(CHIP_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS) - -ifeq ($(HAS_SPHINXBUILD), yes) -override CONFIG_SPHINXBUILD_VERSION := $(shell $(SPHINXBUILD) --version | cut -d' ' -f2 ) -override CONFIG_SPHINXBUILD_MAJOR := $(shell echo "$(CONFIG_SPHINXBUILD_VERSION)" | cut -d'.' -f1 ) -endif - - -all: $(PROGRAM)$(EXEC_SUFFIX) $(call has_dependency, $(HAS_SPHINXBUILD), man8/$(PROGRAM).8) -ifeq ($(ARCH), x86) - @+$(MAKE) -C util/ich_descriptors_tool/ HOST_OS=$(HOST_OS) TARGET_OS=$(TARGET_OS) -endif - -config: - @echo Building flashrom version $(VERSION) - @printf "C compiler found: " - @if [ $(CC_WORKING) = yes ]; \ - then $(CC) --version 2>/dev/null | head -1; \ - else echo no; echo Aborting.; exit 1; fi - @echo "Target arch: $(ARCH)" - @if [ $(ARCH) = unknown ]; then echo Aborting.; exit 1; fi - @echo "Target OS: $(TARGET_OS)" - @if [ $(TARGET_OS) = unknown ]; then echo Aborting.; exit 1; fi - @if [ $(TARGET_OS) = libpayload ] && ! $(CC) --version 2>&1 | grep -q coreboot; then \ - echo " Warning: It seems you are not using coreboot's reference compiler."; \ - echo " This might work but usually does not, please beware."; fi - @echo "Target endian: $(ENDIAN)" - @if [ $(ENDIAN) = unknown ]; then echo Aborting.; exit 1; fi - @echo Dependency libpci found: $(HAS_LIBPCI) $(CONFIG_LIBPCI_VERSION) - @if [ $(HAS_LIBPCI) = yes ]; then \ - echo " CFLAGS: $(CONFIG_LIBPCI_CFLAGS)"; \ - echo " LDFLAGS: $(CONFIG_LIBPCI_LDFLAGS)"; \ - fi - @echo Dependency libusb1 found: $(HAS_LIBUSB1) $(CONFIG_LIBUSB1_VERSION) - @if [ $(HAS_LIBUSB1) = yes ]; then \ - echo " CFLAGS: $(CONFIG_LIBUSB1_CFLAGS)"; \ - echo " LDFLAGS: $(CONFIG_LIBUSB1_LDFLAGS)"; \ - fi - @echo Dependency libjaylink found: $(HAS_LIBJAYLINK) $(CONFIG_LIBJAYLINK_VERSION) - @if [ $(HAS_LIBJAYLINK) = yes ]; then \ - echo " CFLAGS: $(CONFIG_LIBJAYLINK_CFLAGS)"; \ - echo " LDFLAGS: $(CONFIG_LIBJAYLINK_LDFLAGS)"; \ - fi - @echo Dependency NI-845x found: $(HAS_LIB_NI845X) - @if [ $(HAS_LIB_NI845X) = yes ]; then \ - echo " CFLAGS: $(CONFIG_LIB_NI845X_CFLAGS)"; \ - echo " LDFLAGS: $(CONFIG_LIB_NI845X_LDFLAGS)"; \ - fi - @echo Dependency libftdi1 found: $(HAS_LIBFTDI1) $(CONFIG_LIBFTDI1_VERSION) - @if [ $(HAS_LIBFTDI1) = yes ]; then \ - echo " Checking for "TYPE_232H" in "enum ftdi_chip_type": $(HAS_FT232H)"; \ - echo " CFLAGS: $(CONFIG_LIBFTDI1_CFLAGS)"; \ - echo " LDFLAGS: $(CONFIG_LIBFTDI1_LDFLAGS)"; \ - fi - @echo "Checking for header "getopt.h": $(HAS_GETOPT)" - @echo "Checking for header "mtd/mtd-user.h": $(HAS_LINUX_MTD)" - @echo "Checking for header "linux/spi/spidev.h": $(HAS_LINUX_SPI)" - @echo "Checking for header "linux/i2c-dev.h": $(HAS_LINUX_I2C)" - @echo "Checking for header "linux/i2c.h": $(HAS_LINUX_I2C)" - @echo "Checking for header "sys/utsname.h": $(HAS_UTSNAME)" - @echo "Checking for header "pciutils/pci.h": $(HAS_PCIUTILS)" - @echo "Checking for function "clock_gettime": $(HAS_CLOCK_GETTIME)" - @echo "Checking for external "librt": $(HAS_EXTERN_LIBRT)" - @if ! [ "$(PROGRAMMER_OBJS)" ]; then \ - echo "You have to enable at least one programmer driver!"; \ - exit 1; \ - fi - @if [ "$(UNSUPPORTED_FEATURES)" ]; then \ - echo "The following features are unavailable on your machine: $(UNSUPPORTED_FEATURES)" \ - exit 1; \ - fi - @echo "Checking for program "sphinx-build": $(HAS_SPHINXBUILD) $(CONFIG_SPHINXBUILD_VERSION)" - -%.o: %.c | config - $(CC) -MMD $(CFLAGS) $(CPPFLAGS) $(FLASHROM_CFLAGS) $(FEATURE_FLAGS) -D'FLASHROM_VERSION=$(VERSION)' -o $@ -c $< - -$(PROGRAM)$(EXEC_SUFFIX): $(CLI_OBJS) libflashrom.a - $(CC) -o $@ $^ $(LDFLAGS) - -libflashrom.a: $(OBJS) - $(AR) rcs $@ $^ - $(RANLIB) $@ - -man8/$(PROGRAM).8: doc/* -# When using sphinx-build prior to version 4.x, man pages are output -# to a directory named "8" instead of expected "man8". We fix that -# by renaming "8" to "man8" and creating symlink "8" pointing to "man8". - @if [ "$(HAS_SPHINXBUILD)" = "yes" ]; then \ - $(SPHINXBUILD) -Drelease=$(VERSION) -b man doc .; \ - if [ "$(CONFIG_SPHINXBUILD_MAJOR)" -lt 4 ]; then \ - if [ -d 8 -a ! -L 8 ]; then \ - rm -rf man8; \ - mv 8 man8; \ - ln -s man8 8; \ - fi \ - fi \ - else \ - echo "$(SPHINXBUILD) not found. Can't build man-page"; \ - exit 1; \ - fi - -$(PROGRAM).bash: util/$(PROGRAM).bash-completion.tmpl - @# Add to the bash completion file a list of enabled programmers. - sed -e 's/@PROGRAMMERS@/$(ACTIVE_PROGRAMMERS)/g' <$< >$@ - -strip: $(PROGRAM)$(EXEC_SUFFIX) - $(STRIP) $(STRIP_ARGS) $(PROGRAM)$(EXEC_SUFFIX) - -# Make sure to add all names of generated binaries here. -# This includes all frontends and libflashrom. -# We don't use EXEC_SUFFIX here because we want to clean everything. -clean: - rm -rf $(PROGRAM) $(PROGRAM).exe libflashrom.a $(filter-out Makefile.d, $(wildcard *.d *.o platform/*.d platform/*.o)) \ - man8 8 .doctrees $(PROGRAM).bash $(BUILD_DETAILS_FILE) - @+$(MAKE) -C util/ich_descriptors_tool/ clean - -install: $(PROGRAM)$(EXEC_SUFFIX) $(call has_dependency, $(HAS_SPHINXBUILD), man8/$(PROGRAM).8) $(PROGRAM).bash - mkdir -p $(DESTDIR)$(PREFIX)/sbin - $(INSTALL) -m 0755 $(PROGRAM)$(EXEC_SUFFIX) $(DESTDIR)$(PREFIX)/sbin - mkdir -p $(DESTDIR)$(BASHCOMPDIR) - $(INSTALL) -m 0644 $(PROGRAM).bash $(DESTDIR)$(BASHCOMPDIR) -ifeq ($(HAS_SPHINXBUILD), yes) - mkdir -p $(DESTDIR)$(MANDIR)/man8 - $(INSTALL) -m 0644 man8/$(PROGRAM).8 $(DESTDIR)$(MANDIR)/man8 -endif - -libinstall: libflashrom.a include/libflashrom.h - mkdir -p $(DESTDIR)$(PREFIX)/lib - $(INSTALL) -m 0644 libflashrom.a $(DESTDIR)$(PREFIX)/lib - mkdir -p $(DESTDIR)$(PREFIX)/include - $(INSTALL) -m 0644 include/libflashrom.h $(DESTDIR)$(PREFIX)/include - -_export: man8/$(PROGRAM).8 - @rm -rf "$(EXPORTDIR)/flashrom-$(RELEASENAME)" - @mkdir -p "$(EXPORTDIR)/flashrom-$(RELEASENAME)" - @git archive HEAD | tar -x -C "$(EXPORTDIR)/flashrom-$(RELEASENAME)" -# Generate versioninfo.inc containing metadata that would not be available in exported sources otherwise. - @echo "VERSION = $(VERSION)" > "$(EXPORTDIR)/flashrom-$(RELEASENAME)/versioninfo.inc" -# Restore modification date of all tracked files not marked 'export-ignore' in .gitattributes. -# sed is required to filter out file names having the attribute set. -# The sed program saves the file name in the hold buffer and then checks if the respective value is 'set'. -# If so it ignores the rest of the program, which otherwise restores the file name and prints it. - @git ls-tree -r -z -t --full-name --name-only HEAD | \ - git check-attr -z --stdin export-ignore | \ - sed -zne 'x;n;n;{/^set$$/b;};x;p;' | \ - xargs -0 sh -c 'for f; do \ - touch -d $$(git log --pretty=format:%cI -1 HEAD -- "$$f") \ - "$(EXPORTDIR)/flashrom-$(RELEASENAME)/$$f"; \ - done' dummy_arg0 - -export: _export - @echo "Exported $(EXPORTDIR)/flashrom-$(RELEASENAME)/" - - -# TAROPTIONS reduces information leakage from the packager's system. -# If other tar programs support command line arguments for setting uid/gid of -# stored files, they can be handled here as well. -TAROPTIONS = $(shell LC_ALL=C tar --version|grep -q GNU && echo "--owner=root --group=root") - -tarball: _export - @tar -cj --format=ustar -f "$(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2" -C $(EXPORTDIR)/ \ - $(TAROPTIONS) "flashrom-$(RELEASENAME)/" -# Delete the exported directory again because it is most likely what's expected by the user. - @rm -rf "$(EXPORTDIR)/flashrom-$(RELEASENAME)" - @echo Created "$(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2" - -libpayload: clean - make CC="CC=i386-elf-gcc lpgcc" AR=i386-elf-ar RANLIB=i386-elf-ranlib - -.PHONY: all install clean distclean config _export export tarball libpayload - -# Disable implicit suffixes and built-in rules (for performance and profit) -.SUFFIXES: - --include $(OBJS:.o=.d) diff --git a/Makefile.d/arch_test.h b/Makefile.d/arch_test.h deleted file mode 100644 index 654f8e5..0000000 --- a/Makefile.d/arch_test.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is part of the flashrom project. - * - * Copyright (C) 2011 Carl-Daniel Hailfinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -/* - * This file determinate the target architecture. It should only be used - * by the Makefile - */ - -#if defined (__i386__) || defined (__x86_64__) || defined(__amd64__) - #define __FLASHROM_ARCH__ "x86" -#elif defined (__mips) || defined (__mips__) || defined (__MIPS__) || defined (mips) - #define __FLASHROM_ARCH__ "mips" -#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || \ - defined(__ppc__) || defined(__ppc64__) || defined(_M_PPC) || defined(_ARCH_PPC) || \ - defined(_ARCH_PPC64) || defined(__ppc) - #define __FLASHROM_ARCH__ "ppc" -#elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_ARM) || defined(_M_ARM) || defined(__arm) || \ - defined(__aarch64__) - #define __FLASHROM_ARCH__ "arm" -#elif defined (__sparc__) || defined (__sparc) - #define __FLASHROM_ARCH__ "sparc" -#elif defined (__alpha__) - #define __FLASHROM_ARCH__ "alpha" -#elif defined (__hppa__) || defined (__hppa) - #define __FLASHROM_ARCH__ "hppa" -#elif defined (__m68k__) - #define __FLASHROM_ARCH__ "m68k" -#elif defined (__riscv) - #define __FLASHROM_ARCH__ "riscv" -#elif defined (__sh__) - #define __FLASHROM_ARCH__ "sh" -#elif defined(__s390__) || defined(__s390x__) || defined(__zarch__) - #define __FLASHROM_ARCH__ "s390" -#elif defined(__arc__) - #define __FLASHROM_ARCH__ "arc" -#elif defined(__ARC64__) - #define __FLASHROM_ARCH__ "arc64" -#elif defined(__e2k__) - #define __FLASHROM_ARCH__ "e2k" -#else - #define __FLASHROM_ARCH__ "unknown" -#endif -__FLASHROM_ARCH__ diff --git a/Makefile.d/cc_test.c b/Makefile.d/cc_test.c deleted file mode 100644 index 0610964..0000000 --- a/Makefile.d/cc_test.c +++ /dev/null @@ -1,6 +0,0 @@ -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/clock_gettime_test.c b/Makefile.d/clock_gettime_test.c deleted file mode 100644 index 000aa42..0000000 --- a/Makefile.d/clock_gettime_test.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <time.h> -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - struct timespec res; - clock_gettime(CLOCK_REALTIME, &res); - return 0; -} diff --git a/Makefile.d/endian_test.h b/Makefile.d/endian_test.h deleted file mode 100644 index 36658b3..0000000 --- a/Makefile.d/endian_test.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of the flashrom project. - * - * Copyright (C) 2011 Carl-Daniel Hailfinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -/* - * This file determinate the target endian. It should only be used my the Makefile - */ - -#if defined (__i386__) || defined (__x86_64__) || defined(__amd64__) -/* All x86 is little-endian. */ -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#elif defined (__mips) || defined (__mips__) || defined (__MIPS__) || defined (mips) -/* MIPS can be either endian. */ -#if defined (__MIPSEL) || defined (__MIPSEL__) || defined (_MIPSEL) || defined (MIPSEL) -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#elif defined (__MIPSEB) || defined (__MIPSEB__) || defined (_MIPSEB) || defined (MIPSEB) -#define __FLASHROM_BIG_ENDIAN__ 1 -#endif -#elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || \ - defined(__ppc__) || defined(__ppc64__) || defined(_M_PPC) || defined(_ARCH_PPC) || \ - defined(_ARCH_PPC64) || defined(__ppc) -/* PowerPC can be either endian. */ -#if defined (_BIG_ENDIAN) || defined (__BIG_ENDIAN__) -#define __FLASHROM_BIG_ENDIAN__ 1 -#elif defined (_LITTLE_ENDIAN) || defined (__LITTLE_ENDIAN__) -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#endif -#elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_ARM) || defined(_M_ARM) || defined(__arm) || \ - defined(__aarch64__) -/* ARM can be either endian. */ -#if defined (__ARMEB__) || defined (__BIG_ENDIAN__) -#define __FLASHROM_BIG_ENDIAN__ 1 -#elif defined (__ARMEL__) || defined (__LITTLE_ENDIAN__) -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#endif -#elif defined (__sparc__) || defined (__sparc) -/* SPARC is big endian in general (but allows to access data in little endian too). */ -#define __FLASHROM_BIG_ENDIAN__ 1 -#elif defined(__arc__) -#if defined(__BIG_ENDIAN__) -#define __FLASHROM_BIG_ENDIAN__ 1 -#else -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#endif -#endif - -#if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__) -/* If architecture-specific approaches fail try generic variants. First: BSD (works about everywhere). */ -#if !(defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__WINDOWS__)) -#include <sys/param.h> -#if defined (__BYTE_ORDER) -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define __FLASHROM_LITTLE_ENDIAN__ -#elif __BYTE_ORDER == __BIG_ENDIAN -#define __FLASHROM_BIG_ENDIAN__ -#else -#error Unknown byte order! -#endif -#endif /* defined __BYTE_ORDER */ -#endif /* !IS_WINDOWS */ -#if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__) -/* Nonstandard libc-specific macros for determining endianness. */ -/* musl provides an endian.h as well... but it can not be detected from within C. */ -#if defined(__GLIBC__) -#include <endian.h> -#if BYTE_ORDER == LITTLE_ENDIAN -#define __FLASHROM_LITTLE_ENDIAN__ 1 -#elif BYTE_ORDER == BIG_ENDIAN -#define __FLASHROM_BIG_ENDIAN__ 1 -#endif -#endif -#endif -#endif -#if defined(__FLASHROM_LITTLE_ENDIAN__) -"little" -#else -"big" -#endif diff --git a/Makefile.d/ft232h_test.c b/Makefile.d/ft232h_test.c deleted file mode 100644 index 21bc995..0000000 --- a/Makefile.d/ft232h_test.c +++ /dev/null @@ -1,3 +0,0 @@ -#include <ftdi.h> - -enum ftdi_chip_type type = TYPE_232H; \ No newline at end of file diff --git a/Makefile.d/getopt_test.c b/Makefile.d/getopt_test.c deleted file mode 100644 index 9f72608..0000000 --- a/Makefile.d/getopt_test.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <getopt.h> - -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/linux_i2c_test.c b/Makefile.d/linux_i2c_test.c deleted file mode 100644 index 768226b..0000000 --- a/Makefile.d/linux_i2c_test.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <linux/i2c-dev.h> -#include <linux/i2c.h> - -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/linux_mtd_test.c b/Makefile.d/linux_mtd_test.c deleted file mode 100644 index d254e24..0000000 --- a/Makefile.d/linux_mtd_test.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <mtd/mtd-user.h> - -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/linux_spi_test.c b/Makefile.d/linux_spi_test.c deleted file mode 100644 index a4d2657..0000000 --- a/Makefile.d/linux_spi_test.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <linux/types.h> -#include <linux/spi/spidev.h> - -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/os_test.h b/Makefile.d/os_test.h deleted file mode 100644 index 17045b2..0000000 --- a/Makefile.d/os_test.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the flashrom project. - * - * Copyright (C) 2011 Carl-Daniel Hailfinger - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -/* - * This file determinate the target os. It should only be used my the Makefile - */ - -// Solaris -#if defined (__sun) && (defined(__i386) || defined(__amd64)) -#define __FLASHROM_OS__ "SunOS" -// OS X -#elif defined(__MACH__) && defined(__APPLE__) -#define __FLASHROM_OS__ "Darwin" -// FreeBSD -#elif defined(__FreeBSD__) -#define __FLASHROM_OS__ "FreeBSD" -// FreeBSD with glibc-based userspace (e.g. Debian/kFreeBSD) -#elif defined(__FreeBSD_kernel__) && defined(__GLIBC__) -#define __FLASHROM_OS__ "FreeBSD-glibc" -// DragonFlyBSD -#elif defined(__DragonFly__) -#define __FLASHROM_OS__ "DragonFlyBSD" -// NetBSD -#elif defined(__NetBSD__) -#define __FLASHROM_OS__ "NetBSD" -// OpenBSD -#elif defined(__OpenBSD__) -#define __FLASHROM_OS__ "OpenBSD" -// DJGPP -#elif defined(__DJGPP__) -#define __FLASHROM_OS__ "DOS" -// MinGW (always has _WIN32 available) -#elif defined(__MINGW32__) -#define __FLASHROM_OS__ "MinGW" -// Cygwin (usually without _WIN32) -#elif defined( __CYGWIN__) -#define __FLASHROM_OS__ "Cygwin" -// libpayload -#elif defined(__LIBPAYLOAD__) -#define __FLASHROM_OS__ "libpayload" -// GNU Hurd -#elif defined(__gnu_hurd__) -#define __FLASHROM_OS__ "Hurd" -// Linux -#elif defined(__linux__) - // There are various flags in use on Android apparently. __ANDROID__ seems to be the most trustworthy. - #if defined(__ANDROID__) - #define __FLASHROM_OS__ "Android" - #else - #define __FLASHROM_OS__ "Linux" - #endif -#else -#define __FLASHROM_OS__ "unknown" -#endif -__FLASHROM_OS__ diff --git a/Makefile.d/pciutils_test.c b/Makefile.d/pciutils_test.c deleted file mode 100644 index 3d67c29..0000000 --- a/Makefile.d/pciutils_test.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <pciutils/pci.h> - -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - return 0; -} diff --git a/Makefile.d/utsname_test.c b/Makefile.d/utsname_test.c deleted file mode 100644 index 7bc6665..0000000 --- a/Makefile.d/utsname_test.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <sys/utsname.h> -struct utsname osinfo; -int main(int argc, char **argv) -{ - (void)argc; - (void)argv; - uname(&osinfo); - return 0; -} diff --git a/Makefile.include b/Makefile.include deleted file mode 100644 index 5f81ccc..0000000 --- a/Makefile.include +++ /dev/null @@ -1,65 +0,0 @@ -# -# This file is part of the flashrom project. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# - -# Here are functions and macros defined for the Makefile - -define mark_unsupported -$(foreach p,$1, \ - $(if $(filter $($(p)),yes), \ - $(eval UNSUPPORTED_FEATURES += $(p)=yes), \ - $(eval override $(p) := no))) -endef - -define filter_deps -$(strip $(foreach p,$1, \ - $(if $(filter $($(p)),yes), \ - $(p)))) -endef - -define disable_all -$(foreach p,$1, \ - $(eval override $(p) := no)) -endef - -# Run the C Preprocessor with file $1 and return the last line, removing quotes. -define c_macro_test -$(strip $(call debug_shell, $(CC) -E $1 | tail -1 | tr -d '"')) -endef - -define c_compile_test # $1: files to compile, $2: cflags -$(call debug_shell, $(CC) -c -Wall -Werror $2 $1 -o /dev/null && echo yes || echo no) -endef - -define c_link_test # $1: file to compile and link, $2: cflags, $3: ldflags -$(call debug_shell, $(CC) -Wall -Werror $2 $1 $3 -o /dev/null && echo yes || echo no) -endef - -define find_dependency -$(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --exists $1 && echo yes || echo no) -endef - -define dependency_version -$(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --modversion $1 2>/dev/null) -endef - -define has_dependency # $1: dependency, $2: action/target -$(if $(findstring $(strip $1),yes), $(strip $2)) -endef - -define dependency_cflags -$(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --cflags $1 2>/dev/null) -endef - -define dependency_ldflags -$(call debug_shell, $(if $(PKG_CONFIG_LIBDIR),PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR),) $(PKG_CONFIG) --libs --static $1 2>/dev/null) -endef diff --git a/README.rst b/README.rst index 371fd61..2900517 100644 --- a/README.rst +++ b/README.rst @@ -23,10 +23,7 @@ Building / installing / packaging ---------------------------------
-flashrom supports building with **make** and **meson**. - -TLDR, building with meson -""""""""""""""""""""""""" +flashrom is built with **meson**. TLDR:
::
@@ -38,17 +35,6 @@ For full detailed instructions, follow the information in :doc:`dev_guide/building_from_source`
-TLDR, building with make -"""""""""""""""""""""""" - -:: - - make - make install - -For full detailed instructions, follow the information in -:doc:`dev_guide/building_with_make` - Contact -------
diff --git a/doc/dev_guide/building_with_make.rst b/doc/dev_guide/building_with_make.rst deleted file mode 100644 index 710aad3..0000000 --- a/doc/dev_guide/building_with_make.rst +++ /dev/null @@ -1,195 +0,0 @@ -Building with make -================== - -TLDR ----- - -:: - - make - make install - -Build instructions ------------------- - -**To build flashrom you need to install the following software:** - - * C compiler (GCC / clang) - * pkg-config - - * pciutils+libpci (if you want support for mainboard or PCI device flashing) - * libusb (if you want FT2232, Dediprog or USB-Blaster support) - * libftdi (if you want FT2232 or USB-Blaster support) - * libjaylink (if you want support for SEGGER J-Link and compatible devices) - * NI-845x driver & library package (if you want support for NI-845x devices; uses a proprietary driver) - -**Linux et al:** - - * pciutils / libpci - * pciutils-devel / pciutils-dev / libpci-dev - * zlib-devel / zlib1g-dev (needed if libpci was compiled with libz support) - -**On FreeBSD, you need the following ports:** - - * devel/gmake - * devel/libpci - -**On OpenBSD, you need the following ports:** - - * devel/gmake - * sysutils/pciutils - -**To compile on Linux, use**:: - - make - -**To compile on FreeBSD, OpenBSD or DragonFly BSD, use**:: - - gmake - -**To compile on Nexenta, use**:: - - make - -**To compile on Solaris, use**:: - - gmake LDFLAGS="-L$pathtolibpci" CC="gcc -I$pathtopciheaders" CFLAGS=-O2 - -**To compile on NetBSD (with pciutils, libftdi, libusb installed in /usr/pkg/), use**:: - - gmake - -**To compile and run on Darwin/Mac OS X:** - -Install DirectHW from coresystems GmbH. -DirectHW is available at https://www.coreboot.org/DirectHW . - -**To compile on Windows:** - -Install MSYS tools (and the NI-845x drivers if desired) as described in -:ref:`installing-dependencies`. - -To build with support for NI-845x:: - - make HAS_LIB_NI845X=yes CONFIG_NI845X_SPI=yes - -**To cross-compile on Linux for DOS:** - -Get packages of the DJGPP cross compiler and install them: - - * djgpp-filesystem djgpp-gcc djgpp-cpp djgpp-runtime djgpp-binutils - -As an alternative, the DJGPP web site offers packages for download as well: - - * djcross-binutils-2.29.1-1ap.x86_64.rpm - * djcross-gcc-7.2.0-1ap.x86_64.rpm - * djcrx-2.05-5.x86_64.rpm - -The cross toolchain packages for your distribution may have slightly different -names (look for packages named *djgpp*). - -Alternatively, you could use a script to build it from scratch: -https://github.com/andrewwutw/build-djgpp - -You will need the libpci and libgetopt library source trees and -their compiled static libraries and header files installed in some -directory say libpci-libgetopt/, which will be later specified with -LIBS_BASE parameter during flashrom compilation. Easiest way to -handle it is to put pciutils, libgetopt and flashrom directories -in one subdirectory. There will be an extra subdirectory libpci-libgetopt -created, which will contain compiled libpci and libgetopt. - -Download pciutils 3.5.6 and apply https://flashrom.org/File:Pciutils-3.5.6.patch.gz -Compile pciutils, using following command line:: - - make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \ - PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt \ - STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib - -Download and compile with 'make' https://flashrom.org/File:Libgetopt.tar.gz - -Copy the libgetopt.a to ../libpci-libgetopt/lib and -getopt.h to ../libpci-libgetopt/include - -Enter the flashrom directory:: - - make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip - -If you like, you can compress the resulting executable with UPX:: - - upx -9 flashrom.exe - -To run flashrom.exe, download https://flashrom.org/File:Csdpmi7b.zip and -unpack CWSDPMI.EXE into the current directory or one in PATH. - -**To cross-compile on Linux for Windows:** - -Get packages of the MinGW cross compiler and install them:: - - mingw32-filesystem mingw32-cross-cpp mingw32-cross-binutils mingw32-cross-gcc - mingw32-runtime mingw32-headers - -The cross toolchain packages for your distribution may have slightly different -names (look for packages named *mingw*). -PCI-based programmers (internal etc.) are not supported on Windows. -Run (change CC= and STRIP= settings where appropriate):: - - make CC=i686-w64-mingw32-gcc STRIP=i686-w64-mingw32-strip - -**Processor architecture dependent features:** - -On non-x86 architectures a few programmers don't work (yet) because they -use port-based I/O which is not directly available on non-x86. Those -programmers will be disabled automatically if you run "make". - -**Compiler quirks:** - -If you are using clang and if you want to enable only one driver, you may hit an -overzealous compiler warning from clang. Compile with "make WARNERROR=no" to -force it to continue and enjoy. - -**Bindings:** - -Foreign function interface bindings for the rust language are included in the -bindings folder. These are not compiled as part of the normal build process. -See the readme under bindings/rust for more information. - - -Installation ------------- - -In order to install flashrom and the manpage into /usr/local, type:: - - make install - -For installation in a different directory use DESTDIR, e.g. like this:: - - make DESTDIR=/usr install - -If you have insufficient permissions for the destination directory, use sudo -by adding sudo in front of the commands above. - - -Packaging ---------- - -To package flashrom and remove dependencies on Git, either use:: - - make export - -or:: - - make tarball - -``make export`` will export all flashrom files from the Git repository at -revision HEAD into a directory named ``$EXPORTDIR/flashrom-$RELEASENAME`` -and will additionally add a ``versioninfo.inc`` file in that directory to -contain the Git revision of the exported tree and a date for the manual -page. - -``make tarball`` will simply tar up the result of make export and compress -it with bzip2. - -The snapshot tarballs are the result of ``make tarball`` and require no -further processing. Some git files (for example the rust bindings) are omitted -from the tarball, as controlled by the .gitattributes files. diff --git a/doc/dev_guide/index.rst b/doc/dev_guide/index.rst index 57cd846..457938f 100644 --- a/doc/dev_guide/index.rst +++ b/doc/dev_guide/index.rst @@ -5,5 +5,4 @@ :maxdepth: 1
building_from_source - building_with_make development_guide diff --git a/doc/release_notes/devel.rst b/doc/release_notes/devel.rst new file mode 100644 index 0000000..e28e347 --- /dev/null +++ b/doc/release_notes/devel.rst @@ -0,0 +1,25 @@ +=============================== +Recent development (unreleased) +=============================== + +This document describes the major changes that are expected to be included in +the next release of flashrom and which are currently only available by source +code checkout (see :doc:`../dev_guide/building_from_source`). These changes +may be further revised before the next release. + +Known issues +============ + +AMD-based PCs with FCH are unable to read flash contents for internal (BIOS +flash) chips larger than 16 MB, and attempting to do so may crash the system. +Systems with AMD "Promontory" IO extenders (mostly "Zen" desktop platforms) are +not currently supported. + +https://ticket.coreboot.org/issues/370 + +Build only supported with Meson +=============================== + +As documented in the :doc:`v1.4 release notes <v_1_4>`, support for building +flashrom with make has been removed; all Makefiles have been deleted. Meson is +now the only supported tool for building flashrom from source. \ No newline at end of file diff --git a/doc/release_notes/index.rst b/doc/release_notes/index.rst index 1d2e0d9..fe12d34 100644 --- a/doc/release_notes/index.rst +++ b/doc/release_notes/index.rst @@ -4,5 +4,6 @@ .. toctree:: :maxdepth: 1
+ devel v_1_4 v_1_3 diff --git a/test_build.sh b/test_build.sh index ee86496..8c041f0 100755 --- a/test_build.sh +++ b/test_build.sh @@ -5,13 +5,6 @@
is_scan_build_env=0
-make_programmer_opts="INTERNAL INTERNAL_X86 SERPROG RAYER_SPI RAIDEN_DEBUG_SPI PONY_SPI NIC3COM \ - GFXNVIDIA SATASII ATAHPT ATAVIA ATAPROMISE FT2232_SPI USBBLASTER_SPI MSTARDDC_SPI \ - PICKIT2_SPI STLINKV3_SPI PARADE_LSPCON MEDIATEK_I2C_SPI REALTEK_MST_I2C_SPI DUMMY \ - DRKAISER NICREALTEK NICNATSEMI NICINTEL NICINTEL_SPI NICINTEL_EEPROM OGP_SPI \ - BUSPIRATE_SPI DEDIPROG DEVELOPERBOX_SPI SATAMV LINUX_MTD LINUX_SPI IT8212 \ - CH341A_SPI CH347_SPI DIGILENT_SPI DIRTYJTAG_SPI JLINK_SPI ASM106X" - meson_programmer_opts="all auto group_ftdi group_i2c group_jlink group_pci group_serial group_usb \ atahpt atapromise atavia buspirate_spi ch341a_spi ch347_spi dediprog \ developerbox_spi digilent_spi dirtyjtag_spi drkaiser dummy ft2232_spi \ @@ -31,24 +24,6 @@ }
-build_make () { - make clean - make -j $(nproc) CONFIG_EVERYTHING=yes - - # In case of clang analyzer we don't want to run it on - # each programmer individually. Thus, just return here. - if [ ${is_scan_build_env} -eq 1 ]; then - return - fi - - for option in ${make_programmer_opts}; do - echo "Building ${option}" - make clean - make -j $(nproc) CONFIG_NOTHING=yes CONFIG_${option}=yes - done -} - - build_meson () { build_dir=out meson_opts="-Dtests=enabled -Dman-pages=enabled -Ddocumentation=enabled" @@ -74,5 +49,4 @@
run_linter
-build_make build_meson diff --git a/util/ich_descriptors_tool/Makefile b/util/ich_descriptors_tool/Makefile deleted file mode 100644 index aa1b696..0000000 --- a/util/ich_descriptors_tool/Makefile +++ /dev/null @@ -1,83 +0,0 @@ -# -# This file is part of the flashrom project. -# -# This Makefile works standalone, but it is usually called from the main -# Makefile in the flashrom directory. - -include ../../Makefile.include - -PROGRAM=ich_descriptors_tool -EXTRAINCDIRS = ../../ . -DEPPATH = .dep -OBJATH = .obj -SHAREDSRC = ich_descriptors.c -SHAREDSRCDIR = ../.. -# If your compiler spits out excessive warnings, run make WARNERROR=no -# You shouldn't have to change this flag. -WARNERROR ?= yes - -SRC = $(wildcard *.c) - -# If the user has specified custom CFLAGS, all CFLAGS settings below will be -# completely ignored by gnumake. -CFLAGS ?= -Os -Wall -Wshadow -override CFLAGS += -I$(SHAREDSRCDIR)/include - -# Auto determine HOST_OS and TARGET_OS if they are not set as argument -HOST_OS ?= $(shell uname) -TARGET_OS := $(call c_macro_test, ../../Makefile.d/os_test.h) - -ifeq ($(findstring MINGW, $(HOST_OS)), MINGW) -# Explicitly set CC = gcc on MinGW, otherwise: "cc: command not found". -CC = gcc -endif - -ifeq ($(TARGET_OS), DOS) -EXEC_SUFFIX := .exe -# DJGPP has odd uint*_t definitions which cause lots of format string warnings. -CFLAGS += -Wno-format -endif - -ifeq ($(TARGET_OS), MinGW) -EXEC_SUFFIX := .exe -# Some functions provided by Microsoft do not work as described in C99 specifications. This macro fixes that -# for MinGW. See http://sourceforge.net/p/mingw-w64/wiki2/printf%20and%20scanf%20family/ -CFLAGS += -D__USE_MINGW_ANSI_STDIO=1 -endif - -ifeq ($(WARNERROR), yes) -CFLAGS += -Werror -endif - - -FLASHROM_CFLAGS += -MMD -MP -MF $(DEPPATH)/$(@F).d -# enables functions that populate the descriptor structs from plain binary dumps -FLASHROM_CFLAGS += -D ICH_DESCRIPTORS_FROM_DUMP_ONLY -FLASHROM_CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -OBJ = $(OBJATH)/$(SRC:%.c=%.o) - -SHAREDOBJ = $(OBJATH)/$(notdir $(SHAREDSRC:%.c=%.o)) - -all:$(PROGRAM)$(EXEC_SUFFIX) - -$(OBJ): $(OBJATH)/%.o : %.c - $(CC) $(CFLAGS) $(CPPFLAGS) $(FLASHROM_CFLAGS) -o $@ -c $< - -# this enables us to share source files without simultaneously sharing .o files -# with flashrom, which would lead to unexpected results (w/o running make clean) -$(SHAREDOBJ): $(OBJATH)/%.o : $(SHAREDSRCDIR)/%.c - $(CC) $(CFLAGS) $(CPPFLAGS) $(FLASHROM_CFLAGS) -o $@ -c $< - -$(PROGRAM)$(EXEC_SUFFIX): $(OBJ) $(SHAREDOBJ) - $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJ) $(SHAREDOBJ) - -# We don't use EXEC_SUFFIX here because we want to clean everything. -clean: - rm -f $(PROGRAM) $(PROGRAM).exe - rm -rf $(DEPPATH) $(OBJATH) - -# Include the dependency files. --include $(shell mkdir -p $(DEPPATH) $(OBJATH) 2>/dev/null) $(wildcard $(DEPPATH)/*) - -.PHONY: all clean