forked from dftlibs/numgrid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup
executable file
·102 lines (81 loc) · 4.77 KB
/
setup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/env python
# This file is autogenerated by Autocmake v1.0.0-alpha-x http://autocmake.org
# Copyright (c) 2015-2017 by Radovan Bast, Roberto Di Remigio, Jonas Juselius, and contributors.
import os
import sys
assert sys.version_info >= (2, 6), 'Python >= 2.6 is required'
sys.path.insert(0, 'cmake')
from autocmake import configure
from autocmake.external import docopt
options = """
Usage:
./setup [options] [<builddir>]
./setup (-h | --help)
Options:
--fc=<FC> Fortran compiler [default: gfortran].
--extra-fc-flags=<EXTRA_FCFLAGS> Extra Fortran compiler flags [default: ''].
--fc-support=<FC_SUPPORT> Toggle Fortran language support (ON/OFF) [default: ON].
--cxx=<CXX> C++ compiler [default: g++].
--extra-cxx-flags=<EXTRA_CXXFLAGS> Extra C++ compiler flags [default: ''].
--python=<PYTHON_INTERPRETER> The Python interpreter (development version) to use. [default: ''].
--ccache=<USE_CCACHE> Toggle use of ccache <ON/OFF> [default: ON].
--bindir=<CMAKE_INSTALL_BINDIR> User executables [default: bin].
--libdir=<CMAKE_INSTALL_LIBDIR> Object code libraries [default: lib].
--includedir=<CMAKE_INSTALL_INCLUDEDIR> C header files [default: include].
--datadir=<CMAKE_INSTALL_DATADIR> Read-only architecture-independent data root [default: share].
--pydir=<PYMOD_INSTALL_LIBDIR> Python modules [default: bin]
--static Create only the static library [default: False].
--add-definitions=<STRING> Add preprocesor definitions [default: ''].
--coverage Enable code coverage [default: False].
--type=<TYPE> Set the CMake build type (debug, release, relwithdebinfo, minsizerel) [default: release].
--generator=<STRING> Set the CMake build system generator [default: Unix Makefiles].
--show Show CMake command and exit.
--cmake-executable=<CMAKE_EXECUTABLE> Set the CMake executable [default: cmake].
--cmake-options=<STRING> Define options to CMake [default: ''].
--prefix=<PATH> Set the install path for make install.
<builddir> Build directory.
-h --help Show this screen.
"""
def gen_cmake_command(options, arguments):
"""
Generate CMake command based on options and arguments.
"""
command = []
command.append(arguments['--cmake-executable'])
command.append('-DCMAKE_Fortran_COMPILER={0} -DEXTRA_FCFLAGS="{1}"'.format(arguments['--fc'], arguments['--extra-fc-flags']))
command.append('-DENABLE_FC_SUPPORT={0}'.format(arguments['--fc-support']))
command.append('-DCMAKE_CXX_COMPILER={0} -DEXTRA_CXXFLAGS="{1}"'.format(arguments['--cxx'], arguments['--extra-cxx-flags']))
command.append('-DPYTHON_INTERPRETER="{0}"'.format(arguments['--python']))
command.append('-DUSE_CCACHE={0}'.format(arguments['--ccache']))
command.append('-DCMAKE_INSTALL_BINDIR={0}'.format(arguments['--bindir']))
command.append('-DCMAKE_INSTALL_LIBDIR={0}'.format(arguments['--libdir']))
command.append('-DCMAKE_INSTALL_INCLUDEDIR={0}'.format(arguments['--includedir']))
command.append('-DCMAKE_INSTALL_DATADIR={0}'.format(arguments['--datadir']))
command.append('-DPYMOD_INSTALL_LIBDIR={0}'.format(arguments['--pydir']))
command.append('-DSTATIC_LIBRARY_ONLY={0}'.format(arguments['--static']))
command.append('-DPREPROCESSOR_DEFINITIONS="{0}"'.format(arguments['--add-definitions']))
command.append('-DENABLE_CODE_COVERAGE={0}'.format(arguments['--coverage']))
command.append('-DCMAKE_BUILD_TYPE={0}'.format(arguments['--type']))
command.append('-G"{0}"'.format(arguments['--generator']))
if arguments['--cmake-options'] != "''":
command.append(arguments['--cmake-options'])
if arguments['--prefix']:
command.append('-DCMAKE_INSTALL_PREFIX="{0}"'.format(arguments['--prefix']))
return ' '.join(command)
# parse command line args
try:
arguments = docopt.docopt(options, argv=None)
except docopt.DocoptExit:
sys.stderr.write('ERROR: bad input to {0}\n'.format(sys.argv[0]))
sys.stderr.write(options)
sys.exit(-1)
# use extensions to validate/post-process args
if configure.module_exists('extensions'):
import extensions
arguments = extensions.postprocess_args(sys.argv, arguments)
root_directory = os.path.dirname(os.path.realpath(__file__))
build_path = arguments['<builddir>']
# create cmake command
cmake_command = '{0} -H{1}'.format(gen_cmake_command(options, arguments), root_directory)
# run cmake
configure.configure(root_directory, build_path, cmake_command, arguments['--show'])