85 lines
No EOL
3.7 KiB
Makefile
85 lines
No EOL
3.7 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. ##
|
|
###################################################################################
|
|
|
|
BOOTFILE := $(BUILD_DIR)/boot/raspi4/axboot.elf
|
|
|
|
INCLUDE_DIRS += $(BOOT_ROOT)/include \
|
|
$(BOOT_ROOT)/include/arch/$(ARCH) \
|
|
$(BOOT_ROOT)/include/platform/$(PLATFORM)
|
|
|
|
BOOT_AS := $(ARCH)-elf-gcc
|
|
BOOT_CC := $(ARCH)-elf-gcc
|
|
BOOT_LD := $(ARCH)-elf-ld
|
|
|
|
BOOT_ASFLAGS := $(ASFLAGS) \
|
|
$(foreach d, $(INCLUDE_DIRS), -I$d)
|
|
|
|
BOOT_CFLAGS := $(CFLAGS) \
|
|
$(foreach d, $(INCLUDE_DIRS), -I$d)
|
|
|
|
BOOT_LDFLAGS := $(LDFLAGS)
|
|
|
|
COMMON_CFILES := $(shell find $(BOOT_ROOT)/common -name '*.c')
|
|
COMMON_ARCH_CFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH)/common -name '*.c')
|
|
COMMON_ARCH_ASFILES := $(shell find $(BOOT_ROOT)/arch/$(ARCH)/common -name '*.S')
|
|
PLATFORM_CFILES := $(shell find $(BOOT_ROOT)/platform/$(PLATFORM) -name '*.c')
|
|
PLATFORM_ASFILES := $(shell find $(BOOT_ROOT)/platform/$(PLATFORM) -name '*.S')
|
|
|
|
BOOT_OBJ := $(COMMON_CFILES:$(BOOT_ROOT)/common/%.c=$(BUILD_DIR)/boot/raspi4/common/%.c.o) \
|
|
$(COMMON_ARCH_CFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.c=$(BUILD_DIR)/boot/raspi4/arch/%.c.o) \
|
|
$(COMMON_ARCH_ASFILES:$(BOOT_ROOT)/arch/$(ARCH)/common/%.S=$(BUILD_DIR)/boot/raspi4/arch/%.S.o) \
|
|
$(PLATFORM_CFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.c=$(BUILD_DIR)/boot/raspi4/%.c.o) \
|
|
$(PLATFORM_ASFILES:$(BOOT_ROOT)/platform/$(PLATFORM)/%.S=$(BUILD_DIR)/boot/raspi4/%.S.o)
|
|
|
|
.PHONY: all
|
|
all: $(BOOTFILE)
|
|
@:
|
|
|
|
.PHONY: install
|
|
install: all
|
|
@mkdir -p $(SYSROOT_DIR)
|
|
@printf " INSTALL\t/kernel.elf\n"
|
|
@cp $(BOOTFILE) $(SYSROOT_DIR)/kernel.elf
|
|
|
|
$(BOOTFILE): $(BOOT_OBJ)
|
|
@mkdir -p $(@D)
|
|
@printf " LD\t$(notdir $@)\n"
|
|
@$(BOOT_LD) $(BOOT_LDFLAGS) $^ -o $@
|
|
|
|
-include $(wildcard $(BUILD_DIR)/boot/*.d)
|
|
|
|
$(BUILD_DIR)/boot/raspi4/%.c.o: $(BOOT_ROOT)/platform/$(PLATFORM)/%.c
|
|
@mkdir -p $(@D)
|
|
@printf " CC\t$(subst $(ROOT_DIR)/,,$<)\n"
|
|
@$(BOOT_CC) $(BOOT_CFLAGS) -c $< -o $@
|
|
|
|
$(BUILD_DIR)/boot/raspi4/common/%.c.o: $(BOOT_ROOT)/common/%.c
|
|
@mkdir -p $(@D)
|
|
@printf " CC\t$(subst $(ROOT_DIR)/,,$<)\n"
|
|
@$(BOOT_CC) $(BOOT_CFLAGS) -c $< -o $@
|
|
|
|
$(BUILD_DIR)/boot/raspi4/arch/%.c.o: $(BOOT_ROOT)/arch/$(ARCH)/common/%.c
|
|
@mkdir -p $(@D)
|
|
@printf " CC\t$(subst $(ROOT_DIR)/,,$<)\n"
|
|
@$(BOOT_CC) $(BOOT_CFLAGS) -c $< -o $@
|
|
|
|
$(BUILD_DIR)/boot/raspi4/arch/%.S.o: $(BOOT_ROOT)/arch/$(ARCH)/common/%.S
|
|
@mkdir -p $(@D)
|
|
@printf " AS\t$(subst $(ROOT_DIR)/,,$<)\n"
|
|
@$(BOOT_AS) $(BOOT_ASFLAGS) -c $< -o $@
|