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