diff --git a/Makefile b/Makefile index 4d40cb0333..27794a2889 100644 --- a/Makefile +++ b/Makefile @@ -7,16 +7,16 @@ # make RUNTIME=mono # # to compile using system libraries for native dependencies, run: -# make [RUNTIME=dotnet] TARGETPLATFORM=unix-generic +# make [RUNTIME=net5] TARGETPLATFORM=unix-generic # # to check the official mods for erroneous yaml files, run: -# make [RUNTIME=dotnet] test +# make [RUNTIME=net5] test # # to check the engine and official mod dlls for code style violations, run: -# make [RUNTIME=dotnet] check +# make [RUNTIME=net5] check # # to compile and install Red Alert, Tiberian Dawn, and Dune 2000, run: -# make [RUNTIME=dotnet] [prefix=/foo] [bindir=/bar/bin] install +# make [RUNTIME=net5] [prefix=/foo] [bindir=/bar/bin] install # # to compile and install Red Alert, Tiberian Dawn, and Dune 2000 # using system libraries for native dependencies, run: @@ -53,8 +53,9 @@ RM_R = $(RM) -r RM_F = $(RM) -f RM_RF = $(RM) -rf -RUNTIME ?= dotnet +RUNTIME ?= net5 CONFIGURATION ?= Release + # Only for use in target version: VERSION := $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || (c=$$(git rev-parse --short HEAD 2>/dev/null) && echo git-$$c)) @@ -143,11 +144,7 @@ endif @sh -c '. ./packaging/functions.sh; set_mod_version "$(VERSION)" mods/ra/mod.yaml mods/cnc/mod.yaml mods/d2k/mod.yaml mods/ts/mod.yaml mods/modcontent/mod.yaml mods/all/mod.yaml' install: -ifeq ($(RUNTIME), mono) - @sh -c '. ./packaging/functions.sh; install_assemblies_mono $(CWD) $(DESTDIR)$(gameinstalldir) $(TARGETPLATFORM) True True True' -else - @sh -c '. ./packaging/functions.sh; install_assemblies $(CWD) $(DESTDIR)$(gameinstalldir) $(TARGETPLATFORM) True True True' -endif + @sh -c '. ./packaging/functions.sh; install_assemblies $(CWD) $(DESTDIR)$(gameinstalldir) $(TARGETPLATFORM) $(RUNTIME) True True True' @sh -c '. ./packaging/functions.sh; install_data $(CWD) $(DESTDIR)$(gameinstalldir) cnc d2k ra' install-linux-shortcuts: @@ -164,20 +161,20 @@ help: @echo ' make RUNTIME=mono' @echo @echo 'to compile using system libraries for native dependencies, run:' - @echo ' make [RUNTIME=dotnet] TARGETPLATFORM=unix-generic' + @echo ' make [RUNTIME=net5] TARGETPLATFORM=unix-generic' @echo @echo 'to check the official mods for erroneous yaml files, run:' - @echo ' make [RUNTIME=dotnet] test' + @echo ' make [RUNTIME=net5] test' @echo @echo 'to check the engine and official mod dlls for code style violations, run:' - @echo ' make [RUNTIME=dotnet] check' + @echo ' make [RUNTIME=net5] check' @echo @echo 'to compile and install Red Alert, Tiberian Dawn, and Dune 2000 run:' - @echo ' make [RUNTIME=dotnet] [prefix=/foo] [TARGETPLATFORM=unix-generic] install' + @echo ' make [RUNTIME=net5] [prefix=/foo] [TARGETPLATFORM=unix-generic] install' @echo @echo 'to compile and install Red Alert, Tiberian Dawn, and Dune 2000' @echo 'using system libraries for native dependencies, run:' - @echo ' make [RUNTIME=dotnet] [prefix=/foo] [bindir=/bar/bin] TARGETPLATFORM=unix-generic install' + @echo ' make [RUNTIME=net5] [prefix=/foo] [bindir=/bar/bin] TARGETPLATFORM=unix-generic install' @echo @echo 'to install Linux startup scripts, desktop files, icons, and MIME metadata' @echo ' make install-linux-shortcuts' diff --git a/packaging/functions.sh b/packaging/functions.sh index 4779ce85c9..f779492408 100755 --- a/packaging/functions.sh +++ b/packaging/functions.sh @@ -6,78 +6,12 @@ # Copy-paste the entire script into http://shellcheck.net to check. #### -# Compile and publish (using Mono) the core engine and specified mod assemblies to the target directory -# Arguments: -# SRC_PATH: Path to the root OpenRA directory -# DEST_PATH: Path to the root of the install destination (will be created if necessary) -# TARGETPLATFORM: Platform type (win-x86, win-x64, osx-x64, linux-x64, unix-generic) -# COPY_GENERIC_LAUNCHER: If set to True the OpenRA.exe will also be copied (True, False) -# COPY_CNC_DLL: If set to True the OpenRA.Mods.Cnc.dll will also be copied (True, False) -# COPY_D2K_DLL: If set to True the OpenRA.Mods.D2k.dll will also be copied (True, False) -# Used by: -# Makefile (install target for local installs and downstream packaging) -# Mod SDK Linux AppImage packaging -# Mod SDK macOS packaging -# Mod SDK Windows packaging -install_assemblies_mono() { - SRC_PATH="${1}" - DEST_PATH="${2}" - TARGETPLATFORM="${3}" - COPY_GENERIC_LAUNCHER="${4}" - COPY_CNC_DLL="${5}" - COPY_D2K_DLL="${6}" - - echo "Building assemblies" - ORIG_PWD=$(pwd) - cd "${SRC_PATH}" || exit 1 - - rm -rf "${SRC_PATH}/OpenRA."*/obj - rm -rf "${SRC_PATH:?}/bin" - - msbuild -verbosity:m -nologo -t:Build -restore -p:Configuration=Release -p:TargetPlatform="${TARGETPLATFORM}" -p:Mono=true - if [ "${TARGETPLATFORM}" = "unix-generic" ]; then - ./configure-system-libraries.sh - fi - - if [ "${COPY_GENERIC_LAUNCHER}" != "True" ]; then - rm "${SRC_PATH}/bin/OpenRA.dll" - fi - - if [ "${COPY_CNC_DLL}" != "True" ]; then - rm "${SRC_PATH}/bin/OpenRA.Mods.Cnc.dll" - fi - - if [ "${COPY_D2K_DLL}" != "True" ]; then - rm "${SRC_PATH}/bin/OpenRA.Mods.D2k.dll" - fi - - cd "${ORIG_PWD}" || exit 1 - - echo "Installing engine to ${DEST_PATH}" - install -d "${DEST_PATH}" - - for LIB in "${SRC_PATH}/bin/"*.dll "${SRC_PATH}/bin/"*.dll.config; do - install -m644 "${LIB}" "${DEST_PATH}" - done - - if [ "${TARGETPLATFORM}" = "linux-x64" ]; then - for LIB in "${SRC_PATH}/bin/"*.so; do - install -m755 "${LIB}" "${DEST_PATH}" - done - fi - - if [ "${TARGETPLATFORM}" = "osx-x64" ]; then - for LIB in "${SRC_PATH}/bin/"*.dylib; do - install -m755 "${LIB}" "${DEST_PATH}" - done - fi -} - # Compile and publish the core engine and specified mod assemblies to the target directory # Arguments: # SRC_PATH: Path to the root OpenRA directory # DEST_PATH: Path to the root of the install destination (will be created if necessary) # TARGETPLATFORM: Platform type (win-x86, win-x64, osx-x64, linux-x64, unix-generic) +# RUNTIME: Runtime type (net5, mono) # COPY_GENERIC_LAUNCHER: If set to True the OpenRA.exe will also be copied (True, False) # COPY_CNC_DLL: If set to True the OpenRA.Mods.Cnc.dll will also be copied (True, False) # COPY_D2K_DLL: If set to True the OpenRA.Mods.D2k.dll will also be copied (True, False) @@ -86,19 +20,66 @@ install_assemblies_mono() { # Windows packaging # macOS packaging # Linux AppImage packaging +# Mod SDK Windows packaging +# Mod SDK macOS packaging +# Mod SDK Linux AppImage packaging install_assemblies() { SRC_PATH="${1}" DEST_PATH="${2}" TARGETPLATFORM="${3}" - COPY_GENERIC_LAUNCHER="${4}" - COPY_CNC_DLL="${5}" - COPY_D2K_DLL="${6}" + RUNTIME="${4}" + COPY_GENERIC_LAUNCHER="${5}" + COPY_CNC_DLL="${6}" + COPY_D2K_DLL="${7}" ORIG_PWD=$(pwd) cd "${SRC_PATH}" || exit 1 - dotnet publish -c Release -p:TargetPlatform="${TARGETPLATFORM}" -p:PublishTrimmed=true -p:CopyGenericLauncher="${COPY_GENERIC_LAUNCHER}" -p:CopyCncDll="${COPY_CNC_DLL}" -p:CopyD2kDll="${COPY_D2K_DLL}" -r "${TARGETPLATFORM}" -o "${DEST_PATH}" --self-contained true + if [ "${RUNTIME}" = "mono" ]; then + echo "Building assemblies" + rm -rf "${SRC_PATH}/OpenRA."*/obj + rm -rf "${SRC_PATH:?}/bin" + msbuild -verbosity:m -nologo -t:Build -restore -p:Configuration=Release -p:TargetPlatform="${TARGETPLATFORM}" -p:Mono=true + if [ "${TARGETPLATFORM}" = "unix-generic" ]; then + ./configure-system-libraries.sh + fi + + if [ "${COPY_GENERIC_LAUNCHER}" != "True" ]; then + rm "${SRC_PATH}/bin/OpenRA.dll" + fi + + if [ "${COPY_CNC_DLL}" != "True" ]; then + rm "${SRC_PATH}/bin/OpenRA.Mods.Cnc.dll" + fi + + if [ "${COPY_D2K_DLL}" != "True" ]; then + rm "${SRC_PATH}/bin/OpenRA.Mods.D2k.dll" + fi + + cd "${ORIG_PWD}" || exit 1 + + echo "Installing engine to ${DEST_PATH}" + install -d "${DEST_PATH}" + + for LIB in "${SRC_PATH}/bin/"*.dll "${SRC_PATH}/bin/"*.dll.config; do + install -m644 "${LIB}" "${DEST_PATH}" + done + + if [ "${TARGETPLATFORM}" = "linux-x64" ]; then + for LIB in "${SRC_PATH}/bin/"*.so; do + install -m755 "${LIB}" "${DEST_PATH}" + done + fi + + if [ "${TARGETPLATFORM}" = "osx-x64" ]; then + for LIB in "${SRC_PATH}/bin/"*.dylib; do + install -m755 "${LIB}" "${DEST_PATH}" + done + fi + else + dotnet publish -c Release -p:TargetPlatform="${TARGETPLATFORM}" -p:PublishTrimmed=true -p:CopyGenericLauncher="${COPY_GENERIC_LAUNCHER}" -p:CopyCncDll="${COPY_CNC_DLL}" -p:CopyD2kDll="${COPY_D2K_DLL}" -r "${TARGETPLATFORM}" -o "${DEST_PATH}" --self-contained true + fi cd "${ORIG_PWD}" || exit 1 } diff --git a/packaging/linux/buildpackage.sh b/packaging/linux/buildpackage.sh index f8147f1c4a..4883048495 100755 --- a/packaging/linux/buildpackage.sh +++ b/packaging/linux/buildpackage.sh @@ -65,7 +65,7 @@ build_appimage() { IS_D2K="True" fi - install_assemblies "${SRCDIR}" "${APPDIR}/usr/lib/openra" "linux-x64" "True" "True" "${IS_D2K}" + install_assemblies "${SRCDIR}" "${APPDIR}/usr/lib/openra" "linux-x64" "net5" "True" "True" "${IS_D2K}" install_data "${SRCDIR}" "${APPDIR}/usr/lib/openra" "${MOD_ID}" set_engine_version "${TAG}" "${APPDIR}/usr/lib/openra" set_mod_version "${TAG}" "${APPDIR}/usr/lib/openra/mods/${MOD_ID}/mod.yaml" "${APPDIR}/usr/lib/openra/mods/modcontent/mod.yaml" diff --git a/packaging/macos/buildpackage.sh b/packaging/macos/buildpackage.sh index 6bbf9d2580..093894bba6 100755 --- a/packaging/macos/buildpackage.sh +++ b/packaging/macos/buildpackage.sh @@ -74,12 +74,12 @@ build_app() { fi # Install engine and mod files + RUNTIME="net5" if [ "${PLATFORM}" = "compat" ]; then - install_assemblies_mono "${SRCDIR}" "${LAUNCHER_ASSEMBLY_DIR}" "osx-x64" "True" "True" "${IS_D2K}" - else - install_assemblies "${SRCDIR}" "${LAUNCHER_ASSEMBLY_DIR}" "osx-x64" "True" "True" "${IS_D2K}" + RUNTIME="mono" fi + install_assemblies "${SRCDIR}" "${LAUNCHER_ASSEMBLY_DIR}" "osx-x64" "${RUNTIME}" "True" "True" "${IS_D2K}" install_data "${SRCDIR}" "${LAUNCHER_RESOURCES_DIR}" "${MOD_ID}" set_engine_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}" set_mod_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}/mods/${MOD_ID}/mod.yaml" "${LAUNCHER_RESOURCES_DIR}/mods/modcontent/mod.yaml" diff --git a/packaging/windows/buildpackage.sh b/packaging/windows/buildpackage.sh index 38cd2ad312..d743773592 100755 --- a/packaging/windows/buildpackage.sh +++ b/packaging/windows/buildpackage.sh @@ -62,7 +62,7 @@ function build_platform() USE_PROGRAMFILES32="" fi - install_assemblies "${SRCDIR}" "${BUILTDIR}" "win-${PLATFORM}" "False" "True" "True" + install_assemblies "${SRCDIR}" "${BUILTDIR}" "win-${PLATFORM}" "net5" "False" "True" "True" install_data "${SRCDIR}" "${BUILTDIR}" "cnc" "d2k" "ra" set_engine_version "${TAG}" "${BUILTDIR}" set_mod_version "${TAG}" "${BUILTDIR}/mods/cnc/mod.yaml" "${BUILTDIR}/mods/d2k/mod.yaml" "${BUILTDIR}/mods/ra/mod.yaml" "${BUILTDIR}/mods/modcontent/mod.yaml"