################################################################################### ## 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. ## ################################################################################### .DEFAULT_GOAL := all ## # Build configuration # export ARCH ?= x86_64 export PLATFORM ?= generic-pc export BUILD_TYPE ?= debug export ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) export BUILD_DIR ?= $(ROOT_DIR)/build export SYSROOT_DIR ?= $(ROOT_DIR)/sysroot export RELEASE_DIR ?= $(ROOT_DIR)/release NOUEFI ?= n ## # Image generation and running # LIVECD := $(RELEASE_DIR)/aurix-$(GITREV)-livecd_$(ARCH)-$(PLATFORM).iso LIVEHDD := $(RELEASE_DIR)/aurix-$(GITREV)-livehdd_$(ARCH)-$(PLATFORM).img LIVESD := $(RELEASE_DIR)/aurix-$(GITREV)-livesd_$(ARCH)-$(PLATFORM).img QEMU_FLAGS := -m 2G -smp 4 -serial stdio ## # General info # export CODENAME := "Matterhorn" export VERSION := "0.1" export GITREV := $(shell git rev-parse --short HEAD) export DEFINES := AURIX_CODENAME=$(CODENAME) \ AURIX_VERSION=$(VERSION) \ AURIX_GITREV=$(GITREV) \ BUILD_TYPE=$(BUILD_TYPE) ifeq ($(BUILD_TYPE),debug) DEFINES += BUILD_DEBUG else DEFINES += BUILD_RELEASE endif ## # Recipes # .PHONY: all all: boot kernel @: .PHONY: boot boot: @printf ">>> Building bootloader...\n" ifneq (,$(filter $(ARCH),i686 x86_64)) @$(MAKE) -C boot PLATFORM=pc-bios else @$(MAKE) -C boot endif ifneq (,$(filter $(ARCH),i686 x86_64 arm32 aarch64)) ifeq ($(NOUEFI),n) @$(MAKE) -C boot PLATFORM=uefi endif endif .PHONY: kernel kernel: @printf ">>> Building kernel...\n" @$(MAKE) -C kernel .PHONY: install install: boot kernel @printf ">>> Building sysroot...\n" @mkdir -p $(SYSROOT_DIR) ifneq (,$(filter $(ARCH),i686 x86_64)) @$(MAKE) -C boot install PLATFORM=pc-bios else @$(MAKE) -C boot install endif ifneq (,$(filter $(ARCH),i686 x86_64 arm32 aarch64)) ifeq ($(NOUEFI),n) @$(MAKE) -C boot install PLATFORM=uefi endif endif @$(MAKE) -C kernel install ovmf: @printf ">>> Downloading OVMF images...\n" @utils/download-ovmf.sh .PHONY: livecd livecd: install @printf ">>> Generating Live CD..." @mkdir -p $(RELEASE_DIR) @utils/arch/$(ARCH)/generate-iso.sh $(LIVECD) .PHONY: livehdd livehdd: install @printf ">>> Generating Live HDD..." @mkdir -p $(RELEASE_DIR) @utils/arch/$(ARCH)/generate-hdd.sh $(LIVEHDD) .PHONY: livesd livesd: install @$(error SD Card Generation is not supported yet!) @printf ">>> Generating Live SD Card..." @mkdir -p $(RELEASE_DIR) @utils/arch/$(ARCH)/generate-sd.sh $(LIVESD) .PHONY: run run: livecd @printf ">>> Running QEMU...\n" @qemu-system-$(ARCH) $(QEMU_FLAGS) $(QEMU_MACHINE_FLAGS) -cdrom $(LIVECD) .PHONY: run-uefi run-uefi: livecd ovmf @printf ">>> Running QEMU (UEFI)...\n" @qemu-system-$(ARCH) $(QEMU_FLAGS) $(QEMU_MACHINE_FLAGS) -bios ovmf/ovmf-$(ARCH).fd -cdrom $(LIVECD) .PHONY: clean clean: @rm -rf $(BUILD_DIR) $(SYSROOT_DIR) .PHONY: distclean distclean: @rm -rf $(BUILD_DIR) $(SYSROOT_DIR) $(RELEASE_DIR) ovmf/