photos-f: new package (Fortran version) (#26703)

This commit is contained in:
iarspider 2021-10-13 15:56:11 +02:00 committed by GitHub
parent c47eb7217e
commit 81c272fcb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 117 additions and 0 deletions

View File

@ -0,0 +1,44 @@
# Copyright 2013-2021 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)
import os
import shutil
from glob import glob
from spack import *
class PhotosF(MakefilePackage):
"""PHOTOS Monte-Carlo generator (Fortran version)"""
homepage = "https://wasm.web.cern.ch/wasm/f77.html"
url = "http://cern.ch/service-spi/external/MCGenerators/distribution/photos/photos-215.5-src.tgz"
maintainers = ['iarspider']
version('215.5', sha256='3e2b3f60ffe2d3a6a95cf2f156aa24b93e1fa3c439a85fa0ae780ca2f6e0dbb5')
patch('photos-215.5-update-configure.patch', level=2)
def do_stage(self, mirror_only=False):
# Fix directory structure - remove extra "<version>" subdirectory
super(PhotosF, self).do_stage(mirror_only)
root = join_path(self.stage.source_path, self.spec.version)
for fn in os.listdir(root):
shutil.move(join_path(root, fn), self.stage.source_path)
shutil.rmtree(root)
def edit(self, spec, prefix):
configure_ = Executable('./configure')
configure_('--enable-static', '--disable-shared')
if self.spec.satisfies('platform=darwin'):
filter_file('libphotos.so', 'libphotos.dylib', 'Makefile')
def install(self, spec, prefix):
install_tree('lib', prefix.lib)
install_tree('include', prefix.include)
for fn in glob(join_path(prefix.lib.archive, '*.a')):
install(fn, prefix.lib)
shutil.rmtree(prefix.lib.archive)

View File

@ -0,0 +1,73 @@
diff --git a/215.5/Makefile b/215.5/Makefile
index 648424f..73b5dce 100644
--- a/215.5/Makefile
+++ b/215.5/Makefile
@@ -11,6 +11,8 @@ SHELL = /bin/sh
#
FFLAGSSHARED = -fPIC
CFLAGSSHARED = -fPIC
+FFLAGS = -fPIC
+CFLAGS = -fPIC
#
LDFLAGSSHARED = $(CXXFLAGS) -pthread -fPIC
diff --git a/215.5/Makeshared.subdir b/215.5/Makeshared.subdir
index f167145..0a8f232 100644
--- a/215.5/Makeshared.subdir
+++ b/215.5/Makeshared.subdir
@@ -42,7 +42,14 @@ objects += $(patsubst $(DIRNAME)/%.c,$(TMPDIR)/%.o,$(wildcard $(DIRNAME)/*.c))
$(LIBNAME): $(objects)
@mkdir -p $(LIBDIR)
@echo creating the shared library $@
- $(CXX) $(LDFLAGSSHARED) $(objects) -o $@ -shared -Wl,-soname,$(notdir $@)
+ case ${ARCH} in \
+ Linux-*) \
+ $(CXX) $(LDFLAGSSHARED) $(objects) -o $@ -shared -Wl,-soname,$(notdir $@) \
+ ;;\
+ Darwin-*) \
+ $(CXX) $(LDFLAGSSHARED) $(objects) -Wl,-commons,use_dylibs -o $@ -shared -L$(dir $(shell gfortran --print-file-name=libgfortran.a)) $(FLIBS) -dynamic \
+ ;; \
+ esac
deps := $(patsubst $(DIRNAME)/%.F,$(TMPDIR)/%.d,$(wildcard $(DIRNAME)/*.F))
diff --git a/215.5/configure b/215.5/configure
index c8382cc..105950e 100755
--- a/215.5/configure
+++ b/215.5/configure
@@ -74,10 +74,6 @@ export CXXFLAGS_DBG="-g -ansi -pedantic -W -Wall"
# Find platform.
#
export ARCH="`uname`"
-export theGcc=`g++ --version | head -n 1 | awk '{print$3}' | awk -F . '{print $1}'`
-if [ ${theGcc} = 4 ]; then
- export ARCH=${ARCH}-gcc4
-fi
echo Platform is $ARCH
#default platform settings:
@@ -98,24 +94,6 @@ if [ ${COMPMODE} = DBG ]; then
export CXXFLAGS="${CXXFLAGS_DBG}"
fi
if [ $ARCH = Linux ]; then
- export FC=g77
- export FFLAGS="${FFLAGS_OPT} -Wno-globals"
- export CFLAGS="${CFLAGS_OPT}"
- export CXXFLAGS="${CXXFLAGS_OPT}"
- export FLIBS="-lfrtbegin -lg2c"
- if [ ${COMPMODE} = OPT ]; then
- export FFLAGS="${FFLAGS_OPT}"
- export CFLAGS="${CFLAGS_OPT}"
- export CXXFLAGS="${CXXFLAGS_OPT}"
- fi
- if [ ${COMPMODE} = DBG ]; then
- export FFLAGS="${FFLAGS_DBG} -Wno-globals"
- export CFLAGS="${CFLAGS_DBG}"
- export CXXFLAGS="${CXXFLAGS_DBG}"
- fi
-fi
-# Linux platform with gcc4: new Fortran90 compiler.
-if [ $ARCH = Linux-gcc4 ]; then
export FC=gfortran
export FFLAGS="${FFLAGS_OPT}"
export CFLAGS="${CFLAGS_OPT}"