Add some build scripts for sublime
parent
0904e8aa93
commit
b0c007cae6
@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"folders":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"build_systems":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "DFHack make",
|
||||||
|
"working_dir": "$project_path",
|
||||||
|
"cmd": ["python", "$project_path/build/sublime/make.py", "$file"],
|
||||||
|
"variants": [
|
||||||
|
{
|
||||||
|
"name": "Build all",
|
||||||
|
"cmd": ["python", "$project_path/build/sublime/make.py", "-a"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Build+install all",
|
||||||
|
"cmd": ["python", "$project_path/build/sublime/make.py", "-ai"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Build plugin",
|
||||||
|
"cmd": ["python", "$project_path/build/sublime/make.py", "-ap", "$file"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Build+install plugin",
|
||||||
|
"cmd": ["python", "$project_path/build/sublime/make.py", "-aip", "$file"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
class BuildError(Exception): pass
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('file', nargs='?', default='', help='current filename')
|
||||||
|
parser.add_argument('-a', '--all', action='store_true', help='Build all targets')
|
||||||
|
parser.add_argument('-i', '--install', action='store_true', help='Install')
|
||||||
|
parser.add_argument('-p', '--plugin', action='store_true', help='Build specified plugin')
|
||||||
|
|
||||||
|
def find_build_folder():
|
||||||
|
# search for the one with the most recently modified Makefile
|
||||||
|
folder = None
|
||||||
|
mtime = 0
|
||||||
|
for f in os.listdir('.'):
|
||||||
|
if f.startswith('build'):
|
||||||
|
makefile = os.path.join(f, 'Makefile')
|
||||||
|
if os.path.isfile(makefile) and os.path.getmtime(makefile) > mtime:
|
||||||
|
folder = f
|
||||||
|
mtime = os.path.getmtime(makefile)
|
||||||
|
if not folder:
|
||||||
|
raise BuildError('No valid build folder found')
|
||||||
|
return folder
|
||||||
|
|
||||||
|
def get_plugin_name(filename):
|
||||||
|
filename = filename.replace('/devel', '')
|
||||||
|
match = re.search(r'plugins/(.+?)[/\.]', filename)
|
||||||
|
if match:
|
||||||
|
return match.group(1)
|
||||||
|
|
||||||
|
def run_command(cmd):
|
||||||
|
print('$ ' + ' '.join(cmd))
|
||||||
|
sys.stdout.flush()
|
||||||
|
if subprocess.call(cmd) != 0:
|
||||||
|
raise BuildError('command execution failed: ' + ' '.join(cmd))
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
os.chdir(find_build_folder())
|
||||||
|
print('Build folder:', os.getcwd())
|
||||||
|
cmd = ['make', '-j3']
|
||||||
|
|
||||||
|
if args.plugin:
|
||||||
|
plugin = get_plugin_name(args.file)
|
||||||
|
if not plugin:
|
||||||
|
raise BuildError('Cannot determine current plugin name from %r' % args.file)
|
||||||
|
cmd += [plugin + '/fast']
|
||||||
|
|
||||||
|
run_command(cmd)
|
||||||
|
|
||||||
|
if args.install:
|
||||||
|
run_command(['make', 'install/fast'])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
main(parser.parse_args())
|
||||||
|
except BuildError as e:
|
||||||
|
print('** Error: ' + str(e))
|
||||||
|
sys.exit(1)
|
Loading…
Reference in New Issue