DOS refinements

This allows to use the DOS library trees stored in a user-specified directory.

I have mirrored the needed patches, sources and binaries (the latter
are properly licensed to allow that) in the flashrom wiki, so use those
URLs instead of the original sources.

Corresponding to flashrom svn r1734.

Signed-off-by: Stefan Tauner <>
Acked-by: Stefan Tauner <>
diff --git a/Makefile b/Makefile
index 70ef640..d1bd59c 100644
--- a/Makefile
+++ b/Makefile
@@ -39,6 +39,7 @@
 AR      ?= ar
 RANLIB  ?= ranlib
 # 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
@@ -99,11 +100,12 @@
 ifeq ($(TARGET_OS), DOS)
 EXEC_SUFFIX := .exe
-CPPFLAGS += -I../libgetopt
+CPPFLAGS += -I$(DOSLIBS_BASE)/libgetopt
 # DJGPP has odd uint*_t definitions which cause lots of format string warnings.
 CFLAGS += -Wno-format
 # FIXME Check if we can achieve the same effect with -L../libgetopt -lgetopt
-LIBS += ../libgetopt/libgetopt.a
+LIBS += -lgetopt
+LDFLAGS += -L$(DOSLIBS_BASE)/libgetopt/
 # Bus Pirate, Serprog and PonyProg are not supported under DOS (missing serial support).
 ifeq ($(CONFIG_BUSPIRATE_SPI), yes)
@@ -611,9 +613,9 @@
 PCILIBS += -l$(shell uname -p)
 ifeq ($(TARGET_OS), DOS)
-# FIXME There needs to be a better way to do this
-CPPFLAGS += -I../libpci/include
-PCILIBS += ../libpci/lib/libpci.a
+CPPFLAGS += -I$(DOSLIBS_BASE)/libpci/include
+LDFLAGS += -L$(DOSLIBS_BASE)/libpci/lib/
+PCILIBS += -lpci
 PCILIBS += -lpci
 ifeq ($(TARGET_OS), OpenBSD)
diff --git a/README b/README
index 7f24cca..a096aad 100644
--- a/README
+++ b/README
@@ -105,20 +105,24 @@
  The cross toolchain packages for your distribution may have slightly different
  names (look for packages named *djgpp*).
- Download pciutils 3.1.5 and apply
- Download and compile
+ You will need the following library source trees containing their compiled
+ static libraries either in the parent directory of the flashrom source or
+ specify the base folder on compile time with the DOSLIBS_BASE parameter.
+ The default as described above is equal to calling
+   'make djgpp-dos DOSLIBS_BASE=..'
+ To get and build said libraries...
+ Download pciutils 3.1.5 and apply
  Compile pciutils, see README.DJGPP for instructions.
+ Download and compile
  Enter the flashrom directory.
- ../libpci should contain pciutils source and binaries.
- ../libgetopt should contain getopt.a from libgetopt.
  Run either (change settings where appropriate)
  make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip
  or (above settings hardcoded)
  make djgpp-dos
- You might have to add WARNERROR=no to the make command line.
- To run flashrom.exe, download and unpack
- and make sure
- CWSDPMI.EXE is in the current directory.
+ To run flashrom.exe, download and
+ unpack CWSDPMI.EXE into the current directory or one in PATH.
 To cross-compile on Linux for Windows: