Add makefile
This commit is contained in:
@@ -20,6 +20,7 @@ AppDir/
|
||||
publish_appimage/
|
||||
publish_ava/
|
||||
publish_tmp_ava/
|
||||
artifacts/
|
||||
|
||||
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
|
||||
!packages/*/build/
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
# Cross-platform Makefile for Ryubing/Ryujinx.
|
||||
# Requires GNU Make and .NET SDK 10+.
|
||||
|
||||
SHELL := /bin/sh
|
||||
|
||||
DOTNET ?= dotnet
|
||||
CONFIG ?= Release
|
||||
PROJECT ?= src/Ryujinx
|
||||
SOLUTION ?= Ryujinx.sln
|
||||
|
||||
UNAME_S := $(shell uname -s 2>/dev/null || echo Unknown)
|
||||
UNAME_M := $(shell uname -m 2>/dev/null || echo unknown)
|
||||
|
||||
# Runtime identifier can always be overridden: make publish RID=linux-arm64
|
||||
ifeq ($(OS),Windows_NT)
|
||||
RID ?= win-x64
|
||||
else ifeq ($(UNAME_S),Darwin)
|
||||
ifneq (,$(filter $(UNAME_M),arm64 aarch64))
|
||||
RID ?= osx-arm64
|
||||
else
|
||||
RID ?= osx-x64
|
||||
endif
|
||||
else ifeq ($(UNAME_S),Linux)
|
||||
ifneq (,$(filter $(UNAME_M),aarch64 arm64))
|
||||
RID ?= linux-arm64
|
||||
else
|
||||
RID ?= linux-x64
|
||||
endif
|
||||
else ifneq (,$(findstring MINGW,$(UNAME_S)))
|
||||
RID ?= win-x64
|
||||
else ifneq (,$(findstring MSYS,$(UNAME_S)))
|
||||
RID ?= win-x64
|
||||
else ifneq (,$(findstring CYGWIN,$(UNAME_S)))
|
||||
RID ?= win-x64
|
||||
else
|
||||
RID ?= linux-x64
|
||||
endif
|
||||
|
||||
BUILD_DIR ?= build
|
||||
PUBLISH_DIR ?= publish/$(RID)
|
||||
SELF_CONTAINED ?= false
|
||||
|
||||
VERSION ?= 1.1.0-local
|
||||
SOURCE_REVISION_ID ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
||||
CANARY ?= 0
|
||||
|
||||
MAC_TEMP_DIR ?= artifacts/macos/tmp
|
||||
MAC_OUTPUT_DIR ?= artifacts/macos/out
|
||||
ENTITLEMENTS ?= distribution/macos/entitlements.xml
|
||||
|
||||
APPIMAGE_BUILD_DIR ?= $(PUBLISH_DIR)
|
||||
APPIMAGE_OUT_DIR ?= artifacts/linux/appimage
|
||||
|
||||
.PHONY: help info restore build rebuild clean test publish publish-self-contained run macos-bundle linux-appimage
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
@echo " make info Show resolved build variables"
|
||||
@echo " make restore Restore NuGet packages"
|
||||
@echo " make build Build solution"
|
||||
@echo " make rebuild Clean + build"
|
||||
@echo " make test Run tests"
|
||||
@echo " make publish Publish app for RID=$(RID)"
|
||||
@echo " make publish-self-contained Publish self-contained app for RID=$(RID)"
|
||||
@echo " make run Run Ryujinx project"
|
||||
@echo " make macos-bundle Build macOS universal .app (Darwin only)"
|
||||
@echo " make linux-appimage Build Linux AppImage (Linux only)"
|
||||
@echo ""
|
||||
@echo "Common overrides:"
|
||||
@echo " CONFIG=Debug|Release"
|
||||
@echo " RID=osx-arm64|osx-x64|linux-x64|linux-arm64|win-x64"
|
||||
@echo " PUBLISH_DIR=publish/custom"
|
||||
@echo " VERSION=1.1.0 SOURCE_REVISION_ID=$$(git rev-parse --short HEAD)"
|
||||
|
||||
info:
|
||||
@echo "OS=$(UNAME_S) ARCH=$(UNAME_M)"
|
||||
@echo "CONFIG=$(CONFIG) RID=$(RID)"
|
||||
@echo "PROJECT=$(PROJECT) SOLUTION=$(SOLUTION)"
|
||||
@echo "BUILD_DIR=$(BUILD_DIR)"
|
||||
@echo "PUBLISH_DIR=$(PUBLISH_DIR)"
|
||||
|
||||
restore:
|
||||
$(DOTNET) restore $(SOLUTION)
|
||||
|
||||
build:
|
||||
$(DOTNET) build $(SOLUTION) -c $(CONFIG) -o $(BUILD_DIR)
|
||||
|
||||
rebuild: clean build
|
||||
|
||||
clean:
|
||||
$(DOTNET) clean $(SOLUTION) -c $(CONFIG)
|
||||
|
||||
test:
|
||||
$(DOTNET) test $(SOLUTION) -c $(CONFIG) --no-build
|
||||
|
||||
publish:
|
||||
$(DOTNET) publish $(PROJECT) -c $(CONFIG) -r $(RID) -o $(PUBLISH_DIR) --self-contained $(SELF_CONTAINED)
|
||||
|
||||
publish-self-contained:
|
||||
$(DOTNET) publish $(PROJECT) -c $(CONFIG) -r $(RID) -o $(PUBLISH_DIR) --self-contained true
|
||||
|
||||
run:
|
||||
$(DOTNET) run --project $(PROJECT) -c $(CONFIG)
|
||||
|
||||
macos-bundle:
|
||||
@if [ "$(UNAME_S)" != "Darwin" ]; then \
|
||||
echo "macos-bundle target is intended for macOS (Darwin)."; \
|
||||
exit 1; \
|
||||
fi
|
||||
bash distribution/macos/create_macos_build_ava.sh \
|
||||
. \
|
||||
$(MAC_TEMP_DIR) \
|
||||
$(MAC_OUTPUT_DIR) \
|
||||
$(ENTITLEMENTS) \
|
||||
$(VERSION) \
|
||||
$(SOURCE_REVISION_ID) \
|
||||
$(CONFIG) \
|
||||
$(CANARY)
|
||||
|
||||
linux-appimage:
|
||||
@if [ "$(UNAME_S)" != "Linux" ]; then \
|
||||
echo "linux-appimage target is intended for Linux."; \
|
||||
exit 1; \
|
||||
fi
|
||||
BUILDDIR=$(APPIMAGE_BUILD_DIR) OUTDIR=$(APPIMAGE_OUT_DIR) sh distribution/linux/appimage/build-appimage.sh
|
||||
Reference in New Issue
Block a user