␊ |
OPTIM = -Os -Oz␊ |
CFLAGS␉= $(RC_CFLAGS) $(OPTIM) $(MORECPP) -arch i386 -g -Wmost -Werror \␊ |
␉␉-fno-builtin -DSAIO_INTERNAL_USER -static $(OMIT_FRAME_POINTER_CFLAG) \␊ |
␉␉-mpreferred-stack-boundary=2 -fno-align-functions -fno-stack-protector \␊ |
␉␉-march=pentium4 -msse2 -mfpmath=sse -msoft-float -nostdinc -include $(SRCROOT)/autoconf.h␊ |
␉␉-fno-builtin -DSAIO_INTERNAL_USER -static $(OMIT_FRAME_POINTER_CFLAG) -fno-stack-protector \␊ |
␉␉-march=pentium4 -msse2 -msoft-float -nostdinc -include $(SRCROOT)/autoconf.h␊ |
␊ |
CPPFLAGS := $(CPPFLAGS) -nostdinc++ -include $(SRCROOT)/autoconf.h␊ |
␊ |
|
DATA_ADDR = $(shell printf "%d" `otool -l $(SYMROOT)/boot.sys | grep __data -A 4 | grep __DATA -A 3 | head -n 2 | tail -n 1 | cut -f 8 -d " "`)␊ |
PATCH_ADDR = $(shell echo ${SYMBOL_ADDR}-${DATA_ADDR}+${DATA_OFFSET} | bc)␊ |
␊ |
#### NOTE #### This value is currently *not* calculated and *should* be. It is currently determined experimentally…␊ |
DATA_PAD = 3582␊ |
␊ |
all: $(DIRS_NEEDED) boot all-recursive␊ |
␊ |
|
␊ |
␊ |
endif␊ |
␊ |
␉@${MKDIRS} $(OBJROOT)/../boot2_modules/␊ |
␉␊ |
␉@### First pass, don't worry abount segment alignment.␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(BINROOT)/ld_classic -static -segalign 20 -segaddr __INIT $(BOOT2ADDR) -preload \␊ |
␉␉␉-arch i386 -e boot2 \␊ |
␉␉␉-o $(SYMROOT)/boot.sys $(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) `find /usr/llvm-gcc-*/lib/gcc/*/*/ -name \libcc_kext.a`␊ |
␉@$(CC) -Wl,-preload -Wl,-alias,boot2,start \␊ |
␉␉␉-nostdlib -arch i386 -Wl,-pie \␊ |
␉␉␉-Wl,-read_only_relocs,suppress \␊ |
␉␉␉-lcc_kext \␊ |
␉␉␉$(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) \␊ |
␉␉␉-o ${SYMROOT}/$@.sys␊ |
␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(CC) -Wl,-preload -Wl,-alias,boot2,start \␊ |
␉␉␉-nostdlib -arch i386 -Wl,-pie \␊ |
␉␉␉-Wl,-segaddr,__INIT,`echo obase=16\; $$((0x${BOOT2ADDR})) | bc` \␊ |
␉␉␉-Wl,-segaddr,__TEXT,`echo obase=16\; $$((0x${BOOT2ADDR})) + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` | bc` \␊ |
␉␉␉-Wl,-segaddr,__DATA,`echo obase=16\; $$((0x${BOOT2ADDR})) + 3582 + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __TEXT\` | bc` \␊ |
␉␉␉-Wl,-read_only_relocs,suppress \␊ |
␉␉␉-lcc_kext \␊ |
␉␉␉$(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) \␊ |
␉␉␉-o ${SYMROOT}/$@.sys␊ |
␊ |
␊ |
ifeq (${CONFIG_MODULES}, y)␊ |
␊ |
␉@cp $(SYMROOT)/boot.sys $(SYMROOT)/boot2.sys␊ |
|
␉@$(SYMROOT)/dyldsymboltool $(SYMROOT)/boot.sys $(SYMROOT)/${SYMBOLS_MODULE}␊ |
␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(BINROOT)/ld_classic -static -segalign 20 -segaddr __INIT $(BOOT2ADDR) -preload \␊ |
␉ -arch i386 -e boot2\␊ |
␉␉-sectcreate __DATA __Symbols $(SYMROOT)/Symbols.dylib \␊ |
␉␉-o $(SYMROOT)/boot.sys $(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) `find /usr/llvm-gcc-*/lib/gcc/*/*/ -name \libcc_kext.a`␊ |
␉@$(CC) -Wl,-preload -Wl,-alias,boot2,start \␊ |
␉␉␉-nostdlib -arch i386 -Wl,-pie \␊ |
␉␉␉-Wl,-sectcreate,__DATA,__Symbols,$(SYMROOT)/Symbols.dylib \␊ |
␉␉␉-Wl,-segaddr,__INIT,`echo obase=16\; $$((0x${BOOT2ADDR})) | bc` \␊ |
␉␉␉-Wl,-segaddr,__TEXT,`echo obase=16\; $$((0x${BOOT2ADDR})) + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` | bc` \␊ |
␉␉␉-Wl,-segaddr,__DATA,`echo obase=16\; $$((0x${BOOT2ADDR})) + 3582 + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __TEXT\` | bc` \␊ |
␉␉␉-Wl,-read_only_relocs,suppress \␊ |
␉␉␉-lcc_kext \␊ |
␉␉␉$(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) \␊ |
␉␉␉-o ${SYMROOT}/$@.sys␊ |
␊ |
␊ |
␉@# Second pass, fixup global var locations␊ |
␉@${RM} $(SYMROOT)/${SYMBOLS_MODULE}␊ |
␊ |
|
␉@echo "\t[dyldsymboltool] Symbols.dylib"␊ |
␉@$(SYMROOT)/dyldsymboltool $(SYMROOT)/boot.sys $(SYMROOT)/${SYMBOLS_MODULE}␊ |
␊ |
␉@${RM} $(SYMROOT)/boot.sys␊ |
␉@echo "\t[LD] boot.sys"␊ |
␉@$(BINROOT)/ld_classic -static -segalign 20 -segaddr __INIT $(BOOT2ADDR) -preload \␊ |
␉ -arch i386 \␊ |
␉␉-sectcreate __DATA __Symbols $(SYMROOT)/Symbols.dylib \␊ |
␉␉-o $(SYMROOT)/boot.sys $(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) `find /usr/llvm-gcc-*/lib/gcc/*/*/ -name \libcc_kext.a`␊ |
␉@$(CC) -Wl,-preload -Wl,-alias,boot2,start \␊ |
␉␉␉-nostdlib -arch i386 -Wl,-pie \␊ |
␉␉␉-Wl,-sectcreate,__DATA,__Symbols,$(SYMROOT)/Symbols.dylib \␊ |
␉␉␉-Wl,-segaddr,__INIT,`echo obase=16\; $$((0x${BOOT2ADDR})) | bc` \␊ |
␉␉␉-Wl,-segaddr,__TEXT,`echo obase=16\; $$((0x${BOOT2ADDR})) + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` | bc` \␊ |
␉␉␉-Wl,-segaddr,__DATA,`echo obase=16\; $$((0x${BOOT2ADDR})) + 3582 + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __INIT\` + \`${SYMROOT}/segsize ${SYMROOT}/$@.sys __TEXT\` | bc` \␊ |
␉␉␉-Wl,-read_only_relocs,suppress \␊ |
␉␉␉-lcc_kext \␊ |
␉␉␉$(filter %.o,$^) `find $(OBJROOT)/../boot2_modules/ -name \*.o` $(LIBS) \␊ |
␉␉␉-o ${SYMROOT}/$@.sys␊ |
␊ |
␉@${RM} $(SYMROOT)/${SYMBOLS_MODULE}␊ |
␊ |