mirror of https://github.com/xemu-project/xemu.git
scripts/gen-license.py: Run black formatter
This commit is contained in:
parent
c832e0d0dd
commit
967f35444c
|
@ -13,367 +13,509 @@ import os.path
|
|||
import re
|
||||
import sys
|
||||
|
||||
gplv2 = 'gplv2'
|
||||
mit = 'mit'
|
||||
bsd = 'bsd'
|
||||
bsd_2clause = 'bsd-2clause'
|
||||
bsd_3clause = 'bsd-3clause'
|
||||
zlib = 'zlib'
|
||||
lgplv2_1 = 'lgplv2_1'
|
||||
apache2 = 'apache2'
|
||||
unlicense = 'unlicense'
|
||||
multi = 'multi'
|
||||
gplv2 = "gplv2"
|
||||
mit = "mit"
|
||||
bsd = "bsd"
|
||||
bsd_2clause = "bsd-2clause"
|
||||
bsd_3clause = "bsd-3clause"
|
||||
zlib = "zlib"
|
||||
lgplv2_1 = "lgplv2_1"
|
||||
apache2 = "apache2"
|
||||
unlicense = "unlicense"
|
||||
multi = "multi"
|
||||
|
||||
|
||||
windows = 'windows'
|
||||
macos = 'darwin'
|
||||
linux = 'linux'
|
||||
all_platforms = { windows, macos, linux }
|
||||
windows = "windows"
|
||||
macos = "darwin"
|
||||
linux = "linux"
|
||||
all_platforms = {windows, macos, linux}
|
||||
current_platform = linux
|
||||
|
||||
versions = {}
|
||||
|
||||
|
||||
def banner(s):
|
||||
space = 1
|
||||
width = 80
|
||||
mid_len = 2*space+len(s)
|
||||
left_dashes = (width-mid_len)//2
|
||||
right_dashes = width-mid_len-left_dashes
|
||||
return '-'*left_dashes + ' ' + s + ' ' + '-'*right_dashes
|
||||
space = 1
|
||||
width = 80
|
||||
mid_len = 2 * space + len(s)
|
||||
left_dashes = (width - mid_len) // 2
|
||||
right_dashes = width - mid_len - left_dashes
|
||||
return "-" * left_dashes + " " + s + " " + "-" * right_dashes
|
||||
|
||||
|
||||
class Lib:
|
||||
def __init__(self, name, url,
|
||||
license, license_url=None, license_path=None, license_lines=None,
|
||||
submodule=None,
|
||||
version=None,
|
||||
ships_static=set(), ships_dynamic=set(),
|
||||
platform=all_platforms, pkgconfig=None,
|
||||
pkg_win=None, pkg_mac=None, pkg_ubuntu=None):
|
||||
self.name = name
|
||||
self.url = url
|
||||
self.license = license
|
||||
self.license_url = license_url
|
||||
self.license_path = license_path or os.path.join('licenses', self.name + '.license.txt')
|
||||
self.license_lines = license_lines
|
||||
self.submodule = submodule
|
||||
self._version = version
|
||||
self.ships_static = ships_static
|
||||
self.ships_dynamic = ships_dynamic
|
||||
self.platform = platform
|
||||
self.pkgconfig = pkgconfig
|
||||
self.pkg_win = pkg_win
|
||||
self.pkg_mac = pkg_mac
|
||||
self.pkg_ubuntu = pkg_ubuntu
|
||||
def __init__(
|
||||
self,
|
||||
name,
|
||||
url,
|
||||
license,
|
||||
license_url=None,
|
||||
license_path=None,
|
||||
license_lines=None,
|
||||
submodule=None,
|
||||
version=None,
|
||||
ships_static=set(),
|
||||
ships_dynamic=set(),
|
||||
platform=all_platforms,
|
||||
pkgconfig=None,
|
||||
pkg_win=None,
|
||||
pkg_mac=None,
|
||||
pkg_ubuntu=None,
|
||||
):
|
||||
self.name = name
|
||||
self.url = url
|
||||
self.license = license
|
||||
self.license_url = license_url
|
||||
self.license_path = license_path or os.path.join(
|
||||
"licenses", self.name + ".license.txt"
|
||||
)
|
||||
self.license_lines = license_lines
|
||||
self.submodule = submodule
|
||||
self._version = version
|
||||
self.ships_static = ships_static
|
||||
self.ships_dynamic = ships_dynamic
|
||||
self.platform = platform
|
||||
self.pkgconfig = pkgconfig
|
||||
self.pkg_win = pkg_win
|
||||
self.pkg_mac = pkg_mac
|
||||
self.pkg_ubuntu = pkg_ubuntu
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
if self._version:
|
||||
return self._version
|
||||
@property
|
||||
def version(self):
|
||||
if self._version:
|
||||
return self._version
|
||||
|
||||
if self.submodule:
|
||||
self._version = self.submodule.head
|
||||
return self._version
|
||||
if self.submodule:
|
||||
self._version = self.submodule.head
|
||||
return self._version
|
||||
|
||||
if self.pkgconfig:
|
||||
self._version = self.pkgconfig.modversion
|
||||
return self._version
|
||||
if self.pkgconfig:
|
||||
self._version = self.pkgconfig.modversion
|
||||
return self._version
|
||||
|
||||
if current_platform == windows and self.pkg_win:
|
||||
self._version = subprocess.run(r"grep -e '_VERSION\s*:=' /opt/mxe/src/" + self.pkg_win + ".mk | cut -d'=' -f2",
|
||||
capture_output=True, shell=True,
|
||||
check=True).stdout.decode('utf-8').strip()
|
||||
return self._version
|
||||
elif current_platform == macos and self.pkg_mac:
|
||||
self._version = versions[self.pkg_mac]
|
||||
return self._version
|
||||
elif current_platform == linux and self.pkg_ubuntu:
|
||||
self._version = subprocess.run(r"dpkg -s " + self.pkg_ubuntu + " | grep Version | cut -d: -f2",
|
||||
capture_output=True, shell=True,
|
||||
check=True).stdout.decode('utf-8').strip()
|
||||
return self._version
|
||||
if current_platform == windows and self.pkg_win:
|
||||
self._version = (
|
||||
subprocess.run(
|
||||
r"grep -e '_VERSION\s*:=' /opt/mxe/src/"
|
||||
+ self.pkg_win
|
||||
+ ".mk | cut -d'=' -f2",
|
||||
capture_output=True,
|
||||
shell=True,
|
||||
check=True,
|
||||
)
|
||||
.stdout.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
return self._version
|
||||
elif current_platform == macos and self.pkg_mac:
|
||||
self._version = versions[self.pkg_mac]
|
||||
return self._version
|
||||
elif current_platform == linux and self.pkg_ubuntu:
|
||||
self._version = (
|
||||
subprocess.run(
|
||||
r"dpkg -s " + self.pkg_ubuntu + " | grep Version | cut -d: -f2",
|
||||
capture_output=True,
|
||||
shell=True,
|
||||
check=True,
|
||||
)
|
||||
.stdout.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
return self._version
|
||||
|
||||
assert False, 'Failed to get version info for ' + self.name
|
||||
assert False, "Failed to get version info for " + self.name
|
||||
|
||||
@property
|
||||
def license_text(self):
|
||||
if os.path.exists(self.license_path):
|
||||
with open(self.license_path, 'r', encoding='utf-8') as f:
|
||||
return f.read()
|
||||
import requests
|
||||
d = requests.get(self.license_url).content.decode('utf-8')
|
||||
if self.license_lines:
|
||||
start, end = self.license_lines
|
||||
d = '\n'.join(d.splitlines()[start-1:end+1])
|
||||
with open(fname, 'w') as f:
|
||||
f.write(d)
|
||||
return d
|
||||
@property
|
||||
def license_text(self):
|
||||
if os.path.exists(self.license_path):
|
||||
with open(self.license_path, "r", encoding="utf-8") as f:
|
||||
return f.read()
|
||||
import requests
|
||||
|
||||
@property
|
||||
def is_active(self):
|
||||
return current_platform in self.platform
|
||||
d = requests.get(self.license_url).content.decode("utf-8")
|
||||
if self.license_lines:
|
||||
start, end = self.license_lines
|
||||
d = "\n".join(d.splitlines()[start - 1 : end + 1])
|
||||
with open(fname, "w") as f:
|
||||
f.write(d)
|
||||
return d
|
||||
|
||||
@property
|
||||
def does_ship_static(self):
|
||||
return current_platform in self.ships_static
|
||||
@property
|
||||
def is_active(self):
|
||||
return current_platform in self.platform
|
||||
|
||||
@property
|
||||
def does_ship_dynamic(self):
|
||||
return current_platform in self.ships_dynamic
|
||||
@property
|
||||
def does_ship_static(self):
|
||||
return current_platform in self.ships_static
|
||||
|
||||
@property
|
||||
def does_ship(self):
|
||||
return self.is_active and (self.does_ship_static or self.does_ship_dynamic)
|
||||
@property
|
||||
def does_ship_dynamic(self):
|
||||
return current_platform in self.ships_dynamic
|
||||
|
||||
@property
|
||||
def does_ship(self):
|
||||
return self.is_active and (self.does_ship_static or self.does_ship_dynamic)
|
||||
|
||||
|
||||
class PkgConfig:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
@property
|
||||
def modversion(self):
|
||||
pkg_config = {
|
||||
linux: "pkg-config",
|
||||
windows: "x86_64-w64-mingw32.static-pkg-config",
|
||||
macos: "pkg-config",
|
||||
}[current_platform]
|
||||
ver = subprocess.run(
|
||||
[pkg_config, "--modversion", self.name], capture_output=True, check=True
|
||||
)
|
||||
return ver.stdout.decode("utf-8").strip()
|
||||
|
||||
@property
|
||||
def modversion(self):
|
||||
pkg_config = {
|
||||
linux: 'pkg-config',
|
||||
windows: 'x86_64-w64-mingw32.static-pkg-config',
|
||||
macos: 'pkg-config',
|
||||
}[current_platform]
|
||||
ver = subprocess.run([pkg_config, '--modversion', self.name],
|
||||
capture_output=True, check=True)
|
||||
return ver.stdout.decode('utf-8').strip()
|
||||
|
||||
class Submodule:
|
||||
def __init__(self, path):
|
||||
self.path = path
|
||||
def __init__(self, path):
|
||||
self.path = path
|
||||
|
||||
@property
|
||||
def head(self):
|
||||
if self.path.endswith(".wrap"):
|
||||
with open(self.path, "r", encoding="utf-8") as file:
|
||||
contents = file.read()
|
||||
revision = re.search(r"^revision\s*=\s*(.*)", contents, re.MULTILINE)
|
||||
if revision:
|
||||
return revision.group(1)
|
||||
wrapdb_version = re.search(r"^wrapdb_version\s*=\s*([^-]*)", contents, re.MULTILINE)
|
||||
if wrapdb_version:
|
||||
return wrapdb_version.group(1)
|
||||
assert False, "revision not found for subproject"
|
||||
@property
|
||||
def head(self):
|
||||
if self.path.endswith(".wrap"):
|
||||
with open(self.path, "r", encoding="utf-8") as file:
|
||||
contents = file.read()
|
||||
revision = re.search(r"^revision\s*=\s*(.*)", contents, re.MULTILINE)
|
||||
if revision:
|
||||
return revision.group(1)
|
||||
wrapdb_version = re.search(
|
||||
r"^wrapdb_version\s*=\s*([^-]*)", contents, re.MULTILINE
|
||||
)
|
||||
if wrapdb_version:
|
||||
return wrapdb_version.group(1)
|
||||
assert False, "revision not found for subproject"
|
||||
|
||||
try:
|
||||
return subprocess.run(['git', 'rev-parse', 'HEAD'],
|
||||
cwd=self.path, capture_output=True,
|
||||
check=True).stdout.decode('utf-8').strip()
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
try:
|
||||
return (
|
||||
subprocess.run(
|
||||
["git", "rev-parse", "HEAD"],
|
||||
cwd=self.path,
|
||||
capture_output=True,
|
||||
check=True,
|
||||
)
|
||||
.stdout.decode("utf-8")
|
||||
.strip()
|
||||
)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
commit_file_path = os.path.join(self.path, 'HEAD')
|
||||
if os.path.exists(commit_file_path):
|
||||
return open(commit_file_path).read().strip()
|
||||
commit_file_path = os.path.join(self.path, "HEAD")
|
||||
if os.path.exists(commit_file_path):
|
||||
return open(commit_file_path).read().strip()
|
||||
|
||||
raise Exception("Failed to determine submodule revision")
|
||||
return ""
|
||||
|
||||
raise Exception('Failed to determine submodule revision')
|
||||
return ''
|
||||
|
||||
LIBS = [
|
||||
|
||||
Lib('qemu', 'https://www.qemu.org/',
|
||||
gplv2, 'https://raw.githubusercontent.com/xemu-project/xemu/master/LICENSE',
|
||||
version='6.0.0'
|
||||
),
|
||||
|
||||
#
|
||||
# Built from source with xemu
|
||||
#
|
||||
|
||||
Lib('slirp', 'https://gitlab.freedesktop.org/slirp',
|
||||
bsd_3clause, 'https://gitlab.freedesktop.org/slirp/libslirp/-/raw/master/COPYRIGHT', license_lines=(16,39),
|
||||
ships_static=all_platforms,
|
||||
pkgconfig=PkgConfig('slirp'), pkg_win='libslirp', pkg_mac='libslirp', pkg_ubuntu='libslirp-dev'
|
||||
),
|
||||
|
||||
Lib('imgui', 'https://github.com/ocornut/imgui',
|
||||
mit, 'https://raw.githubusercontent.com/ocornut/imgui/master/LICENSE.txt',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/imgui.wrap')
|
||||
),
|
||||
|
||||
Lib('implot', 'https://github.com/epezent/implot',
|
||||
mit, 'https://raw.githubusercontent.com/epezent/implot/master/LICENSE',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/implot.wrap')
|
||||
),
|
||||
|
||||
Lib('noc', 'https://github.com/guillaumechereau/noc/blob/master/noc_file_dialog.h',
|
||||
mit, 'https://raw.githubusercontent.com/xemu-project/xemu/master/ui/noc_file_dialog.h', license_lines=(1,22),
|
||||
ships_static=all_platforms,
|
||||
version='78b2e7b22506429dd1755ffff197c7da11507fd9'
|
||||
),
|
||||
|
||||
Lib('stb_image', 'https://github.com/nothings/stb',
|
||||
mit, 'https://raw.githubusercontent.com/nothings/stb/master/LICENSE', license_lines=(4,19),
|
||||
ships_static=all_platforms,
|
||||
version='2.25'
|
||||
),
|
||||
|
||||
Lib('tomlplusplus', 'https://github.com/marzer/tomlplusplus',
|
||||
mit, 'https://raw.githubusercontent.com/marzer/tomlplusplus/master/LICENSE',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/tomlplusplus.wrap')
|
||||
),
|
||||
|
||||
Lib('xxHash', 'https://github.com/Cyan4973/xxHash.git',
|
||||
bsd, 'https://raw.githubusercontent.com/Cyan4973/xxHash/dev/LICENSE', license_lines=(1,26),
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/xxhash.wrap')
|
||||
),
|
||||
|
||||
Lib('fpng', 'https://github.com/richgel999/fpng',
|
||||
unlicense, 'https://github.com/richgel999/fpng/blob/main/README.md',
|
||||
ships_static=all_platforms,
|
||||
version='6926f5a0a78f22d42b074a0ab8032e07736babd4'
|
||||
),
|
||||
|
||||
Lib('nv2a_vsh_cpu', 'https://github.com/xemu-project/nv2a_vsh_cpu',
|
||||
unlicense, 'https://raw.githubusercontent.com/xemu-project/nv2a_vsh_cpu/main/LICENSE',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/nv2a_vsh_cpu.wrap')
|
||||
),
|
||||
|
||||
Lib('volk', 'https://github.com/zeux/volk',
|
||||
mit, 'https://raw.githubusercontent.com/zeux/volk/master/LICENSE.md',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/volk.wrap')
|
||||
),
|
||||
|
||||
Lib('VulkanMemoryAllocator', 'https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator',
|
||||
mit, 'https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/master/LICENSE.txt',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/VulkanMemoryAllocator.wrap')
|
||||
),
|
||||
|
||||
Lib('SPIRV-Reflect', 'https://github.com/KhronosGroup/SPIRV-Reflect',
|
||||
apache2, 'https://raw.githubusercontent.com/KhronosGroup/SPIRV-Reflect/main/LICENSE',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/SPIRV-Reflect.wrap')
|
||||
),
|
||||
|
||||
Lib('glslang', 'https://github.com/KhronosGroup/glslang',
|
||||
bsd_3clause, 'https://raw.githubusercontent.com/KhronosGroup/glslang/main/LICENSE.txt',
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule('subprojects/glslang.wrap')
|
||||
),
|
||||
|
||||
#
|
||||
# Data files included with xemu
|
||||
#
|
||||
|
||||
Lib('roboto', 'https://github.com/googlefonts/roboto',
|
||||
apache2, 'https://raw.githubusercontent.com/googlefonts/roboto/main/LICENSE',
|
||||
ships_static=all_platforms,
|
||||
version='2.138'
|
||||
),
|
||||
|
||||
Lib('fontawesome', 'https://fontawesome.com',
|
||||
multi, '',
|
||||
ships_static=all_platforms,
|
||||
version='6.1.1'
|
||||
),
|
||||
|
||||
#
|
||||
# Libraries either linked statically, dynamically linked & shipped, or dynamically linked with system-installed libraries only
|
||||
#
|
||||
|
||||
Lib('sdl2', 'https://www.libsdl.org/',
|
||||
zlib, 'https://raw.githubusercontent.com/libsdl-org/SDL/main/LICENSE.txt',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('sdl2'), pkg_win='sdl2', pkg_mac='sdl2', pkg_ubuntu='libsdl2-dev'
|
||||
),
|
||||
|
||||
Lib('glib-2.0', 'https://gitlab.gnome.org/GNOME/glib',
|
||||
lgplv2_1, 'https://gitlab.gnome.org/GNOME/glib/-/raw/master/COPYING',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('glib-2.0'), pkg_win='glib', pkg_mac='glib', pkg_ubuntu='libglib2.0-dev'
|
||||
),
|
||||
|
||||
# glib dep
|
||||
Lib('pcre', 'http://pcre.org/',
|
||||
bsd, 'http://www.pcre.org/original/license.txt',
|
||||
pkgconfig=PkgConfig('libpcre'), pkg_ubuntu='libpcre3-dev'
|
||||
),
|
||||
Lib('pcre2', 'http://pcre.org/',
|
||||
bsd, 'https://www.pcre.org/licence.txt',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('libpcre2-8'), pkg_win='pcre2', pkg_mac='pcre2', pkg_ubuntu='libpcre2-dev'
|
||||
),
|
||||
|
||||
# glib dep
|
||||
Lib('gettext', 'https://www.gnu.org/software/gettext/',
|
||||
lgplv2_1, 'https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob_plain;f=gettext-runtime/intl/COPYING.LIB;hb=HEAD',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkg_win='gettext', pkg_mac='gettext-runtime',
|
||||
),
|
||||
|
||||
# glib dep
|
||||
Lib('iconv', 'https://www.gnu.org/software/libiconv/',
|
||||
lgplv2_1, 'https://git.savannah.gnu.org/gitweb/?p=libiconv.git;a=blob_plain;f=COPYING.LIB;hb=HEAD',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkg_win='libiconv', pkg_mac='libiconv'
|
||||
),
|
||||
|
||||
Lib('libepoxy', 'https://github.com/anholt/libepoxy',
|
||||
mit, 'https://raw.githubusercontent.com/anholt/libepoxy/master/COPYING',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('epoxy'), pkg_win='libepoxy', pkg_mac='libepoxy', pkg_ubuntu='libepoxy-dev'
|
||||
),
|
||||
|
||||
Lib('pixman', 'http://www.pixman.org/',
|
||||
mit, 'https://cgit.freedesktop.org/pixman/plain/COPYING',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('pixman-1'),
|
||||
pkg_win='pixman',
|
||||
pkg_mac='pixman',
|
||||
pkg_ubuntu='libpixman-1-dev'
|
||||
),
|
||||
|
||||
Lib('libsamplerate', 'https://github.com/libsndfile/libsamplerate',
|
||||
bsd_2clause, 'https://raw.githubusercontent.com/libsndfile/libsamplerate/master/COPYING',
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('samplerate'),
|
||||
pkg_win='libsamplerate',
|
||||
pkg_mac='libsamplerate',
|
||||
),
|
||||
|
||||
Lib('zlib', 'https://zlib.net/',
|
||||
zlib, 'https://raw.githubusercontent.com/madler/zlib/master/README', license_lines=(87,106),
|
||||
ships_static={windows}, ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig('zlib'), pkg_win='zlib', pkg_mac='zlib', pkg_ubuntu='zlib1g-dev'
|
||||
),
|
||||
|
||||
Lib('libmingw32', 'http://mingw-w64.org/',
|
||||
multi, 'https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/COPYING.MinGW-w64-runtime/COPYING.MinGW-w64-runtime.txt?format=raw',
|
||||
ships_static={windows}, platform={windows},
|
||||
pkg_win='mingw-w64',
|
||||
),
|
||||
|
||||
Lib('gtk', 'https://www.gtk.org/',
|
||||
lgplv2_1, 'https://gitlab.gnome.org/GNOME/gtk/-/raw/master/COPYING',
|
||||
platform={linux},
|
||||
pkgconfig=PkgConfig('gtk+-3.0'), pkg_ubuntu='libgtk-3-dev'
|
||||
),
|
||||
|
||||
Lib('miniz', 'https://github.com/richgel999/miniz',
|
||||
lgplv2_1, 'https://raw.githubusercontent.com/richgel999/miniz/master/LICENSE',
|
||||
ships_static={windows}, platform={windows},
|
||||
version='2.1.0'
|
||||
),
|
||||
|
||||
Lib('libcurl', 'https://curl.se/',
|
||||
mit, 'https://raw.githubusercontent.com/curl/curl/refs/heads/master/COPYING',
|
||||
ships_static={windows}, platform={windows},
|
||||
submodule=Submodule('subprojects/curl.wrap')
|
||||
),
|
||||
Lib(
|
||||
"qemu",
|
||||
"https://www.qemu.org/",
|
||||
gplv2,
|
||||
"https://raw.githubusercontent.com/xemu-project/xemu/master/LICENSE",
|
||||
version="6.0.0",
|
||||
),
|
||||
#
|
||||
# Built from source with xemu
|
||||
#
|
||||
Lib(
|
||||
"slirp",
|
||||
"https://gitlab.freedesktop.org/slirp",
|
||||
bsd_3clause,
|
||||
"https://gitlab.freedesktop.org/slirp/libslirp/-/raw/master/COPYRIGHT",
|
||||
license_lines=(16, 39),
|
||||
ships_static=all_platforms,
|
||||
pkgconfig=PkgConfig("slirp"),
|
||||
pkg_win="libslirp",
|
||||
pkg_mac="libslirp",
|
||||
pkg_ubuntu="libslirp-dev",
|
||||
),
|
||||
Lib(
|
||||
"imgui",
|
||||
"https://github.com/ocornut/imgui",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/ocornut/imgui/master/LICENSE.txt",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/imgui.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"implot",
|
||||
"https://github.com/epezent/implot",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/epezent/implot/master/LICENSE",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/implot.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"noc",
|
||||
"https://github.com/guillaumechereau/noc/blob/master/noc_file_dialog.h",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/xemu-project/xemu/master/ui/noc_file_dialog.h",
|
||||
license_lines=(1, 22),
|
||||
ships_static=all_platforms,
|
||||
version="78b2e7b22506429dd1755ffff197c7da11507fd9",
|
||||
),
|
||||
Lib(
|
||||
"stb_image",
|
||||
"https://github.com/nothings/stb",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/nothings/stb/master/LICENSE",
|
||||
license_lines=(4, 19),
|
||||
ships_static=all_platforms,
|
||||
version="2.25",
|
||||
),
|
||||
Lib(
|
||||
"tomlplusplus",
|
||||
"https://github.com/marzer/tomlplusplus",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/marzer/tomlplusplus/master/LICENSE",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/tomlplusplus.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"xxHash",
|
||||
"https://github.com/Cyan4973/xxHash.git",
|
||||
bsd,
|
||||
"https://raw.githubusercontent.com/Cyan4973/xxHash/dev/LICENSE",
|
||||
license_lines=(1, 26),
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/xxhash.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"fpng",
|
||||
"https://github.com/richgel999/fpng",
|
||||
unlicense,
|
||||
"https://github.com/richgel999/fpng/blob/main/README.md",
|
||||
ships_static=all_platforms,
|
||||
version="6926f5a0a78f22d42b074a0ab8032e07736babd4",
|
||||
),
|
||||
Lib(
|
||||
"nv2a_vsh_cpu",
|
||||
"https://github.com/xemu-project/nv2a_vsh_cpu",
|
||||
unlicense,
|
||||
"https://raw.githubusercontent.com/xemu-project/nv2a_vsh_cpu/main/LICENSE",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/nv2a_vsh_cpu.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"volk",
|
||||
"https://github.com/zeux/volk",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/zeux/volk/master/LICENSE.md",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/volk.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"VulkanMemoryAllocator",
|
||||
"https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/master/LICENSE.txt",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/VulkanMemoryAllocator.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"SPIRV-Reflect",
|
||||
"https://github.com/KhronosGroup/SPIRV-Reflect",
|
||||
apache2,
|
||||
"https://raw.githubusercontent.com/KhronosGroup/SPIRV-Reflect/main/LICENSE",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/SPIRV-Reflect.wrap"),
|
||||
),
|
||||
Lib(
|
||||
"glslang",
|
||||
"https://github.com/KhronosGroup/glslang",
|
||||
bsd_3clause,
|
||||
"https://raw.githubusercontent.com/KhronosGroup/glslang/main/LICENSE.txt",
|
||||
ships_static=all_platforms,
|
||||
submodule=Submodule("subprojects/glslang.wrap"),
|
||||
),
|
||||
#
|
||||
# Data files included with xemu
|
||||
#
|
||||
Lib(
|
||||
"roboto",
|
||||
"https://github.com/googlefonts/roboto",
|
||||
apache2,
|
||||
"https://raw.githubusercontent.com/googlefonts/roboto/main/LICENSE",
|
||||
ships_static=all_platforms,
|
||||
version="2.138",
|
||||
),
|
||||
Lib(
|
||||
"fontawesome",
|
||||
"https://fontawesome.com",
|
||||
multi,
|
||||
"",
|
||||
ships_static=all_platforms,
|
||||
version="6.1.1",
|
||||
),
|
||||
#
|
||||
# Libraries either linked statically, dynamically linked & shipped, or dynamically linked with system-installed libraries only
|
||||
#
|
||||
Lib(
|
||||
"sdl2",
|
||||
"https://www.libsdl.org/",
|
||||
zlib,
|
||||
"https://raw.githubusercontent.com/libsdl-org/SDL/main/LICENSE.txt",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("sdl2"),
|
||||
pkg_win="sdl2",
|
||||
pkg_mac="sdl2",
|
||||
pkg_ubuntu="libsdl2-dev",
|
||||
),
|
||||
Lib(
|
||||
"glib-2.0",
|
||||
"https://gitlab.gnome.org/GNOME/glib",
|
||||
lgplv2_1,
|
||||
"https://gitlab.gnome.org/GNOME/glib/-/raw/master/COPYING",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("glib-2.0"),
|
||||
pkg_win="glib",
|
||||
pkg_mac="glib",
|
||||
pkg_ubuntu="libglib2.0-dev",
|
||||
),
|
||||
# glib dep
|
||||
Lib(
|
||||
"pcre",
|
||||
"http://pcre.org/",
|
||||
bsd,
|
||||
"http://www.pcre.org/original/license.txt",
|
||||
pkgconfig=PkgConfig("libpcre"),
|
||||
pkg_ubuntu="libpcre3-dev",
|
||||
),
|
||||
Lib(
|
||||
"pcre2",
|
||||
"http://pcre.org/",
|
||||
bsd,
|
||||
"https://www.pcre.org/licence.txt",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("libpcre2-8"),
|
||||
pkg_win="pcre2",
|
||||
pkg_mac="pcre2",
|
||||
pkg_ubuntu="libpcre2-dev",
|
||||
),
|
||||
# glib dep
|
||||
Lib(
|
||||
"gettext",
|
||||
"https://www.gnu.org/software/gettext/",
|
||||
lgplv2_1,
|
||||
"https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob_plain;f=gettext-runtime/intl/COPYING.LIB;hb=HEAD",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkg_win="gettext",
|
||||
pkg_mac="gettext-runtime",
|
||||
),
|
||||
# glib dep
|
||||
Lib(
|
||||
"iconv",
|
||||
"https://www.gnu.org/software/libiconv/",
|
||||
lgplv2_1,
|
||||
"https://git.savannah.gnu.org/gitweb/?p=libiconv.git;a=blob_plain;f=COPYING.LIB;hb=HEAD",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkg_win="libiconv",
|
||||
pkg_mac="libiconv",
|
||||
),
|
||||
Lib(
|
||||
"libepoxy",
|
||||
"https://github.com/anholt/libepoxy",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/anholt/libepoxy/master/COPYING",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("epoxy"),
|
||||
pkg_win="libepoxy",
|
||||
pkg_mac="libepoxy",
|
||||
pkg_ubuntu="libepoxy-dev",
|
||||
),
|
||||
Lib(
|
||||
"pixman",
|
||||
"http://www.pixman.org/",
|
||||
mit,
|
||||
"https://cgit.freedesktop.org/pixman/plain/COPYING",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("pixman-1"),
|
||||
pkg_win="pixman",
|
||||
pkg_mac="pixman",
|
||||
pkg_ubuntu="libpixman-1-dev",
|
||||
),
|
||||
Lib(
|
||||
"libsamplerate",
|
||||
"https://github.com/libsndfile/libsamplerate",
|
||||
bsd_2clause,
|
||||
"https://raw.githubusercontent.com/libsndfile/libsamplerate/master/COPYING",
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("samplerate"),
|
||||
pkg_win="libsamplerate",
|
||||
pkg_mac="libsamplerate",
|
||||
),
|
||||
Lib(
|
||||
"zlib",
|
||||
"https://zlib.net/",
|
||||
zlib,
|
||||
"https://raw.githubusercontent.com/madler/zlib/master/README",
|
||||
license_lines=(87, 106),
|
||||
ships_static={windows},
|
||||
ships_dynamic={macos},
|
||||
pkgconfig=PkgConfig("zlib"),
|
||||
pkg_win="zlib",
|
||||
pkg_mac="zlib",
|
||||
pkg_ubuntu="zlib1g-dev",
|
||||
),
|
||||
Lib(
|
||||
"libmingw32",
|
||||
"http://mingw-w64.org/",
|
||||
multi,
|
||||
"https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/COPYING.MinGW-w64-runtime/COPYING.MinGW-w64-runtime.txt?format=raw",
|
||||
ships_static={windows},
|
||||
platform={windows},
|
||||
pkg_win="mingw-w64",
|
||||
),
|
||||
Lib(
|
||||
"gtk",
|
||||
"https://www.gtk.org/",
|
||||
lgplv2_1,
|
||||
"https://gitlab.gnome.org/GNOME/gtk/-/raw/master/COPYING",
|
||||
platform={linux},
|
||||
pkgconfig=PkgConfig("gtk+-3.0"),
|
||||
pkg_ubuntu="libgtk-3-dev",
|
||||
),
|
||||
Lib(
|
||||
"miniz",
|
||||
"https://github.com/richgel999/miniz",
|
||||
lgplv2_1,
|
||||
"https://raw.githubusercontent.com/richgel999/miniz/master/LICENSE",
|
||||
ships_static={windows},
|
||||
platform={windows},
|
||||
version="2.1.0",
|
||||
),
|
||||
Lib(
|
||||
"libcurl",
|
||||
"https://curl.se/",
|
||||
mit,
|
||||
"https://raw.githubusercontent.com/curl/curl/refs/heads/master/COPYING",
|
||||
ships_static={windows},
|
||||
platform={windows},
|
||||
submodule=Submodule("subprojects/curl.wrap"),
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
def gen_license():
|
||||
print(f'''\
|
||||
print(
|
||||
f"""\
|
||||
xemu is free and open source software. This binary of xemu has been made
|
||||
available to you under the terms of the GNU General Public License, version 2.
|
||||
|
||||
|
@ -390,36 +532,42 @@ The source code used to build this version of xemu is available at:
|
|||
|
||||
xemu depends on several great packages/libraries which are also free and open
|
||||
source. The respective licenses of these packages are provided below.
|
||||
''')
|
||||
for lib in LIBS:
|
||||
if lib.does_ship:
|
||||
print(banner(lib.name))
|
||||
print('')
|
||||
print('Project URL: ' + lib.url)
|
||||
print('Version Included: ' + lib.version)
|
||||
print('Project License:')
|
||||
"""
|
||||
)
|
||||
for lib in LIBS:
|
||||
if lib.does_ship:
|
||||
print(banner(lib.name))
|
||||
print("")
|
||||
print("Project URL: " + lib.url)
|
||||
print("Version Included: " + lib.version)
|
||||
print("Project License:")
|
||||
|
||||
print("")
|
||||
print("\n".join([(" | " + l) for l in lib.license_text.splitlines()]))
|
||||
print("")
|
||||
|
||||
print('')
|
||||
print('\n'.join([(' | ' + l) for l in lib.license_text.splitlines()]))
|
||||
print('')
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument('--platform', default='')
|
||||
ap.add_argument('--version-file', default='')
|
||||
args = ap.parse_args()
|
||||
import argparse
|
||||
|
||||
if args.platform == '':
|
||||
args.platform = sys.platform.lower()
|
||||
global current_platform
|
||||
current_platform = args.platform
|
||||
if args.version_file != '':
|
||||
with open(args.version_file, 'r') as f:
|
||||
global versions
|
||||
versions = {pkg: ver
|
||||
for pkg, ver in map(lambda l: l.strip().split('='), f.readlines())}
|
||||
gen_license()
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--platform", default="")
|
||||
ap.add_argument("--version-file", default="")
|
||||
args = ap.parse_args()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
if args.platform == "":
|
||||
args.platform = sys.platform.lower()
|
||||
global current_platform
|
||||
current_platform = args.platform
|
||||
if args.version_file != "":
|
||||
with open(args.version_file, "r") as f:
|
||||
global versions
|
||||
versions = {
|
||||
pkg: ver
|
||||
for pkg, ver in map(lambda l: l.strip().split("="), f.readlines())
|
||||
}
|
||||
gen_license()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
Loading…
Reference in New Issue