Files
cleonos/Makefile

148 lines
5.2 KiB
Makefile
Raw Normal View History

2026-04-09 21:47:13 +08:00
.RECIPEPREFIX := >
2026-04-11 13:50:38 +08:00
MAKEFLAGS += --no-print-directory
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
CMAKE ?= cmake
CMAKE_BUILD_DIR ?= build-cmake
CMAKE_BUILD_TYPE ?= Release
CMAKE_GENERATOR ?=
CMAKE_EXTRA_ARGS ?=
2026-04-09 21:47:13 +08:00
NO_COLOR ?= 0
2026-04-11 13:50:38 +08:00
LIMINE_SKIP_CONFIGURE ?=
2026-04-09 21:47:13 +08:00
LIMINE_REF ?=
2026-04-11 13:50:38 +08:00
LIMINE_REPO ?=
LIMINE_DIR ?=
LIMINE_BIN_DIR ?=
OBJCOPY_FOR_TARGET ?=
OBJDUMP_FOR_TARGET ?=
READELF_FOR_TARGET ?=
2026-04-18 15:37:24 +08:00
PYTHON ?= python3
MENUCONFIG_ARGS ?=
2026-04-11 13:50:38 +08:00
ifeq ($(strip $(CMAKE_GENERATOR)),)
GEN_ARG :=
2026-04-09 21:47:13 +08:00
else
2026-04-11 13:50:38 +08:00
GEN_ARG := -G "$(CMAKE_GENERATOR)"
2026-04-09 21:47:13 +08:00
endif
2026-04-11 13:50:38 +08:00
CMAKE_PASSTHROUGH_ARGS :=
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
ifneq ($(strip $(LIMINE_SKIP_CONFIGURE)),)
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_SKIP_CONFIGURE=$(LIMINE_SKIP_CONFIGURE)
endif
ifneq ($(strip $(LIMINE_REF)),)
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_REF=$(LIMINE_REF)
endif
ifneq ($(strip $(LIMINE_REPO)),)
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_REPO=$(LIMINE_REPO)
endif
ifneq ($(strip $(LIMINE_DIR)),)
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_DIR=$(LIMINE_DIR)
endif
ifneq ($(strip $(LIMINE_BIN_DIR)),)
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_BIN_DIR=$(LIMINE_BIN_DIR)
endif
ifneq ($(strip $(OBJCOPY_FOR_TARGET)),)
CMAKE_PASSTHROUGH_ARGS += -DOBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET)
endif
ifneq ($(strip $(OBJDUMP_FOR_TARGET)),)
CMAKE_PASSTHROUGH_ARGS += -DOBJDUMP_FOR_TARGET=$(OBJDUMP_FOR_TARGET)
endif
ifneq ($(strip $(READELF_FOR_TARGET)),)
CMAKE_PASSTHROUGH_ARGS += -DREADELF_FOR_TARGET=$(READELF_FOR_TARGET)
endif
2026-04-09 21:47:13 +08:00
2026-04-18 19:22:25 +08:00
.PHONY: all configure reconfigure menuconfig menuconfig-gui setup setup-tools setup-limine kernel userapps ramdisk-root ramdisk iso run debug clean clean-all help
2026-04-09 21:47:13 +08:00
all: iso
2026-04-11 13:50:38 +08:00
configure:
> @$(CMAKE) -S . -B $(CMAKE_BUILD_DIR) $(GEN_ARG) -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) -DNO_COLOR=$(NO_COLOR) $(CMAKE_EXTRA_ARGS) $(CMAKE_PASSTHROUGH_ARGS)
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
reconfigure:
> @rm -rf $(CMAKE_BUILD_DIR)
> @$(MAKE) configure CMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) CMAKE_GENERATOR="$(CMAKE_GENERATOR)" CMAKE_EXTRA_ARGS="$(CMAKE_EXTRA_ARGS)" NO_COLOR="$(NO_COLOR)" LIMINE_SKIP_CONFIGURE="$(LIMINE_SKIP_CONFIGURE)" LIMINE_REF="$(LIMINE_REF)" LIMINE_REPO="$(LIMINE_REPO)" LIMINE_DIR="$(LIMINE_DIR)" LIMINE_BIN_DIR="$(LIMINE_BIN_DIR)" OBJCOPY_FOR_TARGET="$(OBJCOPY_FOR_TARGET)" OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)" READELF_FOR_TARGET="$(READELF_FOR_TARGET)"
2026-04-09 21:47:13 +08:00
2026-04-18 15:37:24 +08:00
menuconfig:
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
> $(PYTHON) scripts/menuconfig.py $(MENUCONFIG_ARGS); \
> elif command -v python >/dev/null 2>&1; then \
> python scripts/menuconfig.py $(MENUCONFIG_ARGS); \
> else \
> echo "python3/python not found"; \
> exit 1; \
> fi
> @$(MAKE) configure CMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) CMAKE_GENERATOR="$(CMAKE_GENERATOR)" CMAKE_EXTRA_ARGS="$(CMAKE_EXTRA_ARGS)" NO_COLOR="$(NO_COLOR)" LIMINE_SKIP_CONFIGURE="$(LIMINE_SKIP_CONFIGURE)" LIMINE_REF="$(LIMINE_REF)" LIMINE_REPO="$(LIMINE_REPO)" LIMINE_DIR="$(LIMINE_DIR)" LIMINE_BIN_DIR="$(LIMINE_BIN_DIR)" OBJCOPY_FOR_TARGET="$(OBJCOPY_FOR_TARGET)" OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)" READELF_FOR_TARGET="$(READELF_FOR_TARGET)"
2026-04-18 19:22:25 +08:00
menuconfig-gui:
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
> $(PYTHON) scripts/menuconfig.py --gui $(MENUCONFIG_ARGS); \
> elif command -v python >/dev/null 2>&1; then \
> python scripts/menuconfig.py --gui $(MENUCONFIG_ARGS); \
> else \
> echo "python3/python not found"; \
> exit 1; \
> fi
> @$(MAKE) configure CMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) CMAKE_GENERATOR="$(CMAKE_GENERATOR)" CMAKE_EXTRA_ARGS="$(CMAKE_EXTRA_ARGS)" NO_COLOR="$(NO_COLOR)" LIMINE_SKIP_CONFIGURE="$(LIMINE_SKIP_CONFIGURE)" LIMINE_REF="$(LIMINE_REF)" LIMINE_REPO="$(LIMINE_REPO)" LIMINE_DIR="$(LIMINE_DIR)" LIMINE_BIN_DIR="$(LIMINE_BIN_DIR)" OBJCOPY_FOR_TARGET="$(OBJCOPY_FOR_TARGET)" OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)" READELF_FOR_TARGET="$(READELF_FOR_TARGET)"
2026-04-11 13:50:38 +08:00
setup: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target setup
2026-04-10 20:16:20 +08:00
2026-04-11 13:50:38 +08:00
setup-tools: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target setup-tools
2026-04-10 20:16:20 +08:00
2026-04-11 13:50:38 +08:00
setup-limine: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target setup-limine
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
kernel: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target kernel
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
userapps: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target userapps
2026-04-09 21:47:13 +08:00
2026-04-11 13:50:38 +08:00
ramdisk-root: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target ramdisk-root
2026-04-09 22:12:29 +08:00
2026-04-11 13:50:38 +08:00
ramdisk: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target ramdisk
2026-04-10 20:16:20 +08:00
2026-04-11 13:50:38 +08:00
iso: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target iso
2026-04-10 20:16:20 +08:00
2026-04-11 13:50:38 +08:00
run: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target run
2026-04-10 20:16:20 +08:00
2026-04-11 13:50:38 +08:00
debug: configure
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target debug
2026-04-09 21:47:13 +08:00
clean:
2026-04-11 13:50:38 +08:00
> @if [ -d "$(CMAKE_BUILD_DIR)" ]; then \
> $(CMAKE) --build $(CMAKE_BUILD_DIR) --target clean-x86; \
> else \
> rm -rf build/x86_64; \
> fi
2026-04-09 21:47:13 +08:00
clean-all:
2026-04-11 13:50:38 +08:00
> @if [ -d "$(CMAKE_BUILD_DIR)" ]; then \
> $(CMAKE) --build $(CMAKE_BUILD_DIR) --target clean-all; \
> else \
> rm -rf build build-cmake; \
> fi
2026-04-09 21:47:13 +08:00
help:
2026-04-11 13:50:38 +08:00
> @echo "CLeonOS (CMake-backed wrapper)"
> @echo " make configure"
2026-04-18 15:37:24 +08:00
> @echo " make menuconfig"
2026-04-18 19:22:25 +08:00
> @echo " make menuconfig-gui"
2026-04-09 21:47:13 +08:00
> @echo " make setup"
2026-04-10 20:16:20 +08:00
> @echo " make userapps"
2026-04-09 21:47:13 +08:00
> @echo " make iso"
> @echo " make run"
> @echo " make debug"
2026-04-11 13:50:38 +08:00
> @echo " make clean"
> @echo " make clean-all"
> @echo ""
> @echo "Pass custom CMake cache args via:"
> @echo " make configure CMAKE_EXTRA_ARGS='-DLIMINE_SKIP_CONFIGURE=1 -DOBJCOPY_FOR_TARGET=objcopy'"
> @echo "Direct passthrough is also supported:"
> @echo " make run LIMINE_SKIP_CONFIGURE=1"