Initial import

This commit is contained in:
Jozef Nagy 2025-01-20 21:52:47 +01:00
commit 94aad4b8e1
Signed by untrusted user who does not match committer: crz
GPG key ID: 459A4811CEAC7068
77 changed files with 4414 additions and 0 deletions

113
Makefile Normal file
View file

@ -0,0 +1,113 @@
###################################################################################
## 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. ##
###################################################################################
export ARCH ?= x86_64
export PLATFORM ?= generic-pc
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
export GITREV := $(shell git rev-parse --short HEAD)
NOUEFI ?= y
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
.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/