From ea547fead702d32b58cfe48f9f998edea02cb427 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Fri, 17 Sep 2010 18:58:28 +0400 Subject: [PATCH 01/12] Initial commit of autotools-related files Signed-off-by: Peter Lemenkov --- Makefile | 452 ---------------------------------------------------------- Makefile.am | 166 +++++++++++++++++++++ configure.ac | 204 ++++++++++++++++++++++++++ 3 files changed, 370 insertions(+), 452 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 configure.ac diff --git a/Makefile b/Makefile deleted file mode 100644 index c525e39..0000000 --- a/Makefile +++ /dev/null @@ -1,452 +0,0 @@ -# -# This file is part of the flashrom project. -# -# Copyright (C) 2005 coresystems GmbH -# Copyright (C) 2009,2010 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. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# - -PROGRAM = flashrom - -CC ?= gcc -STRIP ?= strip -INSTALL = install -DIFF = diff -PREFIX ?= /usr/local -MANDIR ?= $(PREFIX)/share/man -CFLAGS ?= -Os -Wall -Wshadow -EXPORTDIR ?= . - -WARNERROR ?= yes - -ifeq ($(WARNERROR), yes) -CFLAGS += -Werror -endif - -# FIXME We have to differentiate between host and target arch. -OS_ARCH ?= $(shell uname) -ifneq ($(OS_ARCH), SunOS) -STRIP_ARGS = -s -endif -ifeq ($(OS_ARCH), Darwin) -CPPFLAGS += -I/opt/local/include -I/usr/local/include -# DirectIO framework can be found in the DirectHW library. -LDFLAGS += -framework IOKit -framework DirectIO -L/opt/local/lib -L/usr/local/lib -endif -ifeq ($(OS_ARCH), FreeBSD) -CPPFLAGS += -I/usr/local/include -LDFLAGS += -L/usr/local/lib -endif -ifeq ($(OS_ARCH), OpenBSD) -CPPFLAGS += -I/usr/local/include -LDFLAGS += -L/usr/local/lib -endif -ifeq ($(OS_ARCH), DOS) -EXEC_SUFFIX := .exe -CPPFLAGS += -I../libgetopt -I../libpci/include -# FIXME Check if we can achieve the same effect with -L../libgetopt -lgetopt -LIBS += ../libgetopt/libgetopt.a -# Bus Pirate and Serprog are not supported under DOS (missing serial support). -ifeq ($(CONFIG_BUSPIRATE_SPI), yes) -UNSUPPORTED_FEATURES += CONFIG_BUSPIRATE_SPI=yes -else -override CONFIG_BUSPIRATE_SPI = no -endif -ifeq ($(CONFIG_SERPROG), yes) -UNSUPPORTED_FEATURES += CONFIG_SERPROG=yes -else -override CONFIG_SERPROG = no -endif -# Dediprog and FT2232 are not supported under DOS (missing USB support). -ifeq ($(CONFIG_DEDIPROG), yes) -UNSUPPORTED_FEATURES += CONFIG_DEDIPROG=yes -else -override CONFIG_DEDIPROG = no -endif -ifeq ($(CONFIG_FT2232_SPI), yes) -UNSUPPORTED_FEATURES += CONFIG_FT2232_SPI=yes -else -override CONFIG_FT2232_SPI = no -endif -endif - -CHIP_OBJS = jedec.o stm50flw0x0x.o w39v040c.o w39v080fa.o w29ee011.o \ - sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \ - sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o - -LIB_OBJS = layout.o - -CLI_OBJS = flashrom.o cli_classic.o cli_output.o print.o - -PROGRAMMER_OBJS = udelay.o programmer.o - -all: pciutils features $(PROGRAM)$(EXEC_SUFFIX) - -# Set the flashrom version string from the highest revision number -# of the checked out flashrom files. -# Note to packagers: Any tree exported with "make export" or "make tarball" -# will not require subversion. The downloadable snapshots are already exported. -SVNVERSION := $(shell LC_ALL=C svnversion -cn . 2>/dev/null | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/" | grep "[0-9]" || LC_ALL=C svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || LC_ALL=C git svn info . 2>/dev/null | awk '/^Revision:/ {print $$2 }' | grep "[0-9]" || echo unknown) - -RELEASE := 0.9.3 -VERSION := $(RELEASE)-r$(SVNVERSION) -RELEASENAME ?= $(VERSION) - -SVNDEF := -D'FLASHROM_VERSION="$(VERSION)"' - -# Always enable internal/onboard support for now. -CONFIG_INTERNAL ?= yes - -# Always enable serprog for now. Needs to be disabled on Windows. -CONFIG_SERPROG ?= yes - -# RayeR SPIPGM hardware support -CONFIG_RAYER_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 - -# Highpoint (HPT) ATA/RAID controller support. -# IMPORTANT: This code is not yet working! -CONFIG_ATAHPT ?= no - -# Always enable FT2232 SPI dongles for now. -CONFIG_FT2232_SPI ?= yes - -# 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 SPI on Intel NICs for now. -CONFIG_NICINTEL_SPI ?= yes - -# Always enable Bus Pirate SPI for now. -CONFIG_BUSPIRATE_SPI ?= yes - -# Disable Dediprog SF100 until support is complete and tested. -CONFIG_DEDIPROG ?= no - -# Disable wiki printing by default. It is only useful if you have wiki access. -CONFIG_PRINT_WIKI ?= no - -# Bitbanging SPI infrastructure, default off unless needed. -ifeq ($(CONFIG_RAYER_SPI), yes) -override CONFIG_BITBANG_SPI = yes -else -ifeq ($(CONFIG_INTERNAL), yes) -override CONFIG_BITBANG_SPI = yes -else -ifeq ($(CONFIG_NICINTEL_SPI), yes) -override CONFIG_BITBANG_SPI = yes -else -CONFIG_BITBANG_SPI ?= no -endif -endif -endif - -ifeq ($(CONFIG_INTERNAL), yes) -FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1' -PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o dmi.o internal.o -# FIXME: The PROGRAMMER_OBJS below should only be included on x86. -PROGRAMMER_OBJS += it87spi.o ichspi.o sb600spi.o wbsio_spi.o mcp6x_spi.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_SERPROG), yes) -FEATURE_CFLAGS += -D'CONFIG_SERPROG=1' -PROGRAMMER_OBJS += serprog.o -NEED_SERIAL := yes -NEED_NET := yes -endif - -ifeq ($(CONFIG_RAYER_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_RAYER_SPI=1' -PROGRAMMER_OBJS += rayer_spi.o -# Actually, NEED_PCI is wrong. NEED_IOPORT_ACCESS would be more correct. -NEED_PCI := yes -endif - -ifeq ($(CONFIG_BITBANG_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_BITBANG_SPI=1' -PROGRAMMER_OBJS += bitbang_spi.o -endif - -ifeq ($(CONFIG_NIC3COM), yes) -FEATURE_CFLAGS += -D'CONFIG_NIC3COM=1' -PROGRAMMER_OBJS += nic3com.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_GFXNVIDIA), yes) -FEATURE_CFLAGS += -D'CONFIG_GFXNVIDIA=1' -PROGRAMMER_OBJS += gfxnvidia.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_SATASII), yes) -FEATURE_CFLAGS += -D'CONFIG_SATASII=1' -PROGRAMMER_OBJS += satasii.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_ATAHPT), yes) -FEATURE_CFLAGS += -D'CONFIG_ATAHPT=1' -PROGRAMMER_OBJS += atahpt.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_FT2232_SPI), yes) -FTDILIBS := $(shell pkg-config --libs libftdi 2>/dev/null || printf "%s" "-lftdi -lusb") -# This is a totally ugly hack. -FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'CONFIG_FT2232_SPI=1'") -FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "$(FTDILIBS)") -PROGRAMMER_OBJS += ft2232_spi.o -endif - -ifeq ($(CONFIG_DUMMY), yes) -FEATURE_CFLAGS += -D'CONFIG_DUMMY=1' -PROGRAMMER_OBJS += dummyflasher.o -endif - -ifeq ($(CONFIG_DRKAISER), yes) -FEATURE_CFLAGS += -D'CONFIG_DRKAISER=1' -PROGRAMMER_OBJS += drkaiser.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_NICREALTEK), yes) -FEATURE_CFLAGS += -D'CONFIG_NICREALTEK=1' -PROGRAMMER_OBJS += nicrealtek.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_NICNATSEMI), yes) -FEATURE_CFLAGS += -D'CONFIG_NICNATSEMI=1' -PROGRAMMER_OBJS += nicnatsemi.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_NICINTEL_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_NICINTEL_SPI=1' -PROGRAMMER_OBJS += nicintel_spi.o -NEED_PCI := yes -endif - -ifeq ($(CONFIG_BUSPIRATE_SPI), yes) -FEATURE_CFLAGS += -D'CONFIG_BUSPIRATE_SPI=1' -PROGRAMMER_OBJS += buspirate_spi.o -NEED_SERIAL := yes -endif - -ifeq ($(CONFIG_DEDIPROG), yes) -FEATURE_CFLAGS += -D'CONFIG_DEDIPROG=1' -FEATURE_LIBS += -lusb -PROGRAMMER_OBJS += dediprog.o -endif - -ifeq ($(NEED_SERIAL), yes) -LIB_OBJS += serial.o -endif - -ifeq ($(NEED_NET), yes) -ifeq ($(OS_ARCH), SunOS) -LIBS += -lsocket -endif -endif - -ifeq ($(NEED_PCI), yes) -CHECK_LIBPCI = yes -FEATURE_CFLAGS += -D'NEED_PCI=1' -PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o -ifeq ($(OS_ARCH), NetBSD) -# The libpci we want is called libpciutils on NetBSD and needs NetBSD libpci. -LIBS += -lpciutils -lpci -# For (i386|x86_64)_iopl(2). -LIBS += -l$(shell uname -p) -else -ifeq ($(OS_ARCH), DOS) -# FIXME There needs to be a better way to do this -LIBS += ../libpci/lib/libpci.a -else -LIBS += -lpci -ifeq ($(OS_ARCH), OpenBSD) -# For (i386|amd64)_iopl(2). -LIBS += -l$(shell uname -m) -endif -endif -endif -endif - -ifeq ($(CONFIG_PRINT_WIKI), yes) -FEATURE_CFLAGS += -D'CONFIG_PRINT_WIKI=1' -CLI_OBJS += print_wiki.o -endif - -FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "UTSNAME := yes" .features && printf "%s" "-D'HAVE_UTSNAME=1'") - -# We could use PULLED_IN_LIBS, but that would be ugly. -FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps && printf "%s" "-lz") - -OBJS = $(CHIP_OBJS) $(CLI_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS) - -$(PROGRAM)$(EXEC_SUFFIX): $(OBJS) - $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(FEATURE_LIBS) $(LIBS) - -# 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") - -%.o: %.c .features - $(CC) -MMD $(CFLAGS) $(CPPFLAGS) $(FEATURE_CFLAGS) $(SVNDEF) -o $@ -c $< - -# 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 -f $(PROGRAM) $(PROGRAM).exe *.o *.d - -distclean: clean - rm -f .features .libdeps - -strip: $(PROGRAM)$(EXEC_SUFFIX) - $(STRIP) $(STRIP_ARGS) $(PROGRAM)$(EXEC_SUFFIX) - -compiler: featuresavailable - @printf "Checking for a C compiler... " - @$(shell ( echo "int main(int argc, char **argv)"; \ - echo "{ return 0; }"; ) > .test.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test.c -o .test$(EXEC_SUFFIX) >/dev/null && \ - echo "found." || ( echo "not found."; \ - rm -f .test.c .test$(EXEC_SUFFIX); exit 1) - @rm -f .test.c .test$(EXEC_SUFFIX) - -ifeq ($(CHECK_LIBPCI), yes) -pciutils: compiler - @printf "Checking for libpci headers... " - @# Avoid a failing test due to libpci header symbol shadowing breakage - @$(shell ( echo "#define index shadow_workaround_index"; \ - echo "#include "; \ - echo "struct pci_access *pacc;"; \ - echo "int main(int argc, char **argv)"; \ - echo "{ pacc = pci_alloc(); return 0; }"; ) > .test.c ) - @$(CC) -c $(CPPFLAGS) $(CFLAGS) .test.c -o .test.o >/dev/null 2>&1 && \ - echo "found." || ( echo "not found."; echo; \ - echo "Please install libpci headers (package pciutils-devel)."; \ - echo "See README for more information."; echo; \ - rm -f .test.c .test.o; exit 1) - @printf "Checking if libpci is present and sufficient... " - @printf "" > .libdeps - @$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) >/dev/null 2>&1 && \ - echo "yes." || ( echo "no."; \ - printf "Checking if libz+libpci are present and sufficient..."; \ - $(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) -lz >/dev/null 2>&1 && \ - ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \ - echo "Please install libpci (package pciutils) and/or libz."; \ - echo "See README for more information."; echo; \ - rm -f .test.c .test.o .test$(EXEC_SUFFIX); exit 1) ) - @rm -f .test.c .test.o .test$(EXEC_SUFFIX) -else -pciutils: compiler - @printf "" > .libdeps -endif - -.features: features - -# If a user does not explicitly request a non-working feature, we should -# silently disable it. However, if a non-working (does not compile) feature -# is explicitly requested, we should bail out with a descriptive error message. -ifeq ($(UNSUPPORTED_FEATURES), ) -featuresavailable: -else -featuresavailable: - @echo "The following features are unavailable on your machine: $(UNSUPPORTED_FEATURES)" - @false -endif - -ifeq ($(CONFIG_FT2232_SPI), yes) -features: compiler - @echo "FEATURES := yes" > .features.tmp - @printf "Checking for FTDI support... " - @$(shell ( echo "#include "; \ - echo "struct ftdi_context *ftdic = NULL;"; \ - echo "int main(int argc, char **argv)"; \ - echo "{ return ftdi_init(ftdic); }"; ) > .featuretest.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \ - ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) || \ - ( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp ) - @printf "Checking for utsname support... " - @$(shell ( echo "#include "; \ - echo "struct utsname osinfo;"; \ - echo "int main(int argc, char **argv)"; \ - echo "{ uname (&osinfo); return 0; }"; ) > .featuretest.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ - ( echo "found."; echo "UTSNAME := yes" >> .features.tmp ) || \ - ( echo "not found."; echo "UTSNAME := no" >> .features.tmp ) - @$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features - @rm -f .featuretest.c .featuretest$(EXEC_SUFFIX) -else -features: compiler - @echo "FEATURES := yes" > .features.tmp - @printf "Checking for utsname support... " - @$(shell ( echo "#include "; \ - echo "struct utsname osinfo;"; \ - echo "int main(int argc, char **argv)"; \ - echo "{ uname (&osinfo); return 0; }"; ) > .featuretest.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \ - ( echo "found."; echo "UTSNAME := yes" >> .features.tmp ) || \ - ( echo "not found."; echo "UTSNAME := no" >> .features.tmp ) - @$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features - @rm -f .featuretest.c .featuretest$(EXEC_SUFFIX) -endif - -install: $(PROGRAM)$(EXEC_SUFFIX) - mkdir -p $(DESTDIR)$(PREFIX)/sbin - mkdir -p $(DESTDIR)$(MANDIR)/man8 - $(INSTALL) -m 0755 $(PROGRAM)$(EXEC_SUFFIX) $(DESTDIR)$(PREFIX)/sbin - $(INSTALL) -m 0644 $(PROGRAM).8 $(DESTDIR)$(MANDIR)/man8 - -export: - @rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME) - @svn export -r BASE . $(EXPORTDIR)/flashrom-$(RELEASENAME) - @sed "s/^SVNVERSION.*/SVNVERSION := $(SVNVERSION)/" Makefile >$(EXPORTDIR)/flashrom-$(RELEASENAME)/Makefile - @LC_ALL=C svn log >$(EXPORTDIR)/flashrom-$(RELEASENAME)/ChangeLog - @echo Exported $(EXPORTDIR)/flashrom-$(RELEASENAME)/ - -tarball: export - @tar cjf $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2 -C $(EXPORTDIR)/ $(TAROPTIONS) flashrom-$(RELEASENAME)/ - @rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME) - @echo Created $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2 - -djgpp-dos: clean - make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip WARNERROR=no OS_ARCH=DOS - -.PHONY: all clean distclean compiler pciutils features export tarball dos featuresavailable - --include $(OBJS:.o=.d) diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..671287c --- /dev/null +++ b/Makefile.am @@ -0,0 +1,166 @@ +sbin_PROGRAMS = flashrom + +man_MANS = flashrom.8 + +DEFS += -DDMIDECODE_PATH=\"@DMIDECODE@\" + +if HAVE_INTERNAL +internal_SOURCES = \ + board_enable.c \ + cbtable.c \ + chipset_enable.c \ + dmi.c \ + internal.c \ + processor_enable.c +if HAVE_X86_ONLY_INTERNAL +internal_x86_only_SOURCES = \ + ichspi.c \ + it87spi.c \ + mcp6x_spi.c \ + sb600spi.c \ + wbsio_spi.c +endif +DEFS += -DCONFIG_INTERNAL=1 +endif + +if HAVE_RAYER_SPI +rayer_spi_SOURCES = rayer_spi.c +DEFS += -DCONFIG_RAYER_SPI=1 +endif + +if HAVE_NIC3COM +nic3com_SOURCES = nic3com.c +DEFS += -DCONFIG_NIC3COM=1 +endif + +if HAVE_GFXNVIDIA +gfxnvidia_SOURCES = gfxnvidia.c +DEFS += -DCONFIG_GFXNVIDIA=1 +endif + +if HAVE_SATASII +satasii_SOURCES = satasii.c +DEFS += -DCONFIG_SATASII=1 +endif + +if HAVE_ATAHPT +atahpt_SOURCES = atahpt.c +DEFS += -DCONFIG_ATAHPT=1 +endif + +if HAVE_FT2232_SPI +ft_2232_spi_SOURCES = ft2232_spi.c +DEFS += -DCONFIG_FT2232_SPI=1 +endif + +if HAVE_DUMMY +dummy_SOURCES= dummyflasher.c +DEFS += -DCONFIG_DUMMY=1 +endif + +if HAVE_DRKAISER +drkaiser_SOURCES = drkaiser.c +DEFS += -DCONFIG_DRKAISER=1 +endif + +if HAVE_NICREALTEK +nicrealtek_SOURCES = nicrealtek.c +DEFS += -DCONFIG_NICREALTEK=1 +endif + +if HAVE_NICNATSEMI +nicnatsemi_SOURCES = nicnatsemi.c +DEFS += -DCONFIG_NICNATSEMI=1 +endif + +if HAVE_NICINTEL_SPI +nicintel_SOURCES = nicintel_spi.c +DEFS += -DCONFIG_NICINTEL_SPI=1 +endif + +if HAVE_SERPROG +serprog_SOURCES = serprog.c +DEFS += -DCONFIG_SERPROG=1 +endif + +if HAVE_BUSPIRATE_SPI +buspirate_SOURCES = buspirate_spi.c +DEFS += -DCONFIG_BUSPIRATE_SPI=1 +endif + +if HAVE_SERIAL +serial_SOURCES = serial.c +endif + +if HAVE_DEDIPROG +dediprog_SOURCES = dediprog.c +DEFS += -DCONFIG_DEDIPROG=1 +endif + +if HAVE_PRINT_WIKI +print_wiki_SOURCES = print_wiki.c +DEFS += -DCONFIG_PRINT_WIKI=1 +endif + +if HAVE_PCI +pci_SOURCES = pcidev.c \ + physmap.c \ + hwaccess.c +endif + +chip_SOURCES = 82802ab.c \ + flashchips.c \ + jedec.c \ + m29f400bt.c \ + pm49fl00x.c \ + spi.c \ + spi25.c \ + sst_fwhub.c \ + sst28sf040.c \ + sst49lfxxxc.c \ + stm50flw0x0x.c \ + w29ee011.c \ + w39v040c.c \ + w39v080fa.c + +cli_SOURCES = \ + flashrom.c \ + cli_classic.c \ + cli_output.c \ + print.c + +lib_SOURCES = layout.c + +if HAVE_BITBANG_SPI +bitbang_spi_SOURCES = bitbang_spi.c +endif + +# Unknown purpose +# sharplhf00l04.c + +flashrom_SOURCES = \ + programmer.c \ + udelay.c \ + $(lib_SOURCES) \ + $(cli_SOURCES) \ + $(bitbang_spi_SOURCES) \ + $(chip_SOURCES) \ + $(pci_SOURCES) \ + $(serprog_SOURCES) \ + $(rayer_spi_SOURCES) \ + $(nic3com_SOURCES) \ + $(internal_SOURCES) \ + $(internal_x86_only_SOURCES) \ + $(satasii_SOURCES) \ + $(atahpt_SOURCES) \ + $(dummy_SOURCES) \ + $(ft_2232_spi_SOURCES) \ + $(gfxnvidia_SOURCES) \ + $(drkaiser_SOURCES) \ + $(nicrealtek_SOURCES) \ + $(nicnatsemi_SOURCES) \ + $(nicintel_SOURCES) \ + $(buspirate_SOURCES) \ + $(dediprog_SOURCES) \ + $(print_wiki_SOURCES) \ + $(serial_SOURCES) diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..a77cb26 --- /dev/null +++ b/configure.ac @@ -0,0 +1,204 @@ +AC_INIT([flashrom], [0.9.3-r1205], [flashrom@flashrom.org], [flashrom], [http://www.flashrom.org/]) + +AC_CANONICAL_TARGET + +AC_CONFIG_SRCDIR([flashrom.c]) +AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE([foreign]) + +AC_ARG_WITH([dummy], + AC_HELP_STRING([--with-dummy],[dummy flashing support.]), + [dummy="$withval"],[dummy="yes"]) + +# Internal (mainboard) flashing +AC_ARG_WITH([internal], + AC_HELP_STRING([--with-internal],[mainboard's internal flashing support.]), + [internal="$withval"],[internal="yes"]) + +# SATA and ATA PCI adapters +AC_ARG_WITH([satasii], + AC_HELP_STRING([--with-satasii],[SiI SATA controllers support.]), + [satasii="$withval"],[satasii="no"]) +AC_ARG_WITH([atahpt], + AC_HELP_STRING([--with-atahpt],[Highpoint (HPT) ATA/RAID controller support. IMPORTANT: This code is not yet working!]), + [atahpt="$withval"],[atahpt="no"]) + +# Network interface cards +AC_ARG_WITH([nic3com], + AC_HELP_STRING([--with-nic3com],[3Com NICs support.]), + [nic3com="$withval"],[nic3com="yes"]) +AC_ARG_WITH([nicintel_spi], + AC_HELP_STRING([--with-nicintel-spi],[SPI on Intel NICs support.]), + [nicintel_spi="$withval"],[nicintel_spi="yes"]) +AC_ARG_WITH([nicnatsemi], + AC_HELP_STRING([--with-nicnatsemi],[National Semiconductor NICs support. Incomplete and untested.]), + [nicnatsemi="$withval"],[nicnatsemi="no"]) +AC_ARG_WITH([nicrealtek], + AC_HELP_STRING([--with-nicrealtek],[Realtek NICs support.]), + [nicrealtek="$withval"],[nicrealtek="yes"]) + +# Graphics cards +AC_ARG_WITH([gfxnvidia], + AC_HELP_STRING([--with-gfxnvidia],[NVIDIA graphics cards support. Note: write and erase do not work properly.]), + [gfxnvidia="$withval"],[gfxnvidia="yes"]) + +# External flashers +AC_ARG_WITH([buspirate_spi], + AC_HELP_STRING([--with-buspirate-spi],[Bus Pirate SPI support.]), + [buspirate_spi="$withval"],[buspirate_spi="yes"]) +AC_ARG_WITH([dediprog], + AC_HELP_STRING([--with-dediprog],[Dediprog SF100 support. Incomplete and untested.]), + [dediprog="$withval"],[dediprog="no"]) +AC_ARG_WITH([drkaiser], + AC_HELP_STRING([--with-drkaiser],[Dr. Kaiser support.]), + [drkaiser="$withval"],[drkaiser="yes"]) +AC_ARG_WITH([ft2232_spi], + AC_HELP_STRING([--with-ft2232-spi],[FT2232 SPI dongles support.]), + [ft2232_spi="$withval"],[ft2232_spi="yes"]) +AC_ARG_WITH([rayer_spi], + AC_HELP_STRING([--with-rayer-spi],[RayeR SPIPGM hardware support.]), + [rayer_spi="$withval"],[rayer_spi="yes"]) +# Needs to be disabled on Windows. +AC_ARG_WITH([serprog], + AC_HELP_STRING([--with-serprog],[serprog support.]), + [serprog="$withval"],[serprog="yes"]) + +# Specific for Flashrom Wiki +AC_ARG_WITH([print_wiki], + AC_HELP_STRING([--with-print-wiki],[enable wiki export support. It is only useful if you have Flashrom wiki access.]), + [print_wiki="$withval"],[print_wiki="no"]) + +AC_C_BIGENDIAN( + [AC_DEFINE([__FLASHROM_BIG_ENDIAN__], [1], [Big endian])], + [AC_DEFINE([__FLASHROM_LITTLE_ENDIAN__], [1], [Little endian])], + [AC_MSG_ERROR([Unknown endianness])], + [AC_MSG_ERROR([No support for universal binaries yet])] + ) + +# Check for CPU-specific features +case $target_cpu in + i386|i486|i586|i686|x86_64) + if test "$internal" = 'yes'; then + enable_x86_only_internal="yes" + fi + ;; + *) + if test "$nic3com" = 'yes'; then + echo "NIC 3Com is not supported for this target (" $target_cpu "). No PCI port I/O access on this architecture yet" + nic3com="no" + fi + if test "$nicnatsemi" = 'yes'; then + echo "NIC NatSemi is not supported for this target (" $target_cpu "). No PCI port I/O access on this architecture yet" + nicnatsemi="no" + fi + if test "$nicrealtek" = 'yes'; then + echo "NIC Realtek is not supported for this target (" $target_cpu "). No PCI port I/O access on this architecture yet" + nicrealtek="no" + fi + if test "$rayer_spi" = 'yes'; then + echo "RayeR SPIPGM is not supported for this target (" $target_cpu "). No PCI port I/O access on this architecture yet" + rayer_spi="no" + fi + ;; +esac + +# Enable OS-specific fompilation flags +# TODO + +# Check whether we need seial support +if test "$serprog" = 'yes' -o \ + "$buspirate_spi" = 'yes' ; then + serial="yes" +fi + +# Check whether we need PCI support +if test "$internal" = 'yes' -o \ + "$rayer_spi" = 'yes' -o \ + "$bitbang_spi" = 'yes' -o \ + "$nic3com" = 'yes' -o \ + "$gfxnvidia" = 'yes' -o \ + "satasii" = 'yes' -o \ + "$atahpt" = 'yes' -o \ + "$drkaiser" = 'yes' -o \ + "$nicrealtek" = 'yes' -o \ + "$nicnatsemi" = 'yes' -o \ + "$nicintel_spi" = 'yes' ; then + pci="yes" +fi + +if test "$internal" = 'yes' -o \ + "$rayer_spi" = 'yes' -o \ + "$nicintel_spi" = 'yes' ; then + bitbang_spi="yes" +fi + +# Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +AC_PATH_PROG([DMIDECODE], dmidecode, [dmidecode], [$PATH$PATH_SEPARATOR/usr/sbin]) + +# Checks for header files. +AC_CHECK_HEADERS([DirectIO/darwinio.h arpa/inet.h asm/sunddi.h fcntl.h inttypes.h limits.h machine/cpufunc.h machine/sysarch.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/io.h sys/ioctl.h sys/psw.h sys/socket.h sys/sysi86.h sys/time.h sys/utsname.h termios.h unistd.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_INLINE +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_FUNC_MALLOC +AC_FUNC_MMAP +AC_FUNC_REALLOC +AC_CHECK_FUNCS([gethostbyaddr gethostbyname getpagesize gettimeofday memmove memset munmap socket strcasecmp strchr strcspn strdup strerror strncasecmp strspn strstr strtol strtoul uname]) + +# Checks for pcilib +if test "$pci" = 'yes' ; then + AC_CHECK_LIB([pci], [pci_alloc],,[AC_MSG_ERROR([pci library missing])]) +fi + +# check for socket (required for SunOS) +if test "$serprog" = 'yes' ; then + AC_CHECK_LIB([socket], [socket]) +fi + +# Check for libusb +if test "$dediprog" = 'yes' -o "$ft2232_spi" = 'yes' ; then + AC_CHECK_LIB([usb], [usb_init]) +fi + +if test "$ft2232_spi" = 'yes' ; then +# AC_CHECK_LIB([ftdi],[main],,[AC_MSG_ERROR([ftdi library missing which is required for ft2232-spi])]) + AC_CHECK_LIB([ftdi],[main],,[ft2232_spi="no"]) +fi + +# For Makefile.am +AM_CONDITIONAL(HAVE_RAYER_SPI, test "$rayer_spi" = "yes") +AM_CONDITIONAL(HAVE_NIC3COM, test "$nic3com" = "yes") +AM_CONDITIONAL(HAVE_DUMMY, test "$dummy" = "yes") +AM_CONDITIONAL(HAVE_INTERNAL, test "$internal" = "yes") +AM_CONDITIONAL(HAVE_X86_ONLY_INTERNAL, test "$enable_x86_only_internal" = "yes") +AM_CONDITIONAL(HAVE_SATASII, test "$satasii" = "yes") +AM_CONDITIONAL(HAVE_ATAHPT, test "$atahpt" = "yes") +AM_CONDITIONAL(HAVE_NICINTEL_SPI, test "$nicintel_spi" = "yes") +AM_CONDITIONAL(HAVE_NICNATSEMI, test "$nicnatsemi" = "yes") +AM_CONDITIONAL(HAVE_NICREALTEK, test "$nicrealtek" = "yes") +AM_CONDITIONAL(HAVE_GFXNVIDIA, test "$gfxnvidia" = "yes") +AM_CONDITIONAL(HAVE_SERPROG, test "$serprog" = "yes") +AM_CONDITIONAL(HAVE_BUSPIRATE_SPI, test "$buspirate_spi" = "yes") +AM_CONDITIONAL(HAVE_SERIAL, test "$serial" = "yes") +AM_CONDITIONAL(HAVE_PCI, test "$pci" = "yes") +AM_CONDITIONAL(HAVE_DEDIPROG, test "$dediprog" = "yes") +AM_CONDITIONAL(HAVE_DRKAISER, test "$drkaiser" = "yes") +AM_CONDITIONAL(HAVE_FT2232_SPI, test "$ft2232_spi" = "yes") +AM_CONDITIONAL(HAVE_BITBANG_SPI, test "$bitbang_spi" = "yes") +AM_CONDITIONAL(HAVE_PRINT_WIKI, test "$print_wiki" = "yes") + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT -- 1.7.3.1