mirror of
https://github.com/InstanceBrick/nightcap.git
synced 2026-10-17 14:00:46 +02:00
165 lines
6.5 KiB
Makefile
165 lines
6.5 KiB
Makefile
# Modified by vii from komaruworld/mocktail. See README "About this fork".
|
|
.DEFAULT_GOAL := all
|
|
.PHONY: all build release debug test apk install register-url-handler release-runtime portable portable-test standalone appimage flatpak run-flatpak run run-smoke run-unlimited run-game run-input run-resize run-network auto-run run-gles run-angle update-roblox update-auto update-auto-launch payload-status payload-rollback support-bundle clean submodules help
|
|
|
|
BUILD_DIR := build
|
|
BINARY := $(BUILD_DIR)/mocktail
|
|
JOBS := $(shell nproc)
|
|
BUILD_TYPE ?= Release
|
|
LIBC ?= auto
|
|
MODE ?= standalone
|
|
CMAKE_TOOLCHAIN_FILE ?=
|
|
CMAKE_SYSROOT ?=
|
|
RELEASE_BUILD_DIR ?=
|
|
PORTABLE_MODE ?= standalone
|
|
PORTABLE_CANONICAL_MODE := $(if $(filter dynamic minimal,$(PORTABLE_MODE)),thin,$(if $(filter full static,$(PORTABLE_MODE)),standalone,$(PORTABLE_MODE)))
|
|
PORTABLE_DIR ?= dist/mocktail-linux-x86_64-glibc-$(PORTABLE_CANONICAL_MODE)
|
|
APPIMAGE ?= dist/Mocktail-x86_64.AppImage
|
|
APPIMAGE_FORMAT ?= classic
|
|
ANYLINUX_PACKAGER ?= quick-sharun
|
|
ANYLINUX_APPIMAGETOOL ?= appimagetool
|
|
PREFIX ?= /usr
|
|
FLATPAK_BUILD_DIR ?= build-flatpak
|
|
FLATPAK_MANIFEST ?= packaging/flatpak/io.github.CoderDayton.nightcap.json
|
|
FLATPAK_JOBS ?= 2
|
|
|
|
define build_native_runtime
|
|
@git submodule update --init --recursive
|
|
@cmake -S . -B "$(BUILD_DIR)" \
|
|
-DCMAKE_BUILD_TYPE="$(1)" \
|
|
-DBUILD_TESTING="$(2)" \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
$(if $(strip $(CMAKE_TOOLCHAIN_FILE)),-DCMAKE_TOOLCHAIN_FILE="$(CMAKE_TOOLCHAIN_FILE)") \
|
|
$(if $(strip $(CMAKE_SYSROOT)),-DCMAKE_SYSROOT="$(CMAKE_SYSROOT)")
|
|
@cmake --build "$(BUILD_DIR)" -j"$(JOBS)"
|
|
endef
|
|
|
|
all: build ## Dynamic Release build
|
|
|
|
build: ## Build the dynamic Release runtime in build/
|
|
$(call build_native_runtime,$(BUILD_TYPE),OFF)
|
|
|
|
release: ## Build AppImage (LIBC=auto|glibc|musl MODE=standalone|thin)
|
|
@MOCKTAIL_BUILD_JOBS="$(JOBS)" \
|
|
MOCKTAIL_BUILD_TYPE="$(BUILD_TYPE)" \
|
|
MOCKTAIL_RELEASE_BUILD_DIR="$(RELEASE_BUILD_DIR)" \
|
|
CMAKE_TOOLCHAIN_FILE="$(CMAKE_TOOLCHAIN_FILE)" \
|
|
CMAKE_SYSROOT="$(CMAKE_SYSROOT)" \
|
|
./scripts/build_release.sh --libc "$(LIBC)" --mode "$(MODE)"
|
|
|
|
debug: ## Debug build
|
|
$(call build_native_runtime,Debug,OFF)
|
|
|
|
install: ## Install an already-built dynamic runtime (use: sudo make install)
|
|
@cmake --install "$(BUILD_DIR)" --prefix "$(PREFIX)"
|
|
|
|
register-url-handler: build ## Select this build for Roblox website links
|
|
@./scripts/register_url_handler.sh --set-default \
|
|
--executable "$(abspath $(BINARY))" \
|
|
--desktop-file "$(abspath packaging/io.github.CoderDayton.nightcap.desktop)"
|
|
|
|
test: ## Build and run all unit tests
|
|
$(call build_native_runtime,Debug,ON)
|
|
@ctest --test-dir "$(BUILD_DIR)" --output-on-failure -j"$(JOBS)"
|
|
|
|
apk: ## Extract libroblox.so and build (usage: make apk APK=/path/to/roblox.apk)
|
|
ifndef APK
|
|
$(error APK variable not set. Usage: make apk APK=/path/to/roblox-x86_64.apk)
|
|
endif
|
|
@./scripts/build.sh --apk "$(APK)" --build-type $(BUILD_TYPE) --jobs $(JOBS)
|
|
|
|
release-runtime: build
|
|
|
|
portable: appimage ## Build the portable AppImage
|
|
|
|
portable-test: release-runtime ## Verify portable packaging and relocation
|
|
@./tests/portable_packaging_test.sh
|
|
|
|
standalone: appimage ## Build the standalone x86-64 AppImage
|
|
|
|
appimage: release-runtime ## Build AppImage (APPIMAGE_FORMAT=classic|anylinux)
|
|
@MOCKTAIL_APPIMAGE_FORMAT="$(APPIMAGE_FORMAT)" \
|
|
MOCKTAIL_ANYLINUX_PACKAGER="$(ANYLINUX_PACKAGER)" \
|
|
MOCKTAIL_ANYLINUX_APPIMAGETOOL="$(ANYLINUX_APPIMAGETOOL)" \
|
|
./scripts/package_portable.sh --build-dir "$(BUILD_DIR)" \
|
|
--libc glibc --output "$(PORTABLE_DIR)" --mode "$(PORTABLE_MODE)" \
|
|
--appimage "$(APPIMAGE)"
|
|
|
|
flatpak: ## Build and install the local x86-64 Flatpak
|
|
@./scripts/build_flatpak.sh \
|
|
--build-dir "$(FLATPAK_BUILD_DIR)" \
|
|
--manifest "$(FLATPAK_MANIFEST)" \
|
|
--jobs "$(FLATPAK_JOBS)"
|
|
|
|
run-flatpak: ## Run the installed Flatpak
|
|
@flatpak run io.github.CoderDayton.nightcap
|
|
|
|
run: export MOCKTAIL_AUTO_EXIT_AFTER_PRESENT_MS = 0
|
|
run: build ## Run the native binary interactively until the window is closed
|
|
@$(BINARY)
|
|
|
|
run-smoke: export MOCKTAIL_AUTO_EXIT_AFTER_PRESENT_MS = 3000
|
|
run-smoke: release-runtime ## Run the short Vulkan lifecycle readiness gate
|
|
@./scripts/real_bringup_smoke.sh C
|
|
|
|
run-unlimited: export MOCKTAIL_FRAME_RATE_LIMIT = unlimited
|
|
run-unlimited: export MOCKTAIL_VSYNC = off
|
|
run-unlimited: export MOCKTAIL_AUTO_EXIT_AFTER_PRESENT_MS = 5000
|
|
run-unlimited: release-runtime ## Run 240-FPS/unthrottled Vulkan diagnostic mode
|
|
@./scripts/real_bringup_smoke.sh C
|
|
|
|
run-game: release-runtime ## Run local UGCGame/Vulkan gate (not an authenticated join)
|
|
@./scripts/real_bringup_smoke.sh GAME
|
|
|
|
run-input: release-runtime ## Run local GAME gate and route SDL mouse/touch through native input
|
|
@./scripts/real_bringup_smoke.sh INPUT
|
|
|
|
run-resize: release-runtime ## Run real SDL compositor resize and typed JNI surface-rebind gate
|
|
@./scripts/real_bringup_smoke.sh RESIZE
|
|
|
|
run-network: export MOCKTAIL_PLACE_ID = $(PLACE_ID)
|
|
run-network: release-runtime ## Run authenticated public-place gate (usage: make run-network PLACE_ID=...)
|
|
ifndef PLACE_ID
|
|
$(error PLACE_ID variable not set. Usage: make run-network PLACE_ID=positive-place-id)
|
|
endif
|
|
@./scripts/real_bringup_smoke.sh NETWORK
|
|
|
|
auto-run: ## Build/run loop with crash summaries
|
|
@./scripts/auto_runtime_loop.sh
|
|
|
|
run-gles: build ## Run strict system EGL/OpenGL ES 3 without Vulkan fallback
|
|
@$(BINARY) --graphics opengl
|
|
|
|
run-angle: build ## Run with ANGLE/Vulkan compatibility backend
|
|
@$(BINARY) --graphics angle-vulkan
|
|
|
|
update-roblox: ## Validate and import the current x86_64 Roblox bundle cached by Sober
|
|
@./scripts/update_roblox_payload.sh
|
|
|
|
update-auto: build ## Download latest Roblox, derive its ABI, run two canaries, then activate
|
|
@./$(BUILD_DIR)/mocktail_updater update
|
|
|
|
update-auto-launch: build ## Update Roblox and launch the verified current payload
|
|
@./$(BUILD_DIR)/mocktail_updater update
|
|
@./$(BINARY)
|
|
|
|
payload-status: build ## Show current and previous-good immutable payloads
|
|
@./$(BUILD_DIR)/mocktail_updater status
|
|
|
|
payload-rollback: build ## Atomically restore the previous-good payload
|
|
@./$(BUILD_DIR)/mocktail_updater rollback
|
|
|
|
support-bundle: ## Create a private sanitized diagnostics archive
|
|
@./scripts/collect_support_bundle.sh --context manual --reason manual-request
|
|
|
|
submodules: ## Initialise git submodules (libjnivm, mcpelauncher-linker)
|
|
@./scripts/add_submodules.sh
|
|
|
|
clean: ## Remove the build directory
|
|
rm -rf $(BUILD_DIR)
|
|
@echo "Build directory removed."
|
|
|
|
help: ## Show available targets
|
|
@grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) \
|
|
| awk 'BEGIN {FS = ":.*## "}; {printf " \033[36m%-14s\033[0m %s\n", $$1, $$2}'
|