1ee05e790Sjeremylt# Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at 2ee05e790Sjeremylt# the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights 3ee05e790Sjeremylt# reserved. See files LICENSE and NOTICE for details. 4ee05e790Sjeremylt# 5ee05e790Sjeremylt# This file is part of CEED, a collection of benchmarks, miniapps, software 6ee05e790Sjeremylt# libraries and APIs for efficient high-order finite element and spectral 7ee05e790Sjeremylt# element discretizations for exascale applications. For more information and 8ee05e790Sjeremylt# source code availability see http://github.com/ceed. 9ee05e790Sjeremylt# 10ee05e790Sjeremylt# The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, 11ee05e790Sjeremylt# a collaborative effort of two U.S. Department of Energy organizations (Office 12ee05e790Sjeremylt# of Science and the National Nuclear Security Administration) responsible for 13ee05e790Sjeremylt# the planning and preparation of a capable exascale ecosystem, including 14ee05e790Sjeremylt# software, applications, hardware, advanced system engineering and early 15ee05e790Sjeremylt# testbed platforms, in support of the nation"s exascale computing imperative. 16ee05e790Sjeremylt# pylint: disable=no-name-in-module,import-error,unused-variable 17ee05e790Sjeremyltimport os 18ee05e790Sjeremyltfrom setuptools import setup 19*37c134eaSJed Brownfrom setuptools.command.build_ext import build_ext 20ee05e790Sjeremylt 21ee05e790Sjeremylt# ------------------------------------------------------------------------------ 22ee05e790Sjeremylt# Setup 23ee05e790Sjeremylt# ------------------------------------------------------------------------------ 24ee05e790Sjeremyltdef version(): 25ee05e790Sjeremylt with open(os.path.abspath("ceed.pc.template")) as template: 26ee05e790Sjeremylt ceed_version = [line.split("Version:", 1)[1].strip() for line in template if 27ee05e790Sjeremylt line.startswith("Version: ")] 28ee05e790Sjeremylt return ceed_version[0] 29ee05e790Sjeremylt 30*37c134eaSJed Browndef requirements(): 31*37c134eaSJed Brown with open('requirements.txt') as f: 32*37c134eaSJed Brown return f.readlines() 33*37c134eaSJed Brown 34*37c134eaSJed Brownclass libceed_build_ext(build_ext): 35*37c134eaSJed Brown def run(self): 36*37c134eaSJed Brown self.make_libceed_so() 37*37c134eaSJed Brown build_ext.run(self) 38*37c134eaSJed Brown 39*37c134eaSJed Brown def make_libceed_so(self): 40*37c134eaSJed Brown import subprocess 41*37c134eaSJed Brown subprocess.check_call(['make', '-j', 'MARCHFLAG=-march=generic', '-B']) 42*37c134eaSJed Brown subprocess.check_call(['make', 'install', 'prefix=' + os.path.join(self.build_lib, 'libceed')]) 43*37c134eaSJed Brown 44ee05e790Sjeremyltdescription = """ 45*37c134eaSJed BrownlibCEED: Code for Efficient Extensible Discretization 46*37c134eaSJed Brown===================================================== 47ee05e790Sjeremylt 48*37c134eaSJed BrownlibCEED is a lightweight library for expressing and manipulating operators that 49*37c134eaSJed Brownarise in high-order element-based discretization of partial differential 50*37c134eaSJed Brownequations. libCEED's representations are much for efficient than assembled 51*37c134eaSJed Brownsparse matrices, and can achieve very high performance on modern CPU and GPU 52*37c134eaSJed Brownhardware. This approach is applicable to a broad range of linear and nonlinear 53*37c134eaSJed Brownproblems, and includes facilities for preconditioning. libCEED is meant to be 54*37c134eaSJed Browneasy to incorporate into existing libraries and applications, and to build new 55*37c134eaSJed Browntools on top of. 56ee05e790Sjeremylt 57*37c134eaSJed BrownlibCEED has been developed as part of the DOE Exascale Computing Project 58*37c134eaSJed Brownco-design Center for Efficient Exascale Discretizations (CEED). 59ee05e790Sjeremylt""" 60ee05e790Sjeremylt 61ee05e790Sjeremyltclassifiers = """ 62*37c134eaSJed BrownDevelopment Status :: 4 - Beta 63ee05e790SjeremyltIntended Audience :: Developers 64ee05e790SjeremyltIntended Audience :: Science/Research 65ee05e790SjeremyltLicense :: OSI Approved :: BSD License 66ee05e790SjeremyltOperating System :: POSIX 67ee05e790SjeremyltProgramming Language :: C 68ee05e790SjeremyltProgramming Language :: C++ 69ee05e790SjeremyltProgramming Language :: Fortran 70ee05e790SjeremyltProgramming Language :: Python 71*37c134eaSJed BrownProgramming Language :: Python :: 3.5 72*37c134eaSJed BrownProgramming Language :: Python :: 3.6 73*37c134eaSJed BrownProgramming Language :: Python :: 3.7 74*37c134eaSJed BrownProgramming Language :: Python :: 3.8 75*37c134eaSJed BrownProgramming Language :: Python :: 3 :: Only 76ee05e790SjeremyltTopic :: Scientific/Engineering 77ee05e790SjeremyltTopic :: Software Development :: Libraries 78ee05e790Sjeremylt""" 79ee05e790Sjeremylt 80ee05e790Sjeremyltsetup(name="libceed", 81ee05e790Sjeremylt version=version(), 82*37c134eaSJed Brown description="libCEED: Code for Efficient Extensible Discretization", 83*37c134eaSJed Brown long_description=description, 84*37c134eaSJed Brown long_description_content_type='text/x-rst', 85ee05e790Sjeremylt classifiers= classifiers.split("\n")[1:-1], 86ee05e790Sjeremylt keywords=["libCEED"], 87ee05e790Sjeremylt platforms=["POSIX"], 88ee05e790Sjeremylt license="BSD 2", 89*37c134eaSJed Brown license_file='LICENSE', 90*37c134eaSJed Brown url="https://libceed.readthedocs.io", 91*37c134eaSJed Brown download_url="https://github.com/CEED/libCEED/releases", 92*37c134eaSJed Brown project_urls={ 93*37c134eaSJed Brown "Bug Tracker": "https://github.com/CEED/libCEED/issues", 94*37c134eaSJed Brown "Documentation": "https://libceed.readthedocs.io", 95*37c134eaSJed Brown "Source Code": "https://github.com/CEED/libCEED", 96*37c134eaSJed Brown }, 97ee05e790Sjeremylt author="libCEED Team", 98ee05e790Sjeremylt author_email="ceed-users@llnl.gov", 99ee05e790Sjeremylt 100*37c134eaSJed Brown install_requires=requirements(), 101ee05e790Sjeremylt packages=["libceed"], 102ee05e790Sjeremylt package_dir={"libceed": "python"}, 103*37c134eaSJed Brown include_package_data=True, 104ee05e790Sjeremylt 105ee05e790Sjeremylt setup_requires=["cffi"], 106ee05e790Sjeremylt cffi_modules=["python/build_ceed_cffi.py:ffibuilder"], 107*37c134eaSJed Brown cmdclass={'build_ext': libceed_build_ext}, 108ee05e790Sjeremylt) 109ee05e790Sjeremylt 110ee05e790Sjeremylt# ------------------------------------------------------------------------------ 111