-
Notifications
You must be signed in to change notification settings - Fork 19
/
setup
executable file
·93 lines (72 loc) · 3.95 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
#!/usr/bin/env python
# This file is autogenerated by Autocmake v1.0.0-alpha-x http://autocmake.org
# Copyright (c) 2015-2018 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: ''].
--cc=<CC> C compiler [default: gcc].
--extra-cc-flags=<EXTRA_CFLAGS> Extra C compiler flags [default: ''].
--cxx=<CXX> C++ compiler [default: g++].
--extra-cxx-flags=<EXTRA_CXXFLAGS> Extra C++ compiler flags [default: ''].
--omp Enable OpenMP parallelization [default: False].
--mpi Enable MPI parallelization [default: False].
--coverage Enable code coverage [default: OFF].
--blas Find and link to BLAS [default: False].
--lapack Find and link to LAPACK [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('-DCMAKE_C_COMPILER={0} -DEXTRA_CFLAGS="{1}"'.format(arguments['--cc'], arguments['--extra-cc-flags']))
command.append('-DCMAKE_CXX_COMPILER={0} -DEXTRA_CXXFLAGS="{1}"'.format(arguments['--cxx'], arguments['--extra-cxx-flags']))
command.append('-DENABLE_OPENMP={0}'.format(arguments['--omp']))
command.append('-DENABLE_MPI={0}'.format(arguments['--mpi']))
command.append('-DENABLE_CODE_COVERAGE={0}'.format(arguments['--coverage']))
command.append('-DENABLE_BLAS={0}'.format(arguments['--blas']))
command.append('-DENABLE_LAPACK={0}'.format(arguments['--lapack']))
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'])