73 lines
2.6 KiB
Makefile
73 lines
2.6 KiB
Makefile
#####################################################################
|
|
# Author: Josh Holtrop / Benjamen R. Meyer #
|
|
# Date: 02/15/04 Modified: 05/21/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 string.o cmos.o hos_defines.o vfs.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/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
|
|
|
|
#################################################
|
|
# Clean up the source directory of any binaries #
|
|
#################################################
|
|
clean:
|
|
- rm *.o ./lst/*.lst ./lst/*.doc *.bin
|