# # *** SUB-MAKE *** # # this file is a sub-make # which means this file # should not be run on its # own and should be called # from the main make file ASM ?=nasm CC16 := $(HOME)/opt/ow/open-watcom-v2/rel/binl64/wcc LD16 := $(HOME)/opt/ow/open-watcom-v2/rel/binl64/wlink CFLAGS16 :=-4 -d3 -s -wx -ms -zl -zq ASMFLAGS :=-f obj ROOT_DIR ?= ../../.. BUILD_DIR ?= $(ROOT_DIR)/build SRC_DIR ?= $(ROOT_DIR)/src SRC_LOADER_DIR ?= $(SRC_DIR)/bootldr SRC_STAGE2_DIR := $(SRC_LOADER_DIR)/2 BUILD_STAGE2_DIR := $(BUILD_DIR)/2 # sources SOURCES_C := $(wildcard *.c) SOURCES_ASM := $(wildcard *.asm) # objects OBJECTS_C := $(patsubst %.c, $(BUILD_STAGE2_DIR)/c/%.obj, $(SOURCES_C)) OBJECTS_ASM := $(patsubst %.asm, $(BUILD_STAGE2_DIR)/asm/%.obj, $(SOURCES_ASM)) $(BUILD_DIR)/stage2.bin: $(OBJECTS_C) $(OBJECTS_ASM) $(LD16) NAME $(BUILD_DIR)/stage2.bin FILE \{ $(OBJECTS_ASM) $(OBJECTS_C) \} OPTION MAP=$(BUILD_STAGE2_DIR)/stage2.map @linker.lnk $(BUILD_STAGE2_DIR)/c/%.obj: %.c always $(CC16) $(CFLAGS16) -fo=$@ $< $(BUILD_STAGE2_DIR)/asm/%.obj: %.asm always $(ASM) $(ASMFLAGS) -o $@ $< .PHONY: always clean always: mkdir -p $(BUILD_DIR)/2 mkdir -p $(BUILD_DIR)/2/c mkdir -p $(BUILD_DIR)/2/asm clean: rm -r $(BUILD_DIR)/c $(BUILD_DIR)/asm