1############################################################################### 2# 3# Initialise various variables 4# 5 6CLEANUP := 7CFLAGS := 8ASFLAGS := 9LDFLAGS := 10MAKEDEPS := Makefile 11 12############################################################################### 13# 14# Locations of tools 15# 16HOST_CC := gcc 17RM := rm -f 18TOUCH := touch 19MKDIR := mkdir 20CP := cp 21ECHO := echo 22PRINTF := printf 23PERL := /usr/bin/perl 24CC := $(CROSS_COMPILE)gcc 25CPP := $(CC) -E 26AS := $(CROSS_COMPILE)as 27LD := $(CROSS_COMPILE)ld 28SIZE := $(CROSS_COMPILE)size 29AR := $(CROSS_COMPILE)ar 30RANLIB := $(CROSS_COMPILE)ranlib 31OBJCOPY := $(CROSS_COMPILE)objcopy 32NM := $(CROSS_COMPILE)nm 33OBJDUMP := $(CROSS_COMPILE)objdump 34PARSEROM := $(PERL) ./util/parserom.pl 35MAKEROM := $(PERL) ./util/makerom.pl 36SYMCHECK := $(PERL) ./util/symcheck.pl 37SORTOBJDUMP := $(PERL) ./util/sortobjdump.pl 38PADIMG := $(PERL) ./util/padimg.pl 39LICENCE := $(PERL) ./util/licence.pl 40NRV2B := ./util/nrv2b 41ZBIN := ./util/zbin 42ELF2EFI32 := ./util/elf2efi32 43ELF2EFI64 := ./util/elf2efi64 44EFIROM := ./util/efirom 45ICCFIX := ./util/iccfix 46DOXYGEN := doxygen 47BINUTILS_DIR := /usr 48BFD_DIR := $(BINUTILS_DIR) 49 50############################################################################### 51# 52# SRCDIRS lists all directories containing source files. 53# 54SRCDIRS := 55SRCDIRS += libgcc 56SRCDIRS += core 57SRCDIRS += net net/tcp net/udp net/infiniband net/80211 58SRCDIRS += image 59SRCDIRS += drivers/bus 60SRCDIRS += drivers/net 61SRCDIRS += drivers/net/e1000 62SRCDIRS += drivers/net/phantom 63SRCDIRS += drivers/net/rtl818x 64SRCDIRS += drivers/net/ath5k 65SRCDIRS += drivers/block 66SRCDIRS += drivers/nvs 67SRCDIRS += drivers/bitbash 68SRCDIRS += drivers/infiniband 69SRCDIRS += interface/pxe interface/efi interface/smbios 70SRCDIRS += tests 71SRCDIRS += crypto crypto/axtls crypto/matrixssl 72SRCDIRS += hci hci/commands hci/tui 73SRCDIRS += hci/mucurses hci/mucurses/widgets 74SRCDIRS += usr 75SRCDIRS += config 76 77# NON_AUTO_SRCS lists files that are excluded from the normal 78# automatic build system. 79# 80NON_AUTO_SRCS := 81NON_AUTO_SRCS += drivers/net/prism2.c 82 83# INCDIRS lists the include path 84# 85INCDIRS := 86INCDIRS += include . 87 88############################################################################### 89# 90# Default build target: build the most common targets and print out a 91# helpfully suggestive message 92# 93all : bin/blib.a bin/gpxe.dsk bin/gpxe.iso bin/gpxe.usb bin/undionly.kpxe 94 @$(ECHO) '===========================================================' 95 @$(ECHO) 96 @$(ECHO) 'To create a bootable floppy, type' 97 @$(ECHO) ' cat bin/gpxe.dsk > /dev/fd0' 98 @$(ECHO) 'where /dev/fd0 is your floppy drive. This will erase any' 99 @$(ECHO) 'data already on the disk.' 100 @$(ECHO) 101 @$(ECHO) 'To create a bootable USB key, type' 102 @$(ECHO) ' cat bin/gpxe.usb > /dev/sdX' 103 @$(ECHO) 'where /dev/sdX is your USB key, and is *not* a real hard' 104 @$(ECHO) 'disk on your system. This will erase any data already on' 105 @$(ECHO) 'the USB key.' 106 @$(ECHO) 107 @$(ECHO) 'To create a bootable CD-ROM, burn the ISO image ' 108 @$(ECHO) 'bin/gpxe.iso to a blank CD-ROM.' 109 @$(ECHO) 110 @$(ECHO) 'These images contain drivers for all supported cards. You' 111 @$(ECHO) 'can build more customised images, and ROM images, using' 112 @$(ECHO) ' make bin/<rom-name>.<output-format>' 113 @$(ECHO) 114 @$(ECHO) '===========================================================' 115 116############################################################################### 117# 118# Build targets that do nothing but might be tried by users 119# 120configure : 121 @$(ECHO) "No configuration needed." 122 123install : 124 @$(ECHO) "No installation required." 125 126############################################################################### 127# 128# Version number calculations 129# 130VERSION_MAJOR = 1 131VERSION_MINOR = 0 132VERSION_PATCH = 0 133EXTRAVERSION = 134MM_VERSION = $(VERSION_MAJOR).$(VERSION_MINOR) 135VERSION = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION) 136CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) \ 137 -DVERSION_MINOR=$(VERSION_MINOR) \ 138 -DVERSION_PATCH=$(VERSION_PATCH) \ 139 -DVERSION=\"$(VERSION)\" 140IDENT = '$(@F) $(VERSION) (GPL) etherboot.org' 141version : 142 @$(ECHO) $(VERSION) 143 144############################################################################### 145# 146# Drag in the bulk of the build system 147# 148 149MAKEDEPS += Makefile.housekeeping 150include Makefile.housekeeping 151