#␊ |
# 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) $@␊ |