mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-24 11:14:01 +00:00
CLKS拆分:第一步
This commit is contained in:
81
Makefile
81
Makefile
@@ -19,6 +19,7 @@ PYTHON ?= python3
|
||||
MENUCONFIG_ARGS ?=
|
||||
MENUCONFIG_PRESET ?=
|
||||
DISK_IMAGE_MB ?=
|
||||
CLEONOS_ENABLE ?= auto
|
||||
|
||||
ifeq ($(strip $(CMAKE_GENERATOR)),)
|
||||
GEN_ARG :=
|
||||
@@ -28,6 +29,32 @@ endif
|
||||
|
||||
CMAKE_PASSTHROUGH_ARGS :=
|
||||
MENUCONFIG_PRESET_ARG := $(if $(strip $(MENUCONFIG_PRESET)),--preset $(MENUCONFIG_PRESET),)
|
||||
CLEONOS_SOURCE_PRESENT := $(if $(wildcard cleonos/CMakeLists.txt),1,0)
|
||||
|
||||
ifeq ($(strip $(CLEONOS_ENABLE)),auto)
|
||||
ifeq ($(CLEONOS_SOURCE_PRESENT),1)
|
||||
CLEONOS_ENABLE_EFFECTIVE := ON
|
||||
else
|
||||
CLEONOS_ENABLE_EFFECTIVE := OFF
|
||||
endif
|
||||
else
|
||||
CLEONOS_ENABLE_EFFECTIVE := $(CLEONOS_ENABLE)
|
||||
endif
|
||||
|
||||
ifneq ($(filter 1 ON on TRUE true YES yes Y y,$(CLEONOS_ENABLE_EFFECTIVE)),)
|
||||
CLEONOS_ENABLED_BOOL := 1
|
||||
CLEONOS_MODE_LABEL := full
|
||||
else
|
||||
CLEONOS_ENABLED_BOOL := 0
|
||||
CLEONOS_MODE_LABEL := clks-only
|
||||
endif
|
||||
|
||||
MENUCONFIG_SCOPE_ARG :=
|
||||
ifeq ($(CLEONOS_ENABLED_BOOL),0)
|
||||
MENUCONFIG_SCOPE_ARG += --clks-only
|
||||
endif
|
||||
|
||||
CMAKE_PASSTHROUGH_ARGS += -DCLEONOS_ENABLE=$(CLEONOS_ENABLE_EFFECTIVE)
|
||||
|
||||
ifneq ($(strip $(LIMINE_SKIP_CONFIGURE)),)
|
||||
CMAKE_PASSTHROUGH_ARGS += -DLIMINE_SKIP_CONFIGURE=$(LIMINE_SKIP_CONFIGURE)
|
||||
@@ -57,38 +84,64 @@ ifneq ($(strip $(DISK_IMAGE_MB)),)
|
||||
CMAKE_PASSTHROUGH_ARGS += -DCLEONOS_DISK_IMAGE_MB=$(DISK_IMAGE_MB)
|
||||
endif
|
||||
|
||||
.PHONY: all configure reconfigure menuconfig menuconfig-gui setup setup-tools setup-limine kernel userapps ramdisk-root ramdisk disk-image iso run debug clean clean-all help
|
||||
.PHONY: all configure reconfigure menuconfig menuconfig-gui menuconfig-clks menuconfig-gui-clks setup setup-tools setup-limine kernel userapps ramdisk-root ramdisk disk-image iso run debug clean clean-all help
|
||||
|
||||
ifeq ($(CLEONOS_ENABLED_BOOL),1)
|
||||
all: iso
|
||||
else
|
||||
all: kernel
|
||||
endif
|
||||
|
||||
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)
|
||||
|
||||
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)"
|
||||
> @$(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)" CLEONOS_ENABLE="$(CLEONOS_ENABLE)"
|
||||
|
||||
menuconfig:
|
||||
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
|
||||
> $(PYTHON) scripts/menuconfig.py $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> $(PYTHON) scripts/menuconfig.py $(MENUCONFIG_SCOPE_ARG) $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> elif command -v python >/dev/null 2>&1; then \
|
||||
> python scripts/menuconfig.py $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> python scripts/menuconfig.py $(MENUCONFIG_SCOPE_ARG) $(MENUCONFIG_PRESET_ARG) $(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)"
|
||||
> @$(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)" CLEONOS_ENABLE="$(CLEONOS_ENABLE)"
|
||||
|
||||
menuconfig-gui:
|
||||
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
|
||||
> $(PYTHON) scripts/menuconfig.py --gui $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> $(PYTHON) scripts/menuconfig.py --gui $(MENUCONFIG_SCOPE_ARG) $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> elif command -v python >/dev/null 2>&1; then \
|
||||
> python scripts/menuconfig.py --gui $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> python scripts/menuconfig.py --gui $(MENUCONFIG_SCOPE_ARG) $(MENUCONFIG_PRESET_ARG) $(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)"
|
||||
> @$(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)" CLEONOS_ENABLE="$(CLEONOS_ENABLE)"
|
||||
|
||||
menuconfig-clks:
|
||||
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
|
||||
> $(PYTHON) scripts/menuconfig.py --clks-only $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> elif command -v python >/dev/null 2>&1; then \
|
||||
> python scripts/menuconfig.py --clks-only $(MENUCONFIG_PRESET_ARG) $(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)" CLEONOS_ENABLE="$(CLEONOS_ENABLE)"
|
||||
|
||||
menuconfig-gui-clks:
|
||||
> @if command -v $(PYTHON) >/dev/null 2>&1; then \
|
||||
> $(PYTHON) scripts/menuconfig.py --gui --clks-only $(MENUCONFIG_PRESET_ARG) $(MENUCONFIG_ARGS); \
|
||||
> elif command -v python >/dev/null 2>&1; then \
|
||||
> python scripts/menuconfig.py --gui --clks-only $(MENUCONFIG_PRESET_ARG) $(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)" CLEONOS_ENABLE="$(CLEONOS_ENABLE)"
|
||||
|
||||
setup: configure
|
||||
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target setup
|
||||
@@ -102,6 +155,7 @@ setup-limine: configure
|
||||
kernel: configure
|
||||
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target kernel
|
||||
|
||||
ifeq ($(CLEONOS_ENABLED_BOOL),1)
|
||||
userapps: configure
|
||||
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target userapps
|
||||
|
||||
@@ -122,6 +176,11 @@ run: configure
|
||||
|
||||
debug: configure
|
||||
> @$(CMAKE) --build $(CMAKE_BUILD_DIR) --target debug
|
||||
else
|
||||
userapps ramdisk-root ramdisk disk-image iso run debug:
|
||||
> @echo "target '$@' requires CLEONOS_ENABLE=ON and cleonos sources present"
|
||||
> @exit 1
|
||||
endif
|
||||
|
||||
clean:
|
||||
> @if [ -d "$(CMAKE_BUILD_DIR)" ]; then \
|
||||
@@ -139,9 +198,12 @@ clean-all:
|
||||
|
||||
help:
|
||||
> @echo "CLeonOS (CMake-backed wrapper)"
|
||||
> @echo "Mode: CLEONOS_ENABLE=$(CLEONOS_ENABLE_EFFECTIVE) ($(CLEONOS_MODE_LABEL))"
|
||||
> @echo " make configure"
|
||||
> @echo " make menuconfig"
|
||||
> @echo " make menuconfig-gui"
|
||||
> @echo " make menuconfig-clks"
|
||||
> @echo " make menuconfig-gui-clks"
|
||||
> @echo " make setup"
|
||||
> @echo " make userapps"
|
||||
> @echo " make disk-image"
|
||||
@@ -155,6 +217,9 @@ help:
|
||||
> @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"
|
||||
> @echo "Kernel-only mode:"
|
||||
> @echo " make kernel CLEONOS_ENABLE=OFF"
|
||||
> @echo " make -C clks kernel"
|
||||
> @echo "Disk image size example:"
|
||||
> @echo " make run DISK_IMAGE_MB=128"
|
||||
> @echo "Preset examples:"
|
||||
|
||||
Reference in New Issue
Block a user