initial import
This commit is contained in:
commit
ccb0306506
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/debug
|
||||
/release
|
57
init.py
Executable file
57
init.py
Executable file
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import os
|
||||
import itertools
|
||||
|
||||
|
||||
OPTIONS = {
|
||||
# compiler
|
||||
'gcc': {'vars': {'CMAKE_CXX_COMPILER': 'g++', 'CMAKE_C_COMPILER': 'gcc'}},
|
||||
'clang': {'vars': {'CMAKE_CXX_COMPILER': 'clang++', 'CMAKE_C_COMPILER': 'clang'}},
|
||||
|
||||
# profile
|
||||
'debug': {'vars': {'CMAKE_BUILD_TYPE': 'Debug', 'LTO': 'OFF'}, 'args': ['-G', '"Unix Makefiles"']},
|
||||
'release': {'vars': {'CMAKE_BUILD_TYPE': 'Release', 'LTO': 'ON'}},
|
||||
|
||||
# sanitizer
|
||||
'sanitizer': {'vars': {'SANITIZER': 'ON'}, 'require': {'PROFILE': 'release'}},
|
||||
|
||||
# Default parameters
|
||||
'': {
|
||||
'vars': {
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||
"TESTS": "ON",
|
||||
},
|
||||
|
||||
'args': ['-G', 'Ninja'],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def split_all_path(path):
|
||||
parts = []
|
||||
|
||||
while len(path) > 1:
|
||||
head,tail = os.path.split(path)
|
||||
yield tail
|
||||
path = head
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
accumulated = []
|
||||
|
||||
components = ['']
|
||||
components += sys.argv[1:]
|
||||
components += itertools.takewhile(lambda x: x in OPTIONS, split_all_path(os.getcwd()))
|
||||
|
||||
for key in components:
|
||||
obj = OPTIONS[key]
|
||||
|
||||
vars = obj.get('vars', {})
|
||||
args = obj.get('args', [])
|
||||
|
||||
accumulated += [f"-D{key}={val}" for key, val in vars.items()]
|
||||
accumulated += args
|
||||
|
||||
print("cmake ../../../ " + " ".join(accumulated))
|
Loading…
Reference in New Issue
Block a user