64 lines
2.8 KiB
Makefile
64 lines
2.8 KiB
Makefile
###################################################################################
|
|
## Module Name: Makefile ##
|
|
## Project: AurixOS ##
|
|
## ##
|
|
## Copyright (c) 2024-2025 Jozef Nagy ##
|
|
## ##
|
|
## This source is subject to the MIT License. ##
|
|
## See License.txt in the root of this repository. ##
|
|
## All other rights reserved. ##
|
|
## ##
|
|
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ##
|
|
## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ##
|
|
## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ##
|
|
## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ##
|
|
## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ##
|
|
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ##
|
|
## SOFTWARE. ##
|
|
###################################################################################
|
|
|
|
ARCH_COMMON := x86
|
|
INCLUDE_DIRS += include/arch/$(ARCH)
|
|
|
|
BOOT_AS := nasm
|
|
BOOT_CC := $(ARCH)-elf-gcc
|
|
BOOT_LD := $(ARCH)-elf-ld
|
|
|
|
BOOT_ASFLAGS := $(ASFLAGS) \
|
|
$(foreach d, $(INCLUDE_DIRS), -I$d)
|
|
BOOT_CFLAGS := $(CFLAGS) \
|
|
-mno-red-zone \
|
|
-mno-stack-arg-probe
|
|
|
|
BOOT_LDFLAGS := $(LDFLAGS)
|
|
|
|
$(shell find . -type d \( -name arch -o -name platform \) -prune -name '*.c')
|
|
BOOT_ASFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH) -type d -name arch/$(ARCH)/uefi -prune -name '*.S')
|
|
BOOT_CFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH) -type d -name arch/$(ARCH)/uefi -prune -name '*.c')
|
|
|
|
BOOT_OBJ := $(BOOT_CFILES:%.c=$(BUILD_DIR)/boot/boot/%.c.o) \
|
|
$(BOOT_ASFILES:%.S=$(BUILD_DIR)/boot/boot/%.S.o) \
|
|
$(COMMON_CFILES:common/%.c=$(BUILD_DIR)/boot/boot/common/%.c.o)
|
|
|
|
# stage 1 bootloader
|
|
STAGE1_HDD := $(BUILD_DIR)/boot/pc-bios/stage1-hdd.bin
|
|
STAGE1_CD := $(BUILD_DIR)/boot/pc-bios/stage1-cd.bin
|
|
STAGE1 := $(STAGE1_HDD) $(STAGE1_CD)
|
|
|
|
.PHONY: all
|
|
all: $(STAGE1)
|
|
|
|
.PHONY: install
|
|
install:
|
|
@:
|
|
|
|
# stage 1
|
|
$(STAGE1_HDD): $(BOOT_ROOT)/arch/$(ARCH)/stage1/boot-hdd.asm
|
|
@mkdir -p $(@D)
|
|
@printf " AS\tboot/arch/$(ARCH)/stage1/stage1-hdd.bin\n"
|
|
@nasm -fbin -I$(BOOT_ROOT)/arch/$(ARCH)/stage1 $< -o $@
|
|
|
|
$(STAGE1_CD): $(BOOT_ROOT)/arch/$(ARCH)/stage1/boot-cd.asm
|
|
@mkdir -p $(@D)
|
|
@printf " AS\tboot/arch/$(ARCH)/stage1/stage1-cd.bin\n"
|
|
@nasm -fbin -I$(BOOT_ROOT)/arch/$(ARCH)/stage1 $< -o $@
|