summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/mofem-fracture-module/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/mofem-fracture-module/package.py')
-rw-r--r--var/spack/repos/builtin/packages/mofem-fracture-module/package.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/mofem-fracture-module/package.py b/var/spack/repos/builtin/packages/mofem-fracture-module/package.py
new file mode 100644
index 0000000000..f573d7def1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mofem-fracture-module/package.py
@@ -0,0 +1,87 @@
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
+from spack import *
+
+
+class MofemFractureModule(CMakePackage):
+ """mofem fracture module"""
+
+ homepage = "http://mofem.eng.gla.ac.uk"
+ git = "https://bitbucket.org/likask/mofem_um_fracture_mechanics.git"
+
+ maintainers = ['likask']
+
+ version('develop', branch='develop')
+ version('0.9.42', tag='v0.9.42')
+
+ variant('copy_user_modules', default=True,
+ description='Copy user modules directory instead linking')
+
+ extends('mofem-cephas')
+ depends_on("mofem-users-modules", type=('build', 'link', 'run'))
+
+ # The CMakeLists.txt installed with mofem-cephas package set cmake
+ # environment to install extension from extension repository. It searches
+ # for modules in user provides paths, for example in Spack source path.Also
+ # it finds all cmake exported targets installed in lib directory, which are
+ # built with dependent extensions, f.e.mofem - users - modules or others if
+ # needed.
+ @property
+ def root_cmakelists_dir(self):
+ """The relative path to the directory containing CMakeLists.txt
+
+ This path is relative to the root of the extracted tarball,
+ not to the ``build_directory``. Defaults to the current directory.
+
+ :return: directory containing CMakeLists.txt
+ """
+ spec = self.spec
+ return spec['mofem-cephas'].prefix.users_modules
+
+ def cmake_args(self):
+ spec = self.spec
+ source = self.stage.source_path
+
+ options = []
+
+ # obligatory options
+ options.extend([
+ '-DWITH_SPACK=YES',
+ '-DEXTERNAL_MODULES_BUILD=YES',
+ '-DUM_INSTALL_BREFIX=%s' % spec['mofem-users-modules'].prefix,
+ '-DEXTERNAL_MODULE_SOURCE_DIRS=%s' % source,
+ '-DSTAND_ALLONE_USERS_MODULES=%s' %
+ ('YES' if '+copy_user_modules' in spec else 'NO')])
+
+ # Set module version
+ if self.spec.version == Version('develop'):
+ options.extend([
+ '-DFM_VERSION_MAJOR=%s' % 0,
+ '-DFM_VERSION_MINOR=%s' % 0,
+ '-DFM_VERSION_BUILD=%s' % 0])
+ else:
+ options.extend([
+ '-DFM_VERSION_MAJOR=%s' % self.spec.version[0],
+ '-DFM_VERSION_MINOR=%s' % self.spec.version[1],
+ '-DFM_VERSION_BUILD=%s' % self.spec.version[2]])
+
+ # build tests
+ options.append('-DMOFEM_UM_BUILD_TETS={0}'.format(
+ 'ON' if self.run_tests else 'OFF'))
+
+ return options
+
+ # This function is not needed to run code installed by extension, nor in
+ # the install process. However for users like to have access to source code
+ # to play and make with it. Having source code at hand one can compile in
+ # own build directory it in mofem-cephas view when the extension is
+ # activated.
+ @run_after('install')
+ def copy_source_code(self):
+ source = self.stage.source_path
+ prefix = self.prefix
+ install_tree(source, prefix.ext_users_modules.fracture_mechanics)