1 ############################################################################### 2 # 3 # Initialise various variables 4 # 5 6 CLEANUP := 7 CFLAGS := 8 ASFLAGS := 9 LDFLAGS := 10 MAKEDEPS := Makefile 11 12 ############################################################################### 13 # 14 # Locations of tools 15 # 16 HOST_CC := gcc 17 RM := rm -f 18 TOUCH := touch 19 MKDIR := mkdir 20 CP := cp 21 ECHO := echo 22 PRINTF := printf 23 PERL := /usr/bin/perl 24 CC := $(CROSS_COMPILE)gcc 25 CPP := $(CC) -E 26 AS := $(CROSS_COMPILE)as 27 LD := $(CROSS_COMPILE)ld 28 SIZE := $(CROSS_COMPILE)size 29 AR := $(CROSS_COMPILE)ar 30 RANLIB := $(CROSS_COMPILE)ranlib 31 OBJCOPY := $(CROSS_COMPILE)objcopy 32 NM := $(CROSS_COMPILE)nm 33 OBJDUMP := $(CROSS_COMPILE)objdump 34 PARSEROM := $(PERL) ./util/parserom.pl 35 MAKEROM := $(PERL) ./util/makerom.pl 36 SYMCHECK := $(PERL) ./util/symcheck.pl 37 SORTOBJDUMP := $(PERL) ./util/sortobjdump.pl 38 PADIMG := $(PERL) ./util/padimg.pl 39 LICENCE := $(PERL) ./util/licence.pl 40 NRV2B := ./util/nrv2b 41 ZBIN := ./util/zbin 42 ELF2EFI32 := ./util/elf2efi32 43 ELF2EFI64 := ./util/elf2efi64 44 EFIROM := ./util/efirom 45 ICCFIX := ./util/iccfix 46 DOXYGEN := doxygen 47 BINUTILS_DIR := /usr 48 BFD_DIR := $(BINUTILS_DIR) 49 50 ############################################################################### 51 # 52 # SRCDIRS lists all directories containing source files. 53 # 54 SRCDIRS := 55 SRCDIRS += libgcc 56 SRCDIRS += core 57 SRCDIRS += net net/tcp net/udp net/infiniband net/80211 58 SRCDIRS += image 59 SRCDIRS += drivers/bus 60 SRCDIRS += drivers/net 61 SRCDIRS += drivers/net/e1000 62 SRCDIRS += drivers/net/phantom 63 SRCDIRS += drivers/net/rtl818x 64 SRCDIRS += drivers/net/ath5k 65 SRCDIRS += drivers/block 66 SRCDIRS += drivers/nvs 67 SRCDIRS += drivers/bitbash 68 SRCDIRS += drivers/infiniband 69 SRCDIRS += interface/pxe interface/efi interface/smbios 70 SRCDIRS += tests 71 SRCDIRS += crypto crypto/axtls crypto/matrixssl 72 SRCDIRS += hci hci/commands hci/tui 73 SRCDIRS += hci/mucurses hci/mucurses/widgets 74 SRCDIRS += usr 75 SRCDIRS += config 76 77 # NON_AUTO_SRCS lists files that are excluded from the normal 78 # automatic build system. 79 # 80 NON_AUTO_SRCS := 81 NON_AUTO_SRCS += drivers/net/prism2.c 82 83 # INCDIRS lists the include path 84 # 85 INCDIRS := 86 INCDIRS += include . 87 88 ############################################################################### 89 # 90 # Default build target: build the most common targets and print out a 91 # helpfully suggestive message 92 # 93 all : 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 # 120 configure : 121 @$(ECHO) "No configuration needed." 122 123 install : 124 @$(ECHO) "No installation required." 125 126 ############################################################################### 127 # 128 # Version number calculations 129 # 130 VERSION_MAJOR = 1 131 VERSION_MINOR = 0 132 VERSION_PATCH = 0 133 EXTRAVERSION = 134 MM_VERSION = $(VERSION_MAJOR).$(VERSION_MINOR) 135 VERSION = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION) 136 CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) \ 137 -DVERSION_MINOR=$(VERSION_MINOR) \ 138 -DVERSION_PATCH=$(VERSION_PATCH) \ 139 -DVERSION=\"$(VERSION)\" 140 IDENT = '$(@F) $(VERSION) (GPL) etherboot.org' 141 version : 142 @$(ECHO) $(VERSION) 143 144 ############################################################################### 145 # 146 # Drag in the bulk of the build system 147 # 148 149 MAKEDEPS += Makefile.housekeeping 150 include Makefile.housekeeping 151