Makefile 15.8 KB
Newer Older
1
#
2 3 4
# This file is part of the flashrom project.
#
# Copyright (C) 2005 coresystems GmbH <stepan@coresystems.de>
5
# Copyright (C) 2009,2010 Carl-Daniel Hailfinger
6 7 8 9 10 11 12 13 14 15 16 17 18
#
# 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
19
#
20

21
PROGRAM = flashrom
Ronald G. Minnich's avatar
Ronald G. Minnich committed
22

23
CC      ?= gcc
24
STRIP   ?= strip
25
INSTALL = install
26
DIFF    = diff
27
PREFIX  ?= /usr/local
28
MANDIR  ?= $(PREFIX)/share/man
29
CFLAGS  ?= -Os -Wall -Wshadow
30
EXPORTDIR ?= .
31 32
AR      ?= ar
RANLIB  ?= ranlib
33

34 35 36 37 38 39 40 41
WARNERROR ?= yes

ifeq ($(WARNERROR), yes)
CFLAGS += -Werror
endif

# FIXME We have to differentiate between host and target arch.
OS_ARCH	?= $(shell uname)
Peter Stuge's avatar
Peter Stuge committed
42
ifneq ($(OS_ARCH), SunOS)
43 44
STRIP_ARGS = -s
endif
Stefan Reinauer's avatar
Stefan Reinauer committed
45
ifeq ($(OS_ARCH), Darwin)
46
CPPFLAGS += -I/opt/local/include -I/usr/local/include
47
# DirectIO framework can be found in the DirectHW library.
48
LDFLAGS += -framework IOKit -framework DirectIO -L/opt/local/lib -L/usr/local/lib
Stefan Reinauer's avatar
Stefan Reinauer committed
49
endif
50
ifeq ($(OS_ARCH), FreeBSD)
51
CPPFLAGS += -I/usr/local/include
52 53
LDFLAGS += -L/usr/local/lib
endif
Carl-Daniel Hailfinger's avatar
Carl-Daniel Hailfinger committed
54 55 56 57
ifeq ($(OS_ARCH), OpenBSD)
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
endif
58
ifeq ($(OS_ARCH), DOS)
59
EXEC_SUFFIX := .exe
60
CPPFLAGS += -I../libgetopt -I../libpci/include
61 62
# FIXME Check if we can achieve the same effect with -L../libgetopt -lgetopt
LIBS += ../libgetopt/libgetopt.a
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
# 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
85
endif
86

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
ifeq ($(OS_ARCH), libpayload)
CC:=CC=i386-elf-gcc lpgcc
AR:=i386-elf-ar
RANLIB:=i386-elf-ranlib
CPPFLAGS += -DSTANDALONE
ifeq ($(CONFIG_DUMMY), yes)
UNSUPPORTED_FEATURES += CONFIG_DUMMY=yes
else
override CONFIG_DUMMY = no
endif
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 with libpayload (missing libusb 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

120
CHIP_OBJS = jedec.o stm50flw0x0x.o w39.o w29ee011.o \
121
	sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \
122
	sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o sharplhf00l04.o
123 124 125

LIB_OBJS = layout.o

126
CLI_OBJS = flashrom.o cli_classic.o cli_output.o print.o
127

128
PROGRAMMER_OBJS = udelay.o programmer.o
129

130
all: pciutils features $(PROGRAM)$(EXEC_SUFFIX)
131

132 133
# Set the flashrom version string from the highest revision number
# of the checked out flashrom files.
134 135
# Note to packagers: Any tree exported with "make export" or "make tarball"
# will not require subversion. The downloadable snapshots are already exported.
136
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)
137

138
RELEASE := 0.9.3
139 140
VERSION := $(RELEASE)-r$(SVNVERSION)
RELEASENAME ?= $(VERSION)
141 142

SVNDEF := -D'FLASHROM_VERSION="$(VERSION)"'
143

144 145 146
# Always enable internal/onboard support for now.
CONFIG_INTERNAL ?= yes

147
# Always enable serprog for now. Needs to be disabled on Windows.
148 149
CONFIG_SERPROG ?= yes

150 151 152
# RayeR SPIPGM hardware support
CONFIG_RAYER_SPI ?= yes

153 154 155
# Always enable 3Com NICs for now.
CONFIG_NIC3COM ?= yes

156 157
# Enable NVIDIA graphics cards. Note: write and erase do not work properly.
CONFIG_GFXNVIDIA ?= yes
158

159 160 161
# Always enable SiI SATA controllers for now.
CONFIG_SATASII ?= yes

162 163 164 165
# Highpoint (HPT) ATA/RAID controller support.
# IMPORTANT: This code is not yet working!
CONFIG_ATAHPT ?= no

166
# Always enable FT2232 SPI dongles for now.
167
CONFIG_FT2232_SPI ?= yes
168 169 170 171 172 173

# Always enable dummy tracing for now.
CONFIG_DUMMY ?= yes

# Always enable Dr. Kaiser for now.
CONFIG_DRKAISER ?= yes
174

175 176 177
# Always enable Realtek NICs for now.
CONFIG_NICREALTEK ?= yes

178 179 180
# Disable National Semiconductor NICs until support is complete and tested.
CONFIG_NICNATSEMI ?= no

181 182 183
# Always enable SPI on Intel NICs for now.
CONFIG_NICINTEL_SPI ?= yes

184 185 186
# Always enable SPI on OGP cards for now.
CONFIG_OGP_SPI ?= yes

187
# Always enable Bus Pirate SPI for now.
188
CONFIG_BUSPIRATE_SPI ?= yes
189

190 191 192
# Disable Dediprog SF100 until support is complete and tested.
CONFIG_DEDIPROG ?= no

193 194 195
# Always enable Marvell SATA controllers for now.
CONFIG_SATAMV ?= yes

196
# Disable wiki printing by default. It is only useful if you have wiki access.
197
CONFIG_PRINT_WIKI ?= no
198

199 200 201 202 203 204 205 206 207 208
# 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
209 210 211
ifeq ($(CONFIG_OGP_SPI), yes)
override CONFIG_BITBANG_SPI = yes
else
212 213 214 215
CONFIG_BITBANG_SPI ?= no
endif
endif
endif
216
endif
217

218
ifeq ($(CONFIG_INTERNAL), yes)
219
FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1'
220
PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o dmi.o internal.o
221
# FIXME: The PROGRAMMER_OBJS below should only be included on x86.
222
PROGRAMMER_OBJS += it87spi.o it85spi.o ichspi.o sb600spi.o wbsio_spi.o mcp6x_spi.o
223 224 225
NEED_PCI := yes
endif

226
ifeq ($(CONFIG_SERPROG), yes)
227
FEATURE_CFLAGS += -D'CONFIG_SERPROG=1'
228
PROGRAMMER_OBJS += serprog.o
229 230
NEED_SERIAL := yes
NEED_NET := yes
231
endif
232

233 234 235 236 237 238 239
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

240
ifeq ($(CONFIG_BITBANG_SPI), yes)
241
FEATURE_CFLAGS += -D'CONFIG_BITBANG_SPI=1'
242
PROGRAMMER_OBJS += bitbang_spi.o
243 244
endif

245
ifeq ($(CONFIG_NIC3COM), yes)
246
FEATURE_CFLAGS += -D'CONFIG_NIC3COM=1'
247
PROGRAMMER_OBJS += nic3com.o
248
NEED_PCI := yes
249
endif
250

251
ifeq ($(CONFIG_GFXNVIDIA), yes)
252
FEATURE_CFLAGS += -D'CONFIG_GFXNVIDIA=1'
253
PROGRAMMER_OBJS += gfxnvidia.o
254
NEED_PCI := yes
255 256
endif

257
ifeq ($(CONFIG_SATASII), yes)
258
FEATURE_CFLAGS += -D'CONFIG_SATASII=1'
259
PROGRAMMER_OBJS += satasii.o
260
NEED_PCI := yes
261 262
endif

263
ifeq ($(CONFIG_ATAHPT), yes)
264
FEATURE_CFLAGS += -D'CONFIG_ATAHPT=1'
265 266 267 268
PROGRAMMER_OBJS += atahpt.o
NEED_PCI := yes
endif

269
ifeq ($(CONFIG_FT2232_SPI), yes)
270
FTDILIBS := $(shell pkg-config --libs libftdi 2>/dev/null || printf "%s" "-lftdi -lusb")
271
# This is a totally ugly hack.
272
FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'CONFIG_FT2232_SPI=1'")
273
FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "$(FTDILIBS)")
274
PROGRAMMER_OBJS += ft2232_spi.o
275 276 277
endif

ifeq ($(CONFIG_DUMMY), yes)
278
FEATURE_CFLAGS += -D'CONFIG_DUMMY=1'
279
PROGRAMMER_OBJS += dummyflasher.o
280 281 282
endif

ifeq ($(CONFIG_DRKAISER), yes)
283
FEATURE_CFLAGS += -D'CONFIG_DRKAISER=1'
284
PROGRAMMER_OBJS += drkaiser.o
285
NEED_PCI := yes
286
endif
287

288
ifeq ($(CONFIG_NICREALTEK), yes)
289
FEATURE_CFLAGS += -D'CONFIG_NICREALTEK=1'
290 291 292 293
PROGRAMMER_OBJS += nicrealtek.o
NEED_PCI := yes
endif

294 295 296 297 298 299
ifeq ($(CONFIG_NICNATSEMI), yes)
FEATURE_CFLAGS += -D'CONFIG_NICNATSEMI=1'
PROGRAMMER_OBJS += nicnatsemi.o
NEED_PCI := yes
endif

300 301 302 303 304 305
ifeq ($(CONFIG_NICINTEL_SPI), yes)
FEATURE_CFLAGS += -D'CONFIG_NICINTEL_SPI=1'
PROGRAMMER_OBJS += nicintel_spi.o
NEED_PCI := yes
endif

306 307 308 309 310 311
ifeq ($(CONFIG_OGP_SPI), yes)
FEATURE_CFLAGS += -D'CONFIG_OGP_SPI=1'
PROGRAMMER_OBJS += ogp_spi.o
NEED_PCI := yes
endif

312 313
ifeq ($(CONFIG_BUSPIRATE_SPI), yes)
FEATURE_CFLAGS += -D'CONFIG_BUSPIRATE_SPI=1'
314
PROGRAMMER_OBJS += buspirate_spi.o
315
NEED_SERIAL := yes
316 317
endif

318
ifeq ($(CONFIG_DEDIPROG), yes)
319
FEATURE_CFLAGS += -D'CONFIG_DEDIPROG=1'
320 321 322 323
FEATURE_LIBS += -lusb
PROGRAMMER_OBJS += dediprog.o
endif

324 325 326 327 328 329
ifeq ($(CONFIG_SATAMV), yes)
FEATURE_CFLAGS += -D'CONFIG_SATAMV=1'
PROGRAMMER_OBJS += satamv.o
NEED_PCI := yes
endif

330
ifeq ($(NEED_SERIAL), yes)
331
LIB_OBJS += serial.o
332
endif
333

334 335 336 337
ifeq ($(NEED_NET), yes)
ifeq ($(OS_ARCH), SunOS)
LIBS += -lsocket
endif
338 339 340
endif

ifeq ($(NEED_PCI), yes)
341
CHECK_LIBPCI = yes
342
FEATURE_CFLAGS += -D'NEED_PCI=1'
343
PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o
Jonathan A. Kollasch's avatar
Jonathan A. Kollasch committed
344
ifeq ($(OS_ARCH), NetBSD)
345 346 347 348
# 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)
349 350 351
else
ifeq ($(OS_ARCH), DOS)
# FIXME There needs to be a better way to do this
352
LIBS += ../libpci/lib/libpci.a
353 354
else
LIBS += -lpci
Carl-Daniel Hailfinger's avatar
Carl-Daniel Hailfinger committed
355 356 357 358
ifeq ($(OS_ARCH), OpenBSD)
# For (i386|amd64)_iopl(2).
LIBS += -l$(shell uname -m)
endif
359
endif
Jonathan A. Kollasch's avatar
Jonathan A. Kollasch committed
360
endif
361 362
endif

363
ifeq ($(CONFIG_PRINT_WIKI), yes)
364
FEATURE_CFLAGS += -D'CONFIG_PRINT_WIKI=1'
365
CLI_OBJS += print_wiki.o
366 367
endif

368 369
FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "UTSNAME := yes" .features && printf "%s" "-D'HAVE_UTSNAME=1'")

370 371 372
# 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")

373 374
LIBFLASHROM_OBJS = $(CHIP_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS)
OBJS = $(CLI_OBJS) $(LIBFLASHROM_OBJS) 
375

376 377
$(PROGRAM)$(EXEC_SUFFIX): $(OBJS)
	$(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(FEATURE_LIBS) $(LIBS)
378

379 380 381 382
libflashrom.a: $(LIBFLASHROM_OBJS)
	$(AR) rcs $@ $^
	$(RANLIB) $@

383 384 385 386
# 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")
387

388
%.o: %.c .features
389
	$(CC) -MMD $(CFLAGS) $(CPPFLAGS) $(FEATURE_CFLAGS) $(SVNDEF) -o $@ -c $<
390

391 392
# Make sure to add all names of generated binaries here.
# This includes all frontends and libflashrom.
393
# We don't use EXEC_SUFFIX here because we want to clean everything.
394
clean:
395
	rm -f $(PROGRAM) $(PROGRAM).exe libflashrom.a *.o *.d
396 397

distclean: clean
398
	rm -f .features .libdeps
399

400 401
strip: $(PROGRAM)$(EXEC_SUFFIX)
	$(STRIP) $(STRIP_ARGS) $(PROGRAM)$(EXEC_SUFFIX)
402

403
compiler: featuresavailable
404
	@printf "Checking for a C compiler... "
405 406
	@$(shell ( echo "int main(int argc, char **argv)"; \
		   echo "{ return 0; }"; ) > .test.c )
407
	@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test.c -o .test$(EXEC_SUFFIX) >/dev/null &&	\
408
		echo "found." || ( echo "not found."; \
409 410
		rm -f .test.c .test$(EXEC_SUFFIX); exit 1)
	@rm -f .test.c .test$(EXEC_SUFFIX)
411

412
ifeq ($(CHECK_LIBPCI), yes)
413
pciutils: compiler
414
	@printf "Checking for libpci headers... "
415 416 417
	@# Avoid a failing test due to libpci header symbol shadowing breakage
	@$(shell ( echo "#define index shadow_workaround_index"; \
		   echo "#include <pci/pci.h>";		   \
418 419 420
		   echo "struct pci_access *pacc;";	   \
		   echo "int main(int argc, char **argv)"; \
		   echo "{ pacc = pci_alloc(); return 0; }"; ) > .test.c )
421
	@$(CC) -c $(CPPFLAGS) $(CFLAGS) .test.c -o .test.o >/dev/null 2>&1 &&		\
422 423 424 425
		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)
426
	@printf "Checking if libpci is present and sufficient... "
427
	@printf "" > .libdeps
428
	@$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) >/dev/null 2>&1 &&				\
429
		echo "yes." || ( echo "no.";							\
430
		printf "Checking if libz+libpci are present and sufficient...";	\
431
		$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) -lz >/dev/null 2>&1 &&		\
432
		( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo;	\
433
		echo "Please install libpci (package pciutils) and/or libz.";			\
434
		echo "See README for more information."; echo;				\
435 436
		rm -f .test.c .test.o .test$(EXEC_SUFFIX); exit 1) )
	@rm -f .test.c .test.o .test$(EXEC_SUFFIX)
437 438 439 440
else
pciutils: compiler
	@printf "" > .libdeps
endif
441

442 443
.features: features

444 445 446 447 448 449 450 451 452 453 454
# 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

455
ifeq ($(CONFIG_FT2232_SPI), yes)
456 457
features: compiler
	@echo "FEATURES := yes" > .features.tmp
458 459 460 461 462
	@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 )
463
	@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 &&	\
464 465
		( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) ||	\
		( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp )
466 467 468 469 470
	@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 )
471
	@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 &&	\
472 473
		( echo "found."; echo "UTSNAME := yes" >> .features.tmp ) ||	\
		( echo "not found."; echo "UTSNAME := no" >> .features.tmp )
474
	@$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features
475
	@rm -f .featuretest.c .featuretest$(EXEC_SUFFIX)
476 477
else
features: compiler
478
	@echo "FEATURES := yes" > .features.tmp
479 480 481 482 483
	@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 )
484
	@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 &&	\
485 486
		( echo "found."; echo "UTSNAME := yes" >> .features.tmp ) ||	\
		( echo "not found."; echo "UTSNAME := no" >> .features.tmp )
487
	@$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features
488
	@rm -f .featuretest.c .featuretest$(EXEC_SUFFIX)
489
endif
490

491
install: $(PROGRAM)$(EXEC_SUFFIX)
492
	mkdir -p $(DESTDIR)$(PREFIX)/sbin
493
	mkdir -p $(DESTDIR)$(MANDIR)/man8
494
	$(INSTALL) -m 0755 $(PROGRAM)$(EXEC_SUFFIX) $(DESTDIR)$(PREFIX)/sbin
495
	$(INSTALL) -m 0644 $(PROGRAM).8 $(DESTDIR)$(MANDIR)/man8
496

497
export:
498 499 500 501 502
	@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)/
503 504

tarball: export
505 506 507
	@tar cjf $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2 -C $(EXPORTDIR)/ $(TAROPTIONS) flashrom-$(RELEASENAME)/
	@rm -rf $(EXPORTDIR)/flashrom-$(RELEASENAME)
	@echo Created $(EXPORTDIR)/flashrom-$(RELEASENAME).tar.bz2
508

509 510 511
djgpp-dos: clean
	make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip WARNERROR=no OS_ARCH=DOS

512
.PHONY: all clean distclean compiler pciutils features export tarball dos featuresavailable
513

514
-include $(OBJS:.o=.d)