https://github.com/qmcurrents/gimic
Raw File
Tip revision: 38b960c655b1538bb463a9bc6a6bdb67cab04395 authored by heike on 27 July 2023, 13:53:39 UTC
Merge branch 'master' of github.com:qmcurrents/gimic
Tip revision: 38b960c
setup
#!/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'])
back to top