| #␊ |
| # Common makefile targets.␊ |
| #␊ |
| # Define these variables (if desired) in directory makefiles:␊ |
| #␉DIRS_NEEDED␊ |
| #␉INSTALLDIR␊ |
| #␉SRCROOT␊ |
| #␊ |
| ifneq "" "$(wildcard /bin/mkdirs)"␊ |
| MKDIRS = /bin/mkdirs␊ |
| else␊ |
| MKDIRS = /bin/mkdir -p␊ |
| endif␊ |
| ␊ |
| CPP = g++ -fno-exceptions -fno-rtti␊ |
| ␊ |
| # Toggle this as to whether you want a frame pointer (%ebp) to be used. It is␊ |
| # invaluable for debugging the booter. For example using GDB attached to VMware.␊ |
| # In fact, it's so invaluable that it's now the default. Not only that but the␊ |
| # compiler seems to generate slightly smaller code and the real<->prot code␊ |
| # clearly handles it appropriately so I have no idea why Apple omitted it.␊ |
| #OMIT_FRAME_POINTER_CFLAG=-fomit-frame-pointer␊ |
| OMIT_FRAME_POINTER_CFLAG=␊ |
| ␊ |
| installsrc:: $(SRCROOT)␊ |
| ␉cp $(ALLSRC) $(SRCROOT)␊ |
| ␉cd $(SRCROOT); chmod a-w $(ALLSRC)␊ |
| ␊ |
| install:: installhdrs␊ |
| ␉@if [ -z "$(RC_ARCHS)" -o -n "$(RC_i386)" ]; then ␉\␊ |
| ␉␉$(MAKE) install_i386 OBJROOT=${OBJROOT}␉␉\␊ |
| ␉␉␉SYMROOT=${SYMROOT} DSTROOT=${DSTROOT}␉\␊ |
| ␉␉␉SRCROOT=${SRCROOT}; ␉␉␉\␊ |
| ␉else␉␉␉␉␉␉␉\␊ |
| ␉␉echo i386 not selected - null build.;␉␉\␊ |
| ␉fi␊ |
| ␊ |
| install_i386:: all␊ |
| ␊ |
| installhdrs::␊ |
| ␊ |
| .SUFFIXES: .s .i .c .o .o32 .o64␊ |
| ␊ |
| .c.o32:␊ |
| ␉@echo "\t[CC32] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) -arch i386 $< -o $(OBJROOT)/$*.o32 \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| .c.o64:␊ |
| ␉@echo "\t[CC64] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) -arch x86_64 $< -o $(OBJROOT)/$*.o64 \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| .c.o .m.o:␊ |
| ␉@echo "\t[CC] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) $< -o $(OBJROOT)/$*.o \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| $(OBJROOT)/%.o: %.c␊ |
| ␉@echo "\t[CC] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) $< -o $(OBJROOT)/$*.o \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| $(OBJROOT)/%.o32: %.c␊ |
| ␉@echo "\t[CC32] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) -arch i386 $< -o $(OBJROOT)/$*.o32 \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| $(OBJROOT)/%.o64: %.c␊ |
| ␉@echo "\t[CC64] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) -arch x86_64 $< -o $(OBJROOT)/$*.o64 \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| $(OBJROOT)/%.o: %.m␊ |
| ␉@echo "\t[CC] $<"␊ |
| ␉@$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFINES) -c $(INC) $< -o $(OBJROOT)/$*.o \␊ |
| ␉ -MD -dependency-file $(OBJROOT)/$*.d␊ |
| ␉@md -u $(OBJROOT)/Makedep -f -d $(OBJROOT)/$*.d␊ |
| ␊ |
| #.s.o:␊ |
| #␉cc $(INC) -E $< > $(OBJROOT)/$*.o2␊ |
| #␉$(AS) -o $(OBJROOT)/$@ $(OBJROOT)/$*.o2␊ |
| ␊ |
| .s.o:␊ |
| ␉@echo "\t[AS] $<"␊ |
| ␉@cc $(CPPFLAGS) -c $(INC) -arch i386 -o $(OBJROOT)/$(@F) $<␊ |
| ␊ |
| boot2.o:␊ |
| ␉@echo "\t[AS] boot2.s"␊ |
| ␉@cc $(CPPFLAGS) -Wa,-n -c $(INC) -arch i386 -o $(OBJROOT)/$(@F) boot2.s␊ |
| ␉␊ |
| $(OBJROOT)/%.o: %.s␊ |
| ␉@echo "\t[CC] $<"␊ |
| ␉@cc $(CPPFLAGS) -c $(INC) -arch i386 -o $(OBJROOT)/$(@F) $<␊ |
| ␊ |
| $(DIRS_NEEDED) $(INSTALLDIR) $(SRCROOT):␊ |
| ␉@echo "\t[MKDIR] $@"␊ |
| ␉@$(MKDIRS) $@␊ |