mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
Add uninstall and install targets to ninja.
This commit is contained in:
parent
6f52eb532e
commit
68c89c53b9
22
bootstrap.py
22
bootstrap.py
|
@ -29,12 +29,21 @@ def replace_extension(f, e):
|
||||||
(root, ext) = os.path.splitext(f)
|
(root, ext) = os.path.splitext(f)
|
||||||
return root + e
|
return root + e
|
||||||
|
|
||||||
|
# Default install dir
|
||||||
|
install_dir = os.path.join('/usr', 'include') if 'linux' in sys.platform else 'include'
|
||||||
|
|
||||||
# command line stuff
|
# command line stuff
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--debug', action='store_true', help='compile with debug flags')
|
parser.add_argument('--debug', action='store_true', help='compile with debug flags')
|
||||||
parser.add_argument('--cxx', metavar='<compiler>', help='compiler name to use (default: g++)', default='g++')
|
parser.add_argument('--cxx', metavar='<compiler>', help='compiler name to use (default: g++)', default='g++')
|
||||||
parser.add_argument('--ci', action='store_true', help=argparse.SUPPRESS)
|
parser.add_argument('--ci', action='store_true', help=argparse.SUPPRESS)
|
||||||
parser.add_argument('--lua-dir', metavar='<dir>', help='directory lua is in with include and lib subdirectories')
|
parser.add_argument('--lua-dir', metavar='<dir>', help='directory lua is in with include and lib subdirectories')
|
||||||
|
parser.add_argument('--install-dir', metavar='<dir>', help='directory to install the headers to', default=install_dir);
|
||||||
|
parser.epilog = """In order to install sol, administrative privileges might be required.
|
||||||
|
Note that installation is done through the 'ninja install' command. To uninstall, the
|
||||||
|
command used is 'ninja uninstall'. The default installation directory for this
|
||||||
|
system is {}""".format(install_dir)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# general variables
|
# general variables
|
||||||
|
@ -42,6 +51,15 @@ include = [ '.', os.path.join('Catch', 'include')]
|
||||||
depends = []
|
depends = []
|
||||||
cxxflags = [ '-Wall', '-Wextra', '-pedantic', '-pedantic-errors', '-std=c++11' ]
|
cxxflags = [ '-Wall', '-Wextra', '-pedantic', '-pedantic-errors', '-std=c++11' ]
|
||||||
ldflags = []
|
ldflags = []
|
||||||
|
script_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
|
||||||
|
sol_dir = os.path.join(script_dir, 'sol')
|
||||||
|
sol_file = os.path.join(script_dir, 'sol.hpp')
|
||||||
|
copy_command = 'cp -rf {} $in && cp -f {} $in'.format(sol_dir, sol_file)
|
||||||
|
remove_command = 'rm -rf {} && rm -f {}'.format(os.path.join(args.install_dir, 'sol'), os.path.join(args.install_dir, 'sol.hpp'))
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
copy_command = 'robocopy /COPYALL /E {} $in && robocopy /COPYALL {} $in'.format(sol_dir, sol_file)
|
||||||
|
remove_command = 'rmdir /S /Q {} && erase /F /S /Q /A {}'.format(os.path.join(args.install_dir, 'sol'),
|
||||||
|
os.path.join(args.install_dir, 'sol.hpp'))
|
||||||
|
|
||||||
if args.debug:
|
if args.debug:
|
||||||
cxxflags.extend(['-g', '-O0'])
|
cxxflags.extend(['-g', '-O0'])
|
||||||
|
@ -85,6 +103,8 @@ ninja.rule('compile', command = '$cxx -MMD -MF $out.d -c $cxxflags -Werror $in -
|
||||||
ninja.rule('link', command = '$cxx $cxxflags $in -o $out $ldflags', description = 'Creating $out')
|
ninja.rule('link', command = '$cxx $cxxflags $in -o $out $ldflags', description = 'Creating $out')
|
||||||
ninja.rule('runner', command = tests)
|
ninja.rule('runner', command = tests)
|
||||||
ninja.rule('example', command = '$cxx $cxxflags $in -o $out $ldflags')
|
ninja.rule('example', command = '$cxx $cxxflags $in -o $out $ldflags')
|
||||||
|
ninja.rule('installer', command = copy_command)
|
||||||
|
ninja.rule('uninstaller', command = remove_command)
|
||||||
ninja.newline()
|
ninja.newline()
|
||||||
|
|
||||||
# builds
|
# builds
|
||||||
|
@ -104,6 +124,8 @@ for f in glob.glob('examples/*.cpp'):
|
||||||
|
|
||||||
ninja.build(tests, 'link', inputs = tests_object_files)
|
ninja.build(tests, 'link', inputs = tests_object_files)
|
||||||
ninja.build('tests', 'phony', inputs = tests)
|
ninja.build('tests', 'phony', inputs = tests)
|
||||||
|
ninja.build('install', 'installer', inputs = args.install_dir)
|
||||||
|
ninja.build('uninstall', 'uninstaller')
|
||||||
ninja.build('examples', 'phony', inputs = examples)
|
ninja.build('examples', 'phony', inputs = examples)
|
||||||
ninja.build('run', 'runner', implicit = 'tests')
|
ninja.build('run', 'runner', implicit = 'tests')
|
||||||
ninja.default('run')
|
ninja.default('run')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user