##################################################################### # Author: Josh Holtrop / Benjamen R. Meyer # # Date: 02/15/04 Modified: 06/07/04 # # Purpose: To build Josh Holtrop's OS (HOS) using GNU make # # Note: This makefile is for use on Linux & other Unix-like systems # ##################################################################### ############## # Variables: # ############## # Format of kernel object files: # Do not change unless you know what you are doing KERNEL_FORMAT=aout # Assembler information: NASM_BIN=nasm NASM_FLAGS=-f $(KERNEL_FORMAT) # C Compile Information: CPP=g++ CPP_FLAGS=-fleading-underscore -fno-builtin -nostdlib -nostdinc++ -nostartfiles -fno-rtti -fno-exceptions -nodefaultlibs -I. -Wall # Linker Information: LD=ld LD_FLAGS=-nodefaultlibs -nostdlib --no-demangle -T link.ld ############################### # Linking the kernel together # ############################### all: Asm_Kernel Asm_Functions C_Kernel $(LD) $(LD_FLAGS) -o kernel.bin -Map ./lst/LDout.doc ks.o kernel.o asmfuncs.o fdc.o keyboard.o kio.o mm.o mouse.o stdfont.o video.o vmm.o rtc.o pic.o io.o cstring.o string.o cmos.o hos_defines.o vfs.o devfs.o Device.o DeviceFolder.o ########################## # Assembly Kernel Loader # ########################## Asm_Kernel: kernel.asm $(NASM_BIN) $(NASM_FLAGS) -o ks.o -l ./lst/kernel.lst kernel.asm ################################# # Assembly Functions for Kernel # ################################# Asm_Functions: asmfuncs.asm $(NASM_BIN) $(NASM_FLAGS) -o asmfuncs.o -l ./lst/asmfuncs.lst asmfuncs.asm ############ # C Kernel # ############ C_Kernel: $(CPP) $(CPP_FLAGS) -c kernel.cpp -o kernel.o $(CPP) $(CPP_FLAGS) -c kio.cpp -o kio.o $(CPP) $(CPP_FLAGS) -c sys/rtc.cpp -o rtc.o $(CPP) $(CPP_FLAGS) -c sys/pic.cpp -o pic.o $(CPP) $(CPP_FLAGS) -c sys/io.cpp -o io.o $(CPP) $(CPP_FLAGS) -c sys/cmos.cpp -o cmos.o $(CPP) $(CPP_FLAGS) -c lang/cstring.cpp -o cstring.o $(CPP) $(CPP_FLAGS) -c lang/string.cpp -o string.o $(CPP) $(CPP_FLAGS) -c video/stdfont.cpp -o stdfont.o $(CPP) $(CPP_FLAGS) -c video/video.cpp -o video.o $(CPP) $(CPP_FLAGS) -c block/fdc.cpp -o fdc.o $(CPP) $(CPP_FLAGS) -c char/keyboard.cpp -o keyboard.o $(CPP) $(CPP_FLAGS) -c char/mouse.cpp -o mouse.o $(CPP) $(CPP_FLAGS) -c mm/mm.cpp -o mm.o $(CPP) $(CPP_FLAGS) -c mm/vmm.cpp -o vmm.o $(CPP) $(CPP_FLAGS) -c hos_defines.cpp -o hos_defines.o $(CPP) $(CPP_FLAGS) -c fs/vfs.cpp -o vfs.o $(CPP) $(CPP_FLAGS) -c fs/devfs.cpp -o devfs.o $(CPP) $(CPP_FLAGS) -c fs/Device.cpp -o Device.o $(CPP) $(CPP_FLAGS) -c fs/DeviceFolder.cpp -o DeviceFolder.o ################################################# # Clean up the source directory of any binaries # ################################################# clean: - rm *.s *.o *.bin *~ block/*~ char/*~ fs/*~ lang/*~ mm/*~ sys/*~ video/*~