Blob Blame History Raw
From 457ef87be837eb1dab7e62fb22f2b3fc29e2619c Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Fri, 17 Sep 2010 22:32:07 +0400
Subject: [PATCH 2/2] Initial commit of autotools-related files

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
 Makefile     |  451 ----------------------------------------------------------
 Makefile.am  |  166 +++++++++++++++++++++
 configure.ac |  197 +++++++++++++++++++++++++
 dmi.c        |    2 +-
 flash.h      |    1 -
 flashrom.c   |   12 +-
 hwaccess.h   |    6 +-
 ichspi.c     |    4 -
 internal.c   |    3 +-
 it87spi.c    |    4 -
 mcp6x_spi.c  |    4 -
 nic3com.c    |    6 -
 nicnatsemi.c |    6 -
 nicrealtek.c |    6 -
 print_wiki.c |    3 +-
 programmer.h |    6 +-
 rayer_spi.c  |    5 -
 sb600spi.c   |    4 -
 wbsio_spi.c  |    4 -
 19 files changed, 383 insertions(+), 507 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 e83fc0b..0000000
--- a/Makefile
+++ /dev/null
@@ -1,451 +0,0 @@
-#
-# This file is part of the flashrom project.
-#
-# Copyright (C) 2005 coresystems GmbH <stepan@coresystems.de>
-# 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
-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.2
-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
-
-# 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
-
-# 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
-
-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 <pci/pci.h>";		   \
-		   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 <ftdi.h>";		   \
-		   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 <sys/utsname.h>";		   \
-		   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 <sys/utsname.h>";		   \
-		   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..18c1262
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,197 @@
+AC_INIT([flashrom], [0.9.2-r1180], [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 dist-xz])
+
+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"])
+
+# 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([arpa/inet.h fcntl.h inttypes.h limits.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/ioctl.h sys/socket.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
diff --git a/dmi.c b/dmi.c
index f18907f..09009e7 100644
--- a/dmi.c
+++ b/dmi.c
@@ -55,7 +55,7 @@ static const char *dmidecode_names[] = {
 };
 
 #define DMI_COMMAND_LEN_MAX 260
-static const char *dmidecode_command = "dmidecode";
+static const char *dmidecode_command = DMIDECODE_PATH;
 
 static char *dmistrings[ARRAY_SIZE(dmidecode_names)];
 
diff --git a/flash.h b/flash.h
index 6f0d7c0..4aba5ab 100644
--- a/flash.h
+++ b/flash.h
@@ -182,7 +182,6 @@ enum write_granularity {
 };
 extern enum chipbustype buses_supported;
 extern int verbose;
-extern const char * const flashrom_version;
 extern char *chip_to_probe;
 void map_flash_registers(struct flashchip *flash);
 int read_memmapped(struct flashchip *flash, uint8_t *buf, int start, int len);
diff --git a/flashrom.c b/flashrom.c
index f722029..a2be2fc 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -28,14 +28,16 @@
 #include <string.h>
 #include <stdlib.h>
 #include <getopt.h>
-#if HAVE_UTSNAME == 1
+
+#include "config.h"
+
+#if HAVE_SYS_UTSNAME_H == 1
 #include <sys/utsname.h>
 #endif
 #include "flash.h"
 #include "flashchips.h"
 #include "programmer.h"
 
-const char * const flashrom_version = FLASHROM_VERSION;
 char *chip_to_probe = NULL;
 int verbose = 0;
 
@@ -1332,7 +1334,7 @@ void list_programmers(char *delim)
 
 void print_sysinfo(void)
 {
-#if HAVE_UTSNAME == 1
+#if HAVE_UNAME == 1
 	struct utsname osinfo;
 	uname(&osinfo);
 
@@ -1342,7 +1344,7 @@ void print_sysinfo(void)
 	msg_ginfo(" on unknown machine");
 #endif
 	msg_ginfo(", built with");
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 #ifdef PCILIB_VERSION
 	msg_ginfo(" libpci %s,", PCILIB_VERSION);
 #else
@@ -1376,7 +1378,7 @@ void print_sysinfo(void)
 
 void print_version(void)
 {
-	msg_ginfo("flashrom v%s", flashrom_version);
+	msg_ginfo("flashrom v%s", PACKAGE_VERSION);
 	print_sysinfo();
 }
 
diff --git a/hwaccess.h b/hwaccess.h
index 2d17326..bd78539 100644
--- a/hwaccess.h
+++ b/hwaccess.h
@@ -24,13 +24,15 @@
 #ifndef __HWACCESS_H__
 #define __HWACCESS_H__ 1
 
+#include "config.h"
+
 #if defined (__i386__) || defined (__x86_64__)
 #if defined(__GLIBC__)
 #include <sys/io.h>
 #endif
 #endif
 
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 /*
  * libpci headers use the variable name "index" which triggers shadowing
  * warnings on systems which have the index() function in a default #include
@@ -160,7 +162,7 @@ cpu_to_be(64)
 #define le_to_cpu32 cpu_to_le32
 #define le_to_cpu64 cpu_to_le64
 
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 #if defined (__i386__) || defined (__x86_64__)
 
 #define __FLASHROM_HAVE_OUTB__ 1
diff --git a/ichspi.c b/ichspi.c
index bb6007e..7ac8e37 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -33,8 +33,6 @@
  *
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <string.h>
 #include "flash.h"
 #include "chipdrivers.h"
@@ -1072,5 +1070,3 @@ int via_init_spi(struct pci_dev *dev)
 
 	return 0;
 }
-
-#endif
diff --git a/internal.c b/internal.c
index 497ce6c..71965de 100644
--- a/internal.c
+++ b/internal.c
@@ -24,8 +24,9 @@
 #include <sys/types.h>
 #include "flash.h"
 #include "programmer.h"
+#include "config.h"
 
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 struct pci_dev *pci_dev_find_filter(struct pci_filter filter)
 {
 	struct pci_dev *temp;
diff --git a/it87spi.c b/it87spi.c
index 9ecc414..1750cf8 100644
--- a/it87spi.c
+++ b/it87spi.c
@@ -23,8 +23,6 @@
  * Contains the ITE IT87* SPI specific routines
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <string.h>
 #include <stdlib.h>
 #include "flash.h"
@@ -371,5 +369,3 @@ int it8716f_spi_chip_write_256(struct flashchip *flash, uint8_t *buf, int start,
 
 	return 0;
 }
-
-#endif
diff --git a/mcp6x_spi.c b/mcp6x_spi.c
index 97c0a1c..a277983 100644
--- a/mcp6x_spi.c
+++ b/mcp6x_spi.c
@@ -23,8 +23,6 @@
  * created by Michael Karcher.
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <stdint.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -172,5 +170,3 @@ int mcp6x_spi_init(int want_spi)
 
 	return 0;
 }
-
-#endif
diff --git a/nic3com.c b/nic3com.c
index 0eb781a..7084edf 100644
--- a/nic3com.c
+++ b/nic3com.c
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <stdlib.h>
 #include "flash.h"
 #include "programmer.h"
@@ -114,7 +112,3 @@ uint8_t nic3com_chip_readb(const chipaddr addr)
 	OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR);
 	return INB(io_base_addr + BIOS_ROM_DATA);
 }
-
-#else
-#error PCI port I/O access is not supported on this architecture yet.
-#endif
diff --git a/nicnatsemi.c b/nicnatsemi.c
index 1683857..e3a2807 100644
--- a/nicnatsemi.c
+++ b/nicnatsemi.c
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <stdlib.h>
 #include "flash.h"
 #include "programmer.h"
@@ -89,7 +87,3 @@ uint8_t nicnatsemi_chip_readb(const chipaddr addr)
 	 */
 	return INB(io_base_addr + BOOT_ROM_DATA);
 }
-
-#else
-#error PCI port I/O access is not supported on this architecture yet.
-#endif
diff --git a/nicrealtek.c b/nicrealtek.c
index c32e5d6..b5bcbaf 100644
--- a/nicrealtek.c
+++ b/nicrealtek.c
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include <stdlib.h>
 #include "flash.h"
 #include "programmer.h"
@@ -109,7 +107,3 @@ uint8_t nicrealtek_chip_readb(const chipaddr addr)
 
 	return val;
 }
-
-#else
-#error PCI port I/O access is not supported on this architecture yet.
-#endif
diff --git a/print_wiki.c b/print_wiki.c
index 313fdea..c061116 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -26,6 +26,7 @@
 #include "flash.h"
 #include "flashchips.h"
 #include "programmer.h"
+#include "config.h"
 
 static const char * const wiki_header = "= Supported devices =\n\n\
 <div style=\"margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; \
@@ -267,7 +268,7 @@ void print_supported_wiki(void)
 {
 	time_t t = time(NULL);
 
-	printf(wiki_header, ctime(&t), flashrom_version);
+	printf(wiki_header, ctime(&t), PACKAGE_VERSION);
 #if CONFIG_INTERNAL == 1
 	print_supported_chips_wiki(2);
 	print_supported_chipsets_wiki(3);
diff --git a/programmer.h b/programmer.h
index 6407695..dfd99b4 100644
--- a/programmer.h
+++ b/programmer.h
@@ -24,6 +24,8 @@
 #ifndef __PROGRAMMER_H__
 #define __PROGRAMMER_H__ 1
 
+#include "config.h"
+
 enum programmer {
 #if CONFIG_INTERNAL == 1
 	PROGRAMMER_INTERNAL,
@@ -198,7 +200,7 @@ void myusec_delay(int usecs);
 void myusec_calibrate_delay(void);
 void internal_delay(int usecs);
 
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 /* pcidev.c */
 extern uint32_t io_base_addr;
 extern struct pci_access *pacc;
@@ -253,7 +255,7 @@ void dmi_init(void);
 int dmi_match(const char *pattern);
 
 /* internal.c */
-#if NEED_PCI == 1
+#if HAVE_LIBPCI == 1
 struct superio {
 	uint16_t vendor;
 	uint16_t port;
diff --git a/rayer_spi.c b/rayer_spi.c
index 722ad14..df6d972 100644
--- a/rayer_spi.c
+++ b/rayer_spi.c
@@ -28,7 +28,6 @@
  * most OS parport drivers will perform many unnecessary accesses although
  * this driver just treats the parallel port as a GPIO set.
  */
-#if defined(__i386__) || defined(__x86_64__)
 
 #include "flash.h"
 #include "programmer.h"
@@ -117,7 +116,3 @@ int rayer_spi_init(void)
 
 	return 0;
 }
-
-#else
-#error PCI port I/O access is not supported on this architecture yet.
-#endif
diff --git a/sb600spi.c b/sb600spi.c
index 4e3e079..c468ca3 100644
--- a/sb600spi.c
+++ b/sb600spi.c
@@ -21,8 +21,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include "flash.h"
 #include "chipdrivers.h"
 #include "programmer.h"
@@ -319,5 +317,3 @@ int sb600_probe_spi(struct pci_dev *dev)
 	spi_controller = SPI_CONTROLLER_SB600;
 	return 0;
 }
-
-#endif
diff --git a/wbsio_spi.c b/wbsio_spi.c
index acf9cb2..1a583a8 100644
--- a/wbsio_spi.c
+++ b/wbsio_spi.c
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#if defined(__i386__) || defined(__x86_64__)
-
 #include "flash.h"
 #include "chipdrivers.h"
 #include "programmer.h"
@@ -185,5 +183,3 @@ int wbsio_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len)
 {
 	return read_memmapped(flash, buf, start, len);
 }
-
-#endif
-- 
1.7.2.3