conflict in trilinos/build resolved

This commit is contained in:
2018-01-25 10:18:34 +01:00
77 changed files with 3458 additions and 37 deletions

13
Compiler/H5root/1/H5root Normal file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
CPLUS_INCLUDE_PATH="@PREFIX@/include:@ROOT_PREFIX@/include"
declare -r progname=$(basename "$0")
declare -a args=()
if [[ "${progname}" == "roger" ]]; then
args+=( "--roger" )
fi
"@PREFIX@/bin/H5root.bin" "${args[@]}" "$@"

View File

@@ -1,3 +1,10 @@
H5root/1.2.0 stable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.7.4 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.2.0 stable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.8.3 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.3.0 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.8.3 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.2.0 stable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.7.4 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.2.0 stable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.8.3 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.3.0 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/4.8.3 hdf5_serial/1.8.12 b:H5hut_serial/1.99.13 root/5.34.19
H5root/1.3.2rc2 unstable gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.2rc4 unstable gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.2rc4-1 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.2rc5 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.2rc5-1 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.2 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1
H5root/1.3.4 unstable b:autoconf/2.69 b:automake/1.14 b:libtool/2.4.2 gcc/5.4.0 b:hdf5_serial/1.8.18 b:H5hut/2.0.0rc3 root/6.08.02 boost/1.62.0 gsl/2.2.1

View File

@@ -1,6 +1,8 @@
#!/usr/bin/env modbuild
pbuild::pre_configure() {
SOURCE_URL="http://amas.web.psi.ch/Downloads/$P/$P-$V.tar.bz2"
pbuild::post_prep() {
./autogen.sh
}
@@ -9,8 +11,42 @@ pbuild::configure() {
--prefix="${PREFIX}"
}
declare JOBS=1
pbuild::compile_in_sourcetree
pbuild::post_install() {
# Unfortunatelly we need some fancy post-installation.
# Otherwise it wouldn't be possible to load the modules
# for H5root and OPAL at the same time. The problem is
# the JIT compiler of ROOT and the fact, that we need
# a serial HDF5 for H5root but a parallel for OPAL.
#
# Since ROOT's JIT compiler uses the environment variable
# CPLUS_INCLUDE_PATH to search for header files, the
# content of it is cruciale. In other words: it must be
# guaranteed that the header files of the serial compiled
# HDF5 are used by ROOT's JIT compiler. Since we have no
# influence on the order he modules are loaded, we cannot
# guarantee this without checking and - if required -
# changing the search path.
#
# The simplest solution for this problem is to install
# all required header files of HDF5 and H5hut into the
# include directory of the H5root module and to use a
# wrapper script to set the right search path.
# rename H5root binary, this will be called by a wrapper
# script.
mv "${PREFIX}/bin/H5root" "${PREFIX}/bin/H5root.bin"
# install wrapper script and set the right paths
local sed_cmd="s:@PREFIX@:${PREFIX}:g;"
sed_cmd+="s:@HDF5_PREFIX@:${HDF5_SERIAL_PREFIX}:g;"
sed_cmd+="s:@ROOT_PREFIX@:${ROOT_PREFIX}:g;"
sed "${sed_cmd}" "${BUILD_BLOCK_DIR}/${V_MAJOR}/H5root" > "${PREFIX}/bin/H5root"
chmod 0755 "${PREFIX}/bin/H5root"
# install serial HDF5 and H5hut header files
cp -av "${HDF5_SERIAL_INCLUDE_DIR}/"* "${PREFIX}/include/"
cp -av "${H5HUT_INCLUDE_DIR}/"* "${PREFIX}/include/"
}
pbuild::add_to_group 'Compiler'
pbuild::make_all

View File

@@ -1 +1,2 @@
SuperLU/5.2.1 unstable gcc/4.8.5 b:OpenBLAS/0.2.19 b:cmake/3.6.3
SuperLU/5.2.1 unstable gcc/5.4.0 b:OpenBLAS/0.2.19 b:cmake/3.6.3

View File

@@ -3,3 +3,4 @@ UMFPACK/5.6.2 stable gcc/4.8.3 OpenBLAS/0.2.9
UMFPACK/5.6.2 stable gcc/4.8.4 OpenBLAS/0.2.9
UMFPACK/5.6.2 stable gcc/4.9.2 OpenBLAS/0.2.9
UMFPACK/5.6.2 unstable gcc/4.9.3 OpenBLAS/0.2.9
UMFPACK/5.6.2 unstable gcc/5.4.0 OpenBLAS/0.2.19

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env modbuild
SOURCE_URL="file://$PMODULES_DISTFILESDIR/$P-V.tar.bz2"
pbuild::configure() {
cat <<EOF > "${MODULE_SRCDIR}/SuiteSparse_config/SuiteSparse_config.mk"
CF = \$(CFLAGS) \$(CPPFLAGS) \$(TARGET_ARCH) -O3 -fexceptions -fPIC -DNTIMER

View File

@@ -11,6 +11,6 @@ Ax=b, using the Unsymmetric MultiFrontal method. Written in ANSI/ISO C, with
a MATLAB (Version 6.0 and later) interface. Appears as a built-in routine
(for lu, backslash, and forward slash) in MATLAB. Includes a MATLAB
interface, a C-callable interface, and a Fortran-callable interface. Note
that "UMFPACK" is pronounced in two syllables, "Umph Pack". It is not "You
Em Ef Pack".
that 'UMFPACK' is pronounced in two syllables, 'Umph Pack'. It is not 'You
Em Ef Pack'.
"

View File

@@ -4,7 +4,7 @@ module-whatis "efficient BLAS and partial LAPACK implementation"
module-url "http://math-atlas.sourceforge.net/"
module-license "BSD-style license"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
mdoule-help "
module-help "
The ATLAS (Automatically Tuned Linear Algebra Software) project is an
ongoing research effort focusing on applying empirical techniques in
order to provide portable performance. At present, it provides C and

View File

@@ -4,6 +4,8 @@ boost/1.55.0 stable gcc/4.8.4 b:Python/3.4.0
boost/1.55.0 stable gcc/4.8.5 b:Python/2.7.11
boost/1.55.0 stable gcc/4.9.2 b:Python/3.4.0
boost/1.57.0 stable gcc/4.8.2 b:Python/3.4.0
boost/1.58.0 stable gcc/4.8.4 b:Python/3.4.0
boost/1.58.0 stable gcc/4.8.5 b:Python/2.7.11
boost/1.58.0 stable gcc/4.9.3 b:Python/2.7.11
@@ -17,4 +19,6 @@ boost/1.62.0 stable gcc/4.9.4 Python/2.7.12
boost/1.62.0 stable gcc/5.4.0 Python/2.7.12
boost/1.62.0 stable gcc/6.2.0 Python/2.7.12
boost/1.62.0 unstable gcc/6.3.0 Python/2.7.12
boost/1.62.0 unstable gcc/7.1.0 Python/2.7.12
boost/1.63.0 stable gcc/6.3.0 Python/2.7.12
boost/1.64.0 unstable gcc/5.4.0 Python/2.7.12

View File

@@ -0,0 +1 @@
clapack/3.2.1 unstable gcc/5.4.0 b:cmake/3.6.3

22
Compiler/clapack/build Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env modbuild
#
SOURCE_URL="http://www.netlib.org/$P/$P-$V-CMAKE.tgz"
pbuild::configure() {
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX \
"${MODULE_SRCDIR}" \
|| exit 1
}
pbuild::install() {
mkdir -p "${PREFIX}/include"
mkdir -p "${PREFIX}/lib"
install -m 0644 "${MODULE_BUILDDIR}/F2CLIBS/libf2c/libf2c.a" "${PREFIX}/lib"
install -m 0644 "${MODULE_BUILDDIR}/SRC/liblapack.a" "${PREFIX}/lib"
}
pbuild::add_to_group 'Compiler'
pbuild::set_docfiles 'COPYING'
pbuild::make_all

View File

@@ -0,0 +1,10 @@
#%Module1.0
module-whatis "CLAPACK - f2c'ed version of LAPACK"
module-url "http://www.netlib.org/clapack/"
module-license "See: $PREFIX/share/doc/COPYING"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-help "
"

View File

@@ -0,0 +1 @@
eigen/3.3.4 unstable gcc/5.4.0 b:cmake/3.6.3 b:mpfr/3.1.5 b:gmp/6.1.2 b:UMFPACK/5.6.2 b:boost/1.62.0 b:SuperLU/5.2.1

29
Compiler/eigen3/build Executable file
View File

@@ -0,0 +1,29 @@
#!/usr/bin/env modbuild
#
# Notes:
# On Mac OS X VTK does not compile out of the box with self-compiled GCC.
# grep for "long-branch" and "pascal-string" in the cmake configuration
# and remove these strings.
#
SOURCE_URL="http://bitbucket.org/eigen/eigen/get/${V_MAJOR}.${V_MINOR}.${V_PATCHLVL}.tar.bz2"
pbuild::configure() {
export BOOST_ROOT="${BOOST_PREFIX}"
config_args=()
config_args+=( "-DUMFPACK_INCLUDES=${UMFPACK_INCLUDE_DIR}" )
config_args+=( "-DUMFPACK_LIBRARIES=${UMFPACK_LIBRARY_DIR}" )
config_args+=( "-DGMP_INCLUDES=${GMP_INCLUDE_DIR}" )
config_args+=( "-DGMP_LIBRARIES=${GMP_LIBRARY_DIR}" )
config_args+=( "-DMPFR_INCLUDES=${MPFR_INCLUDE_DIR}" )
config_args+=( "-DMPFR_LIBRARIES=${MPFR_LIBRARY_DIR}" )
config_args+=( "-DSUPERLU_INCLUDES=${SUPERLU_INCLUDE_DIR}" )
config_args+=( "-DSUPERLU_LIBRARIES=${SUPERLU_LIBRARY_DIR}" )
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX \
"${config_args[@]}" \
"${MODULE_SRCDIR}"
}
pbuild::add_to_group 'Compiler'
pbuild::make_all

View File

@@ -0,0 +1,11 @@
#%Module1.0
module-whatis "a C++ template library for linear algebra:"
module-url "http://eigen.tuxfamily.org/"
module-license "Mozilla Public License Version 2.0"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-help "
Eigen is a C++ template library for linear algebra: matrices, vectors,
numerical solvers, and related algorithms.
"

View File

@@ -34,3 +34,22 @@ hdf5_serial/1.8.18 stable gcc/4.9.4
hdf5_serial/1.8.18 stable gcc/5.4.0
hdf5_serial/1.8.18 stable gcc/6.2.0
hdf5_serial/1.8.18 stable gcc/6.3.0
hdf5_serial/1.8.18 stable gcc/7.2.0
hdf5_serial/1.8.19 stable gcc/4.8.5
hdf5_serial/1.8.19 stable gcc/4.9.4
hdf5_serial/1.8.19 stable gcc/5.4.0
hdf5_serial/1.8.19 stable gcc/6.3.0
hdf5_serial/1.8.19 stable gcc/7.2.0
hdf5_serial/1.10.1 stable gcc/4.8.5
hdf5_serial/1.10.1 stable gcc/4.9.4
hdf5_serial/1.10.1 stable gcc/5.4.0
hdf5_serial/1.10.1 stable gcc/6.3.0
hdf5_serial/1.10.1 stable gcc/7.2.0
hdf5_serial/1.10.1 unstable intel/17.1
hdf5_serial/1.10.1 stable intel/17.4
hdf5_serial/1.10.1 unstable pgi/17.3
hdf5_serial/1.10.1 unstable pgi/17.7

View File

@@ -1,6 +1,11 @@
#!/usr/bin/env modbuild
pbuild::configure() {
test "$(basename "$CPP")" = "pgprepro" && {
CPP=cpp
CXX=g++
echo "INFO: substituted pgprepro with cpp, and pgc++ with g++!"
}
"${MODULE_SRCDIR}"/configure \
--prefix="${PREFIX}" \
--enable-shared \

View File

@@ -1 +1,6 @@
openmpi/2.1.1 stable gcc/6.4.0
openmpi/2.1.0 stable gcc/7.1.0
openmpi/2.1.1 stable gcc/7.2.0
openmpi/2.1.1 unstable intel/17.1
openmpi/2.1.1 stable intel/17.4

View File

@@ -3,13 +3,15 @@
SOURCE_URL="https://root.cern.ch/download/root_v${V_MAJOR}.${V_MINOR}.${V_PATCHLVL}.source.tar.gz"
declare -a EXTRA_LIBS=()
config_args=''
config_args=()
case ${OS} in
Darwin )
# cocoa doesn't work with GCC!?
config_args+=' -Dcocoa=OFF'
config_args+=' -Dx11=ON'
config_args+=( '-Dcocoa=OFF' )
config_args+=( '-Dx11=ON' )
config_args+=( '-DCMAKE_OSX_SYSROOT=/' )
config_args+=( "-DCMAKE_OSX_DEPLOYMENT_TARGET=''" )
;;
Linux )
INSTANTCLIENT_INCLUDE_DIR='/usr/lib/oracle/12.1/client64/include'
@@ -18,10 +20,10 @@ Linux )
CXX_INCLUDE_PATH+=":${INSTANTCLIENT_INCLUDE_DIR}"
CPLUS_INCLUDE_PATH+=":${INSTANTCLIENT_INCLUDE_DIR}"
LIBRARY_DIR+=":${INSTANTCLIENT_LIBRARY_DIR}"
config_args+=" -Doracle=ON"
config_args+=" -DORACLE_PATH_INCLUDES=${INSTANTCLIENT_INCLUDE_DIR}"
config_args+=" -DORACLE_PATH_LIB=${INSTANTCLIENT_LIBRARY_DIR}"
config_args+=" -DORACLE_OCI_VERSION=10G_R2"
config_args+=( "-Doracle=ON" )
config_args+=( "-DORACLE_PATH_INCLUDES=${INSTANTCLIENT_INCLUDE_DIR}" )
config_args+=( "-DORACLE_PATH_LIB=${INSTANTCLIENT_LIBRARY_DIR}" )
config_args+=( "-DORACLE_OCI_VERSION=10G_R2" )
;;
*)
std:die 1 "${OS} is not supported"
@@ -34,7 +36,7 @@ pbuild::patch_sources_Linux() {
pbuild::configure() {
cmake "${MODULE_SRCDIR}" \
${config_args} \
"${config_args[@]}" \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
|| exit 1
sed -i.bak "s:${MODULE_SRCDIR//\/\///}/root.exe:${MODULE_BUILDDIR//\/\///}/bin/root.exe:" CMakeFiles/hsimple.dir/build.make

View File

@@ -0,0 +1 @@
vtk/8.0.0 unstable b:cmake/3.6.3 gcc/5.4.0

View File

@@ -2,7 +2,7 @@
#
# Notes:
# On Mac OS X VTK does not compile out of the box with self-compiled GCC.
# grep vor "long-branch" and "pascal-string" in the cmake configuration
# grep for "long-branch" and "pascal-string" in the cmake configuration
# and remove these strings.
#

View File

@@ -0,0 +1 @@
mpfr/4.0.0 stable b:gmp/6.1.2

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env modbuild
SOURCE_URL="http://www.mpfr.org/$P-current/$P-$V.tar.gz"
SOURCE_URL="http://www.mpfr.org/$P-$V/$P-$V.tar.gz"
pbuild::configure() {
"${MODULE_SRCDIR}"/configure \

View File

@@ -1,3 +1,8 @@
OPAL/1.6.0rc1 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.1 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0rc2 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.1 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0rc3 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0rc4 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0rc5 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0rc6 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.0 stable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19
OPAL/1.6.1 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 hdf5/1.8.18 H5hut/2.0.0rc3 gsl/2.2.1 trilinos/12.10.1 cuda/8.0.44 dks/1.1.2 b:cmake/3.6.3 b:OpenBLAS/0.2.19

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env modbuild
SOURCE_URL='http://amas.web.psi.ch/Downloads/OPAL/OPAL-1.6.0rc6.tar.bz2'
config_args=()
case ${OS} in
@@ -15,7 +17,7 @@ esac
pbuild::configure() {
cmake \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SAAMG_SOLVER=TRUE \
"${config_args[@]}" \
"${MODULE_SRCDIR}"

View File

@@ -1,7 +1,7 @@
#%Module1.0
# OPAL_PREFIX is also used by OpenMPI!
module-dont-setenv { OPAL_PREFIX }
set dont-setenv { OPAL_PREFIX }
module-whatis "Object Oriented Particle Accelerator Library"
module-url "http://amas.psi.ch/OPAL"

View File

@@ -4,3 +4,4 @@ dks/1.0.1 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 cuda/8.0.44 b:cmake/3.6
dks/1.0.2 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 cuda/8.0.44 b:cmake/3.6.3
dks/1.1.0 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 cuda/8.0.44 b:cmake/3.6.3
dks/1.1.1 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 cuda/8.0.44 b:cmake/3.6.3
dks/1.1.2 unstable gcc/5.4.0 openmpi/1.10.4 boost/1.62.0 cuda/8.0.44 b:cmake/3.6.3

View File

@@ -6,6 +6,13 @@ conf=()
if (( ${vers[0]} >= 1 && ${vers[1]} >= 1 )); then
conf+=("-DDKS_FULL=ON")
fi
if (( ${vers[0]} >= 1 && ${vers[1]} >= 1 && ${vers[2]} >= 2 )); then
# if we want to link OPAL with static cuda libraries, we
# cannot use DKS_FULL=ON. This must be fixed in DKS.
conf=()
conf+=("-DENABLE_OPAL=ON")
conf+=("-DSTATIC_CUDA=1")
fi
pbuild::configure() {
export CXX=mpicxx

23
MPI/elegant/modulefile Normal file
View File

@@ -0,0 +1,23 @@
#%Module1.0
module-whatis "an accelerator modeling code th"
module-url "http://www.aps.anl.gov/Accelerator_Systems_Division/Accelerator_Operations_Physics/elegant.html"
module-license "See: http://www.aps.anl.gov/epics/license/index.php"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-help "
elegant is an accelerator modeling code that performs many functions. Its
basic function is 6D tracking, which it performs using matrices (up to
second order), symplectic integration, numerical integration, or a user-
defined mixture. It computes Twiss parameters, transport matrices, radiation
integrals, correction matrices, amplification factors, and floor coordinates.
It also performs optimization, including optimization of radiation integrals,
floor coordinates, transport matrices, and beam properties from tracking. A
number of time-dependent elements are supported, such as rf cavities, kickers,
and ramping machines. The code provides simulation of various collective
effects, such as wakes and coherent synchrotron radiation.
"
setenv RPN_DEFNS $PREFIX/RPN-DEFNS
setenv HOST_ARCH linux-x86_64
setenv EPICS_HOST_ARCH linux-x86_64

View File

@@ -0,0 +1 @@
gromacs/2016.4 unstable gcc/5.4.0 openmpi/1.10.4 b:cmake/3.6.3

1
MPI/gromacs/4/variants Normal file
View File

@@ -0,0 +1 @@
gromacs/4.6.7 unstable gcc/4.8.4 openmpi/1.8.4

3
MPI/gromacs/5/variants Normal file
View File

@@ -0,0 +1,3 @@
gromacs/5.0.4 unstable gcc/4.8.4 openmpi/1.8.4
gromacs/5.0.5 unstable gcc/4.9.2 openmpi/1.8.4
gromacs/5.1.2 unstable gcc/4.9.3 openmpi/1.10.0

View File

@@ -1,20 +1,20 @@
#!/usr/bin/env modbuild
SOURCE_URL="http://ftp.gromacs.org/pub/$P/$P-$V.tar.gz"
pbuild::configure() {
cmake \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DCMAKE_BUILD_TYPE=RELEASE \
-DGMX_MPI=on \
-DGMX_GPU=off \
-DGMX_SIMD=SSE2 \
-DGMX_BUILD_OWN_FFTW=on \
"${MODULE_SRCDIR}" \
|| exit 1
}
pbuild::add_to_group 'MPI'
pbuild::set_runtime_dependencies "${COMPILER}" "${MPI}"
pbuild::set_build_dependencies "${COMPILER}" "${MPI}" cmake
pbuild::set_docfiles \
AUTHORS \
COPYING \

1
MPI/lammps/2017/variants Normal file
View File

@@ -0,0 +1 @@
lammps/2017.8 unstable gcc/5.4.0 openmpi/1.10.4

26
MPI/lammps/build Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env modbuild
SOURCE_URL="lammps-2017.8.tar.gz"
pbuild::compile_in_sourcetree
pbuild::configure() {
cp -v "${BUILD_BLOCK_DIR}/files/Makefile.PSI" "${MODULE_BUILDDIR}/src/MAKE/MINE"
}
pbuild::build() {
make -C src PSI
}
pbuild::install() {
install -m 0755 -d "${PREFIX}/bin"
install -m 0755 "${MODULE_BUILDDIR}/src/lmp_PSI" "${PREFIX}/bin/lmp_omp"
strip "${PREFIX}/bin/lmp_omp"
}
pbuild::add_to_group 'MPI'
pbuild::set_docfiles \
LICENSE \
README
pbuild::make_all

View File

@@ -0,0 +1,120 @@
# omp = USER-OMP package, MPI with its default compiler
SHELL = /bin/sh
# ---------------------------------------------------------------------
# compiler/linker settings
# specify flags and libraries needed for your compiler
CC = mpicxx
CCFLAGS = -g -O3 -fopenmp
SHFLAGS = -fPIC
DEPFLAGS = -M
LINK = mpicxx
LINKFLAGS = -g -O -fopenmp
LIB =
SIZE = size
ARCHIVE = ar
ARFLAGS = -rc
SHLIBFLAGS = -shared
# ---------------------------------------------------------------------
# LAMMPS-specific settings, all OPTIONAL
# specify settings for LAMMPS features you will use
# if you change any -D setting, do full re-compile after "make clean"
# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual
LMP_INC = -DLAMMPS_GZIP
# MPI library
# see discussion in Section 2.2 (step 5) of manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
# INC = path for mpi.h, MPI compiler settings
# PATH = path for MPI library
# LIB = name of MPI library
MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1
MPI_PATH =
MPI_LIB =
# FFT library
# see discussion in Section 2.2 (step 6) of manual
# can be left blank to use provided KISS FFT library
# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
# PATH = path for FFT library
# LIB = name of FFT library
FFT_INC =
FFT_PATH =
FFT_LIB =
# JPEG and/or PNG library
# see discussion in Section 2.2 (step 7) of manual
# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
# INC = path(s) for jpeglib.h and/or png.h
# PATH = path(s) for JPEG library and/or PNG library
# LIB = name(s) of JPEG library and/or PNG library
JPG_INC =
JPG_PATH =
JPG_LIB =
# ---------------------------------------------------------------------
# build rules and dependencies
# do not edit this section
include Makefile.package.settings
include Makefile.package
EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC)
EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH)
EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB)
EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS)
EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS)
# Path to src files
vpath %.cpp ..
vpath %.h ..
# Link target
$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS)
$(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE)
$(SIZE) $(EXE)
# Library targets
lib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
shlib: $(OBJ) $(EXTRA_LINK_DEPENDS)
$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \
$(OBJ) $(EXTRA_LIB) $(LIB)
# Compilation rules
%.o:%.cpp $(EXTRA_CPP_DEPENDS)
$(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
%.d:%.cpp $(EXTRA_CPP_DEPENDS)
$(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@
%.o:%.cu $(EXTRA_CPP_DEPENDS)
$(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
# Individual dependencies
depend : fastdep.exe $(SRC)
@./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1
fastdep.exe: ../DEPEND/fastdep.c
cc -O -o $@ $<
sinclude .depend

23
MPI/lammps/modulefile Normal file
View File

@@ -0,0 +1,23 @@
#%Module1.0
module-whatis "an accelerator modeling code th"
module-url "http://www.aps.anl.gov/Accelerator_Systems_Division/Accelerator_Operations_Physics/elegant.html"
module-license "See: http://www.aps.anl.gov/epics/license/index.php"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-help "
elegant is an accelerator modeling code that performs many functions. Its
basic function is 6D tracking, which it performs using matrices (up to
second order), symplectic integration, numerical integration, or a user-
defined mixture. It computes Twiss parameters, transport matrices, radiation
integrals, correction matrices, amplification factors, and floor coordinates.
It also performs optimization, including optimization of radiation integrals,
floor coordinates, transport matrices, and beam properties from tracking. A
number of time-dependent elements are supported, such as rf cavities, kickers,
and ramping machines. The code provides simulation of various collective
effects, such as wakes and coherent synchrotron radiation.
"
setenv RPN_DEFNS $PREFIX/RPN-DEFNS
setenv HOST_ARCH linux-x86_64
setenv EPICS_HOST_ARCH linux-x86_64

View File

@@ -1,3 +1,4 @@
parmetis/4.0.3 stable gcc/4.8.2 openmpi/1.6.5 b:cmake/3.4.1
parmetis/4.0.3 stable gcc/4.8.5 openmpi/1.10.2 b:cmake/3.4.1
parmetis/4.0.3 stable gcc/4.9.4 openmpi/1.10.2 b:cmake/3.4.1
parmetis/4.0.3 stable gcc/5.3.0 openmpi/1.10.2 b:cmake/3.4.1

View File

@@ -1,9 +1,15 @@
trilinos/12.2.1 unstable gcc/4.8.2 openmpi/1.6.5 hdf5/1.8.12 b:cmake/3.6.3 b:OpenBLAS/0.2.9 b:parmetis/4.0.3
trilinos/12.8.1 stable gcc/4.8.5 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.8.1 stable gcc/4.9.4 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.8.1 stable gcc/5.4.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.8.1 stable gcc/6.2.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 unstable gcc/4.8.5 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 unstable gcc/4.9.4 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 unstable gcc/5.4.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 unstable gcc/6.2.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 stable gcc/4.8.5 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 stable gcc/4.9.4 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 stable gcc/5.4.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1 stable gcc/6.2.0 openmpi/1.10.4 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1-1 unstable gcc/5.4.0 openmpi/1.10.4 hdf5/1.8.18 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1-2 unstable gcc/5.4.0 openmpi/1.10.4 hdf5/1.8.18 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3
trilinos/12.10.1-1 unstable gcc/6.2.0 openmpi/1.10.4 hdf5/1.8.18 b:cmake/3.6.3 b:OpenBLAS/0.2.19 b:parmetis/4.0.3

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env modbuild
SOURCE_URL="http://trilinos.csbsju.edu/download/files/trilinos-$V-Source.tar.bz2"
SOURCE_URL="http://trilinos.csbsju.edu/download/files/trilinos-${V_PKG}-Source.tar.bz2"
declare -rx AR=ar
@@ -27,10 +27,8 @@ pbuild::configure() {
PARMETIS_INCLUDE_DIRS=$PARMETIS_PREFIX/include
PARMETIS_LIBRARIES=$PARMETIS_PREFIX/lib/libparmetis.a
METIS_INCLUDE_DIRS=$PARMETIS_PREFIX/include/metis
METIS_LIBRARIES=$PARMETIS_PREFIX/lib/libmetis.a
METIS_INCLUDE_DIRS="${PARMETIS_PREFIX}/include/metis"
METIS_LIBRARIES="${PARMETIS_PREFIX}/lib/libmetis.a"
cmake \
-D CMAKE_BUILD_TYPE:STRING=Release \
@@ -70,7 +68,7 @@ pbuild::configure() {
"${MODULE_SRCDIR}" || exit 1
}
pbuild::add_to_group 'MPI'
pbuild::add_to_group 'HDF5'
pbuild::set_docfiles Copyright.txt LICENSE README RELEASE_NOTES
pbuild::make_all

View File

@@ -2,3 +2,4 @@ cmake/3.1.3 stable
cmake/3.3.2 stable
cmake/3.4.1 stable
cmake/3.6.3 stable
cmake/3.8.1 stable

View File

@@ -1,4 +1,5 @@
gcc/4.7.4 stable b:gmp/5.1.1 b:mpfr/3.1.2 b:mpc/1.0.2
gcc/4.8.2 stable b:gmp/5.1.1 b:mpfr/3.1.2 b:mpc/1.0.2
gcc/4.8.3 stable b:gmp/5.1.1 b:mpfr/3.1.2 b:mpc/1.0.2
gcc/4.8.4 stable b:gmp/5.1.1 b:mpfr/3.1.2 b:mpc/1.0.2
gcc/4.8.5 stable b:gmp/6.0.0 b:mpfr/3.1.3 b:mpc/1.0.3

View File

@@ -0,0 +1,419 @@
Index: gcc/config/darwin-c.c
===================================================================
--- gcc/config/darwin-c.c.orig
+++ gcc/config/darwin-c.c
@@ -570,42 +570,180 @@ find_subframework_header (cpp_reader *pf
return 0;
}
-/* Return the value of darwin_macosx_version_min suitable for the
- __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro, so '10.4.2'
- becomes 1040 and '10.10.0' becomes 101000. The lowest digit is
- always zero, as is the second lowest for '10.10.x' and above.
- Print a warning if the version number can't be understood. */
+/* Given a version string, return the version as a statically-allocated
+ array of three non-negative integers. If the version string is
+ invalid, return null.
+
+ Version strings must consist of one, two, or three tokens, each
+ separated by a single period. Each token must contain only the
+ characters '0' through '9' and is converted to an equivalent
+ integer. Omitted tokens are treated as zeros. For example:
+
+ "10" becomes {10,0,0}
+ "10.10" becomes {10,10,0}
+ "10.10.1" becomes {10,10,1}
+ "10.000010.1" becomes {10,10,1}
+ "10.010.001" becomes {10,10,1}
+ "000010.10.00001" becomes {10,10,1} */
+
+enum version_components { MAJOR, MINOR, TINY };
+
+static const unsigned long *
+parse_version (const char *version_str)
+{
+ size_t version_len;
+ char *end;
+ static unsigned long version_array[3];
+
+ if (! version_str)
+ return NULL;
+
+ version_len = strlen (version_str);
+ if (version_len < 1)
+ return NULL;
+
+ /* Version string must consist of digits and periods only. */
+ if (strspn (version_str, "0123456789.") != version_len)
+ return NULL;
+
+ if (! ISDIGIT (version_str[0]) || ! ISDIGIT (version_str[version_len - 1]))
+ return NULL;
+
+ version_array[MAJOR] = strtoul (version_str, &end, 10);
+ version_str = end + ((*end == '.') ? 1 : 0);
+
+ /* Version string must not contain adjacent periods. */
+ if (*version_str == '.')
+ return NULL;
+
+ version_array[MINOR] = strtoul (version_str, &end, 10);
+ version_str = end + ((*end == '.') ? 1 : 0);
+
+ version_array[TINY] = strtoul (version_str, &end, 10);
+
+ /* Version string must contain no more than three tokens. */
+ if (*end != '\0')
+ return NULL;
+
+ return version_array;
+}
+
+/* Given a three-component version represented as an array of
+ non-negative integers, return a statically-allocated string suitable
+ for the legacy __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro.
+ If the version is invalid and cannot be coerced into a valid form,
+ return null.
+
+ The legacy format is a four-character string -- two chars for the
+ major number and one each for the minor and tiny numbers. Major
+ numbers are zero-padded if necessary. Minor and tiny numbers from
+ 10 through 99 are permitted but are clamped to 9 (for example,
+ {10,9,10} produces "1099"). Versions containing numbers greater
+ than 99 are rejected. */
+
static const char *
-version_as_macro (void)
+version_as_legacy_macro (const unsigned long *version)
{
- static char result[7] = "1000";
- int minorDigitIdx;
+ unsigned long major, minor, tiny;
+ static char result[sizeof "9999"];
+
+ if (! version)
+ return NULL;
+
+ major = version[MAJOR];
+ minor = version[MINOR];
+ tiny = version[TINY];
+
+ if (major > 99 || minor > 99 || tiny > 99)
+ return NULL;
+
+ minor = ((minor > 9) ? 9 : minor);
+ tiny = ((tiny > 9) ? 9 : tiny);
+
+ /* NOTE: Cast result of sizeof so that result of sprintf is not
+ converted to an unsigned type. */
+ if (sprintf (result, "%02lu%lu%lu", major, minor, tiny)
+ != (int) sizeof "9999" - 1)
+ return NULL;
- if (strncmp (darwin_macosx_version_min, "10.", 3) != 0)
+ return result;
+}
+
+/* Given a three-component version represented as an array of
+ non-negative integers, return a statically-allocated string suitable
+ for the modern __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro
+ or the __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ macro. If the
+ version is invalid, return null.
+
+ The modern format is a five- or six-character string -- one or two
+ chars for the major number and two each for the minor and tiny
+ numbers, which are zero-padded if necessary (for example, {8,1,0}
+ produces "80100", and {10,10,1} produces "101001"). Versions
+ containing numbers greater than 99 are rejected. */
+
+static const char *
+version_as_modern_macro (const unsigned long *version)
+{
+ unsigned long major, minor, tiny;
+ static char result[sizeof "999999"];
+
+ if (! version)
+ return NULL;
+
+ major = version[MAJOR];
+ minor = version[MINOR];
+ tiny = version[TINY];
+
+ if (major > 99 || minor > 99 || tiny > 99)
+ return NULL;
+
+ /* NOTE: 'sizeof ((x > y) ? "foo" : "bar")' returns size of char
+ pointer instead of char array, so use
+ '(x > y) ? sizeof "foo" : sizeof "bar"' instead. */
+ /* NOTE: Cast result of sizeof so that result of sprintf is not
+ converted to an unsigned type. */
+ if (sprintf (result, "%lu%02lu%02lu", major, minor, tiny)
+ != (int) ((major > 9) ? sizeof "999999" : sizeof "99999") - 1)
+ return NULL;
+
+ return result;
+}
+
+/* Return the value of darwin_macosx_version_min, suitably formatted
+ for the __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. Values
+ representing OS X 10.9 and earlier are encoded using the legacy
+ four-character format, while 10.10 and later use a modern
+ six-character format. (For example, "10.9" produces "1090", and
+ "10.10.1" produces "101001".) If the value is invalid and cannot be
+ coerced into a valid form, print a warning and return "1000". */
+
+static const char *
+macosx_version_as_macro (void)
+{
+ const unsigned long *version_array;
+ const char *version_macro;
+
+ version_array = parse_version (darwin_macosx_version_min);
+ if (! version_array)
goto fail;
- if (! ISDIGIT (darwin_macosx_version_min[3]))
+
+ /* Do not assume that the major number will always be exactly 10. */
+ if (version_array[MAJOR] < 10 || version_array[MAJOR] > 10)
goto fail;
- minorDigitIdx = 3;
- result[2] = darwin_macosx_version_min[minorDigitIdx++];
- if (ISDIGIT (darwin_macosx_version_min[minorDigitIdx]))
- {
- /* Starting with OS X 10.10, the macro ends '00' rather than '0',
- i.e. 10.10.x becomes 101000 rather than 10100. */
- result[3] = darwin_macosx_version_min[minorDigitIdx++];
- result[4] = '0';
- result[5] = '0';
- result[6] = '\0';
- }
- if (darwin_macosx_version_min[minorDigitIdx] != '\0'
- && darwin_macosx_version_min[minorDigitIdx] != '.')
+ if (version_array[MAJOR] == 10 && version_array[MINOR] < 10)
+ version_macro = version_as_legacy_macro (version_array);
+ else
+ version_macro = version_as_modern_macro (version_array);
+
+ if (! version_macro)
goto fail;
- return result;
+ return version_macro;
fail:
error ("unknown value %qs of -mmacosx-version-min",
- darwin_macosx_version_min);
+ darwin_macosx_version_min);
return "1000";
}
@@ -627,7 +765,7 @@ darwin_cpp_builtins (cpp_reader *pfile)
builtin_define ("__CONSTANT_CFSTRINGS__");
builtin_define_with_value ("__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",
- version_as_macro(), false);
+ macosx_version_as_macro(), false);
/* Since we do not (at 4.6) support ObjC gc for the NeXT runtime, the
following will cause a syntax error if one tries to compile gc attributed
Index: gcc/testsuite/gcc.dg/darwin-minversion-10.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-10.c
@@ -0,0 +1,16 @@
+/* PR target/63810: Test that a version with a zero-padded minor
+ number < 10 and a zero-padded tiny number < 10 produces the correct
+ four-character macro. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.07.02" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1072
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-11.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-11.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that a version with outrageous zero-padding and
+ a minor number > 9 still produces a six-character macro. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=00010.010.0000098" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101098
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-12.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-12.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that a version with outrageous zero-padding and
+ a minor number < 10 still produces a four-character macro. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=010.008.000031" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1089
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-3.c
===================================================================
--- gcc/testsuite/gcc.dg/darwin-minversion-3.c.orig
+++ gcc/testsuite/gcc.dg/darwin-minversion-3.c
@@ -1,11 +1,11 @@
-/* Test that most-minor versions greater than 9 work. */
-/* { dg-options "-mmacosx-version-min=10.4.10" } */
+/* Test that most minor versions < 10 work. */
+/* { dg-options "-mmacosx-version-min=10.4.1" } */
/* { dg-do compile { target *-*-darwin* } } */
int
main ()
{
-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1040
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1041
fail me;
#endif
return 0;
Index: gcc/testsuite/gcc.dg/darwin-minversion-4.c
===================================================================
--- gcc/testsuite/gcc.dg/darwin-minversion-4.c.orig
+++ gcc/testsuite/gcc.dg/darwin-minversion-4.c
@@ -1,11 +1,11 @@
-/* Test that major versions greater than 9 work and have the additional 0. */
-/* { dg-options "-mmacosx-version-min=10.10.0" } */
+/* Test that minor versions > 9 produce a six-character macro. */
+/* { dg-options "-mmacosx-version-min=10.10.1" } */
/* { dg-do compile { target *-*-darwin* } } */
int
main ()
{
-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101000
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101001
fail me;
#endif
return 0;
Index: gcc/testsuite/gcc.dg/darwin-minversion-5.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-5.c
@@ -0,0 +1,16 @@
+/* PR target/63810: Test that a version with minor number < 10 and tiny
+ number > 9 produces a four-character macro with the tiny number
+ clamped to 9. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.9.10" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1099
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-6.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-6.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that tiny numbers are preserved in
+ six-character macros. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.10.11" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101011
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-7.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-7.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that tiny numbers < 10 are preserved in
+ four-character macros. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.9.1" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1091
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-8.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-8.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that a version with minor number > 9 and no
+ tiny number produces a six-character macro ending in "00". */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.11" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101100
+ fail me;
+#endif
+ return 0;
+}
Index: gcc/testsuite/gcc.dg/darwin-minversion-9.c
===================================================================
--- /dev/null
+++ gcc/testsuite/gcc.dg/darwin-minversion-9.c
@@ -0,0 +1,15 @@
+/* PR target/63810: Test that a version with a zero-padded minor
+ number < 10 produces a four-character macro. */
+/* Added by Lawrence Velázquez <larryv@macports.org>. */
+
+/* { dg-options "-mmacosx-version-min=10.08.4" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+int
+main ()
+{
+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1084
+ fail me;
+#endif
+ return 0;
+}

View File

@@ -1,3 +1,4 @@
gcc/6.1.0 stable b:gmp/6.1.0 b:mpfr/3.1.4 b:mpc/1.0.3
gcc/6.2.0 stable b:gmp/6.1.1 b:mpfr/3.1.4 b:mpc/1.0.3
gcc/6.3.0 stable b:gmp/6.1.2 b:mpfr/3.1.5 b:mpc/1.0.3
gcc/6.3.0 stable b:gmp/6.1.2 b:mpfr/3.1.5 b:mpc/1.0.3-2
gcc/6.4.0 stable b:gmp/6.1.2 b:mpfr/3.1.5 b:mpc/1.0.3

View File

@@ -1 +1,2 @@
gcc/7.1.0 stable b:gmp/6.1.2 b:mpfr/3.1.5 b:mpc/1.0.3
gcc/7.2.0 stable b:gmp/6.1.2 b:mpfr/3.1.5 b:mpc/1.0.3-2

View File

@@ -0,0 +1 @@
../../files/PR-29117886.patch

View File

@@ -0,0 +1 @@
../../files/PR-29679726.patch

View File

@@ -0,0 +1 @@
../../files/PR-29723276.patch

View File

@@ -0,0 +1 @@
../../files/PR-29723629.patch

View File

@@ -0,0 +1 @@
../../files/PR-49393.patch

View File

@@ -0,0 +1 @@
../../files/ld64-133-no-CrashReporterClient.h.patch

View File

@@ -0,0 +1 @@
../../files/ld64-134-missing-include.patch

View File

@@ -0,0 +1 @@
../../files/ld64-136-i386-badAddress.patch

View File

@@ -0,0 +1 @@
../../files/ld64-ppc-9610466.patch

View File

@@ -0,0 +1 @@
../../files/ld64-version.patch

View File

@@ -0,0 +1 @@
ld64/274.2 unstable

73
Programming/ld64/build Executable file
View File

@@ -0,0 +1,73 @@
#!/usr/bin/env modbuild
CCTOOLS_VERSION='895'
DYLD_VERSION='421.2'
SOURCE_URL="http://opensource.apple.com/tarballs/$P/$P-$V.tar.gz"
CCTOOLS_SOURCE_URL="https://opensource.apple.com/tarballs/cctools/cctools-${CCTOOLS_VERSION}.tar.gz"
DYLD_SOURCE_URL="http://opensource.apple.com/tarballs/dyld/dyld-${DYLD_VERSION}.tar.gz"
pbuild::patch_sources () {
find_patchdir() {
local -a patchdirs=()
patchdirs+=( "${BUILD_BLOCK_DIR}/${V}/patches.${OS}" )
patchdirs+=( "${BUILD_BLOCK_DIR}/${V}/patches" )
patchdirs+=( "${BUILD_BLOCK_DIR}/${V%.*}/patches.${OS}" )
patchdirs+=( "${BUILD_BLOCK_DIR}/${V%.*}/patches" )
patchdirs+=( "${BUILD_BLOCK_DIR}/${V%.*.*}/patches.${OS}" )
patchdirs+=( "${BUILD_BLOCK_DIR}/${V%.*.*}/patches" )
for patchdir in "${patchdirs[@]}"; do
[[ -e "${patchdir}" ]] && return 0;
done
return 1
}
find_patchdir || return 0
local patch_file=''
for patch_file in "${patchdir}"/*; do
patch -p0 < "${patch_file}"
done
}
pbuild::post_prep() {
local -r DYLD_SRC_DIR="${PMODULES_TMPDIR}/dyld-${DYLD_VERSION}/src"
local -r CCTOOLS_SRC_DIR="${PMODULES_TMPDIR}/cctools-${CCTOOLS_VERSION}/src"
local source_file=''
pbuild::get_source source_file "${DYLD_SOURCE_URL}" "${PMODULES_DISTFILESDIR}" ||
std::die 4 "dyld/${DYLD_VERSION}: sourcecode not found."
pbuild::unpack "${source_file}" "${DYLD_SRC_DIR}"
pbuild::get_source source_file "${CCTOOLS_SOURCE_URL}" "${PMODULES_DISTFILESDIR}" ||
std::die 4 "cctools/${CCTOOLS_VERSION}: sourcecode not found."
pbuild::unpack "${source_file}" "${CCTOOLS_SRC_DIR}"
cd "${MODULE_SRCDIR}"
mkdir -p "include/mach-o"
rsync --archive "../../cctools-${CCTOOLS_VERSION}/src/include/mach-o/" "include/mach-o/"
rsync --archive "../../dyld-${DYLD_VERSION}/src/include/mach-o/" "include/mach-o/"
mkdir -p "include/llvm-c"
cp -v "${BUILD_BLOCK_DIR}/files/Disassembler.h" "include/llvm-c/"
cp -v "${BUILD_BLOCK_DIR}/files/lto.h" "include/llvm-c/"
}
pbuild::configure() {
cp -v "${BUILD_BLOCK_DIR}/files/Makefile-${V_MAJOR}" "${MODULE_SRCDIR}/Makefile"
}
pbuild::build() {
cd "${MODULE_SRCDIR}"
which $CC
make OTHER_CXXFLAGS="-std=c++11 -I$PWD/include" OTHER_LDFLAGS="-L/Applications/Xcode.app/Contents/Frameworks -lLTO"
}
# use system gcc to compile
declare -rx CC=/usr/bin/gcc
declare -rx CXX=/usr/bin/g++
pbuild::add_to_group 'Programming'
pbuild::set_docfiles 'COPYING' 'COPYING.LIB' 'COPYING.RUNTIME' 'COPYING3' 'COPYING3.LIB' 'NEWS' 'README'
pbuild::make_all

View File

@@ -0,0 +1,239 @@
/*===-- llvm-c/Disassembler.h - Disassembler Public C Interface ---*- C -*-===*\
|* *|
|* The LLVM Compiler Infrastructure *|
|* *|
|* This file is distributed under the University of Illinois Open Source *|
|* License. See LICENSE.TXT for details. *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
|* This header provides a public interface to a disassembler library. *|
|* LLVM provides an implementation of this interface. *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifndef LLVM_C_DISASSEMBLER_H
#define LLVM_C_DISASSEMBLER_H
#include <stddef.h>
/**
* @defgroup LLVMCDisassembler Disassembler
* @ingroup LLVMC
*
* @{
*/
/**
* An opaque reference to a disassembler context.
*/
typedef void *LLVMDisasmContextRef;
/**
* The type for the operand information call back function. This is called to
* get the symbolic information for an operand of an instruction. Typically
* this is from the relocation information, symbol table, etc. That block of
* information is saved when the disassembler context is created and passed to
* the call back in the DisInfo parameter. The instruction containing operand
* is at the PC parameter. For some instruction sets, there can be more than
* one operand with symbolic information. To determine the symbolic operand
* information for each operand, the bytes for the specific operand in the
* instruction are specified by the Offset parameter and its byte widith is the
* size parameter. For instructions sets with fixed widths and one symbolic
* operand per instruction, the Offset parameter will be zero and Size parameter
* will be the instruction width. The information is returned in TagBuf and is
* Triple specific with its specific information defined by the value of
* TagType for that Triple. If symbolic information is returned the function
* returns 1, otherwise it returns 0.
*/
typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t Pc,
uint64_t Offset, uint64_t Size,
int TagType, void *TagBuf);
/**
* The initial support in LLVM MC for the most general form of a relocatable
* expression is "AddSymbol - SubtractSymbol + Offset". For some Darwin targets
* this full form is encoded in the relocation information so that AddSymbol and
* SubtractSymbol can be link edited independent of each other. Many other
* platforms only allow a relocatable expression of the form AddSymbol + Offset
* to be encoded.
*
* The LLVMOpInfoCallback() for the TagType value of 1 uses the struct
* LLVMOpInfo1. The value of the relocatable expression for the operand,
* including any PC adjustment, is passed in to the call back in the Value
* field. The symbolic information about the operand is returned using all
* the fields of the structure with the Offset of the relocatable expression
* returned in the Value field. It is possible that some symbols in the
* relocatable expression were assembly temporary symbols, for example
* "Ldata - LpicBase + constant", and only the Values of the symbols without
* symbol names are present in the relocation information. The VariantKind
* type is one of the Target specific #defines below and is used to print
* operands like "_foo@GOT", ":lower16:_foo", etc.
*/
struct LLVMOpInfoSymbol1 {
uint64_t Present; /* 1 if this symbol is present */
const char *Name; /* symbol name if not NULL */
uint64_t Value; /* symbol value if name is NULL */
};
struct LLVMOpInfo1 {
struct LLVMOpInfoSymbol1 AddSymbol;
struct LLVMOpInfoSymbol1 SubtractSymbol;
uint64_t Value;
uint64_t VariantKind;
};
/**
* The operand VariantKinds for symbolic disassembly.
*/
#define LLVMDisassembler_VariantKind_None 0 /* all targets */
/**
* The ARM target VariantKinds.
*/
#define LLVMDisassembler_VariantKind_ARM_HI16 1 /* :upper16: */
#define LLVMDisassembler_VariantKind_ARM_LO16 2 /* :lower16: */
/**
* The ARM64 target VariantKinds.
*/
#define LLVMDisassembler_VariantKind_ARM64_PAGE 1 /* @page */
#define LLVMDisassembler_VariantKind_ARM64_PAGEOFF 2 /* @pageoff */
#define LLVMDisassembler_VariantKind_ARM64_GOTPAGE 3 /* @gotpage */
#define LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF 4 /* @gotpageoff */
#define LLVMDisassembler_VariantKind_ARM64_TLVP 5 /* @tvlppage */
#define LLVMDisassembler_VariantKind_ARM64_TLVOFF 6 /* @tvlppageoff */
/**
* The type for the symbol lookup function. This may be called by the
* disassembler for things like adding a comment for a PC plus a constant
* offset load instruction to use a symbol name instead of a load address value.
* It is passed the block information is saved when the disassembler context is
* created and the ReferenceValue to look up as a symbol. If no symbol is found
* for the ReferenceValue NULL is returned. The ReferenceType of the
* instruction is passed indirectly as is the PC of the instruction in
* ReferencePC. If the output reference can be determined its type is returned
* indirectly in ReferenceType along with ReferenceName if any, or that is set
* to NULL.
*/
typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo,
uint64_t ReferenceValue,
uint64_t *ReferenceType,
uint64_t ReferencePC,
const char **ReferenceName);
/**
* The reference types on input and output.
*/
/* No input reference type or no output reference type. */
#define LLVMDisassembler_ReferenceType_InOut_None 0
/* The input reference is from a branch instruction. */
#define LLVMDisassembler_ReferenceType_In_Branch 1
/* The input reference is from a PC relative load instruction. */
#define LLVMDisassembler_ReferenceType_In_PCrel_Load 2
/* The input reference is from an ARM64::ADRP instruction. */
#define LLVMDisassembler_ReferenceType_In_ARM64_ADRP 0x100000001
/* The input reference is from an ARM64::ADDXri instruction. */
#define LLVMDisassembler_ReferenceType_In_ARM64_ADDXri 0x100000002
/* The input reference is from an ARM64::LDRXui instruction. */
#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXui 0x100000003
/* The input reference is from an ARM64::LDRXl instruction. */
#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXl 0x100000004
/* The input reference is from an ARM64::ADR instruction. */
#define LLVMDisassembler_ReferenceType_In_ARM64_ADR 0x100000005
/* The output reference is to as symbol stub. */
#define LLVMDisassembler_ReferenceType_Out_SymbolStub 1
/* The output reference is to a symbol address in a literal pool. */
#define LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr 2
/* The output reference is to a cstring address in a literal pool. */
#define LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr 3
/* The output reference is to a Objective-C CoreFoundation string. */
#define LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref 4
/* The output reference is to a Objective-C message. */
#define LLVMDisassembler_ReferenceType_Out_Objc_Message 5
/* The output reference is to a Objective-C message ref. */
#define LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref 6
/* The output reference is to a Objective-C selector ref. */
#define LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref 7
/* The output reference is to a Objective-C class ref. */
#define LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref 8
/* The output reference is to a C++ symbol name. */
#define LLVMDisassembler_ReferenceType_DeMangled_Name 9
#ifdef __cplusplus
extern "C" {
#endif /* !defined(__cplusplus) */
/**
* Create a disassembler for the TripleName. Symbolic disassembly is supported
* by passing a block of information in the DisInfo parameter and specifying the
* TagType and callback functions as described above. These can all be passed
* as NULL. If successful, this returns a disassembler context. If not, it
* returns NULL. This function is equivalent to calling LLVMCreateDisasmCPU()
* with an empty CPU name.
*/
LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo,
int TagType, LLVMOpInfoCallback GetOpInfo,
LLVMSymbolLookupCallback SymbolLookUp);
/**
* Create a disassembler for the TripleName and a specific CPU. Symbolic
* disassembly is supported by passing a block of information in the DisInfo
* parameter and specifying the TagType and callback functions as described
* above. These can all be passed * as NULL. If successful, this returns a
* disassembler context. If not, it returns NULL.
*/
LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU,
void *DisInfo, int TagType,
LLVMOpInfoCallback GetOpInfo,
LLVMSymbolLookupCallback SymbolLookUp);
/**
* Set the disassembler's options. Returns 1 if it can set the Options and 0
* otherwise.
*/
int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options);
/* The option to produce marked up assembly. */
#define LLVMDisassembler_Option_UseMarkup 1
/* The option to print immediates as hex. */
#define LLVMDisassembler_Option_PrintImmHex 2
/* The option use the other assembler printer variant */
#define LLVMDisassembler_Option_AsmPrinterVariant 4
/* The option to set comment on instructions */
#define LLVMDisassembler_Option_SetInstrComments 8
/* The option to print latency information alongside instructions */
#define LLVMDisassembler_Option_PrintLatency 16
/**
* Dispose of a disassembler context.
*/
void LLVMDisasmDispose(LLVMDisasmContextRef DC);
/**
* Disassemble a single instruction using the disassembler context specified in
* the parameter DC. The bytes of the instruction are specified in the
* parameter Bytes, and contains at least BytesSize number of bytes. The
* instruction is at the address specified by the PC parameter. If a valid
* instruction can be disassembled, its string is returned indirectly in
* OutString whose size is specified in the parameter OutStringSize. This
* function returns the number of bytes in the instruction or zero if there was
* no valid instruction.
*/
size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes,
uint64_t BytesSize, uint64_t Pc,
char *OutString, size_t OutStringSize);
/**
* @}
*/
#ifdef __cplusplus
}
#endif /* !defined(__cplusplus) */
#endif /* !defined(LLVM_C_DISASSEMBLER_H) */

View File

@@ -0,0 +1,106 @@
ifdef LLVM_CONFIG
LLVM_CPPFLAGS := -I$(shell $(LLVM_CONFIG) --includedir) -DLTO_SUPPORT
LLVM_LDFLAGS := -L$(shell $(LLVM_CONFIG) --libdir) -Wl,-rpath,$(shell $(LLVM_CONFIG) --libdir) -lLTO
endif
CPPFLAGS = $(LLVM_CPPFLAGS) -Isrc/abstraction -Isrc/ld -Isrc/ld/parsers $(OTHER_CPPFLAGS)
CFLAGS = -Os $(OTHER_CFLAGS)
CXXFLAGS = -Os $(OTHER_CXXFLAGS)
LDFLAGS = $(OTHER_LDFLAGS)
ifndef RANLIB
RANLIB = ranlib
endif
ifndef AR
AR = ar
endif
ifndef PREFIX
PREFIX = /usr
endif
# libprunetrie.a
all : src/ld/configure.h ObjectDump dyldinfo ld machocheck rebase unwinddump
src/ld/Snapshot.o : src/ld/compile_stubs.h
src/ld/compile_stubs.h : compile_stubs
echo "static const char *compile_stubs = " > $@
cat $^ | sed s/\"/\\\\\"/g | sed s/^/\"/ | sed s/$$/\\\\n\"/ >> $@
echo ";" >> $@
src/ld/configure.h : src/create_configure
DERIVED_SOURCES_DIR=src/ld DERIVED_FILE_DIR=src/ld $^ > $@
ObjectDump : src/ld/debugline.o
ObjectDump : src/ld/parsers/macho_relocatable_file.o
ObjectDump : src/ld/parsers/lto_file.o
ObjectDump : src/other/ObjectDump.o
$(CXX) $(LLVM_LDFLAGS) $(LDFLAGS) $^ -o $@
dyldinfo : src/other/dyldinfo.o
$(CXX) $(LDFLAGS) -Wl,-exported_symbol,__mh_execute_header $^ -o $@
ld : src/ld/debugline.o
ld : src/ld/ld.o
ld : src/ld/InputFiles.o
ld : src/ld/Options.o
ld : src/ld/OutputFile.o
ld : src/ld/Resolver.o
ld : src/ld/Snapshot.o
ld : src/ld/SymbolTable.o
ld : src/ld/parsers/archive_file.o
ld : src/ld/parsers/lto_file.o
ld : src/ld/parsers/macho_dylib_file.o
ld : src/ld/parsers/macho_relocatable_file.o
ld : src/ld/parsers/opaque_section_file.o
ld : src/ld/parsers/textstub_dylib_file.o
ld : src/ld/passes/bitcode_bundle.o
ld : src/ld/passes/branch_island.o
ld : src/ld/passes/branch_shim.o
ld : src/ld/passes/code_dedup.o
ld : src/ld/passes/compact_unwind.o
ld : src/ld/passes/dtrace_dof.o
ld : src/ld/passes/dylibs.o
ld : src/ld/passes/got.o
ld : src/ld/passes/huge.o
ld : src/ld/passes/objc.o
ld : src/ld/passes/order.o
ld : src/ld/passes/tlvp.o
ld : src/ld/passes/stubs/stubs.o
$(CXX) $(LLVM_LDFLAGS) $(LDFLAGS) $(OTHER_LDFLAGS_LD64) -Wl,-exported_symbol,__mh_execute_header $^ -lxar -o $@
machocheck : src/other/machochecker.o
$(CXX) $(LDFLAGS) $^ -o $@
rebase : src/other/rebase.o
$(CXX) $(LDFLAGS) -Wl,-exported_symbol,__mh_execute_header $^ -o $@
unwinddump : src/other/unwinddump.o
$(CXX) $(LDFLAGS) -Wl,-exported_symbol,__mh_execute_header $^ -o $@
src/other/PruneTrie.o : src/ld/configure.h
libprunetrie.a : src/other/PruneTrie.o
$(AR) cru $@ $^
$(RANLIB) $@
install : all
install -d -m 755 $(DESTDIR)$(PREFIX)/bin
install -d -m 755 $(DESTDIR)$(PREFIX)/lib
install -d -m 755 $(DESTDIR)$(PREFIX)/include/mach-o
install -d -m 755 $(DESTDIR)$(PREFIX)/share/man/man1
install -m 755 ObjectDump $(DESTDIR)$(PREFIX)/bin
install -m 755 dyldinfo $(DESTDIR)$(PREFIX)/bin
install -m 755 ld $(DESTDIR)$(PREFIX)/bin
install -m 755 machocheck $(DESTDIR)$(PREFIX)/bin
install -m 755 rebase $(DESTDIR)$(PREFIX)/bin
install -m 755 unwinddump $(DESTDIR)$(PREFIX)/bin
#install -m 644 src/other/prune_trie.h $(DESTDIR)$(PREFIX)/include/mach-o
#install -m 644 libprunetrie.a $(DESTDIR)$(PREFIX)/lib
install -m 644 doc/man/man1/dyldinfo.1 $(DESTDIR)$(PREFIX)/share/man/man1
install -m 644 doc/man/man1/ld.1 $(DESTDIR)$(PREFIX)/share/man/man1
install -m 644 doc/man/man1/ld64.1 $(DESTDIR)$(PREFIX)/share/man/man1
install -m 644 doc/man/man1/rebase.1 $(DESTDIR)$(PREFIX)/share/man/man1
install -m 644 doc/man/man1/unwinddump.1 $(DESTDIR)$(PREFIX)/share/man/man1

View File

@@ -0,0 +1,32 @@
--- src/ld/OutputFile.cpp
+++ src/ld/OutputFile.cpp
@@ -4461,14 +4461,18 @@ void OutputFile::addClassicRelocs(ld::Internal& state, ld::Internal::FinalSectio
assert(minusTarget->definition() != ld::Atom::definitionProxy);
assert(target != NULL);
assert(target->definition() != ld::Atom::definitionProxy);
- // make sure target is not global and weak
- if ( (target->scope() == ld::Atom::scopeGlobal) && (target->combine() == ld::Atom::combineByName)
- && (atom->section().type() != ld::Section::typeCFI)
- && (atom->section().type() != ld::Section::typeDtraceDOF)
- && (atom->section().type() != ld::Section::typeUnwindInfo)
- && (minusTarget != target) ) {
- // ok for __eh_frame and __uwind_info to use pointer diffs to global weak symbols
- throwf("bad codegen, pointer diff in %s to global weak symbol %s", atom->name(), target->name());
+ // check if target of pointer-diff is global and weak
+ if ( (target->scope() == ld::Atom::scopeGlobal) && (target->combine() == ld::Atom::combineByName) && (target->definition() == ld::Atom::definitionRegular) ) {
+ if ( (atom->section().type() == ld::Section::typeCFI)
+ || (atom->section().type() == ld::Section::typeDtraceDOF)
+ || (atom->section().type() == ld::Section::typeUnwindInfo) ) {
+ // ok for __eh_frame and __uwind_info to use pointer diffs to global weak symbols
+ return;
+ }
+ // Have direct reference to weak-global. This should be an indrect reference
+ warning("direct access in %s to global weak symbol %s means the weak symbol cannot be overriden at runtime. "
+ "This was likely caused by different translation units being compiled with different visiblity settings.",
+ atom->name(), target->name());
}
return;
}
--
2.10.1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
--- src/other/ObjectDump.cpp.orig 2016-03-09 13:27:56.000000000 -0800
+++ src/other/ObjectDump.cpp 2016-12-18 00:12:47.000000000 -0800
@@ -843,9 +843,6 @@ void dumper::dumpFixup(const ld::Fixup*
case ld::Fixup::kindStoreARM64PCRelToGOT:
printf(", then store as 32-bit delta to GOT entry");
break;
- case ld::Fixup::kindStoreARM64PointerToGOT32:
- printf(", then store as 32-bit pointer to GOT entry");
- break;
case ld::Fixup::kindDtraceExtra:
printf("dtrace static probe extra info");
break;

View File

@@ -0,0 +1,37 @@
guard usage of thinlto_code_gen_t behind an appropriate API version check
--- src/ld/parsers/lto_file.cpp
+++ src/ld/parsers/lto_file.cpp
@@ -292,12 +292,14 @@ private:
std::vector<const ld::Atom*>& newAtoms,
std::vector<const char*>& additionalUndefines);
+#if LTO_API_VERSION >= 18
static thinlto_code_gen_t init_thinlto_codegen(const std::vector<File*>& files,
const std::vector<const ld::Atom*>& allAtoms,
ld::Internal& state,
const OptimizeOptions& options,
CStringToAtom& deadllvmAtoms,
CStringToAtom& llvmAtoms);
+#endif
static std::vector<File*> _s_files;
static bool _s_llvmOptionsProcessed;
@@ -1035,6 +1037,7 @@ bool Parser::optimizeLTO(const std::vector<File*> files,
return true;
}
+#if LTO_API_VERSION >= 18
// Create the ThinLTO codegenerator
thinlto_code_gen_t Parser::init_thinlto_codegen(const std::vector<File*>& files,
const std::vector<const ld::Atom*>& allAtoms,
@@ -1185,6 +1188,7 @@ thinlto_code_gen_t Parser::init_thinlto_codegen(const std::vector<File*>&
return thingenerator;
}
+#endif
// Full LTO processing
bool Parser::optimizeThinLTO(const std::vector<File*>& files,
--
2.11.0

View File

@@ -0,0 +1,11 @@
--- src/ld/parsers/textstub_dylib_file.cpp.orig 2015-06-15 15:42:21.000000000 -0700
+++ src/ld/parsers/textstub_dylib_file.cpp 2015-10-23 17:45:56.000000000 -0700
@@ -29,7 +29,7 @@
#include <vector>
#include "Architectures.hpp"
-#include "bitcode.hpp"
+#include "Bitcode.hpp"
#include "MachOFileAbstraction.hpp"
#include "MachOTrie.hpp"
#include "textstub_dylib_file.hpp"

View File

@@ -0,0 +1,21 @@
--- src/ld/Options.cpp.orig 2012-09-04 14:00:10.000000000 -0700
+++ src/ld/Options.cpp 2012-09-04 14:00:37.000000000 -0700
@@ -50,7 +50,7 @@ namespace lto {
// magic to place command line in crash reports
const int crashreporterBufferSize = 2000;
static char crashreporterBuffer[crashreporterBufferSize];
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+#if 0 && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
#include <CrashReporterClient.h>
// hack until ld does not need to build on 10.6 anymore
struct crashreporter_annotations_t gCRAnnotations
@@ -4246,7 +4247,7 @@ void Options::checkForClassic(int argc,
bool newLinker = false;
// build command line buffer in case ld crashes
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+#if 0 && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
CRSetCrashLogMessage(crashreporterBuffer);
#endif
const char* srcRoot = getenv("SRCROOT");

View File

@@ -0,0 +1,21 @@
--- src/ld/parsers/lto_file.cpp.orig 2012-12-30 20:08:12.000000000 -0800
+++ src/ld/parsers/lto_file.cpp 2012-12-30 20:08:32.000000000 -0800
@@ -35,6 +35,8 @@
#include <ext/hash_set>
#include <ext/hash_map>
+#include <pthread.h>
+
#include "MachOFileAbstraction.hpp"
#include "Architectures.hpp"
#include "ld.hpp"
--- src/other/rebase.cpp.orig 2013-02-08 09:28:44.000000000 -0800
+++ src/other/rebase.cpp 2013-02-08 09:29:01.000000000 -0800
@@ -29,6 +29,7 @@
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>

View File

@@ -0,0 +1,11 @@
--- src/ld/LinkEdit.hpp.orig 2013-05-27 10:47:54.000000000 -0700
+++ src/ld/LinkEdit.hpp 2013-05-27 10:56:06.000000000 -0700
@@ -1278,7 +1278,7 @@ template <typename A>
void FunctionStartsAtom<A>::encode() const
{
this->_encodedData.reserve(8192);
- const uint64_t badAddress = 0xFFFFFFFFFFFFFFFF;
+ const uint64_t badAddress = 0xFFFFFFFFFFFFFFFFULL;
uint64_t addr = badAddress;
// delta compress all function addresses
for (std::vector<ld::Internal::FinalSection*>::iterator it = this->_state.sections.begin(); it != this->_state.sections.end(); ++it) {

View File

@@ -0,0 +1,17 @@
Adjust out-of range error to be a warning on ppc
AKA <rdar://problem/9610466> for ppc
https://trac.macports.org/ticket/46801
--- src/ld/OutputFile.cpp
+++ src/ld/OutputFile.cpp
@@ -625,7 +625,7 @@ void OutputFile::rangeCheckAbsolute32(int64_t displacement, ld::Internal& state,
// is encoded in mach-o the same as:
// .long _foo + 0x40000000
// so if _foo lays out to 0xC0000100, the first is ok, but the second is not.
- if ( (_options.architecture() == CPU_TYPE_ARM) || (_options.architecture() == CPU_TYPE_I386) ) {
+ if ( (_options.architecture() == CPU_TYPE_ARM) || (_options.architecture() == CPU_TYPE_I386) || (_options.architecture() == CPU_TYPE_POWERPC) ) {
// Unlikely userland code does funky stuff like this, so warn for them, but not warn for -preload or -static
if ( (_options.outputKind() != Options::kPreload) && (_options.outputKind() != Options::kStaticExecutable) ) {
warning("32-bit absolute address out of range (0x%08llX max is 4GB): from %s + 0x%08X (0x%08llX) to 0x%08llX",

View File

@@ -0,0 +1,19 @@
--- src/ld/Options.cpp 2008-03-20 18:48:04.000000000 -0700
+++ src/ld/Options.cpp 2012-04-11 15:54:34.000000000 -0700
@@ -32,6 +32,8 @@
#include "Options.h"
+const char ldVersionString[] = "@(#)PROGRAM:ld PROJECT:ld64-@@VERSION@@\n";
+
void throwf(const char* format, ...)
{
va_list list;
@@ -2153,7 +2155,6 @@ void Options::buildSearchPaths(int argc,
addStandardLibraryDirectories = false;
else if ( strcmp(argv[i], "-v") == 0 ) {
fVerbose = true;
- extern const char ldVersionString[];
fprintf(stderr, "%s", ldVersionString);
// if only -v specified, exit cleanly
if ( argc == 2 )

View File

@@ -0,0 +1,797 @@
/*===-- llvm-c/lto.h - LTO Public C Interface ---------------------*- C -*-===*\
|* *|
|* The LLVM Compiler Infrastructure *|
|* *|
|* This file is distributed under the University of Illinois Open Source *|
|* License. See LICENSE.TXT for details. *|
|* *|
|*===----------------------------------------------------------------------===*|
|* *|
|* This header provides public interface to an abstract link time optimization*|
|* library. LLVM provides an implementation of this interface for use with *|
|* llvm bitcode files. *|
|* *|
\*===----------------------------------------------------------------------===*/
#ifndef LLVM_C_LTO_H
#define LLVM_C_LTO_H
#ifdef __cplusplus
#include <cstddef>
#else
#include <stddef.h>
#endif
#include <sys/types.h>
#ifndef __cplusplus
#if !defined(_MSC_VER)
#include <stdbool.h>
typedef bool lto_bool_t;
#else
/* MSVC in particular does not have anything like _Bool or bool in C, but we can
at least make sure the type is the same size. The implementation side will
use C++ bool. */
typedef unsigned char lto_bool_t;
#endif
#else
typedef bool lto_bool_t;
#endif
/**
* @defgroup LLVMCLTO LTO
* @ingroup LLVMC
*
* @{
*/
#define LTO_API_VERSION 20
/**
* \since prior to LTO_API_VERSION=3
*/
typedef enum {
LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, /* log2 of alignment */
LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0,
LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0,
LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0,
LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080,
LTO_SYMBOL_DEFINITION_MASK = 0x00000700,
LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100,
LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200,
LTO_SYMBOL_DEFINITION_WEAK = 0x00000300,
LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400,
LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500,
LTO_SYMBOL_SCOPE_MASK = 0x00003800,
LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800,
LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000,
LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000,
LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800,
LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800,
LTO_SYMBOL_COMDAT = 0x00004000,
LTO_SYMBOL_ALIAS = 0x00008000
} lto_symbol_attributes;
/**
* \since prior to LTO_API_VERSION=3
*/
typedef enum {
LTO_DEBUG_MODEL_NONE = 0,
LTO_DEBUG_MODEL_DWARF = 1
} lto_debug_model;
/**
* \since prior to LTO_API_VERSION=3
*/
typedef enum {
LTO_CODEGEN_PIC_MODEL_STATIC = 0,
LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1,
LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2,
LTO_CODEGEN_PIC_MODEL_DEFAULT = 3
} lto_codegen_model;
/** opaque reference to a loaded object module */
typedef struct LLVMOpaqueLTOModule *lto_module_t;
/** opaque reference to a code generator */
typedef struct LLVMOpaqueLTOCodeGenerator *lto_code_gen_t;
/** opaque reference to a thin code generator */
typedef struct LLVMOpaqueThinLTOCodeGenerator *thinlto_code_gen_t;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Returns a printable string.
*
* \since prior to LTO_API_VERSION=3
*/
extern const char*
lto_get_version(void);
/**
* Returns the last error string or NULL if last operation was successful.
*
* \since prior to LTO_API_VERSION=3
*/
extern const char*
lto_get_error_message(void);
/**
* Checks if a file is a loadable object file.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_module_is_object_file(const char* path);
/**
* Checks if a file is a loadable object compiled for requested target.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_module_is_object_file_for_target(const char* path,
const char* target_triple_prefix);
/**
* Return true if \p Buffer contains a bitcode file with ObjC code (category
* or class) in it.
*
* \since LTO_API_VERSION=20
*/
extern lto_bool_t
lto_module_has_objc_category(const void *mem, size_t length);
/**
* Checks if a buffer is a loadable object file.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t lto_module_is_object_file_in_memory(const void *mem,
size_t length);
/**
* Checks if a buffer is a loadable object compiled for requested target.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_module_is_object_file_in_memory_for_target(const void* mem, size_t length,
const char* target_triple_prefix);
/**
* Loads an object file from disk.
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_module_t
lto_module_create(const char* path);
/**
* Loads an object file from memory.
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_module_t
lto_module_create_from_memory(const void* mem, size_t length);
/**
* Loads an object file from memory with an extra path argument.
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=9
*/
extern lto_module_t
lto_module_create_from_memory_with_path(const void* mem, size_t length,
const char *path);
/**
* \brief Loads an object file in its own context.
*
* Loads an object file in its own LLVMContext. This function call is
* thread-safe. However, modules created this way should not be merged into an
* lto_code_gen_t using \a lto_codegen_add_module().
*
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=11
*/
extern lto_module_t
lto_module_create_in_local_context(const void *mem, size_t length,
const char *path);
/**
* \brief Loads an object file in the codegen context.
*
* Loads an object file into the same context as \c cg. The module is safe to
* add using \a lto_codegen_add_module().
*
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=11
*/
extern lto_module_t
lto_module_create_in_codegen_context(const void *mem, size_t length,
const char *path, lto_code_gen_t cg);
/**
* Loads an object file from disk. The seek point of fd is not preserved.
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=5
*/
extern lto_module_t
lto_module_create_from_fd(int fd, const char *path, size_t file_size);
/**
* Loads an object file from disk. The seek point of fd is not preserved.
* Returns NULL on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=5
*/
extern lto_module_t
lto_module_create_from_fd_at_offset(int fd, const char *path, size_t file_size,
size_t map_size, off_t offset);
/**
* Frees all memory internally allocated by the module.
* Upon return the lto_module_t is no longer valid.
*
* \since prior to LTO_API_VERSION=3
*/
extern void
lto_module_dispose(lto_module_t mod);
/**
* Returns triple string which the object module was compiled under.
*
* \since prior to LTO_API_VERSION=3
*/
extern const char*
lto_module_get_target_triple(lto_module_t mod);
/**
* Sets triple string with which the object will be codegened.
*
* \since LTO_API_VERSION=4
*/
extern void
lto_module_set_target_triple(lto_module_t mod, const char *triple);
/**
* Returns the number of symbols in the object module.
*
* \since prior to LTO_API_VERSION=3
*/
extern unsigned int
lto_module_get_num_symbols(lto_module_t mod);
/**
* Returns the name of the ith symbol in the object module.
*
* \since prior to LTO_API_VERSION=3
*/
extern const char*
lto_module_get_symbol_name(lto_module_t mod, unsigned int index);
/**
* Returns the attributes of the ith symbol in the object module.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_symbol_attributes
lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index);
/**
* Returns the module's linker options.
*
* The linker options may consist of multiple flags. It is the linker's
* responsibility to split the flags using a platform-specific mechanism.
*
* \since LTO_API_VERSION=16
*/
extern const char*
lto_module_get_linkeropts(lto_module_t mod);
/**
* Diagnostic severity.
*
* \since LTO_API_VERSION=7
*/
typedef enum {
LTO_DS_ERROR = 0,
LTO_DS_WARNING = 1,
LTO_DS_REMARK = 3, // Added in LTO_API_VERSION=10.
LTO_DS_NOTE = 2
} lto_codegen_diagnostic_severity_t;
/**
* Diagnostic handler type.
* \p severity defines the severity.
* \p diag is the actual diagnostic.
* The diagnostic is not prefixed by any of severity keyword, e.g., 'error: '.
* \p ctxt is used to pass the context set with the diagnostic handler.
*
* \since LTO_API_VERSION=7
*/
typedef void (*lto_diagnostic_handler_t)(
lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt);
/**
* Set a diagnostic handler and the related context (void *).
* This is more general than lto_get_error_message, as the diagnostic handler
* can be called at anytime within lto.
*
* \since LTO_API_VERSION=7
*/
extern void lto_codegen_set_diagnostic_handler(lto_code_gen_t,
lto_diagnostic_handler_t,
void *);
/**
* Instantiates a code generator.
* Returns NULL on error (check lto_get_error_message() for details).
*
* All modules added using \a lto_codegen_add_module() must have been created
* in the same context as the codegen.
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_code_gen_t
lto_codegen_create(void);
/**
* \brief Instantiate a code generator in its own context.
*
* Instantiates a code generator in its own context. Modules added via \a
* lto_codegen_add_module() must have all been created in the same context,
* using \a lto_module_create_in_codegen_context().
*
* \since LTO_API_VERSION=11
*/
extern lto_code_gen_t
lto_codegen_create_in_local_context(void);
/**
* Frees all code generator and all memory it internally allocated.
* Upon return the lto_code_gen_t is no longer valid.
*
* \since prior to LTO_API_VERSION=3
*/
extern void
lto_codegen_dispose(lto_code_gen_t);
/**
* Add an object module to the set of modules for which code will be generated.
* Returns true on error (check lto_get_error_message() for details).
*
* \c cg and \c mod must both be in the same context. See \a
* lto_codegen_create_in_local_context() and \a
* lto_module_create_in_codegen_context().
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod);
/**
* Sets the object module for code generation. This will transfer the ownership
* of the module to the code generator.
*
* \c cg and \c mod must both be in the same context.
*
* \since LTO_API_VERSION=13
*/
extern void
lto_codegen_set_module(lto_code_gen_t cg, lto_module_t mod);
/**
* Sets if debug info should be generated.
* Returns true on error (check lto_get_error_message() for details).
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model);
/**
* Sets which PIC code model to generated.
* Returns true on error (check lto_get_error_message() for details).
*
* \since prior to LTO_API_VERSION=3
*/
extern lto_bool_t
lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model);
/**
* Sets the cpu to generate code for.
*
* \since LTO_API_VERSION=4
*/
extern void
lto_codegen_set_cpu(lto_code_gen_t cg, const char *cpu);
/**
* Sets the location of the assembler tool to run. If not set, libLTO
* will use gcc to invoke the assembler.
*
* \since LTO_API_VERSION=3
*/
extern void
lto_codegen_set_assembler_path(lto_code_gen_t cg, const char* path);
/**
* Sets extra arguments that libLTO should pass to the assembler.
*
* \since LTO_API_VERSION=4
*/
extern void
lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
int nargs);
/**
* Adds to a list of all global symbols that must exist in the final generated
* code. If a function is not listed there, it might be inlined into every usage
* and optimized away.
*
* \since prior to LTO_API_VERSION=3
*/
extern void
lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol);
/**
* Writes a new object file at the specified path that contains the
* merged contents of all modules added so far.
* Returns true on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=5
*/
extern lto_bool_t
lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path);
/**
* Generates code for all added modules into one native object file.
* This calls lto_codegen_optimize then lto_codegen_compile_optimized.
*
* On success returns a pointer to a generated mach-o/ELF buffer and
* length set to the buffer size. The buffer is owned by the
* lto_code_gen_t and will be freed when lto_codegen_dispose()
* is called, or lto_codegen_compile() is called again.
* On failure, returns NULL (check lto_get_error_message() for details).
*
* \since prior to LTO_API_VERSION=3
*/
extern const void*
lto_codegen_compile(lto_code_gen_t cg, size_t* length);
/**
* Generates code for all added modules into one native object file.
* This calls lto_codegen_optimize then lto_codegen_compile_optimized (instead
* of returning a generated mach-o/ELF buffer, it writes to a file).
*
* The name of the file is written to name. Returns true on error.
*
* \since LTO_API_VERSION=5
*/
extern lto_bool_t
lto_codegen_compile_to_file(lto_code_gen_t cg, const char** name);
/**
* Runs optimization for the merged module. Returns true on error.
*
* \since LTO_API_VERSION=12
*/
extern lto_bool_t
lto_codegen_optimize(lto_code_gen_t cg);
/**
* Generates code for the optimized merged module into one native object file.
* It will not run any IR optimizations on the merged module.
*
* On success returns a pointer to a generated mach-o/ELF buffer and length set
* to the buffer size. The buffer is owned by the lto_code_gen_t and will be
* freed when lto_codegen_dispose() is called, or
* lto_codegen_compile_optimized() is called again. On failure, returns NULL
* (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=12
*/
extern const void*
lto_codegen_compile_optimized(lto_code_gen_t cg, size_t* length);
/**
* Returns the runtime API version.
*
* \since LTO_API_VERSION=12
*/
extern unsigned int
lto_api_version(void);
/**
* Sets options to help debug codegen bugs.
*
* \since prior to LTO_API_VERSION=3
*/
extern void
lto_codegen_debug_options(lto_code_gen_t cg, const char *);
/**
* Initializes LLVM disassemblers.
* FIXME: This doesn't really belong here.
*
* \since LTO_API_VERSION=5
*/
extern void
lto_initialize_disassembler(void);
/**
* Sets if we should run internalize pass during optimization and code
* generation.
*
* \since LTO_API_VERSION=14
*/
extern void
lto_codegen_set_should_internalize(lto_code_gen_t cg,
lto_bool_t ShouldInternalize);
/**
* \brief Set whether to embed uselists in bitcode.
*
* Sets whether \a lto_codegen_write_merged_modules() should embed uselists in
* output bitcode. This should be turned on for all -save-temps output.
*
* \since LTO_API_VERSION=15
*/
extern void
lto_codegen_set_should_embed_uselists(lto_code_gen_t cg,
lto_bool_t ShouldEmbedUselists);
/**
* @}
* @defgroup LLVMCTLTO ThinLTO
* @ingroup LLVMC
*
* @{
*/
/**
* Type to wrap a single object returned by ThinLTO.
*
* \since LTO_API_VERSION=18
*/
typedef struct {
const char *Buffer;
size_t Size;
} LTOObjectBuffer;
/**
* Instantiates a ThinLTO code generator.
* Returns NULL on error (check lto_get_error_message() for details).
*
*
* The ThinLTOCodeGenerator is not intended to be reuse for multiple
* compilation: the model is that the client adds modules to the generator and
* ask to perform the ThinLTO optimizations / codegen, and finally destroys the
* codegenerator.
*
* \since LTO_API_VERSION=18
*/
extern thinlto_code_gen_t thinlto_create_codegen(void);
/**
* Frees the generator and all memory it internally allocated.
* Upon return the thinlto_code_gen_t is no longer valid.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_dispose(thinlto_code_gen_t cg);
/**
* Add a module to a ThinLTO code generator. Identifier has to be unique among
* all the modules in a code generator. The data buffer stays owned by the
* client, and is expected to be available for the entire lifetime of the
* thinlto_code_gen_t it is added to.
*
* On failure, returns NULL (check lto_get_error_message() for details).
*
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_add_module(thinlto_code_gen_t cg,
const char *identifier, const char *data,
int length);
/**
* Optimize and codegen all the modules added to the codegenerator using
* ThinLTO. Resulting objects are accessible using thinlto_module_get_object().
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_process(thinlto_code_gen_t cg);
/**
* Returns the number of object files produced by the ThinLTO CodeGenerator.
*
* It usually matches the number of input files, but this is not a guarantee of
* the API and may change in future implementation, so the client should not
* assume it.
*
* \since LTO_API_VERSION=18
*/
extern unsigned int thinlto_module_get_num_objects(thinlto_code_gen_t cg);
/**
* Returns a reference to the ith object file produced by the ThinLTO
* CodeGenerator.
*
* Client should use \p thinlto_module_get_num_objects() to get the number of
* available objects.
*
* \since LTO_API_VERSION=18
*/
extern LTOObjectBuffer thinlto_module_get_object(thinlto_code_gen_t cg,
unsigned int index);
/**
* Sets which PIC code model to generate.
* Returns true on error (check lto_get_error_message() for details).
*
* \since LTO_API_VERSION=18
*/
extern lto_bool_t thinlto_codegen_set_pic_model(thinlto_code_gen_t cg,
lto_codegen_model);
/**
* @}
* @defgroup LLVMCTLTO_CACHING ThinLTO Cache Control
* @ingroup LLVMCTLTO
*
* These entry points control the ThinLTO cache. The cache is intended to
* support incremental build, and thus needs to be persistent accross build.
* The client enabled the cache by supplying a path to an existing directory.
* The code generator will use this to store objects files that may be reused
* during a subsequent build.
* To avoid filling the disk space, a few knobs are provided:
* - The pruning interval limit the frequency at which the garbage collector
* will try to scan the cache directory to prune it from expired entries.
* Setting to -1 disable the pruning (default).
* - The pruning expiration time indicates to the garbage collector how old an
* entry needs to be to be removed.
* - Finally, the garbage collector can be instructed to prune the cache till
* the occupied space goes below a threshold.
* @{
*/
/**
* Sets the path to a directory to use as a cache storage for incremental build.
* Setting this activates caching.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg,
const char *cache_dir);
/**
* Sets the cache pruning interval (in seconds). A negative value disable the
* pruning. An unspecified default value will be applied, and a value of 0 will
* be ignored.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_cache_pruning_interval(thinlto_code_gen_t cg,
int interval);
/**
* Sets the maximum cache size that can be persistent across build, in terms of
* percentage of the available space on the the disk. Set to 100 to indicate
* no limit, 50 to indicate that the cache size will not be left over half the
* available space. A value over 100 will be reduced to 100, a value of 0 will
* be ignored. An unspecified default value will be applied.
*
* The formula looks like:
* AvailableSpace = FreeSpace + ExistingCacheSize
* NewCacheSize = AvailableSpace * P/100
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_final_cache_size_relative_to_available_space(
thinlto_code_gen_t cg, unsigned percentage);
/**
* Sets the expiration (in seconds) for an entry in the cache. An unspecified
* default value will be applied. A value of 0 will be ignored.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_cache_entry_expiration(thinlto_code_gen_t cg,
unsigned expiration);
/**
* @}
*/
/**
* Sets the path to a directory to use as a storage for temporary bitcode files.
* The intention is to make the bitcode files available for debugging at various
* stage of the pipeline.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_savetemps_dir(thinlto_code_gen_t cg,
const char *save_temps_dir);
/**
* Sets the cpu to generate code for.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const char *cpu);
/**
* Disable CodeGen, only run the stages till codegen and stop. The output will
* be bitcode.
*
* \since LTO_API_VERSION=19
*/
extern void thinlto_codegen_disable_codegen(thinlto_code_gen_t cg,
lto_bool_t disable);
/**
* Perform CodeGen only: disable all other stages.
*
* \since LTO_API_VERSION=19
*/
extern void thinlto_codegen_set_codegen_only(thinlto_code_gen_t cg,
lto_bool_t codegen_only);
/**
* Parse -mllvm style debug options.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_debug_options(const char *const *options, int number);
/**
* Test if a module has support for ThinLTO linking.
*
* \since LTO_API_VERSION=18
*/
extern lto_bool_t lto_module_is_thinlto(lto_module_t mod);
/**
* Adds a symbol to the list of global symbols that must exist in the final
* generated code. If a function is not listed there, it might be inlined into
* every usage and optimized away. For every single module, the functions
* referenced from code outside of the ThinLTO modules need to be added here.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_add_must_preserve_symbol(thinlto_code_gen_t cg,
const char *name,
int length);
/**
* Adds a symbol to the list of global symbols that are cross-referenced between
* ThinLTO files. If the ThinLTO CodeGenerator can ensure that every
* references from a ThinLTO module to this symbol is optimized away, then
* the symbol can be discarded.
*
* \since LTO_API_VERSION=18
*/
extern void thinlto_codegen_add_cross_referenced_symbol(thinlto_code_gen_t cg,
const char *name,
int length);
#ifdef __cplusplus
}
#endif
/**
* @}
*/
#endif /* LLVM_C_LTO_H */

View File

@@ -0,0 +1,3 @@
Installation guidelines:
https://gitlab.psi.ch/Pmodules/buildblocks/wikis/Matlab

View File

@@ -0,0 +1,10 @@
#%Module1.0
module-whatis "MATLAB"
module-url "http://ch.mathworks.com/"
module-license "MathWorks"
module-maintainer "Ivan Usov <ivan.usov@psi.ch>"
module-help "MATLAB (matrix laboratory) is a multi-paradigm numerical computing environment. A proprietary programming language developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, C#, Java, Fortran and Python."
setenv MATLAB $PREFIX
prepend-path LM_LICENSE_FILE $PREFIX/licenses/license.dat

5
Tools/HDFView/HDFView Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
declare -r bindir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
exec "${bindir}/../libexec/hdfview.sh" 1> /dev/null 2>&1 &

40
Tools/HDFView/README.md Normal file
View File

@@ -0,0 +1,40 @@
# Build HDFView module
## Notations
Please read [this document](https://gitlab.psi.ch/Pmodules/documentation/wikis/Development/Notations) for commonly used notations and environment variables.
## Setup environment
Set
1. `GRP='Tools'`
2. `P=HDFView`
3. `V` to the HDFView version to install
4. `PREFIX=$PMODULES_ROOT/$GRP/$P/$V`
5. `BUILDBLOCK_DIR` to the directory of this file.
6. `MODULEFILES_DIR=$PMODULES_ROOT/$GRP/modulefiles`.
7. `RELEASE` to the release of the module
## Download
Download the package from https://www.hdfgroup.org/downloads/hdfview/. The compressed tar-file contains a shell-script installer.
## Install the package
1. Unpack the downloaded tar-file
2. `cd "$PMODULES_ROOT/Tools"`.
3. Run the installer script
4. Accept the license
5. Answer 'no' to the question "Do you want to include the subdirectory HDFView-$V-Linux?"
6. HDFView will be installed into `$PREFIX`
## Post-install
1. `mkdir "$PREFIX"/{bin,libexec}`
1. `mv "$PREFIX/hdfview.sh" "$PREFIX/libexec"`
2. `install --mode 0755 "$BUILDBLOCK_DIR/HDFView" "$PREFIX/bin"`
## Install files for Pmodules
1. `install --mode 0644 "$BUILDBLOCK_DIR/modulefile" "$MODULEFILES_DIR/$P/$V"`
2. `echo "$RELEASE" > "$MODULEFILES_DIR/$P/.release-$V"`

20
Tools/HDFView/modulefile Normal file
View File

@@ -0,0 +1,20 @@
#%Module1.0
module-whatis "viewer for HDF files"
module-url "https://www.hdfgroup.org/downloads/hdfview/"
module-license "see \$HDFVIEW_DIR/share/doc/COPYING"
module-maintainer "Achim Gsell <achim.gsell@psi.ch>"
module-help "
HDFView is a visual tool written in Java for browsing and editing HDF
(HDF5 and HDF4) files. Using HDFView, you can:
- View a file hierarchy in a tree structure
- Create new files, add or delete groups and datasets
- View and modify the content of a dataset
- Add, delete and modify attributes
HDFView uses the Java HDF Object Package, which implements HDF4 and HDF5
data objects in an object-oriented form.
"

View File

@@ -1 +1,3 @@
gnuplot/5.0.4 unstable
gnuplot/4.6.3 stable
gnuplot/5.0.0 stable
gnuplot/5.2.0 stable

View File

@@ -1,5 +1,7 @@
#!/usr/bin/env modbuild
SOURCE_URL="https://sourceforge.net/projects/gnuplot/files/$P/$V/$P-$V.tar.gz"
pbuild::configure() {
"${MODULE_SRCDIR}"/configure \
--prefix="${PREFIX}" \