36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/env python3
 | 
						|
 | 
						|
from subprocess import getoutput, run
 | 
						|
from os.path import expandvars
 | 
						|
from pathlib import Path
 | 
						|
from sys import argv
 | 
						|
import tomllib
 | 
						|
 | 
						|
has_ninja = getoutput("command -v ninja") != ""
 | 
						|
has_clang = getoutput("command -v clang") != ""
 | 
						|
 | 
						|
#TODO: support for default pack override
 | 
						|
 | 
						|
cmake = ["cmake"]
 | 
						|
# check whether clang is around (it's just better)
 | 
						|
if has_clang:
 | 
						|
    cmake += ["-DCMAKE_C_COMPILER=clang"]
 | 
						|
# check whether ninja is around (you better start running)
 | 
						|
if has_ninja:
 | 
						|
    cmake += ["-G", "Ninja"]
 | 
						|
cmake += ["-B", "build"]
 | 
						|
# TODO: have it --fast instead, where separate --no-debug would mean stripping the debug info
 | 
						|
if "--release" in argv:
 | 
						|
    cmake += ["-DCMAKE_BUILD_TYPE=Release"]
 | 
						|
# pass arbitrary arguments over
 | 
						|
if "--" in argv:
 | 
						|
    cmake += argv[argv.find("--"):]
 | 
						|
 | 
						|
# if no root cmake file is present, infer it from `twn.toml:game.interpreter`
 | 
						|
if not Path("CMakeLists.txt").is_file():
 | 
						|
    config = tomllib.loads(Path("data/twn.toml").read_text())
 | 
						|
    cmake += ["-S", expandvars(config["game"]["interpreter"])]
 | 
						|
 | 
						|
run(cmake, check=True)
 | 
						|
run(["cmake", "--build", "build", "--parallel"], check=True)
 |