176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## -*- makefile -*- ------------------------------------------------------- 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## Copyright 2008 H. Peter Anvin - All Rights Reserved 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## This program is free software; you can redistribute it and/or modify 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## it under the terms of the GNU General Public License as published by 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## Boston MA 02110-1301, USA; either version 2 of the License, or 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## (at your option) any later version; incorporated herein by reference. 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## ----------------------------------------------------------------------- 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## Common configurables 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman## 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# No builtin rules 1876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMAKEFLAGS += -r 1976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMAKE += -r 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanBINDIR = /usr/bin 2276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSBINDIR = /sbin 2376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLIBDIR = /usr/lib 2476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanDATADIR = /usr/share 2576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAUXDIR = $(DATADIR)/syslinux 2676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanDIAGDIR = $(AUXDIR)/diag 2776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMANDIR = /usr/man 2876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanINCDIR = /usr/include 2976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanTFTPBOOT = /tftpboot 3076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCOM32DIR = $(AUXDIR)/com32 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanBOOTDIR = /boot 3376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEXTLINUXDIR = $(BOOTDIR)/extlinux 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanifdef DEBUG 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# This allows DEBUGOPT to be set from the command line 3776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanDEBUGOPT = -DDEBUG=$(DEBUG) 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanendif 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanNASM = nasm 4176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanNASMOPT = -Ox $(DEBUGOPT) 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanPERL = perl 4476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanPYTHON = python 4576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanUPX = upx 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCHMOD = chmod 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCC = gcc 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmangcc_ok = $(shell tmpf=gcc_ok.$$$$.tmp; \ 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if $(CC) $(GCCOPT) $(1) -c $(topdir)/dummy.c \ 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman -o $$tmpf 2>/dev/null ; \ 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman then echo '$(1)'; else echo '$(2)'; fi; \ 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman rm -f $$tmpf) 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanLD = ld 5776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanOBJDUMP = objdump 5876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanOBJCOPY = objcopy 5976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSTRIP = strip 6076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAR = ar 6176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanNM = nm 6276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanRANLIB = ranlib 6376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSTRIP = strip 6476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanGZIPPROG = gzip 6576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanXZ = xz 6676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanPNGTOPNM = pngtopnm 6776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMCOPY = mcopy 6876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMFORMAT = mformat 6976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMKISOFS = mkisofs 7076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSED = sed 7176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanWGET = wget 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancom32 = $(topdir)/com32 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Architecture definition 7676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSUBARCH := $(shell uname -m | sed -e s/i.86/i386/) 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# on x86_64, ARCH has trailing whitespace 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# strip white spaces in ARCH 7976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanARCH ?= $(strip $(SUBARCH)) 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Common warnings we want for all gcc-generated code 8276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanGCCWARN = -W -Wall -Wstrict-prototypes $(DEBUGOPT) 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Common stanza to make gcc generate .*.d dependency files 8576d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMAKEDEPS = -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Dependencies that exclude system headers; use whenever we use 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# header files from the platform. 8976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanUMAKEDEPS = -Wp,-MT,$@,-MMD,$(dir $@).$(notdir $@).d 9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Items that are only appropriate during development; this file is 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# removed when tarballs are generated. 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman-include $(MAKEDIR)/devel.mk 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Local additions, like -DDEBUG can go here 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman-include $(MAKEDIR)/local.mk 97