Index: branches/xZen/src/modules/Makefile =================================================================== --- branches/xZen/src/modules/Makefile (revision 1262) +++ branches/xZen/src/modules/Makefile (revision 1263) @@ -49,7 +49,7 @@ @${MKDIRS} "$(SYMROOT)/modules/" -$(SYMROOT)/boot_modules.c: ${OBJROOT} ${SYMROOT}/modules/ ${OBJROOT} $(addprefix $(OBJROOT)/, ${MODULE_OBJS}) +$(SYMROOT)/boot_modules.c: $(SYMROOT) $(OBJROOT) ${SYMROOT}/modules/ ${OBJROOT} $(addprefix $(OBJROOT)/, ${MODULE_OBJS}) ifeq ($(BUILT_IN),yes) @echo "// Autogenerated - do not modify" > $@ @echo "#include \"../../i386/modules/ModuleSystem/include/modules.h\"" >> $@ @@ -57,7 +57,7 @@ @echo "void start_built_in_modules() {" >> $@ endif -$(SYMROOT)/boot_modules.h: ${OBJROOT} ${SYMROOT}/modules/ ${OBJROOT} $(addprefix $(OBJROOT)/, ${MODULE_OBJS}) +$(SYMROOT)/boot_modules.h: $(SYMROOT) $(OBJROOT) ${SYMROOT}/modules/ ${OBJROOT} $(addprefix $(OBJROOT)/, ${MODULE_OBJS}) ifeq ($(BUILT_IN),yes) @echo "// Autogenerated - do not modify" > $@ @echo "void start_built_in_modules(); " > $@ Index: branches/xZen/src/Makefile =================================================================== --- branches/xZen/src/Makefile (revision 1262) +++ branches/xZen/src/Makefile (revision 1263) @@ -6,7 +6,7 @@ DSTROOT = $(ROOT)/dst DOCROOT = $(ROOT)/doc -SUBDIRS=util modules arch/${ARCH} +SUBDIRS=util modules arch all: @echo ================= make $@ BUILT_IN=yes for modules arch $(ARCH) ================= Index: branches/xZen/src/arch/i386/libsaio/console.c =================================================================== --- branches/xZen/src/arch/i386/libsaio/console.c (revision 1262) +++ branches/xZen/src/arch/i386/libsaio/console.c (revision 1263) @@ -45,7 +45,6 @@ */ #include "libsaio.h" -#include bool gVerboseMode; bool gErrors; @@ -88,7 +87,6 @@ msgbuf = malloc(BOOTER_LOG_SIZE); bzero(msgbuf, BOOTER_LOG_SIZE); cursor = msgbuf; - msglog("%s\n", "Chameleon " I386BOOT_CHAMELEONVERSION " (svn-r" I386BOOT_CHAMELEONREVISION ")" " [" I386BOOT_BUILDDATE "]"); } void msglog(const char * fmt, ...) Index: branches/xZen/src/arch/i386/libsaio/load.c =================================================================== --- branches/xZen/src/arch/i386/libsaio/load.c (revision 1262) +++ branches/xZen/src/arch/i386/libsaio/load.c (revision 1263) @@ -86,257 +86,4 @@ if (length != 0) *length = size; return 0; -} - -long DecodeMachO(void *binary, entry_t *rentry, char **raddr, int *rsize) -{ - struct mach_header *mH; - unsigned long ncmds, cmdBase, cmd, cmdsize, cmdstart; - // long headerBase, headerAddr, headerSize; - unsigned int vmaddr = ~0; - unsigned int vmend = 0; - unsigned long cnt; - long ret = -1; - unsigned int entry = 0; - - gBinaryAddress = (unsigned long)binary; - - mH = (struct mach_header *)(gBinaryAddress); - switch (archCpuType) - { - case CPU_TYPE_I386: - if (mH->magic != MH_MAGIC) { - error("Mach-O file has bad magic number\n"); - return -1; - } - cmdstart = (unsigned long)gBinaryAddress + sizeof(struct mach_header); - break; - case CPU_TYPE_X86_64: - if (mH->magic != MH_MAGIC_64 && mH->magic == MH_MAGIC) - return -1; - if (mH->magic != MH_MAGIC_64) { - error("Mach-O file has bad magic number\n"); - return -1; - } - cmdstart = (unsigned long)gBinaryAddress + sizeof(struct mach_header_64); - break; - default: - error("Unknown CPU type\n"); - return -1; - } - - cmdBase = cmdstart; - -#if DEBUG - printf("magic: %x\n", (unsigned)mH->magic); - printf("cputype: %x\n", (unsigned)mH->cputype); - printf("cpusubtype: %x\n", (unsigned)mH->cpusubtype); - printf("filetype: %x\n", (unsigned)mH->filetype); - printf("ncmds: %x\n", (unsigned)mH->ncmds); - printf("sizeofcmds: %x\n", (unsigned)mH->sizeofcmds); - printf("flags: %x\n", (unsigned)mH->flags); - getchar(); -#endif - - ncmds = mH->ncmds; - - for (cnt = 0; cnt < ncmds; cnt++) { - cmd = ((long *)cmdBase)[0]; - cmdsize = ((long *)cmdBase)[1]; - unsigned int load_addr; - unsigned int load_size; - - switch (cmd) { - case LC_SEGMENT_64: - case LC_SEGMENT: - ret = DecodeSegment(cmdBase, &load_addr, &load_size); - if (ret == 0 && load_size != 0 && load_addr >= KERNEL_ADDR) { - vmaddr = MIN(vmaddr, load_addr); - vmend = MAX(vmend, load_addr + load_size); - } - break; - - case LC_UNIXTHREAD: - ret = DecodeUnixThread(cmdBase, &entry); - break; - - case LC_SYMTAB: - break; - - default: -#if NOTDEF - printf("Ignoring cmd type %d.\n", (unsigned)cmd); -#endif - break; - } - - if (ret != 0) return -1; - - cmdBase += cmdsize; - } - - *rentry = (entry_t)( (unsigned long) entry & 0x3fffffff ); - *rsize = vmend - vmaddr; - *raddr = (char *)vmaddr; - - cmdBase = cmdstart; - for (cnt = 0; cnt < ncmds; cnt++) { - cmd = ((long *)cmdBase)[0]; - cmdsize = ((long *)cmdBase)[1]; - - if(cmd==LC_SYMTAB) - if (DecodeSymbolTable(cmdBase)!=0) - return -1; - - cmdBase += cmdsize; - } - - return ret; -} - -// Private Functions - -static long DecodeSegment(long cmdBase, unsigned int *load_addr, unsigned int *load_size) -{ - unsigned long vmaddr, fileaddr; - long vmsize, filesize; - char *segname; - - if (((long *)cmdBase)[0]==LC_SEGMENT_64) - { - struct segment_command_64 *segCmd; - - segCmd = (struct segment_command_64 *)cmdBase; - - vmaddr = (segCmd->vmaddr & 0x3fffffff); - vmsize = segCmd->vmsize; - fileaddr = (gBinaryAddress + segCmd->fileoff); - filesize = segCmd->filesize; - - segname=segCmd->segname; - -#ifdef DEBUG - printf("segname: %s, vmaddr: %x, vmsize: %x, fileoff: %x, filesize: %x, nsects: %d, flags: %x.\n", - segCmd->segname, (unsigned)vmaddr, (unsigned)vmsize, (unsigned)fileaddr, (unsigned)filesize, - (unsigned) segCmd->nsects, (unsigned)segCmd->flags); - getchar(); -#endif - } - else - { - struct segment_command *segCmd; - - segCmd = (struct segment_command *)cmdBase; - - vmaddr = (segCmd->vmaddr & 0x3fffffff); - vmsize = segCmd->vmsize; - fileaddr = (gBinaryAddress + segCmd->fileoff); - filesize = segCmd->filesize; - - segname=segCmd->segname; - -#ifdef DEBUG - printf("segname: %s, vmaddr: %x, vmsize: %x, fileoff: %x, filesize: %x, nsects: %d, flags: %x.\n", - segCmd->segname, (unsigned)vmaddr, (unsigned)vmsize, (unsigned)fileaddr, (unsigned)filesize, - (unsigned) segCmd->nsects, (unsigned)segCmd->flags); - getchar(); -#endif - } - - if (vmsize == 0 || filesize == 0) { - *load_addr = ~0; - *load_size = 0; - return 0; - } - - if (! ((vmaddr >= KERNEL_ADDR && - (vmaddr + vmsize) <= (KERNEL_ADDR + KERNEL_LEN)) || - (vmaddr >= HIB_ADDR && - (vmaddr + vmsize) <= (HIB_ADDR + HIB_LEN)))) { - stop("Kernel overflows available space"); - } - - if (vmsize && ((strcmp(segname, "__PRELINK_INFO") == 0) || (strcmp(segname, "__PRELINK") == 0))) - gHaveKernelCache = true; - - // Copy from file load area. - if (vmsize>0 && filesize>0) - bcopy((char *)fileaddr, (char *)vmaddr, vmsize>filesize?filesize:vmsize); - - // Zero space at the end of the segment. - if (vmsize > filesize) - bzero((char *)(vmaddr + filesize), vmsize - filesize); - - *load_addr = vmaddr; - *load_size = vmsize; - - return 0; -} - -static long DecodeUnixThread(long cmdBase, unsigned int *entry) -{ - switch (archCpuType) - { - case CPU_TYPE_I386: - { - i386_thread_state_t *i386ThreadState; - - i386ThreadState = (i386_thread_state_t *) - (cmdBase + sizeof(struct thread_command) + 8); - - *entry = i386ThreadState->eip; - return 0; - } - - case CPU_TYPE_X86_64: - { - x86_thread_state64_t *x86_64ThreadState; - - x86_64ThreadState = (x86_thread_state64_t *) - (cmdBase + sizeof(struct thread_command) + 8); - - *entry = x86_64ThreadState->rip; - return 0; - } - - default: - error("Unknown CPU type\n"); - return -1; - } -} - -static long DecodeSymbolTable(long cmdBase) -{ - struct symtab_command *symTab, *symTableSave; - long tmpAddr, symsSize, totalSize; - long gSymbolTableAddr; - long gSymbolTableSize; - - symTab = (struct symtab_command *)cmdBase; - -#if DEBUG - printf("symoff: %x, nsyms: %x, stroff: %x, strsize: %x\n", - symTab->symoff, symTab->nsyms, symTab->stroff, symTab->strsize); - getchar(); -#endif - - symsSize = symTab->stroff - symTab->symoff; - totalSize = symsSize + symTab->strsize; - - gSymbolTableSize = totalSize + sizeof(struct symtab_command); -// gSymbolTableAddr = AllocateKernelMemory(gSymbolTableSize); - // Add the SymTab to the memory-map. -// AllocateMemoryRange("Kernel-__SYMTAB", gSymbolTableAddr, gSymbolTableSize, -1); - - symTableSave = (struct symtab_command *)gSymbolTableAddr; - tmpAddr = gSymbolTableAddr + sizeof(struct symtab_command); - - symTableSave->symoff = tmpAddr; - symTableSave->nsyms = symTab->nsyms; - symTableSave->stroff = tmpAddr + symsSize; - symTableSave->strsize = symTab->strsize; - - bcopy((char *)(gBinaryAddress + symTab->symoff), - (char *)tmpAddr, totalSize); - return 0; -} +} \ No newline at end of file Index: branches/xZen/src/arch/i386/libsaio/Makefile =================================================================== --- branches/xZen/src/arch/i386/libsaio/Makefile (revision 1262) +++ branches/xZen/src/arch/i386/libsaio/Makefile (revision 1263) @@ -1,48 +1,32 @@ -SRCROOT = $(shell pwd)/../../ -OBJROOT = $(SRCROOT)/obj/i386/libsaio -SYMROOT = $(SRCROOT)/sym/i386 -DSTROOT = $(SRCROOT)/dst/i386 -DOCROOT = $(SRCROOT)/doc -IMGROOT = $(SRCROOT)/sym/cache -IMGSKELROOT = $(SRCROOT)/imgskel -CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot - +ROOT = $(shell pwd)/../../../../ DIR = libsaio -include ${SRCROOT}/Make.rules +SRCROOT = ${ROOT}/src +OBJROOT = $(ROOT)/obj/i386/${DIR} +SYMROOT = $(ROOT)/sym/i386 +DSTROOT = $(ROOT)/dst/usr/standalone/i386/ +DOCROOT = $(ROOT)/doc UTILDIR = ../util LIBSADIR = ../libsa BOOT2DIR = ../boot2 DEFINES = -DNOTHING -#DEFINES = -DDEBUG_CPU=1 -DDEBUG_MEM=1 -DDEBUG_SPD=1 -DDEBUG_PCI=1 -DDEBUG_SMBIOS=1 -CFLAGS := $(CFLAGS) $(RC_CFLAGS) $(MORECPP) -arch i386 \ - -D__ARCHITECTURE__=\"i386\" -DSAIO_INTERNAL_USER \ - -DRCZ_COMPRESSED_FILE_SUPPORT \ - -fno-builtin -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 - -CPPFLAGS := $(CPPFLAGS) -nostdinc++ - INC = -I. -I$(SYMROOT) -I$(LIBSADIR) -I$(BOOT2DIR) -I${SRCROOT}/i386/include -SAIO_OBJS = table.o asm.o bios.o biosfn.o \ - misc.o \ - xml.o \ - load.o \ - console.o +OBJECTS = table asm bios biosfn \ + misc xml load console LIBS = libsaio.a LIBS := $(addprefix $(SYMROOT)/, $(LIBS)) -DIRS_NEEDED = $(OBJROOT) $(SYMROOT) +DIRS_NEEDED = +include ${ROOT}/Make.rules -all: $(DIRS_NEEDED) $(LIBS) +all: $(OBJROOT) $(SYMROOT) $(LIBS) -$(LIBS): $(addprefix $(OBJROOT)/, $(SAIO_OBJS)) +$(LIBS): ${ACTUAL_OBJECTS} @echo "\t[RM] $@" @rm -f $@ @echo "\t[AR] $(@F)" Index: branches/xZen/src/arch/i386/boot0/Makefile =================================================================== --- branches/xZen/src/arch/i386/boot0/Makefile (revision 1262) +++ branches/xZen/src/arch/i386/boot0/Makefile (revision 1263) @@ -1,24 +1,22 @@ -SRCROOT = $(shell pwd)/../../ -OBJROOT = $(SRCROOT)/obj/i386/boot0 -SYMROOT = $(SRCROOT)/sym/i386 -DSTROOT = $(SRCROOT)/dst/i386 -DOCROOT = $(SRCROOT)/doc -IMGROOT = $(SRCROOT)/sym/cache -IMGSKELROOT = $(SRCROOT)/imgskel -CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot - +ROOT = $(shell pwd)/../../../../ DIR = boot0 -include ${SRCROOT}/Make.rules +SRCROOT = ${ROOT}/src +OBJROOT = $(ROOT)/obj/i386/${DIR} +SYMROOT = $(ROOT)/sym/i386 +DSTROOT = $(ROOT)/dst/usr/standalone/i386/ +DOCROOT = $(ROOT)/doc -DIRS_NEEDED = $(SYMROOT) +include ${ROOT}/Make.rules +DIRS_NEEDED = -OBJECTS = boot0 boot0hfs boot0md chain0 -OBJECTS := $(addprefix $(SYMROOT)/, $(OBJECTS)) -all: $(DIRS_NEEDED) $(OBJECTS) +BOOT0_OBJS = boot0 boot0hfs boot0md chain0 +BOOT0_OBJS := $(addprefix $(SYMROOT)/, $(BOOT0_OBJS)) -$(OBJECTS): $(SRCROOT)/autoconf.inc +all: $(SYMROOT) $(BOOT0_OBJS) + +$(BOOT0_OBJS): @echo "\t[NASM] $(@F)" @$(NASM) $(@F).s -o $@ Index: branches/xZen/src/arch/i386/boot1/Makefile =================================================================== --- branches/xZen/src/arch/i386/boot1/Makefile (revision 1262) +++ branches/xZen/src/arch/i386/boot1/Makefile (revision 1263) @@ -1,23 +1,15 @@ -SRCROOT = $(shell pwd)/../../ -OBJROOT = $(SRCROOT)/obj/i386/boot1 -SYMROOT = $(SRCROOT)/sym/i386 -DSTROOT = $(SRCROOT)/dst/i386 -DOCROOT = $(SRCROOT)/doc -IMGROOT = $(SRCROOT)/sym/cache -IMGSKELROOT = $(SRCROOT)/imgskel -CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot - -include ${SRCROOT}/Make.rules - +ROOT = $(shell pwd)/../../../../ DIR = boot1 +SRCROOT = ${ROOT}/src +OBJROOT = $(ROOT)/obj/i386/${DIR} +SYMROOT = $(ROOT)/sym/i386 +DSTROOT = $(ROOT)/dst/usr/standalone/i386/ +DOCROOT = $(ROOT)/doc -DIRS_NEEDED = $(SYMROOT) +include ${ROOT}/Make.rules -VERS = `vers_string -f 5.0 | tr - .` -NEW_VERS = Darwin boot1h v$(VERS) +DIRS_NEEDED = - - PROGRAMS = boot1hp boot1f32 ifeq (${CONFIG_BOOT1_HFS}, y) @@ -31,13 +23,9 @@ PROGRAMS := $(addprefix $(SYMROOT)/, $(PROGRAMS)) -all: $(DIRS_NEEDED) $(PROGRAMS) +all: $(SYMROOT) $(PROGRAMS) -$(PROGRAMS): $(SRCROOT)/autoconf.inc +$(PROGRAMS): @echo "\t[NASM] $(@F)" @$(NASM) $(@F).s -o $@ - -install_i386:: all $(INSTALLDIR) - cp $(SYMROOT)/boot1h $(INSTALLDIR)/ - cd $(INSTALLDIR); chmod u+w $(VERSIONED_FILES) Index: branches/xZen/src/arch/i386/boot2/Makefile =================================================================== --- branches/xZen/src/arch/i386/boot2/Makefile (revision 1262) +++ branches/xZen/src/arch/i386/boot2/Makefile (revision 1263) @@ -1,38 +1,18 @@ -SRCROOT = $(shell pwd)/../../ -OBJROOT = $(SRCROOT)/obj/i386/boot2 -SYMROOT = $(SRCROOT)/sym/i386 -DSTROOT = $(SRCROOT)/dst/i386 -DOCROOT = $(SRCROOT)/doc -IMGROOT = $(SRCROOT)/sym/cache -IMGSKELROOT = $(SRCROOT)/imgskel -CDBOOT = ${IMGROOT}/usr/standalone/i386/cdboot - -VPATH = $(SYMROOT) - -# Makefile for i386 boot program -# define FLOPPY and SMALL using DEFINES macro as necessary - -PNGCRUSH = `which pngcrush` -PNGOPTIONS = -rem cHRM -rem gAMA -rem iCCP -rem sRGB - +ROOT = $(shell pwd)/../../../../ DIR = boot2 -include ${SRCROOT}/Make.rules +SRCROOT = ${ROOT}/src +OBJROOT = $(ROOT)/obj/i386/${DIR} +SYMROOT = $(ROOT)/sym/i386 +DSTROOT = $(ROOT)/dst/usr/standalone/i386/ +DOCROOT = $(ROOT)/doc -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 +include ${ROOT}/Make.rules -CPPFLAGS := $(CPPFLAGS) -nostdinc++ -include $(SRCROOT)/autoconf.h +OPTIM = -Oz -DEFINES= -CONFIG = hd -SYMDIR = $(SYMROOT) LIBSADIR = ../libsa LIBSAIODIR = ../libsaio -THEME = $(CONFIG_EMBEDED_THEME) -THEMEDIR = ../../artwork/themes/$(THEME) + INC = -I. -I$(SYMDIR) -I$(LIBSADIR) -I$(LIBSAIODIR) -I${SRCROOT}/i386/include LIBS= -L$(SYMDIR) -lsaio -lsa @@ -40,10 +20,7 @@ OTHER_FILES = -# The ordering is important; -# boot2.o must be first. -OBJS = boot2.o boot.o mboot.o boot_modules.o -# button.o browser.o scrollbar.o == NOTYET bmdecompress.o graphic_utils.o prompt.o options.o lzss.o +OBJECTS = boot2 boot mboot boot_modules UTILDIR = ../util DIRS_NEEDED = $(OBJROOT) $(SYMROOT) @@ -64,17 +41,10 @@ all: $(DIRS_NEEDED) boot -ifeq (${CONFIG_EMBED_THEME}, y) -boot: $(SYMROOT)/art.h $(SYMROOT)/vers.h $(SYMROOT)/embedded.h $(addprefix $(OBJROOT)/, $(OBJS)) $(addprefix $(SYMROOT)/, $(LIBDEP)) +boot: $(SYMROOT)/embedded.h $(ACTUAL_OBJECTS) $(addprefix $(SYMROOT)/, $(LIBDEP)) -else -boot: $(SYMROOT)/vers.h $(SYMROOT)/embedded.h $(addprefix $(OBJROOT)/, $(OBJS)) $(addprefix $(SYMROOT)/, $(LIBDEP)) - - -endif - @${MKDIRS} $(OBJROOT)/../boot2_modules/ @echo "\t[LD] boot.sys" @$(CC) -Wl,-segaddr,__INIT,$(BOOT2ADDR) -Wl,-segalign,20 -Wl,-preload \ @@ -151,37 +121,10 @@ @echo "\t[MACHOCONV] boot" @$(SYMROOT)/machOconv $(SYMROOT)/boot.sys $(SYMROOT)/boot -$(SYMROOT)/art.h: - @if [ "$(PNGCRUSH)" ]; then \ - echo "optimizing art files ...\n$(PNGCRUSH) $(PNGOPTIONS) artwork/$(THEME)"; \ - cd $(THEMEDIR) && find . -name '*.png' -exec $(PNGCRUSH) -q $(PNGOPTIONS) -d $(SYMROOT)/embed {} \;; \ - cp theme.plist $(SYMROOT)/embed; \ - else \ - cp -R $(THEMEDIR) $(SYMROOT)/embed; \ - fi; - @echo "#ifndef __BOOT2_ART_H" >> $(SYMROOT)/art.h - @echo "#define __BOOT2_ART_H" >> $(SYMROOT)/art.h - @cd $(SYMROOT)/embed && find . -name 'theme.plist' -exec xxd -i >> $(SYMROOT)/art.h {} \; - @cd $(SYMROOT)/embed && find . -name '*.png' -exec xxd -i >> $(SYMROOT)/art.h {} \; - @echo "typedef struct {" >> $(SYMROOT)/art.h - @echo " char name[32];" >> $(SYMROOT)/art.h - @echo " unsigned char *pngdata;" >> $(SYMROOT)/art.h - @echo " unsigned int *length;" >> $(SYMROOT)/art.h - @echo "} embeddedpng_t;" >> $(SYMROOT)/art.h - @echo "" >> $(SYMROOT)/art.h - @echo "embeddedpng_t embeddedImages[] = {" >> $(SYMROOT)/art.h - @cd $(SYMROOT)/embed && find . -name '*.png' | sort | cut -f 2 -d '/' | cut -f 1 -d '.' | \ - awk '{ printf "\t{.name = \"%s\", .pngdata = __%s_png, .length = &__%s_png_len},\n", $$1, $$1, $$1 }' >> $(SYMROOT)/art.h - @echo "};" >> $(SYMROOT)/art.h - - @echo "#endif /* !__BOOT2_ART_H */" >> $(SYMROOT)/art.h ;\ - $(SYMROOT)/embedded.h: @cd $(SYMROOT)/../../doc && xxd -i BootHelp.txt > $(SYMROOT)/embedded.h -.PHONY: $(SYMROOT)/vers.h - #dependencies -include $(OBJROOT)/Makedep Index: branches/xZen/src/arch/i386/Make.rules =================================================================== --- branches/xZen/src/arch/i386/Make.rules (revision 1262) +++ branches/xZen/src/arch/i386/Make.rules (revision 1263) @@ -3,30 +3,39 @@ TARGET_CC = /usr/bin/gcc-4.2 TARGET_CPP = /usr/bin/g++-4.2 +NASM = $(shell which nasm) -p $(SRCROOT)/autoconf.inc + ##### i386 Rules ##### $(OBJROOT)/%.${ARCH}o: %.c $(OBJROOT) @echo "\t[CC:I386] $<" - @$(TARGET_CC) -arch i386 $(CFLAGS) $(DEFINES) -c $(INC) $< -o $@ \ + @$(TARGET_CC) -arch ${ARCH} $(CFLAGS) $(DEFINES) -c $(INC) $< -o $@ \ -MD -dependency-file $(OBJROOT)/$*.d @md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d $(OBJROOT)/%.${ARCH}o: %.m $(OBJROOT) @echo "\t[M:I386] $<" - @$(TARGET_CC) -arch i386 $(CFLAGS) $(DEFINES) -c $(INC) $< -o $@ \ + @$(TARGET_CC) -arch ${ARCH} $(CFLAGS) $(DEFINES) -c $(INC) $< -o $@ \ -MD -dependency-file $(OBJROOT)/$*.d @md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d $(OBJROOT)/%.${ARCH}o: %.cpp $(OBJROOT) @echo "\t[CPP:I386] $<" - @$(TARGET_CPP) -arch i386 $(CPPFLAGS) $(CFLAGS) -c "$<" $(INC) -o $@ \ + @$(TARGET_CPP) -arch ${ARCH} $(CPPFLAGS) $(CFLAGS) -c "$<" $(INC) -o $@ \ -MD -dependency-file $(OBJROOT)/$*.d @md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d $(OBJROOT)/%.${ARCH}o: %.s @echo "\t[AS:I386] $<" - @$(TARGET_CC) $(CPPFLAGS) -c $(INC) -o $@ $< \ + @$(TARGET_CC) -arch ${ARCH} $(CPPFLAGS) -c $(INC) -o $@ $< \ -MD -dependency-file $*.d @md -u $(OBJROOT)/Makedep -f -d $*.d + +$(OBJROOT)/boot2.${ARCH}o: + @echo "\t[AS:I386] boot2.s" + @$(TARGET_CC) -Wa,-n -c $(INC) -arch i386 -o $(OBJROOT)/$(@F) boot2.s \ + -MD -dependency-file $*.d + @md -u $(OBJROOT)/Makedep -f -d $*.d -ACTUAL_OBJECTS = $(addsuffix .${ARCH}o , $(addprefix $(OBJROOT)/, $(OBJECTS))) + +ACTUAL_OBJECTS = $(addsuffix .${ARCH}o, $(addprefix $(OBJROOT)/, $(OBJECTS))) MODULE_OBJECTS = $(addsuffix .${ARCH}o, $(addprefix $(OBJROOT)/, $(MODULE_OBJS))) \ No newline at end of file Index: branches/xZen/src/arch/i386/libsa/Makefile =================================================================== --- branches/xZen/src/arch/i386/libsa/Makefile (revision 1262) +++ branches/xZen/src/arch/i386/libsa/Makefile (revision 1263) @@ -1,16 +1,14 @@ -ROOT = $(shell pwd)/../../../ +ROOT = $(shell pwd)/../../../../ DIR = libsa SRCROOT = ${ROOT}/src OBJROOT = $(ROOT)/obj/i386/${DIR} -SYMROOT = $(ROOT)/sym/util +SYMROOT = $(ROOT)/sym/i386 DSTROOT = $(ROOT)/dst/usr/standalone/i386/ DOCROOT = $(ROOT)/doc LIBSAIODIR = ../libsaio -CPPFLAGS := $(CPPFLAGS) -nostdinc++ - INC = -I. -I$(SYMROOT) -I$(LIBSAIODIR) -I${SRCROOT}/include OBJECTS = prf printf zalloc \ @@ -21,11 +19,13 @@ LIBS := $(addprefix $(SYMROOT)/, $(LIBS)) -DIRS_NEEDED = $(OBJROOT) $(SYMROOT) +DIRS_NEEDED = -all embedtheme: $(DIRS_NEEDED) $(LIBS) -$(warning $(ACTUAL_OBJECTS)) +include ${ROOT}/Make.rules + +all: $(OBJROOT) $(SYMROOT) $(LIBS) + $(LIBS): ${ACTUAL_OBJECTS} @echo "\t[RM] $@" @rm -f $@ @@ -34,10 +34,5 @@ @echo "\t[RANLIB] $(@F)" @ranlib $@ -$(DIRS_NEEDED) $(INSTALLDIR) $(OBJROOT) $(SYMROOT): - @echo "\t[MKDIR] $@" - @$(MKDIRS) $@ - - # dependencies -include $(OBJROOT)/Makedep Index: branches/xZen/src/arch/Makefile =================================================================== --- branches/xZen/src/arch/Makefile (revision 0) +++ branches/xZen/src/arch/Makefile (revision 1263) @@ -0,0 +1,26 @@ +# Makefile for i386 boot program + +# +# these paths are only valid in subdirectories of this directory +# +ROOT = $(shell pwd)/../../ +SRCROOT = ${ROOT}/src +OBJROOT = $(ROOT)/obj/${ARCH} +SYMROOT = $(ROOT)/sym/${ARCH} +DSTROOT = $(ROOT)/dst/usr/standalone/${ARCH} +DOCROOT = $(ROOT)/doc + +include ${ROOT}/Make.rules + +# The order of building is important. +SUBDIRS = ${ARCH} + +all: ${OBJROOT} ${SYMROOT} + @for i in ${SUBDIRS}; \ + do \ + echo ================= make $@ for $$i =================; \ + ( ROOT=$(ROOT); \ + cd $$i; ${MAKE} \ + $@ \ + ) || exit $$?; \ + done \ No newline at end of file