mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-04 01:34:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
import os
 | 
						|
import pathlib
 | 
						|
import uuid
 | 
						|
 | 
						|
REPOSITORY_ROOT = pathlib.Path(__file__).parent.parent.parent
 | 
						|
 | 
						|
 | 
						|
def generate(category, example_name, c_source_file):
 | 
						|
    guid = str(uuid.uuid4()).upper()
 | 
						|
    text = f"""
 | 
						|
<?xml version="1.0" encoding="utf-8"?>
 | 
						|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
						|
  <PropertyGroup Label="Globals">
 | 
						|
    <ProjectGuid>{{{guid}}}</ProjectGuid>
 | 
						|
  </PropertyGroup>
 | 
						|
  <Import Project="$(VCTargetsPath)\\Microsoft.Cpp.Default.props" />
 | 
						|
  <Import Project="$(VCTargetsPath)\\Microsoft.Cpp.props" />
 | 
						|
  <ItemGroup>
 | 
						|
    <None Include="$(SolutionDir)\\..\\examples\\{category}\\{example_name}\\README.txt" />
 | 
						|
    <ClCompile Include="$(SolutionDir)\\..\\examples\\{category}\\{example_name}\\{c_source_file}" />
 | 
						|
  </ItemGroup>
 | 
						|
  <Import Project="$(VCTargetsPath)\\Microsoft.Cpp.targets" />
 | 
						|
</Project>
 | 
						|
""".strip()
 | 
						|
 | 
						|
    project_file = REPOSITORY_ROOT / "VisualC" / "examples" / category / example_name / f"{example_name}.vcxproj"
 | 
						|
 | 
						|
    if project_file.exists():
 | 
						|
        print("Skipping:", project_file)
 | 
						|
        return
 | 
						|
 | 
						|
    print("Generating file:", project_file)
 | 
						|
    os.makedirs(project_file.parent, exist_ok=True)
 | 
						|
    with open(project_file, "w", encoding="utf-8") as f:
 | 
						|
        f.write(text)
 | 
						|
 | 
						|
 | 
						|
def get_c_source_filename(example_dir: pathlib.Path):
 | 
						|
    """Gets the one and only C source file name in the directory of the example."""
 | 
						|
    c_files = [f.name for f in example_dir.iterdir() if f.name.endswith(".c")]
 | 
						|
    assert len(c_files) == 1
 | 
						|
    return c_files[0]
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    path = REPOSITORY_ROOT / "examples"
 | 
						|
    for category in path.iterdir():
 | 
						|
        if category.is_dir():
 | 
						|
            for example in category.iterdir():
 | 
						|
                generate(category.name, example.name, get_c_source_filename(example))
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 |