DIR = cdpreboot include ../MakePaths.dir OPTIM = -Os -Oz CPPFLAGS = -DBOOT1 -DCDPREBOOT CFLAGS = $(RC_CFLAGS) $(OPTIM) $(MORECPP) -arch i386 -g -Wmost -Werror \ -DSAIO_INTERNAL_USER \ $(STANDALONE_CFLAGS) DEFINES= CONFIG = hd SYMDIR = $(SYMROOT) LIBSADIR = ../libsa LIBSAIODIR = ../libsaio UTILDIR = ../util INC = -I. -I.. -I$(SYMDIR) -I$(LIBSADIR) -I$(LIBSAIODIR) -I$(UTILDIR) ifneq "" "$(wildcard /bin/mkdirs)" MKDIRS = /bin/mkdirs else MKDIRS = /bin/mkdir -p endif AS = as LD = gcc LIBS= -L$(SYMDIR) -lsaio_base -lsa OTHER_FILES = NASM = $(SYMROOT)/nasm INSTALLDIR = $(DSTROOT)/usr/standalone/i386 # NOTE: Do not use libsaio directly as it will have been built for the wrong addresses. # Instead we use the new libsaio_base.a and compile table.o, asm.o, and bios.o using # some preprocessor definitions that cause them to use the right addresses. VPATH = $(SYMROOT):$(OBJROOT) vpath %.s ../libsaio vpath % $(SYMROOT) vpath %.c ../libsaio vpath % $(SYMROOT) ###vpath %.h ../libsaio ###vpath % $(SYMROOT) # Our own objects OBJS = cdpreboot.o boot.o eltorito.o graphics.o # From libsaio OBJS += table.o asm.o bios.o UTILDIR = ../util SFILES = cdpreboot.s bios.s asm.s CFILES = boot.c table.c HFILES = OTHERFILES = Makefile ALLSRC = $(FOREIGNSRC) $(FOREIGNBIN) $(SFILES) $(CFILES) \ $(HFILES) $(OTHERFILES) DIRS_NEEDED = $(OBJROOT) $(SYMROOT) # Historical name for this variable BOOT1UADDR = 10200 MAXBOOTSIZE = 60000 all: $(DIRS_NEEDED) cdpreboot # Build the "boot sector" which loads the rest cdpreboot0: cdpreboot0.s $(SYMROOT)/boot Makefile $(NASM) $(NASM) cdpreboot0.s -o $(SYMROOT)/cdpreboot0 # Build the complete binary, including concatenating it with the "boot sector" cdpreboot: $(SYMROOT)/machOconv cdpreboot0 $(OBJS) $(LD) -arch i386 -fno-builtin -static -Wl,-preload -Wl,-segaddr,__TEXT,$(BOOT1UADDR) -nostdlib -Wl,-segalign,20 \ -Wl,-e,bootu \ -Wl,-segment_order,__TEXT:__LOSEG:__DATA \ -o $(SYMROOT)/$(@F).sys $(filter %.o,$^) $(LIBS) -lcc_kext size $(SYMROOT)/$(@F).sys $(SYMROOT)/machOconv $(SYMROOT)/$(@F).sys $(SYMROOT)/$(@F).post ls -l $(SYMROOT)/$(@F).post @( size=`ls -l $(SYMROOT)/$(@F).post | awk '{ print $$5}'` ; \ if expr "$$size" ">" "$(MAXBOOTSIZE)" > /dev/null ;\ then \ echo "Booter executable larger than $(MAXBOOTSIZE) bytes" ;\ exit 1;\ fi) cat $(SYMROOT)/cdpreboot0 $(SYMROOT)/$(@F).post | dd obs=2k conv=osync of=$(SYMROOT)/$(@F) rm $(SYMROOT)/$(@F).post install_i386:: all $(INSTALLDIR) cp $(SYMROOT)/cdpreboot $(INSTALLDIR) cd $(INSTALLDIR); chmod u+w cdpreboot clean:: rm -f $(SYMROOT)/cdpreboot.sys $(SYMROOT)/cdpreboot $(SYMROOT)/cdpreboot0 include ../MakeInc.dir #dependencies -include $(OBJROOT)/Makedep