Update to new recipe system (S++ 2.0).
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = 'master', own_main: bool = False) -> dict:
|
||||
repo = env.GitBranch(repo_name = 'catch2', remote_url = 'https://github.com/catchorg/Catch2.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root)
|
||||
|
||||
@@ -10,12 +10,21 @@ def cook(env: Environment, git_ref: str = 'master', own_main: bool = False) -> d
|
||||
'debug': 'Catch2d'
|
||||
}.get(env['BUILD_TYPE'], 'Catch2')
|
||||
libs = [lib_name]
|
||||
if not own_main:
|
||||
if not env.get('CATCH2_OWN_MAIN'):
|
||||
libs.append({
|
||||
'debug': 'Catch2Maind'
|
||||
}.get(env['BUILD_TYPE'], 'Catch2Main'))
|
||||
return {
|
||||
'LIBPATH': build_result['LIBPATH'],
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': libs
|
||||
'LIBS': [env.FindLib(lib, paths=build_result['LIBPATH']) for lib in libs]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'Catch2',
|
||||
repo_url = 'https://github.com/catchorg/Catch2.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
@@ -1,12 +1,31 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref = 'main') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'ImageMagick', remote_url = 'https://github.com/ImageMagick/ImageMagick.git', git_ref = git_ref)
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.AutotoolsProject(checkout_root)
|
||||
return {
|
||||
'LIBPATH': build_result['LIBPATH'],
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': ['backtrace']
|
||||
}
|
||||
_REPO_NAME = 'ImageMagick'
|
||||
_REPO_URL = 'https://github.com/ImageMagick/ImageMagick.git'
|
||||
_TAG_PATTERN = re.compile(r'^([0-9]+)\.([0-9]+)\.([0-9]+)-([0-9]+)$')
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
tags = env.GitTags(repo_name = _REPO_NAME, remote_url = _REPO_URL, force_fetch=update)
|
||||
result = []
|
||||
for tag in tags:
|
||||
match = _TAG_PATTERN.match(tag)
|
||||
if match:
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2]), int(match.groups()[3])))
|
||||
return result
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
raise Exception('this still needs to be implemented property :/')
|
||||
# git_ref = f'refs/tags/{version[0]}.{version[1]}.{version[2]}-{version[3]}'
|
||||
# repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = git_ref)
|
||||
# checkout_root = repo['checkout_root']
|
||||
# build_result = env.AutotoolsProject(checkout_root)
|
||||
# return {
|
||||
# 'LIBPATH': build_result['LIBPATH'],
|
||||
# 'CPPPATH': build_result['CPPPATH'],
|
||||
# 'LIBS': ['backtrace']
|
||||
# }
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "main") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'SDL', remote_url = 'https://github.com/libsdl-org/SDL.git', git_ref = git_ref)
|
||||
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root, generate_args = ['-DSDL_STATIC=ON', '-DSDL_SHARED=OFF'])
|
||||
libs = []
|
||||
@@ -25,3 +25,13 @@ def cook(env: Environment, git_ref: str = "main") -> dict:
|
||||
'LIBS': libs
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'SDL',
|
||||
repo_url = 'https://github.com/libsdl-org/SDL.git',
|
||||
tag_pattern = re.compile(r'^release-([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'release-{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
|
||||
@@ -1,12 +1,44 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, remote: str = 'github', git_ref: str = 'main') -> dict:
|
||||
if remote == 'mewin':
|
||||
repo = env.GitBranch(repo_name = 'VulkanHeaders_mewin', remote_url = 'https://git.mewin.de/mewin/vulkan-headers.git', git_ref = git_ref)
|
||||
_REPO_NAMES = {
|
||||
'default': 'VulkanHeaders',
|
||||
'mewin': 'VulkanHeaders_mewin'
|
||||
}
|
||||
_REPO_URLS = {
|
||||
'default': 'https://github.com/KhronosGroup/Vulkan-Headers.git',
|
||||
'mewin': 'https://git.mewin.de/mewin/vulkan-headers.git'
|
||||
}
|
||||
_TAG_PATTERN = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$')
|
||||
|
||||
|
||||
def _get_repo_name(env: Environment) -> str:
|
||||
return _REPO_NAMES[env.get('VULKANHEADERS_REMOTE', 'default')]
|
||||
|
||||
def _get_repo_url(env: Environment) -> str:
|
||||
return _REPO_URLS[env.get('VULKANHEADERS_REMOTE', 'default')]
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
if env.get('VULKANHEADERS_REMOTE') == 'mewin':
|
||||
return [(0, 0, 0)]
|
||||
tags = env.GitTags(repo_name = _get_repo_name(env), remote_url = _get_repo_url(env), force_fetch=update)
|
||||
result = []
|
||||
for tag in tags:
|
||||
match = _TAG_PATTERN.match(tag)
|
||||
if match:
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2])))
|
||||
return result
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
if env.get('VULKANHEADERS_REMOTE') == 'mewin':
|
||||
git_ref = 'main'
|
||||
else:
|
||||
repo = env.GitBranch(repo_name = 'VulkanHeaders', remote_url = 'https://github.com/KhronosGroup/Vulkan-Headers.git', git_ref = git_ref)
|
||||
git_ref = f'refs/tags/v{version[0]}.{version[1]}.{version[2]}'
|
||||
repo = env.GitBranch(repo_name = _get_repo_name(env), remote_url = _get_repo_url(env), git_ref = git_ref)
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [os.path.join(checkout_root, 'include')]
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'argparse', remote_url = 'https://github.com/p-ranav/argparse.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [os.path.join(checkout_root, 'include')]
|
||||
}
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'argparse',
|
||||
repo_url = 'https://github.com/p-ranav/argparse.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -1,12 +1,57 @@
|
||||
|
||||
import os
|
||||
|
||||
import json
|
||||
import re
|
||||
import requests
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, version: str = "1.85.0") -> dict:
|
||||
# TODO: build binaries?
|
||||
url = f'https://archives.boost.io/release/{version}/source/boost_{version.replace(".", "_")}.tar.gz'
|
||||
repo = env.DownloadAndExtract(f'boost_{version}', url = url, skip_folders = 1)
|
||||
_VERSIONS_URL = 'https://api.github.com/repos/boostorg/boost/releases'
|
||||
_VERSION_PATTERN = re.compile(r'^boost-([0-9]+)\.([0-9]+)\.([0-9]+)$')
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
versions_file = os.path.join(env['DOWNLOAD_DIR'], 'boost_versions.json')
|
||||
if update or not os.path.exists(versions_file):
|
||||
req = requests.get(_VERSIONS_URL)
|
||||
versions_data = json.loads(req.text)
|
||||
result = []
|
||||
for version_data in versions_data:
|
||||
match = _VERSION_PATTERN.match(version_data['name'])
|
||||
if not match:
|
||||
continue
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2])))
|
||||
with open(versions_file, 'w') as f:
|
||||
json.dump(versions, f)
|
||||
return result
|
||||
else:
|
||||
with open(versions_file, 'r') as f:
|
||||
return [tuple(v) for v in json.load(f)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
if env.get('BOOST_LIBS') is None:
|
||||
raise Exception('BOOST_LIBS not set. Set to a list of boost libs to link or "*" to link everything.')
|
||||
if version >= (1, 85, 0):
|
||||
url = f'https://github.com/boostorg/boost/releases/download/boost-{version[0]}.{version[1]}.{version[2]}/boost-{version[0]}.{version[1]}.{version[2]}-cmake.tar.gz'
|
||||
else:
|
||||
url = f'https://github.com/boostorg/boost/releases/download/boost-{version[0]}.{version[1]}.{version[2]}/boost-{version[0]}.{version[1]}.{version[2]}.tar.gz'
|
||||
repo = env.DownloadAndExtract(f'boost_{version[0]}.{version[1]}.{version[2]}', url = url, skip_folders = 1)
|
||||
checkout_root = repo['extracted_root']
|
||||
build_result = env.CMakeProject(checkout_root)
|
||||
|
||||
libs = []
|
||||
if '*' in env['BOOST_LIBS']:
|
||||
lib_dir = build_result['LIBPATH'][0]
|
||||
for lib_file in os.listdir(lib_dir):
|
||||
fname = os.path.join(lib_dir, lib_file)
|
||||
if not os.path.isfile(fname):
|
||||
continue
|
||||
libs.append(fname)
|
||||
else:
|
||||
for lib in set(env['BOOST_LIBS']):
|
||||
libs.append(env.FindLib(f'boost_{lib}', paths=build_result['LIBPATH']))
|
||||
return {
|
||||
'CPPPATH': [checkout_root]
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': libs
|
||||
}
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'cgltf', remote_url = 'https://github.com/jkuhlmann/cgltf.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [checkout_root]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'cgltf',
|
||||
repo_url = 'https://github.com/jkuhlmann/cgltf.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -1,16 +1,27 @@
|
||||
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = 'master') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'fmt', remote_url = 'https://github.com/fmtlib/fmt.git', git_ref = git_ref)
|
||||
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root, generate_args = ['-DFMT_TEST=OFF'])
|
||||
|
||||
build_result = env.CMakeProject(checkout_root)
|
||||
|
||||
lib_name = {
|
||||
'debug': 'fmtd'
|
||||
}.get(env['BUILD_TYPE'], 'fmt')
|
||||
return {
|
||||
'LIBPATH': build_result['LIBPATH'],
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': [lib_name]
|
||||
'LIBS': [env.FindLib(lib_name, paths=build_result['LIBPATH'])]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'fmt',
|
||||
repo_url = 'https://github.com/fmtlib/fmt.git',
|
||||
tag_pattern = re.compile(r'^([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -1,13 +1,52 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, remote: str = 'github', git_ref: str = "master") -> dict:
|
||||
if remote == 'mewin':
|
||||
repo = env.GitBranch(repo_name = 'glm_mewin', remote_url = 'https://git.mewin.de/mewin/glm.git', git_ref = git_ref)
|
||||
else:
|
||||
repo = env.GitBranch(repo_name = 'glm', remote_url = 'https://github.com/g-truc/glm.git', git_ref = git_ref)
|
||||
checkout_root = repo['checkout_root']
|
||||
_REPO_NAMES = {
|
||||
'default': 'glm',
|
||||
'mewin': 'glm_mewin'
|
||||
}
|
||||
_REPO_URLS = {
|
||||
'default': 'https://github.com/g-truc/glm.git',
|
||||
'mewin': 'https://git.mewin.de/mewin/glm.git'
|
||||
}
|
||||
_TAG_PATTERN = re.compile(r'^([0-9]+)\.([0-9]+)\.([0-9]+)$')
|
||||
_TAG_PATTERN_ALT = re.compile(r'^0\.([0-9]+)\.([0-9]+)\.([0-9]+)$')
|
||||
|
||||
def _get_repo_name(env: Environment) -> str:
|
||||
return _REPO_NAMES[env.get('GLM_REMOTE', 'default')]
|
||||
|
||||
def _get_repo_url(env: Environment) -> str:
|
||||
return _REPO_URLS[env.get('GLM_REMOTE', 'default')]
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
if env.get('GLM_REMOTE') == 'mewin':
|
||||
return [(0, 0, 0)]
|
||||
|
||||
tags = env.GitTags(repo_name = _get_repo_name(env), remote_url = _get_repo_url(env), force_fetch=update)
|
||||
result = []
|
||||
for tag in tags:
|
||||
match = _TAG_PATTERN.match(tag)
|
||||
if match:
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2])))
|
||||
else:
|
||||
match = _TAG_PATTERN_ALT.match(tag)
|
||||
if match:
|
||||
result.append((0, int(match.groups()[0]), int(match.groups()[1]) * 10 + int(match.groups()[2])))
|
||||
return result
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
if env.get('GLM_REMOTE') == 'mewin':
|
||||
git_ref = 'master'
|
||||
elif version[0] == 0:
|
||||
git_ref = f'refs/tags/0.{version[1]}.{int(version[2]/10)}.{version[2]%10}'
|
||||
else:
|
||||
git_ref = f'refs/tags/{version[0]}.{version[1]}.{version[2]}'
|
||||
repo = env.GitBranch(repo_name = _get_repo_name(env), remote_url = _get_repo_url(env), git_ref = git_ref)
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [checkout_root],
|
||||
}
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
|
||||
from SCons.Script import *
|
||||
|
||||
import glob
|
||||
import os
|
||||
import pathlib
|
||||
import platform
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
from SCons.Script import *
|
||||
|
||||
_SCRIPT_STAMPFILE = '.spp_script_run'
|
||||
|
||||
def cook(env: Environment, remote: str = 'github', git_ref: str = '') -> dict:
|
||||
if remote == 'mewin':
|
||||
repo = env.GitBranch(repo_name = 'glslang_mewin', remote_url = 'https://git.mewin.de/mewin/glslang.git', git_ref = git_ref or 'master')
|
||||
else:
|
||||
repo = env.GitBranch(repo_name = 'glslang', remote_url = 'https://github.com/KhronosGroup/glslang.git', git_ref = git_ref or 'main')
|
||||
|
||||
def _git_cook(env: Environment, repo) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
|
||||
# TODO: windows?
|
||||
@@ -51,10 +46,11 @@ def cook(env: Environment, remote: str = 'github', git_ref: str = '') -> dict:
|
||||
+ env.RGlob(os.path.join(repo['checkout_root'], 'SPIRV/'), '*.cpp') \
|
||||
+ [os.path.join(repo['checkout_root'], f'glslang/OSDependent/{platform_source_dir}/ossource.cpp')]
|
||||
|
||||
# disable a few warnings when compiling with clang
|
||||
# disable warnings
|
||||
additional_cxx_flags = {
|
||||
'clang': ['-Wno-deprecated-copy', '-Wno-missing-field-initializers', '-Wno-gnu-redeclared-enum',
|
||||
'-Wno-unused-but-set-variable', '-Wno-deprecated-enum-enum-conversion']
|
||||
'clang': ['-w'],
|
||||
'gcc': ['-w'],
|
||||
'cl': ['/w']
|
||||
}.get(env['COMPILER_FAMILY'], [])
|
||||
env.StaticLibrary(
|
||||
CCFLAGS = env['CCFLAGS'] + additional_cxx_flags,
|
||||
@@ -79,5 +75,37 @@ def cook(env: Environment, remote: str = 'github', git_ref: str = '') -> dict:
|
||||
|
||||
return {
|
||||
'CPPPATH': [include_dir],
|
||||
'LIBS': ['glslang_full']
|
||||
'LIBS': [os.path.join(env['LIB_DIR'], env.LibFilename('glslang_full'))]
|
||||
}
|
||||
|
||||
|
||||
|
||||
_REPO_NAMES = {
|
||||
'default': 'glslang',
|
||||
'mewin': 'glslang_mewin'
|
||||
}
|
||||
_REPO_URLS = {
|
||||
'default': 'https://github.com/KhronosGroup/glslang.git',
|
||||
'mewin': 'https://git.mewin.de/mewin/glslang.git'
|
||||
}
|
||||
_TAG_PATTERNS = {
|
||||
'default': re.compile(r'^([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
'mewin': None
|
||||
}
|
||||
def _ref_fn(env: Environment, version) -> str:
|
||||
remote = env.get('GLSLANG_REMOTE', 'default')
|
||||
if remote == 'default':
|
||||
return f'refs/tags/{version[0]}.{version[1]}.{version[2]}'
|
||||
elif remote == 'mewin':
|
||||
return 'master'
|
||||
else:
|
||||
raise Exception('invalid glslang remote')
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = lambda env: _REPO_NAMES[env.get('GLSLANG_REMOTE', 'default')],
|
||||
repo_url = lambda env: _REPO_URLS[env.get('GLSLANG_REMOTE', 'default')],
|
||||
tag_pattern = lambda env: _TAG_PATTERNS[env.get('GLSLANG_REMOTE', 'default')],
|
||||
cook_fn = _git_cook,
|
||||
ref_fn = _ref_fn
|
||||
)
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
import os
|
||||
|
||||
def cook(env: Environment, backends: list = [], git_ref: str = '') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'imgui', remote_url = 'https://github.com/ocornut/imgui.git', git_ref = git_ref or 'master')
|
||||
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
imgui_source_files = [
|
||||
os.path.join(repo['checkout_root'], 'imgui.cpp'),
|
||||
os.path.join(repo['checkout_root'], 'imgui_draw.cpp'),
|
||||
@@ -13,18 +12,27 @@ def cook(env: Environment, backends: list = [], git_ref: str = '') -> dict:
|
||||
]
|
||||
|
||||
imgui_add_sources = []
|
||||
backend_sources = {
|
||||
'vulkan': os.path.join(repo['checkout_root'], 'backends/imgui_impl_vulkan.cpp'),
|
||||
'sdl2': os.path.join(repo['checkout_root'], 'backends/imgui_impl_sdl2.cpp')
|
||||
}
|
||||
for backend in backends:
|
||||
imgui_add_sources.append(backend_sources[backend])
|
||||
for backend in env.get('IMGUI_BACKENDS', []):
|
||||
imgui_add_sources.append(f'backends/imgui_impl_{backend}.cpp')
|
||||
|
||||
lib_imgui = env.StaticLibrary(
|
||||
env.StaticLibrary(
|
||||
CPPPATH = [repo['checkout_root']],
|
||||
CPPDEFINES = ['IMGUI_IMPL_VULKAN_NO_PROTOTYPES=1'],
|
||||
target = env['LIB_DIR'] + '/imgui',
|
||||
source = imgui_source_files,
|
||||
add_source = imgui_add_sources
|
||||
)
|
||||
return lib_imgui
|
||||
return {
|
||||
'CPPPATH': [repo['checkout_root']],
|
||||
'LIBS': [os.path.join(env['LIB_DIR'], env.LibFilename('imgui'))]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'imgui',
|
||||
repo_url = 'https://github.com/ocornut/imgui.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
|
||||
import os
|
||||
import json
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'iwa', remote_url = 'https://git.mewin.de/mewin/iwa.git', git_ref = git_ref)
|
||||
_REPO_NAME = 'iwa'
|
||||
_REPO_URL = 'https://git.mewin.de/mewin/iwa.git'
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(0, 0, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
return SConscript(os.path.join(checkout_root, 'LibConf'), exports = ['env'])
|
||||
with open(os.path.join(checkout_root, 'dependencies.json'), 'r') as f:
|
||||
return env.DepsFromJson(json.load(f))
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
return env.Module(os.path.join(checkout_root, 'SModule'))
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
|
||||
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref = 'master') -> dict:
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(1, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
if env['COMPILER_FAMILY'] not in ('gcc', 'clang'):
|
||||
env.Error('libbacktrace requires gcc or clang.')
|
||||
repo = env.GitBranch(repo_name = 'libbacktrace', remote_url = 'https://github.com/ianlancetaylor/libbacktrace.git', git_ref = git_ref)
|
||||
repo = env.GitBranch(repo_name = 'libbacktrace', remote_url = 'https://github.com/ianlancetaylor/libbacktrace.git', git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.AutotoolsProject(checkout_root)
|
||||
return {
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref = 'main') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'libjpeg-turbo', remote_url = 'https://github.com/libjpeg-turbo/libjpeg-turbo.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(checkout_root)
|
||||
return {
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': [env.FindLib('jpeg', paths=build_result['LIBPATH'])],
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'libjpeg-turbo',
|
||||
repo_url = 'https://github.com/libjpeg-turbo/libjpeg-turbo.git',
|
||||
tag_pattern = re.compile(r'^([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -2,34 +2,27 @@
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
_REPO_NAME = 'libpng'
|
||||
_REPO_URL = 'https://git.code.sf.net/p/libpng/code.git'
|
||||
_TAG_PATTERN = re.compile(r'^v([0-9])+\.([0-9])+\.([0-9])$')
|
||||
|
||||
def available(env: Environment) -> bool:
|
||||
return hasattr(env, 'GitBranch') and hasattr(env, 'GitTags')
|
||||
|
||||
def versions(env: Environment, update: bool = False) -> 'list[str]':
|
||||
tags = env.GitTags(repo_name = _REPO_NAME, remote_url = _REPO_URL, force_fetch=update)
|
||||
result = []
|
||||
for tag in tags:
|
||||
match = _TAG_PATTERN.match(tag)
|
||||
if match:
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2])))
|
||||
return result
|
||||
|
||||
def dependencies(env: Environment, version) -> 'list[dict]':
|
||||
return {
|
||||
'zlib': {}
|
||||
}
|
||||
|
||||
def cook(env: Environment, git_ref = 'master') -> dict:
|
||||
lib_z = env.Cook('zlib')
|
||||
repo = env.GitBranch(repo_name = 'libpng', remote_url = 'https://git.code.sf.net/p/libpng/code.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
lib_zlib = env.Cook('zlib')
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.AutotoolsProject(checkout_root)
|
||||
build_result = env.CMakeProject(checkout_root, dependencies = [lib_zlib])
|
||||
lib_name = {
|
||||
'debug': 'png16d'
|
||||
}.get(env['BUILD_TYPE'], 'png16')
|
||||
return {
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': [env.FindLib('png16', paths=build_result['LIBPATH'])],
|
||||
'DEPENDENCIES': [lib_z]
|
||||
'LIBS': [env.FindLib(lib_name, paths=build_result['LIBPATH'])]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'libpng',
|
||||
repo_url = 'https://git.code.sf.net/p/libpng/code.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook,
|
||||
dependencies = {
|
||||
'zlib': {}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'magic_enum', remote_url = 'https://github.com/Neargye/magic_enum.git', git_ref = git_ref)
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [os.path.join(checkout_root, 'include')]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'magic_enum',
|
||||
repo_url = 'https://github.com/Neargye/magic_enum.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -3,8 +3,15 @@ from SCons.Script import *
|
||||
|
||||
import os
|
||||
|
||||
def cook(env: Environment, git_ref = 'master') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'mecab', remote_url = 'https://github.com/taku910/mecab.git', git_ref = git_ref)
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(1, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
repo = env.GitBranch(repo_name = 'mecab', remote_url = 'https://github.com/taku910/mecab.git', git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.AutotoolsProject(os.path.join(checkout_root, 'mecab'))
|
||||
return {
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
|
||||
import os
|
||||
import json
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'mijin', remote_url = 'https://git.mewin.de/mewin/mijin2.git', git_ref = git_ref)
|
||||
_REPO_NAME = 'mijin'
|
||||
_REPO_URL = 'https://git.mewin.de/mewin/mijin2.git'
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(0, 0, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
return SConscript(os.path.join(checkout_root, 'LibConf'), exports = ['env'])
|
||||
with open(os.path.join(checkout_root, 'dependencies.json'), 'r') as f:
|
||||
return env.DepsFromJson(json.load(f))
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
return env.Module(os.path.join(checkout_root, 'SModule'))
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
|
||||
import os
|
||||
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = 'master') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'mikktspace', remote_url = 'https://github.com/mmikk/MikkTSpace.git', git_ref = git_ref)
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(1, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
repo = env.GitBranch(repo_name = 'mikktspace', remote_url = 'https://github.com/mmikk/MikkTSpace.git', git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
lib_mikktspace = env.StaticLibrary(
|
||||
CPPPATH = [repo['checkout_root']],
|
||||
CPPPATH = [checkout_root],
|
||||
target = env['LIB_DIR'] + '/mikktspace',
|
||||
source = [os.path.join(repo['checkout_root'], 'mikktspace.c')]
|
||||
)
|
||||
return lib_mikktspace
|
||||
return {
|
||||
'CPPPATH': [checkout_root],
|
||||
'LIBS': [lib_mikktspace]
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,34 @@
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = 'v1.x', use_external_libfmt = False) -> dict:
|
||||
repo = env.GitBranch(repo_name = 'spdlog', remote_url = 'https://github.com/gabime/spdlog.git', git_ref = git_ref)
|
||||
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
lib_fmt = env.Cook('fmt')
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root)
|
||||
build_result = env.CMakeProject(project_root=checkout_root, dependencies=[lib_fmt])
|
||||
|
||||
lib_name = {
|
||||
'debug': 'spdlogd'
|
||||
}.get(env['BUILD_TYPE'], 'spdlog')
|
||||
|
||||
cppdefines = ['SPDLOG_COMPILE_LIB=1']
|
||||
if use_external_libfmt:
|
||||
cppdefines.append('SPDLOG_FMT_EXTERNAL=1')
|
||||
cppdefines = ['SPDLOG_COMPILE_LIB=1', 'SPDLOG_FMT_EXTERNAL=1']
|
||||
|
||||
return {
|
||||
'LIBPATH': build_result['LIBPATH'],
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'CPPDEFINES': cppdefines,
|
||||
'LIBS': [lib_name]
|
||||
'LIBS': [env.FindLib(lib_name, paths=build_result['LIBPATH'])]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'spdlog',
|
||||
repo_url = 'https://github.com/gabime/spdlog.git',
|
||||
tag_pattern = re.compile(r'^v([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'v{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook,
|
||||
dependencies = {
|
||||
'fmt': {}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'stb', remote_url = 'https://github.com/nothings/stb.git', git_ref = git_ref)
|
||||
_REPO_NAME = 'stb'
|
||||
_REPO_URL = 'https://github.com/nothings/stb.git'
|
||||
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
return [(0, 0, 0)]
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = 'master')
|
||||
checkout_root = repo['checkout_root']
|
||||
return {
|
||||
'CPPPATH': [checkout_root]
|
||||
|
||||
@@ -1,15 +1,26 @@
|
||||
|
||||
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = "master") -> dict:
|
||||
repo = env.GitBranch(repo_name = 'yaml-cpp', remote_url = 'https://github.com/jbeder/yaml-cpp', git_ref = git_ref)
|
||||
|
||||
def _git_cook(env: Environment, repo: dict) -> dict:
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root)
|
||||
lib_name = {
|
||||
'debug': 'yaml-cppd'
|
||||
}.get(env['BUILD_TYPE'], 'yaml-cpp')
|
||||
return {
|
||||
'LIBPATH': build_result['LIBPATH'],
|
||||
'CPPPATH': build_result['CPPPATH'],
|
||||
'LIBS': [lib_name]
|
||||
'LIBS': [env.FindLib(lib_name, paths=build_result['LIBPATH'])]
|
||||
}
|
||||
|
||||
|
||||
env.GitRecipe(
|
||||
globals = globals(),
|
||||
repo_name = 'yaml-cpp',
|
||||
repo_url = 'https://github.com/jbeder/yaml-cpp',
|
||||
tag_pattern = re.compile(r'^yaml-cpp-([0-9]+)\.([0-9]+)\.([0-9]+)$'),
|
||||
tag_fn = lambda version: f'yaml-cpp-{version[0]}.{version[1]}.{version[2]}',
|
||||
cook_fn = _git_cook
|
||||
)
|
||||
|
||||
@@ -1,12 +1,31 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
from SCons.Script import *
|
||||
|
||||
def cook(env: Environment, git_ref: str = 'master') -> dict:
|
||||
repo = env.GitBranch(repo_name = 'zlib', remote_url = 'https://github.com/madler/zlib.git', git_ref = git_ref)
|
||||
extracted_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=extracted_root)
|
||||
_REPO_NAME = 'zlib'
|
||||
_REPO_URL = 'https://github.com/madler/zlib.git'
|
||||
_TAG_PATTERN = re.compile(r'^v([0-9]+)\.([0-9]+)(?:\.([0-9]+))?$')
|
||||
|
||||
def versions(env: Environment, update: bool = False):
|
||||
tags = env.GitTags(repo_name = _REPO_NAME, remote_url = _REPO_URL, force_fetch=update)
|
||||
result = []
|
||||
for tag in tags:
|
||||
match = _TAG_PATTERN.match(tag)
|
||||
if match:
|
||||
result.append((int(match.groups()[0]), int(match.groups()[1]), int(match.groups()[2] or 0)))
|
||||
return result
|
||||
|
||||
def dependencies(env: Environment, version) -> 'dict':
|
||||
return {}
|
||||
|
||||
def cook(env: Environment, version) -> dict:
|
||||
git_ref = f'refs/tags/v{version[0]}.{version[1]}'
|
||||
if version[2] != 0:
|
||||
git_ref = git_ref + f'.{version[2]}'
|
||||
repo = env.GitBranch(repo_name = _REPO_NAME, remote_url = _REPO_URL, git_ref = git_ref)
|
||||
checkout_root = repo['checkout_root']
|
||||
build_result = env.CMakeProject(project_root=checkout_root)
|
||||
return {
|
||||
'CPPPATH': [os.path.join(build_result['install_dir'], 'install')],
|
||||
'CPPPATH': [os.path.join(build_result['install_dir'], 'include')],
|
||||
'LIBS': [env.FindLib('z', paths=build_result['LIBPATH'])]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user