2acde3cd6899d31062509b7602a131badf7d5665
[gpxe.git] / src / Makefile
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 FIXROM          := $(PERL) ./util/fixrom.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 EINFO           := ./util/einfo
47 DOXYGEN         := doxygen
48 BINUTILS_DIR    := /usr
49 BFD_DIR         := $(BINUTILS_DIR)
50 ZLIB_DIR        := /usr
51
52 ###############################################################################
53 #
54 # SRCDIRS lists all directories containing source files.
55 #
56 SRCDIRS         :=
57 SRCDIRS         += libgcc
58 SRCDIRS         += core
59 SRCDIRS         += net net/tcp net/udp net/infiniband net/80211
60 SRCDIRS         += image
61 SRCDIRS         += drivers/bus
62 SRCDIRS         += drivers/net
63 SRCDIRS         += drivers/net/e1000
64 SRCDIRS         += drivers/net/e1000e
65 SRCDIRS         += drivers/net/igb
66 SRCDIRS         += drivers/net/phantom
67 SRCDIRS         += drivers/net/rtl818x
68 SRCDIRS         += drivers/net/ath5k
69 SRCDIRS         += drivers/net/vxge
70 SRCDIRS         += drivers/net/efi
71 SRCDIRS         += drivers/block
72 SRCDIRS         += drivers/nvs
73 SRCDIRS         += drivers/bitbash
74 SRCDIRS         += drivers/infiniband
75 SRCDIRS         += interface/pxe interface/efi interface/smbios
76 SRCDIRS         += tests
77 SRCDIRS         += crypto crypto/axtls crypto/matrixssl
78 SRCDIRS         += hci hci/commands hci/tui
79 SRCDIRS         += hci/mucurses hci/mucurses/widgets
80 SRCDIRS         += usr
81 SRCDIRS         += config
82
83 # NON_AUTO_SRCS lists files that are excluded from the normal
84 # automatic build system.
85 #
86 NON_AUTO_SRCS   :=
87 NON_AUTO_SRCS   += drivers/net/prism2.c
88
89 # INCDIRS lists the include path
90 #
91 INCDIRS         :=
92 INCDIRS         += include .
93
94 ###############################################################################
95 #
96 # Default build target: build the most common targets and print out a
97 # helpfully suggestive message
98 #
99 all : bin/blib.a bin/gpxe.dsk bin/gpxe.iso bin/gpxe.usb bin/undionly.kpxe \
100       bin/rtl8139.rom
101         @$(ECHO) '==========================================================='
102         @$(ECHO)
103         @$(ECHO) 'To create a bootable floppy, type'
104         @$(ECHO) '    cat bin/gpxe.dsk > /dev/fd0'
105         @$(ECHO) 'where /dev/fd0 is your floppy drive.  This will erase any'
106         @$(ECHO) 'data already on the disk.'
107         @$(ECHO)
108         @$(ECHO) 'To create a bootable USB key, type'
109         @$(ECHO) '    cat bin/gpxe.usb > /dev/sdX'
110         @$(ECHO) 'where /dev/sdX is your USB key, and is *not* a real hard'
111         @$(ECHO) 'disk on your system.  This will erase any data already on'
112         @$(ECHO) 'the USB key.'
113         @$(ECHO)
114         @$(ECHO) 'To create a bootable CD-ROM, burn the ISO image '
115         @$(ECHO) 'bin/gpxe.iso to a blank CD-ROM.'
116         @$(ECHO)
117         @$(ECHO) 'These images contain drivers for all supported cards.  You'
118         @$(ECHO) 'can build more customised images, and ROM images, using'
119         @$(ECHO) '    make bin/<rom-name>.<output-format>'
120         @$(ECHO)
121         @$(ECHO) '==========================================================='
122
123 ###############################################################################
124 #
125 # Build targets that do nothing but might be tried by users
126 #
127 configure :
128         @$(ECHO) "No configuration needed."
129
130 install :
131         @$(ECHO) "No installation required."
132
133 ###############################################################################
134 #
135 # Version number calculations
136 #
137 VERSION_MAJOR   = 1
138 VERSION_MINOR   = 0
139 VERSION_PATCH   = 1
140 EXTRAVERSION    = +
141 MM_VERSION      = $(VERSION_MAJOR).$(VERSION_MINOR)
142 VERSION         = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION)
143 CFLAGS          += -DVERSION_MAJOR=$(VERSION_MAJOR) \
144                    -DVERSION_MINOR=$(VERSION_MINOR) \
145                    -DVERSION_PATCH=$(VERSION_PATCH) \
146                    -DVERSION=\"$(VERSION)\"
147 IDENT           = '$(@F) $(VERSION) (GPL) etherboot.org'
148 version :
149         @$(ECHO) $(VERSION)
150
151 ###############################################################################
152 #
153 # Drag in the bulk of the build system
154 #
155
156 MAKEDEPS        += Makefile.housekeeping
157 include Makefile.housekeeping