46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| import re
 | |
| from SCons.Script import *
 | |
| 
 | |
| _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:
 | |
|         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')]
 | |
|     }
 |