diff --git a/scripts/deploy.py b/scripts/deploy.py index 6b40ddd..3dd2964 100644 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -3,7 +3,28 @@ Add your own code to the main "function" The script is by default called with "Release" in the first argument + +Copyright (c) 2025 Moxibyte GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. """ +import mox import os import sys import zipfile @@ -14,6 +35,9 @@ if len(sys.argv) > 1: conf = sys.argv[1] + # Architecture + arch = mox.GetPlatformInfo()["premake_arch"] + # Work directory's tempDir = f'./temp/{conf}/' deployDir = f'./deploy/{conf}/' @@ -23,7 +47,7 @@ # We will do a quick copy from the out folder # TODO: Add your own implementation with zipfile.ZipFile(f'{deployDir}package.zip', 'w') as zip_file: - for file in os.listdir(f'./build/x86_64-{conf}/bin'): - path = f'./build/x86_64-{conf}/bin/{file}' + for file in os.listdir(f'./build/{arch}-{conf}/bin'): + path = f'./build/{arch}-{conf}/bin/{file}' if os.path.isfile(path): zip_file.write(path, file) diff --git a/scripts/init.py b/scripts/init.py index 49841d1..fb79cb3 100644 --- a/scripts/init.py +++ b/scripts/init.py @@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +import mox import moxwin import os @@ -33,27 +34,6 @@ import subprocess import urllib.request -MOX_ARCH_MAP = { - # x86 32bit - "i386": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on linux - "i686": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on linux - "x86": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on windows - - # x86 64bit - "amd64": { "conan_arch": "x86_64", "premake_arch": "x86_64" }, # Seen on windows - "x86_64": { "conan_arch": "x86_64", "premake_arch": "x86_64" }, # Seen on windows and linux - - # ARM (32bit) - "arm": { "conan_arch": "armv7", "premake_arch": "ARM" }, # Seen on linux - - # ARM64 - "arm64": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on windows - "aarch64": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux - "aarch64_be": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux - "armv8b": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux - "armv8l": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux -} - def GetExecutable(exe): if sys.platform.startswith('linux'): return exe @@ -75,12 +55,6 @@ def GetPremakeDownloadUrl(version): else: return baseUrl + '-windows.zip' -def GetPlatformInfo(): - arch = platform.machine().lower() - if not arch in MOX_ARCH_MAP: - raise ValueError(f'Architecture "{arch}" is not supported by MoxPP!') - return MOX_ARCH_MAP[arch] - def DownloadPremake(version = '5.0.0-beta4'): premakeDownloadUrl = GetPremakeDownloadUrl(version) premakeTargetFolder = './dependencies/premake5' @@ -121,7 +95,7 @@ def ConanBuild(conf, arch): DownloadPremake() # Get system architecture - arch = GetPlatformInfo() + arch = mox.GetPlatformInfo() print(f'Generating project on { platform.machine().lower() } for conan={ arch["conan_arch"] } and premake={arch["premake_arch"]}') # Generate conan project diff --git a/scripts/mox/__init__.py b/scripts/mox/__init__.py new file mode 100644 index 0000000..81a6fa7 --- /dev/null +++ b/scripts/mox/__init__.py @@ -0,0 +1 @@ +from .mox import * diff --git a/scripts/mox/mox.py b/scripts/mox/mox.py new file mode 100644 index 0000000..eb682a2 --- /dev/null +++ b/scripts/mox/mox.py @@ -0,0 +1,51 @@ +""" +Generic util functions + +Copyright (c) 2025 Moxibyte GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +""" +import platform + +MOX_ARCH_MAP = { + # x86 32bit + "i386": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on linux + "i686": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on linux + "x86": { "conan_arch": "x86", "premake_arch": "x86" }, # Seen on windows + + # x86 64bit + "amd64": { "conan_arch": "x86_64", "premake_arch": "x86_64" }, # Seen on windows + "x86_64": { "conan_arch": "x86_64", "premake_arch": "x86_64" }, # Seen on windows and linux + + # ARM (32bit) + "arm": { "conan_arch": "armv7", "premake_arch": "ARM" }, # Seen on linux + + # ARM64 + "arm64": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on windows + "aarch64": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux + "aarch64_be": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux + "armv8b": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux + "armv8l": { "conan_arch": "armv8", "premake_arch": "ARM64" }, # Seen on linux +} + +def GetPlatformInfo(): + arch = platform.machine().lower() + if not arch in MOX_ARCH_MAP: + raise ValueError(f'Architecture "{arch}" is not supported by MoxPP!') + return MOX_ARCH_MAP[arch] diff --git a/scripts/run.py b/scripts/run.py index 9c011c5..89a852e 100644 --- a/scripts/run.py +++ b/scripts/run.py @@ -2,7 +2,7 @@ Project execution script This script will run the compiled application in the proper way. -Copyright (c) 2024 Moxibyte GmbH +Copyright (c) 2025 Moxibyte GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +import mox import sys import subprocess @@ -35,6 +36,9 @@ conf = sys.argv[argv_index][3::] argv_index += 1 + # Architecture + arch = mox.GetPlatformInfo()["premake_arch"] + if len(sys.argv) > argv_index: # Executable name exe = sys.argv[argv_index] @@ -44,7 +48,7 @@ args = sys.argv[argv_index::] # Path to exe - exepath = f'build/x86_64-{conf}/bin/{exe}' + exepath = f'build/{arch}-{conf}/bin/{exe}' if sys.platform.startswith('linux'): exepath = '../' + exepath else: