[flashrom] [PATCH] DOS support: Makefile
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Tue Mar 9 23:23:35 CET 2010
Prepare the Makefile for DOS cross-compilation support.
Some of the changes are pretty hackish, but they shouldn't affect
compilation on other systems at all. Please note that the makefile now
references files that don't exist in the tree yet, but since these
references are only triggered if you're compiling for DOS and DOS
support is not yet merged, I think this is OK.
If you take the DOS support patch from Rudolf and replace his Makefile
patch with mine, you have to call make like this:
make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip
WARNERROR=no OS_ARCH=DOS
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Index: flashrom-dos/Makefile
===================================================================
--- flashrom-dos/Makefile (Revision 929)
+++ flashrom-dos/Makefile (Arbeitskopie)
@@ -2,6 +2,7 @@
# This file is part of the flashrom project.
#
# Copyright (C) 2005 coresystems GmbH <stepan at 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
@@ -20,15 +21,22 @@
PROGRAM = flashrom
CC ?= gcc
-STRIP = strip
+STRIP ?= strip
INSTALL = install
DIFF = diff
PREFIX ?= /usr/local
MANDIR ?= $(PREFIX)/share/man
-CFLAGS ?= -Os -Wall -Werror -Wshadow
+CFLAGS ?= -Os -Wall -Wshadow
EXPORTDIR ?= .
-OS_ARCH = $(shell uname)
+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
@@ -40,6 +48,13 @@
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
endif
+ifeq ($(OS_ARCH), DOS)
+CPPFLAGS += -I.
+OS_OBJS = getopt.o
+# Bus Pirate and Serprog are not supported under DOS.
+CONFIG_BUSPIRATESPI = no
+CONFIG_SERPROG = no
+endif
CHIP_OBJS = jedec.o stm50flw0x0x.o w39v040c.o w39v080fa.o sharplhf00l04.o w29ee011.o \
sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \
@@ -188,14 +203,28 @@
endif
ifeq ($(NEED_PCI), yes)
-LIBS += -lpci
+ifneq ($(OS_ARCH), DOS)
+# FIXME This workaround is needed until libpci detection can handle
+# cross-compiling for DOS.
+CHECK_LIBPCI = yes
+endif
+endif
+
+ifeq ($(NEED_PCI), yes)
FEATURE_CFLAGS += -D'NEED_PCI=1'
PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o
ifeq ($(OS_ARCH), NetBSD)
LIBS += -lpciutils # The libpci we want.
LIBS += -l$(shell uname -p) # For (i386|x86_64)_iopl(2).
+else
+ifeq ($(OS_ARCH), DOS)
+# FIXME There needs to be a better way to do this
+LIBS += libpci.a
+else
+LIBS += -lpci
endif
endif
+endif
ifeq ($(CONFIG_PRINT_WIKI), yes)
FEATURE_CFLAGS += -D'PRINT_WIKI_SUPPORT=1'
@@ -205,7 +234,7 @@
# 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)
+OBJS = $(CHIP_OBJS) $(CLI_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS) $(OS_OBJS)
$(PROGRAM): $(OBJS)
$(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(FEATURE_LIBS) $(LIBS)
@@ -239,7 +268,7 @@
rm -f .test.c .test; exit 1)
@rm -f .test.c .test
-ifeq ($(NEED_PCI), yes)
+ifeq ($(CHECK_LIBPCI), yes)
pciutils: compiler
@printf "Checking for libpci headers... "
@$(shell ( echo "#include <pci/pci.h>"; \
--
"I do consider assignment statements and pointer variables to be among
computer science's most valuable treasures."
-- Donald E. Knuth
More information about the flashrom
mailing list