diff --git a/CMakeLists.txt b/CMakeLists.txt
index 02a93d5..4aa704c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,6 +10,8 @@ include(FindPkgConfig)
include(FindPackageHandleStandardArgs)
include(color_msg)
+find_package(MPI)
+
option(BUILD_SHARED_LIBS "Build shared libraries." OFF)
option(BUILD_STATIC_LIBS "Build static libraries." ON)
option(ENABLE_SHARP "Enable SHARP support." ON)
@@ -42,18 +44,6 @@ ENDIF(BUILD_PYTHON)
MESSAGE(STATUS "Using the target ${CosmoTool_local} to build python module")
-find_package(ZLIB)
-find_library(ZLIB_LIBRARY z)
-find_library(DL_LIBRARY dl)
-find_library(RT_LIBRARY rt)
-if (RT_LIBRARY)
- SET(RT_DEP rt)
- message(STATUS "RT found, linking against it")
-else()
- SET(RT_DEP)
-endif()
-find_library(MATH_LIBRARY m)
-
include(${CMAKE_SOURCE_DIR}/external/external_build.cmake)
IF(YORICK_SUPPORT)
@@ -67,6 +57,9 @@ IF(YORICK_SUPPORT)
ENDIF(YORICK_SUPPORT)
find_program(CYTHON NAMES cython3 cython)
+find_library(ZLIB_LIBRARY z)
+find_library(DL_LIBRARY dl)
+find_library(MATH_LIBRARY m)
set(NETCDF_FIND_REQUIRED ${YORICK_SUPPORT})
set(GSL_FIND_REQUIRED TRUE)
@@ -79,12 +72,14 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A toolbox for impatient cosmologists")
SET(CPACK_PACKAGE_VENDOR "Guilhem Lavaux")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE_CeCILL_V2")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
-SET(CPACK_PACKAGE_VERSION_MINOR "3")
-SET(CPACK_PACKAGE_VERSION_PATCH "4${EXTRA_VERSION}")
+SET(CPACK_PACKAGE_VERSION_MINOR "2")
+SET(CPACK_PACKAGE_VERSION_PATCH "3${EXTRA_VERSION}")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CosmoToolbox-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
SET(CPACK_STRIP_FILES "lib/libCosmoTool.so")
-SET(CPACK_SOURCE_IGNORE_FILES
-"/CVS/;/\\\\.git/;/\\\\.svn/;\\\\.swp$;\\\\.#;/#;.*~;cscope.*;/CMakeFiles/;.*\\\\.cmake;Makefile")
+SET(CPACK_SOURCE_IGNORE_FILES "/CVS/;/\\\\.git/;/\\\\.svn/;\\\\.swp$;\\\\.#;/#;.*~;cscope.*;/CMakeFiles/;.*\\\\.cmake;Makefile")
+
+include_directories( ${MPI_C_INCLUDE_PATH})
+
add_subdirectory(src)
add_subdirectory(sample)
diff --git a/MANIFEST.in b/MANIFEST.in
index 105a2d6..5c4f363 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,5 +1,4 @@
include .gitignore
-include pyproject.toml
include CMakeLists.txt
include FindNumPy.cmake
include FindPyLibs.cmake
@@ -17,17 +16,14 @@ include doc/source/cpplibrary.rst
include doc/source/index.rst
include doc/source/intro.rst
include doc/source/pythonmodule.rst
-include external/config.guess
-include external/config.sub
include external/external_build.cmake
-include external/libsharp-8d51946.tar.gz
+include external/libsharp-6077806.tar.gz
include external/omptl-20120422.tar.bz2
include external/patch-omptl
include python/CMakeLists.txt
include python/_cosmo_bispectrum.cpp
include python/_cosmo_cic.pyx
include python/_cosmo_power.pyx
-include python/_cosmomath.pyx
include python/_cosmotool.pyx
include python/_fast_interp.pyx
include python/_project.pyx
@@ -97,7 +93,6 @@ include sample/testkd3.cpp
include setup.py
include src/CMakeLists.txt
include src/algo.hpp
-include src/numpy_adaptors.hpp
include src/bqueue.hpp
include src/bqueue.tcc
include src/bsp_simple.hpp
diff --git a/builder/build-wheels.sh b/builder/build-wheels.sh
index 8f529dd..ac343fe 100755
--- a/builder/build-wheels.sh
+++ b/builder/build-wheels.sh
@@ -8,15 +8,12 @@ export CC CXX
# Install a system package required by our library
#yum install -y atlas-devel
-yum install -y cmake3 gsl-devel zlib-devel fftw3-devel libffi-devel hdf5 hdf5-devel
+yum install -y cmake3 gsl-devel zlib-devel fftw3-devel
ln -fs /usr/bin/cmake3 /usr/bin/cmake
-test -d /io/wheelhouse || mkdir /io/wheelhouse
-test -d /io/wheelhouse/fix || mkdir /io/wheelhouse/fix
-
-ALL_PYTHON="cp39-cp39 cp310-cp310"
+ALL_PYTHON="cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39"
# Compile wheels
for pkg in $ALL_PYTHON; do
@@ -24,12 +21,12 @@ for pkg in $ALL_PYTHON; do
# "${PYBIN}/pip" install -r /io/dev-requirements.txt
"${PYBIN}/pip" install setuptools wheel Cython
"${PYBIN}/pip" install -r /io/requirements.txt
- "${PYBIN}/pip" wheel -vvv /io/ -w /io/wheelhouse/
+ "${PYBIN}/pip" wheel -vvv /io/ -w wheelhouse/
done
# Bundle external shared libraries into the wheels
-for whl in /io/wheelhouse/cosmotool*linux*.whl; do
- auditwheel repair "$whl" --plat $PLAT -w /io/wheelhouse/fix
+for whl in wheelhouse/cosmotool*.whl; do
+ auditwheel repair "$whl" --plat $PLAT -w /io/wheelhouse/
done
# Install packages and test
diff --git a/builder/start.sh b/builder/start.sh
index 31f95f0..9fbc185 100755
--- a/builder/start.sh
+++ b/builder/start.sh
@@ -9,4 +9,4 @@ if ! [ -e ${d}/setup.py ] ; then
exit 1
fi
-podman run -ti --rm -e PLAT=manylinux2014_x86_64 -v ${d}:/io:Z quay.io/pypa/manylinux2014_x86_64 /io/builder/build-wheels.sh
+podman run -ti --rm -e PLAT=manylinux2010_x86_64 -v ${d}:/io:Z quay.io/pypa/manylinux2010_x86_64 /io/builder/build-wheels.sh
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 3f62832..333a565 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -1,6 +1,6 @@
package:
name: cosmotool
- version: "1.3.0"
+ version: "1.2.3"
source:
git_rev: a86c9a8
diff --git a/external/config.guess b/external/config.guess
deleted file mode 100755
index 7f76b62..0000000
--- a/external/config.guess
+++ /dev/null
@@ -1,1754 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright 1992-2022 Free Software Foundation, Inc.
-
-# shellcheck disable=SC2006,SC2268 # see below for rationale
-
-timestamp='2022-01-09'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see .
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
-#
-# Please send patches to .
-
-
-# The "shellcheck disable" line above the timestamp inhibits complaints
-# about features and limitations of the classic Bourne shell that were
-# superseded or lifted in POSIX. However, this script identifies a wide
-# variety of pre-POSIX systems that do not have POSIX shells at all, and
-# even some reasonably current systems (Solaris 10 as case-in-point) still
-# have a pre-POSIX /bin/sh.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Options:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to ."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-# Just in case it came from the environment.
-GUESS=
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
- # prevent multiple calls if $tmp is already set
- test "$tmp" && return 0
- : "${TMPDIR=/tmp}"
- # shellcheck disable=SC2039,SC3028
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
- dummy=$tmp/dummy
- case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
- ,,) echo "int x;" > "$dummy.c"
- for driver in cc gcc c89 c99 ; do
- if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD=$driver
- break
- fi
- done
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
- esac
-}
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case $UNAME_SYSTEM in
-Linux|GNU|GNU/*)
- LIBC=unknown
-
- set_cc_for_build
- cat <<-EOF > "$dummy.c"
- #include
- #if defined(__UCLIBC__)
- LIBC=uclibc
- #elif defined(__dietlibc__)
- LIBC=dietlibc
- #elif defined(__GLIBC__)
- LIBC=gnu
- #else
- #include
- /* First heuristic to detect musl libc. */
- #ifdef __DEFINED_va_list
- LIBC=musl
- #endif
- #endif
- EOF
- cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
- eval "$cc_set_libc"
-
- # Second heuristic to detect musl libc.
- if [ "$LIBC" = unknown ] &&
- command -v ldd >/dev/null &&
- ldd --version 2>&1 | grep -q ^musl; then
- LIBC=musl
- fi
-
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- if [ "$LIBC" = unknown ]; then
- LIBC=gnu
- fi
- ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
- /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
- echo unknown)`
- case $UNAME_MACHINE_ARCH in
- aarch64eb) machine=aarch64_be-unknown ;;
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- sh5el) machine=sh5le-unknown ;;
- earmv*)
- arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine=${arch}${endian}-unknown
- ;;
- *) machine=$UNAME_MACHINE_ARCH-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently (or will in the future) and ABI.
- case $UNAME_MACHINE_ARCH in
- earm*)
- os=netbsdelf
- ;;
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ELF__
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # Determine ABI tags.
- case $UNAME_MACHINE_ARCH in
- earm*)
- expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case $UNAME_VERSION in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- GUESS=$machine-${os}${release}${abi-}
- ;;
- *:Bitrig:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
- ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
- ;;
- *:SecBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
- GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
- ;;
- *:LibertyBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
- ;;
- *:MidnightBSD:*:*)
- GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
- ;;
- *:ekkoBSD:*:*)
- GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
- ;;
- *:SolidBSD:*:*)
- GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
- ;;
- *:OS108:*:*)
- GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
- ;;
- macppc:MirBSD:*:*)
- GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
- ;;
- *:MirBSD:*:*)
- GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
- ;;
- *:Sortix:*:*)
- GUESS=$UNAME_MACHINE-unknown-sortix
- ;;
- *:Twizzler:*:*)
- GUESS=$UNAME_MACHINE-unknown-twizzler
- ;;
- *:Redox:*:*)
- GUESS=$UNAME_MACHINE-unknown-redox
- ;;
- mips:OSF1:*.*)
- GUESS=mips-dec-osf1
- ;;
- alpha:OSF1:*:*)
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- trap '' 0
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case $ALPHA_CPU_TYPE in
- "EV4 (21064)")
- UNAME_MACHINE=alpha ;;
- "EV4.5 (21064)")
- UNAME_MACHINE=alpha ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE=alpha ;;
- "EV5 (21164)")
- UNAME_MACHINE=alphaev5 ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE=alphaev56 ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE=alphapca56 ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE=alphapca57 ;;
- "EV6 (21264)")
- UNAME_MACHINE=alphaev6 ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE=alphaev67 ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE=alphaev69 ;;
- "EV7 (21364)")
- UNAME_MACHINE=alphaev7 ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE=alphaev79 ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
- ;;
- Amiga*:UNIX_System_V:4.0:*)
- GUESS=m68k-unknown-sysv4
- ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- GUESS=$UNAME_MACHINE-unknown-amigaos
- ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- GUESS=$UNAME_MACHINE-unknown-morphos
- ;;
- *:OS/390:*:*)
- GUESS=i370-ibm-openedition
- ;;
- *:z/VM:*:*)
- GUESS=s390-ibm-zvmoe
- ;;
- *:OS400:*:*)
- GUESS=powerpc-ibm-os400
- ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- GUESS=arm-acorn-riscix$UNAME_RELEASE
- ;;
- arm*:riscos:*:*|arm*:RISCOS:*:*)
- GUESS=arm-unknown-riscos
- ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- GUESS=hppa1.1-hitachi-hiuxmpp
- ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- case `(/bin/universe) 2>/dev/null` in
- att) GUESS=pyramid-pyramid-sysv3 ;;
- *) GUESS=pyramid-pyramid-bsd ;;
- esac
- ;;
- NILE*:*:*:dcosx)
- GUESS=pyramid-pyramid-svr4
- ;;
- DRS?6000:unix:4.0:6*)
- GUESS=sparc-icl-nx6
- ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) GUESS=sparc-icl-nx7 ;;
- esac
- ;;
- s390x:SunOS:*:*)
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
- ;;
- sun4H:SunOS:5.*:*)
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=sparc-hal-solaris2$SUN_REL
- ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=sparc-sun-solaris2$SUN_REL
- ;;
- i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- GUESS=i386-pc-auroraux$UNAME_RELEASE
- ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- set_cc_for_build
- SUN_ARCH=i386
- # If there is a compiler, see if it is configured for 64-bit objects.
- # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- # This test works for both compilers.
- if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- SUN_ARCH=x86_64
- fi
- fi
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
- ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=sparc-sun-solaris3$SUN_REL
- ;;
- sun4*:SunOS:*:*)
- case `/usr/bin/arch -k` in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
- GUESS=sparc-sun-sunos$SUN_REL
- ;;
- sun3*:SunOS:*:*)
- GUESS=m68k-sun-sunos$UNAME_RELEASE
- ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case `/bin/arch` in
- sun3)
- GUESS=m68k-sun-sunos$UNAME_RELEASE
- ;;
- sun4)
- GUESS=sparc-sun-sunos$UNAME_RELEASE
- ;;
- esac
- ;;
- aushp:SunOS:*:*)
- GUESS=sparc-auspex-sunos$UNAME_RELEASE
- ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- GUESS=m68k-atari-mint$UNAME_RELEASE
- ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- GUESS=m68k-atari-mint$UNAME_RELEASE
- ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- GUESS=m68k-atari-mint$UNAME_RELEASE
- ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- GUESS=m68k-milan-mint$UNAME_RELEASE
- ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- GUESS=m68k-hades-mint$UNAME_RELEASE
- ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- GUESS=m68k-unknown-mint$UNAME_RELEASE
- ;;
- m68k:machten:*:*)
- GUESS=m68k-apple-machten$UNAME_RELEASE
- ;;
- powerpc:machten:*:*)
- GUESS=powerpc-apple-machten$UNAME_RELEASE
- ;;
- RISC*:Mach:*:*)
- GUESS=mips-dec-mach_bsd4.3
- ;;
- RISC*:ULTRIX:*:*)
- GUESS=mips-dec-ultrix$UNAME_RELEASE
- ;;
- VAX*:ULTRIX*:*:*)
- GUESS=vax-dec-ultrix$UNAME_RELEASE
- ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- GUESS=clipper-intergraph-clix$UNAME_RELEASE
- ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- set_cc_for_build
- sed 's/^ //' << EOF > "$dummy.c"
-#ifdef __cplusplus
-#include /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
- dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
- { echo "$SYSTEM_NAME"; exit; }
- GUESS=mips-mips-riscos$UNAME_RELEASE
- ;;
- Motorola:PowerMAX_OS:*:*)
- GUESS=powerpc-motorola-powermax
- ;;
- Motorola:*:4.3:PL8-*)
- GUESS=powerpc-harris-powermax
- ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- GUESS=powerpc-harris-powermax
- ;;
- Night_Hawk:Power_UNIX:*:*)
- GUESS=powerpc-harris-powerunix
- ;;
- m88k:CX/UX:7*:*)
- GUESS=m88k-harris-cxux7
- ;;
- m88k:*:4*:R4*)
- GUESS=m88k-motorola-sysv4
- ;;
- m88k:*:3*:R3*)
- GUESS=m88k-motorola-sysv3
- ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
- then
- if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
- test "$TARGET_BINARY_INTERFACE"x = x
- then
- GUESS=m88k-dg-dgux$UNAME_RELEASE
- else
- GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
- fi
- else
- GUESS=i586-dg-dgux$UNAME_RELEASE
- fi
- ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- GUESS=m88k-dolphin-sysv3
- ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- GUESS=m88k-motorola-sysv3
- ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- GUESS=m88k-tektronix-sysv3
- ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- GUESS=m68k-tektronix-bsd
- ;;
- *:IRIX*:*:*)
- IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
- GUESS=mips-sgi-irix$IRIX_REL
- ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- GUESS=i386-ibm-aix
- ;;
- ia64:AIX:*:*)
- if test -x /usr/bin/oslevel ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
- fi
- GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
- ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- set_cc_for_build
- sed 's/^ //' << EOF > "$dummy.c"
- #include
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
- then
- GUESS=$SYSTEM_NAME
- else
- GUESS=rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- GUESS=rs6000-ibm-aix3.2.4
- else
- GUESS=rs6000-ibm-aix3.2
- fi
- ;;
- *:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if test -x /usr/bin/lslpp ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
- else
- IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
- fi
- GUESS=$IBM_ARCH-ibm-aix$IBM_REV
- ;;
- *:AIX:*:*)
- GUESS=rs6000-ibm-aix
- ;;
- ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- GUESS=romp-ibm-bsd4.4
- ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
- ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- GUESS=rs6000-bull-bosx
- ;;
- DPX/2?00:B.O.S.:*:*)
- GUESS=m68k-bull-sysv3
- ;;
- 9000/[34]??:4.3bsd:1.*:*)
- GUESS=m68k-hp-bsd
- ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- GUESS=m68k-hp-bsd4.4
- ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
- case $UNAME_MACHINE in
- 9000/31?) HP_ARCH=m68000 ;;
- 9000/[34]??) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if test -x /usr/bin/getconf; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case $sc_cpu_version in
- 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
- 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case $sc_kernel_bits in
- 32) HP_ARCH=hppa2.0n ;;
- 64) HP_ARCH=hppa2.0w ;;
- '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if test "$HP_ARCH" = ""; then
- set_cc_for_build
- sed 's/^ //' << EOF > "$dummy.c"
-
- #define _HPUX_SOURCE
- #include
- #include
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if test "$HP_ARCH" = hppa2.0w
- then
- set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
- grep -q __LP64__
- then
- HP_ARCH=hppa2.0w
- else
- HP_ARCH=hppa64
- fi
- fi
- GUESS=$HP_ARCH-hp-hpux$HPUX_REV
- ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
- GUESS=ia64-hp-hpux$HPUX_REV
- ;;
- 3050*:HI-UX:*:*)
- set_cc_for_build
- sed 's/^ //' << EOF > "$dummy.c"
- #include
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
- { echo "$SYSTEM_NAME"; exit; }
- GUESS=unknown-hitachi-hiuxwe2
- ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- GUESS=hppa1.1-hp-bsd
- ;;
- 9000/8??:4.3bsd:*:*)
- GUESS=hppa1.0-hp-bsd
- ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- GUESS=hppa1.0-hp-mpeix
- ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- GUESS=hppa1.1-hp-osf
- ;;
- hp8??:OSF1:*:*)
- GUESS=hppa1.0-hp-osf
- ;;
- i*86:OSF1:*:*)
- if test -x /usr/sbin/sysversion ; then
- GUESS=$UNAME_MACHINE-unknown-osf1mk
- else
- GUESS=$UNAME_MACHINE-unknown-osf1
- fi
- ;;
- parisc*:Lites*:*:*)
- GUESS=hppa1.1-hp-lites
- ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- GUESS=c1-convex-bsd
- ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- GUESS=c34-convex-bsd
- ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- GUESS=c38-convex-bsd
- ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- GUESS=c4-convex-bsd
- ;;
- CRAY*Y-MP:*:*:*)
- CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
- GUESS=ymp-cray-unicos$CRAY_REL
- ;;
- CRAY*[A-Z]90:*:*:*)
- echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
- GUESS=t90-cray-unicos$CRAY_REL
- ;;
- CRAY*T3E:*:*:*)
- CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
- GUESS=alphaev5-cray-unicosmk$CRAY_REL
- ;;
- CRAY*SV1:*:*:*)
- CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
- GUESS=sv1-cray-unicos$CRAY_REL
- ;;
- *:UNICOS/mp:*:*)
- CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
- GUESS=craynv-cray-unicosmp$CRAY_REL
- ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
- GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
- ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
- GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
- ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
- ;;
- sparc*:BSD/OS:*:*)
- GUESS=sparc-unknown-bsdi$UNAME_RELEASE
- ;;
- *:BSD/OS:*:*)
- GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
- ;;
- arm:FreeBSD:*:*)
- UNAME_PROCESSOR=`uname -p`
- set_cc_for_build
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
- FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
- GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
- else
- FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
- GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
- fi
- ;;
- *:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- case $UNAME_PROCESSOR in
- amd64)
- UNAME_PROCESSOR=x86_64 ;;
- i386)
- UNAME_PROCESSOR=i586 ;;
- esac
- FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
- GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
- ;;
- i*:CYGWIN*:*)
- GUESS=$UNAME_MACHINE-pc-cygwin
- ;;
- *:MINGW64*:*)
- GUESS=$UNAME_MACHINE-pc-mingw64
- ;;
- *:MINGW*:*)
- GUESS=$UNAME_MACHINE-pc-mingw32
- ;;
- *:MSYS*:*)
- GUESS=$UNAME_MACHINE-pc-msys
- ;;
- i*:PW*:*)
- GUESS=$UNAME_MACHINE-pc-pw32
- ;;
- *:SerenityOS:*:*)
- GUESS=$UNAME_MACHINE-pc-serenity
- ;;
- *:Interix*:*)
- case $UNAME_MACHINE in
- x86)
- GUESS=i586-pc-interix$UNAME_RELEASE
- ;;
- authenticamd | genuineintel | EM64T)
- GUESS=x86_64-unknown-interix$UNAME_RELEASE
- ;;
- IA64)
- GUESS=ia64-unknown-interix$UNAME_RELEASE
- ;;
- esac ;;
- i*:UWIN*:*)
- GUESS=$UNAME_MACHINE-pc-uwin
- ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- GUESS=x86_64-pc-cygwin
- ;;
- prep*:SunOS:5.*:*)
- SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
- GUESS=powerpcle-unknown-solaris2$SUN_REL
- ;;
- *:GNU:*:*)
- # the GNU system
- GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
- GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
- GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
- ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
- GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
- GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
- ;;
- *:Minix:*:*)
- GUESS=$UNAME_MACHINE-unknown-minix
- ;;
- aarch64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- aarch64_be:Linux:*:*)
- UNAME_MACHINE=aarch64_be
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- arm*:Linux:*:*)
- set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- else
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
- GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
- else
- GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
- fi
- fi
- ;;
- avr32*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- cris:Linux:*:*)
- GUESS=$UNAME_MACHINE-axis-linux-$LIBC
- ;;
- crisv32:Linux:*:*)
- GUESS=$UNAME_MACHINE-axis-linux-$LIBC
- ;;
- e2k:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- frv:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- hexagon:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- i*86:Linux:*:*)
- GUESS=$UNAME_MACHINE-pc-linux-$LIBC
- ;;
- ia64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- k1om:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- m32r*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- m68*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- mips:Linux:*:* | mips64:Linux:*:*)
- set_cc_for_build
- IS_GLIBC=0
- test x"${LIBC}" = xgnu && IS_GLIBC=1
- sed 's/^ //' << EOF > "$dummy.c"
- #undef CPU
- #undef mips
- #undef mipsel
- #undef mips64
- #undef mips64el
- #if ${IS_GLIBC} && defined(_ABI64)
- LIBCABI=gnuabi64
- #else
- #if ${IS_GLIBC} && defined(_ABIN32)
- LIBCABI=gnuabin32
- #else
- LIBCABI=${LIBC}
- #endif
- #endif
-
- #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
- CPU=mipsisa64r6
- #else
- #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
- CPU=mipsisa32r6
- #else
- #if defined(__mips64)
- CPU=mips64
- #else
- CPU=mips
- #endif
- #endif
- #endif
-
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- MIPS_ENDIAN=el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- MIPS_ENDIAN=
- #else
- MIPS_ENDIAN=
- #endif
- #endif
-EOF
- cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
- eval "$cc_set_vars"
- test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
- ;;
- mips64el:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- openrisc*:Linux:*:*)
- GUESS=or1k-unknown-linux-$LIBC
- ;;
- or32:Linux:*:* | or1k*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- padre:Linux:*:*)
- GUESS=sparc-unknown-linux-$LIBC
- ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- GUESS=hppa64-unknown-linux-$LIBC
- ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
- PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
- *) GUESS=hppa-unknown-linux-$LIBC ;;
- esac
- ;;
- ppc64:Linux:*:*)
- GUESS=powerpc64-unknown-linux-$LIBC
- ;;
- ppc:Linux:*:*)
- GUESS=powerpc-unknown-linux-$LIBC
- ;;
- ppc64le:Linux:*:*)
- GUESS=powerpc64le-unknown-linux-$LIBC
- ;;
- ppcle:Linux:*:*)
- GUESS=powerpcle-unknown-linux-$LIBC
- ;;
- riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
- ;;
- sh64*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- sh*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- tile*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- vax:Linux:*:*)
- GUESS=$UNAME_MACHINE-dec-linux-$LIBC
- ;;
- x86_64:Linux:*:*)
- set_cc_for_build
- LIBCABI=$LIBC
- if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_X32 >/dev/null
- then
- LIBCABI=${LIBC}x32
- fi
- fi
- GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
- ;;
- xtensa*:Linux:*:*)
- GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- GUESS=i386-sequent-sysv4
- ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
- ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- GUESS=$UNAME_MACHINE-pc-os2-emx
- ;;
- i*86:XTS-300:*:STOP)
- GUESS=$UNAME_MACHINE-unknown-stop
- ;;
- i*86:atheos:*:*)
- GUESS=$UNAME_MACHINE-unknown-atheos
- ;;
- i*86:syllable:*:*)
- GUESS=$UNAME_MACHINE-pc-syllable
- ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- GUESS=i386-unknown-lynxos$UNAME_RELEASE
- ;;
- i*86:*DOS:*:*)
- GUESS=$UNAME_MACHINE-pc-msdosdjgpp
- ;;
- i*86:*:4.*:*)
- UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
- else
- GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
- fi
- ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
- else
- GUESS=$UNAME_MACHINE-pc-sysv32
- fi
- ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
- # Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configure will decide that
- # this is a cross-build.
- GUESS=i586-pc-msdosdjgpp
- ;;
- Intel:Mach:3*:*)
- GUESS=i386-pc-mach3
- ;;
- paragon:*:*:*)
- GUESS=i860-intel-osf1
- ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
- fi
- ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- GUESS=m68010-convergent-sysv
- ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- GUESS=m68k-convergent-sysv
- ;;
- M680?0:D-NIX:5.3:*)
- GUESS=m68k-diab-dnix
- ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- OS_REL='.3'
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- GUESS=m68k-unknown-lynxos$UNAME_RELEASE
- ;;
- mc68030:UNIX_System_V:4.*:*)
- GUESS=m68k-atari-sysv4
- ;;
- TSUNAMI:LynxOS:2.*:*)
- GUESS=sparc-unknown-lynxos$UNAME_RELEASE
- ;;
- rs6000:LynxOS:2.*:*)
- GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
- ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
- ;;
- SM[BE]S:UNIX_SV:*:*)
- GUESS=mips-dde-sysv$UNAME_RELEASE
- ;;
- RM*:ReliantUNIX-*:*:*)
- GUESS=mips-sni-sysv4
- ;;
- RM*:SINIX-*:*:*)
- GUESS=mips-sni-sysv4
- ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- GUESS=$UNAME_MACHINE-sni-sysv4
- else
- GUESS=ns32k-sni-sysv
- fi
- ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says
- GUESS=i586-unisys-sysv4
- ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes .
- # How about differentiating between stratus architectures? -djm
- GUESS=hppa1.1-stratus-sysv4
- ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- GUESS=i860-stratus-sysv4
- ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- GUESS=$UNAME_MACHINE-stratus-vos
- ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- GUESS=hppa1.1-stratus-vos
- ;;
- mc68*:A/UX:*:*)
- GUESS=m68k-apple-aux$UNAME_RELEASE
- ;;
- news*:NEWS-OS:6*:*)
- GUESS=mips-sony-newsos6
- ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if test -d /usr/nec; then
- GUESS=mips-nec-sysv$UNAME_RELEASE
- else
- GUESS=mips-unknown-sysv$UNAME_RELEASE
- fi
- ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- GUESS=powerpc-be-beos
- ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- GUESS=powerpc-apple-beos
- ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- GUESS=i586-pc-beos
- ;;
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- GUESS=i586-pc-haiku
- ;;
- x86_64:Haiku:*:*)
- GUESS=x86_64-unknown-haiku
- ;;
- SX-4:SUPER-UX:*:*)
- GUESS=sx4-nec-superux$UNAME_RELEASE
- ;;
- SX-5:SUPER-UX:*:*)
- GUESS=sx5-nec-superux$UNAME_RELEASE
- ;;
- SX-6:SUPER-UX:*:*)
- GUESS=sx6-nec-superux$UNAME_RELEASE
- ;;
- SX-7:SUPER-UX:*:*)
- GUESS=sx7-nec-superux$UNAME_RELEASE
- ;;
- SX-8:SUPER-UX:*:*)
- GUESS=sx8-nec-superux$UNAME_RELEASE
- ;;
- SX-8R:SUPER-UX:*:*)
- GUESS=sx8r-nec-superux$UNAME_RELEASE
- ;;
- SX-ACE:SUPER-UX:*:*)
- GUESS=sxace-nec-superux$UNAME_RELEASE
- ;;
- Power*:Rhapsody:*:*)
- GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
- ;;
- *:Rhapsody:*:*)
- GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
- ;;
- arm64:Darwin:*:*)
- GUESS=aarch64-apple-darwin$UNAME_RELEASE
- ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p`
- case $UNAME_PROCESSOR in
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- if command -v xcode-select > /dev/null 2> /dev/null && \
- ! xcode-select --print-path > /dev/null 2> /dev/null ; then
- # Avoid executing cc if there is no toolchain installed as
- # cc will be a stub that puts up a graphical alert
- # prompting the user to install developer tools.
- CC_FOR_BUILD=no_compiler_found
- else
- set_cc_for_build
- fi
- if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
- elif test "$UNAME_PROCESSOR" = i386 ; then
- # uname -m returns i386 or x86_64
- UNAME_PROCESSOR=$UNAME_MACHINE
- fi
- GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
- ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = x86; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
- ;;
- *:QNX:*:4*)
- GUESS=i386-pc-qnx
- ;;
- NEO-*:NONSTOP_KERNEL:*:*)
- GUESS=neo-tandem-nsk$UNAME_RELEASE
- ;;
- NSE-*:NONSTOP_KERNEL:*:*)
- GUESS=nse-tandem-nsk$UNAME_RELEASE
- ;;
- NSR-*:NONSTOP_KERNEL:*:*)
- GUESS=nsr-tandem-nsk$UNAME_RELEASE
- ;;
- NSV-*:NONSTOP_KERNEL:*:*)
- GUESS=nsv-tandem-nsk$UNAME_RELEASE
- ;;
- NSX-*:NONSTOP_KERNEL:*:*)
- GUESS=nsx-tandem-nsk$UNAME_RELEASE
- ;;
- *:NonStop-UX:*:*)
- GUESS=mips-compaq-nonstopux
- ;;
- BS2000:POSIX*:*:*)
- GUESS=bs2000-siemens-sysv
- ;;
- DS/*:UNIX_System_V:*:*)
- GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
- ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "${cputype-}" = 386; then
- UNAME_MACHINE=i386
- elif test "x${cputype-}" != x; then
- UNAME_MACHINE=$cputype
- fi
- GUESS=$UNAME_MACHINE-unknown-plan9
- ;;
- *:TOPS-10:*:*)
- GUESS=pdp10-unknown-tops10
- ;;
- *:TENEX:*:*)
- GUESS=pdp10-unknown-tenex
- ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- GUESS=pdp10-dec-tops20
- ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- GUESS=pdp10-xkl-tops20
- ;;
- *:TOPS-20:*:*)
- GUESS=pdp10-unknown-tops20
- ;;
- *:ITS:*:*)
- GUESS=pdp10-unknown-its
- ;;
- SEI:*:*:SEIUX)
- GUESS=mips-sei-seiux$UNAME_RELEASE
- ;;
- *:DragonFly:*:*)
- DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
- GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
- ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case $UNAME_MACHINE in
- A*) GUESS=alpha-dec-vms ;;
- I*) GUESS=ia64-dec-vms ;;
- V*) GUESS=vax-dec-vms ;;
- esac ;;
- *:XENIX:*:SysV)
- GUESS=i386-pc-xenix
- ;;
- i*86:skyos:*:*)
- SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
- GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
- ;;
- i*86:rdos:*:*)
- GUESS=$UNAME_MACHINE-pc-rdos
- ;;
- i*86:Fiwix:*:*)
- GUESS=$UNAME_MACHINE-pc-fiwix
- ;;
- *:AROS:*:*)
- GUESS=$UNAME_MACHINE-unknown-aros
- ;;
- x86_64:VMkernel:*:*)
- GUESS=$UNAME_MACHINE-unknown-esx
- ;;
- amd64:Isilon\ OneFS:*:*)
- GUESS=x86_64-unknown-onefs
- ;;
- *:Unleashed:*:*)
- GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
- ;;
-esac
-
-# Do we have a guess based on uname results?
-if test "x$GUESS" != x; then
- echo "$GUESS"
- exit
-fi
-
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <
-#include
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include
-#endif
-#endif
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
-#include
-#if defined (BSD)
-#if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-#else
-#if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#else
- printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#endif
-#else
- printf ("vax-dec-bsd\n"); exit (0);
-#endif
-#else
-#if defined(_SIZE_T_) || defined(SIGLOST)
- struct utsname un;
- uname (&un);
- printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
- struct utsname *un;
- uname (&un);
- printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
- printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
-
-echo "$0: unable to guess system type" >&2
-
-case $UNAME_MACHINE:$UNAME_SYSTEM in
- mips:Linux | mips64:Linux)
- # If we got here on MIPS GNU/Linux, output extra information.
- cat >&2 <&2 <&2 </dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = "$UNAME_MACHINE"
-UNAME_RELEASE = "$UNAME_RELEASE"
-UNAME_SYSTEM = "$UNAME_SYSTEM"
-UNAME_VERSION = "$UNAME_VERSION"
-EOF
-fi
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/external/config.sub b/external/config.sub
deleted file mode 100755
index dba16e8..0000000
--- a/external/config.sub
+++ /dev/null
@@ -1,1890 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright 1992-2022 Free Software Foundation, Inc.
-
-# shellcheck disable=SC2006,SC2268 # see below for rationale
-
-timestamp='2022-01-03'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see .
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to .
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-# The "shellcheck disable" line above the timestamp inhibits complaints
-# about features and limitations of the classic Bourne shell that were
-# superseded or lifted in POSIX. However, this script identifies a wide
-# variety of pre-POSIX systems that do not have POSIX shells at all, and
-# even some reasonably current systems (Solaris 10 as case-in-point) still
-# have a pre-POSIX /bin/sh.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Options:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to ."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2022 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo "$1"
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Split fields of configuration type
-# shellcheck disable=SC2162
-saved_IFS=$IFS
-IFS="-" read field1 field2 field3 field4 <&2
- exit 1
- ;;
- *-*-*-*)
- basic_machine=$field1-$field2
- basic_os=$field3-$field4
- ;;
- *-*-*)
- # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
- # parts
- maybe_os=$field2-$field3
- case $maybe_os in
- nto-qnx* | linux-* | uclinux-uclibc* \
- | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
- | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
- | storm-chaos* | os2-emx* | rtmk-nova*)
- basic_machine=$field1
- basic_os=$maybe_os
- ;;
- android-linux)
- basic_machine=$field1-unknown
- basic_os=linux-android
- ;;
- *)
- basic_machine=$field1-$field2
- basic_os=$field3
- ;;
- esac
- ;;
- *-*)
- # A lone config we happen to match not fitting any pattern
- case $field1-$field2 in
- decstation-3100)
- basic_machine=mips-dec
- basic_os=
- ;;
- *-*)
- # Second component is usually, but not always the OS
- case $field2 in
- # Prevent following clause from handling this valid os
- sun*os*)
- basic_machine=$field1
- basic_os=$field2
- ;;
- zephyr*)
- basic_machine=$field1-unknown
- basic_os=$field2
- ;;
- # Manufacturers
- dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
- | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
- | unicom* | ibm* | next | hp | isi* | apollo | altos* \
- | convergent* | ncr* | news | 32* | 3600* | 3100* \
- | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
- | ultra | tti* | harris | dolphin | highlevel | gould \
- | cbm | ns | masscomp | apple | axis | knuth | cray \
- | microblaze* | sim | cisco \
- | oki | wec | wrs | winbond)
- basic_machine=$field1-$field2
- basic_os=
- ;;
- *)
- basic_machine=$field1
- basic_os=$field2
- ;;
- esac
- ;;
- esac
- ;;
- *)
- # Convert single-component short-hands not valid as part of
- # multi-component configurations.
- case $field1 in
- 386bsd)
- basic_machine=i386-pc
- basic_os=bsd
- ;;
- a29khif)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- basic_os=scout
- ;;
- alliant)
- basic_machine=fx80-alliant
- basic_os=
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- basic_os=
- ;;
- am29k)
- basic_machine=a29k-none
- basic_os=bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- basic_os=sysv
- ;;
- amiga)
- basic_machine=m68k-unknown
- basic_os=
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- basic_os=amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- basic_os=sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- basic_os=sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- basic_os=bsd
- ;;
- aros)
- basic_machine=i386-pc
- basic_os=aros
- ;;
- aux)
- basic_machine=m68k-apple
- basic_os=aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- basic_os=dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- basic_os=linux
- ;;
- cegcc)
- basic_machine=arm-unknown
- basic_os=cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- basic_os=bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- basic_os=bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- basic_os=bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- basic_os=bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- basic_os=bsd
- ;;
- cray)
- basic_machine=j90-cray
- basic_os=unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- basic_os=
- ;;
- da30)
- basic_machine=m68k-da30
- basic_os=
- ;;
- decstation | pmax | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- basic_os=
- ;;
- delta88)
- basic_machine=m88k-motorola
- basic_os=sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- basic_os=dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- basic_os=msdosdjgpp
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- basic_os=ebmon
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- basic_os=ose
- ;;
- gmicro)
- basic_machine=tron-gmicro
- basic_os=sysv
- ;;
- go32)
- basic_machine=i386-pc
- basic_os=go32
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- basic_os=hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- basic_os=xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- basic_os=hms
- ;;
- harris)
- basic_machine=m88k-harris
- basic_os=sysv3
- ;;
- hp300 | hp300hpux)
- basic_machine=m68k-hp
- basic_os=hpux
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- basic_os=bsd
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- basic_os=osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- basic_os=proelf
- ;;
- i386mach)
- basic_machine=i386-mach
- basic_os=mach
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- basic_os=sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- basic_os=linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- basic_os=sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- basic_os=sysv
- ;;
- mingw64)
- basic_machine=x86_64-pc
- basic_os=mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- basic_os=mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- basic_os=mingw32ce
- ;;
- monitor)
- basic_machine=m68k-rom68k
- basic_os=coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- basic_os=morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- basic_os=moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- basic_os=msdos
- ;;
- msys)
- basic_machine=i686-pc
- basic_os=msys
- ;;
- mvs)
- basic_machine=i370-ibm
- basic_os=mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- basic_os=nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- basic_os=sysv4
- ;;
- netbsd386)
- basic_machine=i386-pc
- basic_os=netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- basic_os=linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- basic_os=newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- basic_os=newsos
- ;;
- necv70)
- basic_machine=v70-nec
- basic_os=sysv
- ;;
- nh3000)
- basic_machine=m68k-harris
- basic_os=cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- basic_os=cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- basic_os=nindy
- ;;
- mon960)
- basic_machine=i960-intel
- basic_os=mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- basic_os=nonstopux
- ;;
- os400)
- basic_machine=powerpc-ibm
- basic_os=os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- basic_os=ose
- ;;
- os68k)
- basic_machine=m68k-none
- basic_os=os68k
- ;;
- paragon)
- basic_machine=i860-intel
- basic_os=osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- basic_os=linux
- ;;
- psp)
- basic_machine=mipsallegrexel-sony
- basic_os=psp
- ;;
- pw32)
- basic_machine=i586-unknown
- basic_os=pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- basic_os=rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- basic_os=rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- basic_os=coff
- ;;
- sa29200)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- sei)
- basic_machine=mips-sei
- basic_os=seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- basic_os=
- ;;
- sps7)
- basic_machine=m68k-bull
- basic_os=sysv2
- ;;
- st2000)
- basic_machine=m68k-tandem
- basic_os=
- ;;
- stratus)
- basic_machine=i860-stratus
- basic_os=sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- basic_os=
- ;;
- sun2os3)
- basic_machine=m68000-sun
- basic_os=sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- basic_os=sunos4
- ;;
- sun3)
- basic_machine=m68k-sun
- basic_os=
- ;;
- sun3os3)
- basic_machine=m68k-sun
- basic_os=sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- basic_os=sunos4
- ;;
- sun4)
- basic_machine=sparc-sun
- basic_os=
- ;;
- sun4os3)
- basic_machine=sparc-sun
- basic_os=sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- basic_os=sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- basic_os=solaris2
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- basic_os=
- ;;
- sv1)
- basic_machine=sv1-cray
- basic_os=unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- basic_os=dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- basic_os=unicos
- ;;
- t90)
- basic_machine=t90-cray
- basic_os=unicos
- ;;
- toad1)
- basic_machine=pdp10-xkl
- basic_os=tops20
- ;;
- tpf)
- basic_machine=s390x-ibm
- basic_os=tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- basic_os=udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- basic_os=sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- basic_os=none
- ;;
- vaxv)
- basic_machine=vax-dec
- basic_os=sysv
- ;;
- vms)
- basic_machine=vax-dec
- basic_os=vms
- ;;
- vsta)
- basic_machine=i386-pc
- basic_os=vsta
- ;;
- vxworks960)
- basic_machine=i960-wrs
- basic_os=vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- basic_os=vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- basic_os=vxworks
- ;;
- xbox)
- basic_machine=i686-pc
- basic_os=mingw32
- ;;
- ymp)
- basic_machine=ymp-cray
- basic_os=unicos
- ;;
- *)
- basic_machine=$1
- basic_os=
- ;;
- esac
- ;;
-esac
-
-# Decode 1-component or ad-hoc basic machines
-case $basic_machine in
- # Here we handle the default manufacturer of certain CPU types. It is in
- # some cases the only manufacturer, in others, it is the most popular.
- w89k)
- cpu=hppa1.1
- vendor=winbond
- ;;
- op50n)
- cpu=hppa1.1
- vendor=oki
- ;;
- op60c)
- cpu=hppa1.1
- vendor=oki
- ;;
- ibm*)
- cpu=i370
- vendor=ibm
- ;;
- orion105)
- cpu=clipper
- vendor=highlevel
- ;;
- mac | mpw | mac-mpw)
- cpu=m68k
- vendor=apple
- ;;
- pmac | pmac-mpw)
- cpu=powerpc
- vendor=apple
- ;;
-
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- cpu=m68000
- vendor=att
- ;;
- 3b*)
- cpu=we32k
- vendor=att
- ;;
- bluegene*)
- cpu=powerpc
- vendor=ibm
- basic_os=cnk
- ;;
- decsystem10* | dec10*)
- cpu=pdp10
- vendor=dec
- basic_os=tops10
- ;;
- decsystem20* | dec20*)
- cpu=pdp10
- vendor=dec
- basic_os=tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- cpu=m68k
- vendor=motorola
- ;;
- dpx2*)
- cpu=m68k
- vendor=bull
- basic_os=sysv3
- ;;
- encore | umax | mmax)
- cpu=ns32k
- vendor=encore
- ;;
- elxsi)
- cpu=elxsi
- vendor=elxsi
- basic_os=${basic_os:-bsd}
- ;;
- fx2800)
- cpu=i860
- vendor=alliant
- ;;
- genix)
- cpu=ns32k
- vendor=ns
- ;;
- h3050r* | hiux*)
- cpu=hppa1.1
- vendor=hitachi
- basic_os=hiuxwe2
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- cpu=m68000
- vendor=hp
- ;;
- hp9k3[2-9][0-9])
- cpu=m68k
- vendor=hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- cpu=hppa1.1
- vendor=hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- cpu=hppa1.0
- vendor=hp
- ;;
- i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv32
- ;;
- i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv4
- ;;
- i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=sysv
- ;;
- i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
- vendor=pc
- basic_os=solaris2
- ;;
- j90 | j90-cray)
- cpu=j90
- vendor=cray
- basic_os=${basic_os:-unicos}
- ;;
- iris | iris4d)
- cpu=mips
- vendor=sgi
- case $basic_os in
- irix*)
- ;;
- *)
- basic_os=irix4
- ;;
- esac
- ;;
- miniframe)
- cpu=m68000
- vendor=convergent
- ;;
- *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
- cpu=m68k
- vendor=atari
- basic_os=mint
- ;;
- news-3600 | risc-news)
- cpu=mips
- vendor=sony
- basic_os=newsos
- ;;
- next | m*-next)
- cpu=m68k
- vendor=next
- case $basic_os in
- openstep*)
- ;;
- nextstep*)
- ;;
- ns2*)
- basic_os=nextstep2
- ;;
- *)
- basic_os=nextstep3
- ;;
- esac
- ;;
- np1)
- cpu=np1
- vendor=gould
- ;;
- op50n-* | op60c-*)
- cpu=hppa1.1
- vendor=oki
- basic_os=proelf
- ;;
- pa-hitachi)
- cpu=hppa1.1
- vendor=hitachi
- basic_os=hiuxwe2
- ;;
- pbd)
- cpu=sparc
- vendor=tti
- ;;
- pbb)
- cpu=m68k
- vendor=tti
- ;;
- pc532)
- cpu=ns32k
- vendor=pc532
- ;;
- pn)
- cpu=pn
- vendor=gould
- ;;
- power)
- cpu=power
- vendor=ibm
- ;;
- ps2)
- cpu=i386
- vendor=ibm
- ;;
- rm[46]00)
- cpu=mips
- vendor=siemens
- ;;
- rtpc | rtpc-*)
- cpu=romp
- vendor=ibm
- ;;
- sde)
- cpu=mipsisa32
- vendor=sde
- basic_os=${basic_os:-elf}
- ;;
- simso-wrs)
- cpu=sparclite
- vendor=wrs
- basic_os=vxworks
- ;;
- tower | tower-32)
- cpu=m68k
- vendor=ncr
- ;;
- vpp*|vx|vx-*)
- cpu=f301
- vendor=fujitsu
- ;;
- w65)
- cpu=w65
- vendor=wdc
- ;;
- w89k-*)
- cpu=hppa1.1
- vendor=winbond
- basic_os=proelf
- ;;
- none)
- cpu=none
- vendor=none
- ;;
- leon|leon[3-9])
- cpu=sparc
- vendor=$basic_machine
- ;;
- leon-*|leon[3-9]-*)
- cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
- ;;
-
- *-*)
- # shellcheck disable=SC2162
- saved_IFS=$IFS
- IFS="-" read cpu vendor <&2
- exit 1
- ;;
- esac
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $vendor in
- digital*)
- vendor=dec
- ;;
- commodore*)
- vendor=cbm
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if test x$basic_os != x
-then
-
-# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
-# set os.
-case $basic_os in
- gnu/linux*)
- kernel=linux
- os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
- ;;
- os2-emx)
- kernel=os2
- os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
- ;;
- nto-qnx*)
- kernel=nto
- os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
- ;;
- *-*)
- # shellcheck disable=SC2162
- saved_IFS=$IFS
- IFS="-" read kernel os <&2
- exit 1
- ;;
-esac
-
-# As a final step for OS-related things, validate the OS-kernel combination
-# (given a valid OS), if there is a kernel.
-case $kernel-$os in
- linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
- | linux-musl* | linux-relibc* | linux-uclibc* )
- ;;
- uclinux-uclibc* )
- ;;
- -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
- # These are just libc implementations, not actual OSes, and thus
- # require a kernel.
- echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
- exit 1
- ;;
- kfreebsd*-gnu* | kopensolaris*-gnu*)
- ;;
- vxworks-simlinux | vxworks-simwindows | vxworks-spe)
- ;;
- nto-qnx*)
- ;;
- os2-emx)
- ;;
- *-eabi* | *-gnueabi*)
- ;;
- -*)
- # Blank kernel with real OS is always fine.
- ;;
- *-*)
- echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
- exit 1
- ;;
-esac
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-case $vendor in
- unknown)
- case $cpu-$os in
- *-riscix*)
- vendor=acorn
- ;;
- *-sunos*)
- vendor=sun
- ;;
- *-cnk* | *-aix*)
- vendor=ibm
- ;;
- *-beos*)
- vendor=be
- ;;
- *-hpux*)
- vendor=hp
- ;;
- *-mpeix*)
- vendor=hp
- ;;
- *-hiux*)
- vendor=hitachi
- ;;
- *-unos*)
- vendor=crds
- ;;
- *-dgux*)
- vendor=dg
- ;;
- *-luna*)
- vendor=omron
- ;;
- *-genix*)
- vendor=ns
- ;;
- *-clix*)
- vendor=intergraph
- ;;
- *-mvs* | *-opened*)
- vendor=ibm
- ;;
- *-os400*)
- vendor=ibm
- ;;
- s390-* | s390x-*)
- vendor=ibm
- ;;
- *-ptx*)
- vendor=sequent
- ;;
- *-tpf*)
- vendor=ibm
- ;;
- *-vxsim* | *-vxworks* | *-windiss*)
- vendor=wrs
- ;;
- *-aux*)
- vendor=apple
- ;;
- *-hms*)
- vendor=hitachi
- ;;
- *-mpw* | *-macos*)
- vendor=apple
- ;;
- *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
- vendor=atari
- ;;
- *-vos*)
- vendor=stratus
- ;;
- esac
- ;;
-esac
-
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
-exit
-
-# Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/external/external_build.cmake b/external/external_build.cmake
index 997cc4d..bbe3e77 100644
--- a/external/external_build.cmake
+++ b/external/external_build.cmake
@@ -2,19 +2,16 @@ include(FindOpenMP)
OPTION(ENABLE_OPENMP "Set to Yes if Healpix and/or you need openMP" OFF)
-SET(SOURCE_PREFIX ${CMAKE_SOURCE_DIR})
SET(FFTW_URL "http://www.fftw.org/fftw-3.3.3.tar.gz" CACHE STRING "URL to download FFTW from")
SET(EIGEN_URL "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.bz2" CACHE STRING "URL to download Eigen from")
SET(GENGETOPT_URL "ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-2.22.5.tar.gz" CACHE STRING "URL to download gengetopt from")
-SET(HDF5_URL "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz" CACHE STRING "URL to download HDF5 from")
-SET(NETCDF_URL "https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz" CACHE STRING "URL to download NetCDF from")
-SET(NETCDFCXX_URL "https://github.com/Unidata/netcdf-cxx4/archive/v4.3.1.tar.gz" CACHE STRING "URL to download NetCDF-C++ from")
-SET(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz" CACHE STRING "URL to download Boost from")
-SET(GSL_URL "https://ftpmirror.gnu.org/gsl/gsl-2.7.tar.gz" CACHE STRING "URL to download GSL from ")
+SET(HDF5_URL "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.18/src/hdf5-1.8.18.tar.bz2" CACHE STRING "URL to download HDF5 from")
+SET(NETCDF_URL "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.5.0.tar.gz" CACHE STRING "URL to download NetCDF from")
+SET(NETCDFCXX_URL "https://github.com/Unidata/netcdf-cxx4/archive/v4.3.0.tar.gz" CACHE STRING "URL to download NetCDF-C++ from")
+SET(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.bz2" CACHE STRING "URL to download Boost from")
+SET(GSL_URL "ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz" CACHE STRING "URL to download GSL from ")
mark_as_advanced(FFTW_URL EIGEN_URL HDF5_URL NETCDF_URL BOOST_URL GSL_URL)
-file(MAKE_DIRECTORY ${SOURCE_PREFIX}/downloads)
-
SET(all_deps)
MACRO(CHECK_CHANGE_STATE VAR)
@@ -39,13 +36,12 @@ CHECK_CHANGE_STATE(INTERNAL_DLIB DLIB_INCLUDE_DIR DLIB_LIBRARIES)
IF(ENABLE_OPENMP)
IF (NOT OPENMP_FOUND)
- MESSAGE(NOTICE "No known compiler option for enabling OpenMP")
- ELSE()
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_C_FLAGS}")
+ MESSAGE(ERROR "No known compiler option for enabling OpenMP")
ENDIF(NOT OPENMP_FOUND)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_C_FLAGS}")
ENDIF(ENABLE_OPENMP)
@@ -59,25 +55,17 @@ if (ENABLE_SHARP)
SET(DEP_BUILD ${BUILD_PREFIX}/sharp-prefix/src/sharp/auto)
IF(NOT ENABLE_OPENMP)
SET(SHARP_OPENMP --disable-openmp)
- ELSE()
- SET(SHARP_OPENMP)
ENDIF()
SET(CUTILS_LIBRARY ${DEP_BUILD}/lib/libc_utils.a)
SET(FFTPACK_LIBRARY ${DEP_BUILD}/lib/libfftpack.a)
SET(SHARP_LIBRARY ${DEP_BUILD}/lib/libsharp.a)
SET(SHARP_LIBRARIES ${SHARP_LIBRARY} ${FFTPACK_LIBRARY} ${CUTILS_LIBRARY})
SET(SHARP_INCLUDE_PATH ${DEP_BUILD}/include)
- message(STATUS "Flags: ${CMAKE_C_FLAGS}")
ExternalProject_Add(sharp
- URL ${CMAKE_SOURCE_DIR}/external/libsharp-8d51946.tar.gz
+ URL ${CMAKE_SOURCE_DIR}/external/libsharp-6077806.tar.gz
PREFIX ${BUILD_PREFIX}/sharp-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
BUILD_IN_SOURCE 1
- CONFIGURE_COMMAND
- cp -f ${CMAKE_SOURCE_DIR}/external/config.guess . &&
- cp -f ${CMAKE_SOURCE_DIR}/external/config.sub . &&
- autoconf &&
- ./configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS}" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" --prefix=${DEP_BUILD} ${SHARP_OPENMP}
+ CONFIGURE_COMMAND autoconf && ./configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" --prefix=${DEP_BUILD} ${SHARP_OPENMP}
INSTALL_COMMAND echo "No install"
BUILD_BYPRODUCTS ${SHARP_LIBRARIES}
)
@@ -94,23 +82,27 @@ if (INTERNAL_HDF5)
ExternalProject_Add(hdf5
PREFIX ${BUILD_PREFIX}/hdf5-prefix
URL ${HDF5_URL}
- URL_HASH MD5=30172c75e436d7f2180e274071a4ca97
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
- CONFIGURE_COMMAND
- ${HDF5_SOURCE_DIR}/configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS}" "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" --prefix=${HDF5_BIN_DIR} --disable-shared --enable-cxx --enable-hl --enable-tools --with-pic
- INSTALL_COMMAND make install
+ URL_HASH MD5=29117bf488887f89888f9304c8ebea0b
+ CMAKE_ARGS
+ -DCMAKE_INSTALL_PREFIX=${EXT_INSTALL}
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ -DHDF5_BUILD_CPP_LIB=ON
+ -DHDF5_BUILD_TOOLS=ON
+ -DHDF5_BUILD_HL_LIB=ON
+ -DBUILD_SHARED_LIBS=OFF
)
SET(cosmotool_DEPS ${cosmotool_DEPS} hdf5)
SET(hdf5_built hdf5)
SET(ENV{HDF5_ROOT} ${HDF5_BIN_DIR})
SET(HDF5_ROOTDIR ${HDF5_BIN_DIR})
SET(CONFIGURE_LDFLAGS "${CONFIGURE_LDFLAGS} -L${HDF5_BIN_DIR}/lib")
- SET(CONFIGURE_LIBS "${CONFIGURE_LIBS} -ldl ${RT_LIBRARY}")
- set(HDF5_C_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5.a)
- set(HDF5_HL_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl.a)
- set(HDF5_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5.a CACHE STRING "HDF5 lib" FORCE)
- set(HDF5_HL_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_hl.a CACHE STRING "HDF5 HL lib" FORCE)
- set(HDF5_CXX_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_cpp.a CACHE STRING "HDF5 C++ lib" FORCE)
+ SET(CONFIGURE_LIBS "${CONFIGURE_LIBS} -ldl")
+ set(HDF5_C_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5-static.a)
+ set(HDF5_HL_STATIC_LIBRARY ${HDF5_BIN_DIR}/lib/libhdf5_hl-static.a)
+ set(HDF5_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5-static.a CACHE STRING "HDF5 lib" FORCE)
+ set(HDF5_HL_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_hl-static.a CACHE STRING "HDF5 HL lib" FORCE)
+ set(HDF5_CXX_LIBRARIES ${HDF5_BIN_DIR}/lib/libhdf5_cpp-static.a CACHE STRING "HDF5 C++ lib" FORCE)
SET(HDF5_INCLUDE_DIRS ${HDF5_BIN_DIR}/include CACHE STRING "HDF5 include path" FORCE)
mark_as_advanced(HDF5_LIBRARIES HDF5_CXX_LIBRARIES HDF5_INCLUDE_DIRS)
@@ -168,52 +160,43 @@ if (INTERNAL_NETCDF)
SET(NETCDF_CONFIG_COMMAND ${NETCDF_SOURCE_DIR}/configure
--prefix=${NETCDF_BIN_DIR} --libdir=${NETCDF_BIN_DIR}/lib
--enable-netcdf-4 --with-pic --disable-shared --disable-dap
- --disable-byterange --disable-cdmremote --disable-rpc --enable-cxx-4
+ --disable-cdmremote --disable-rpc --enable-cxx-4
--disable-examples ${EXTRA_NC_FLAGS} CC=${CMAKE_C_COMPILER}
CXX=${CMAKE_CXX_COMPILER})
list(INSERT CMAKE_PREFIX_PATH 0 ${EXT_INSTALL})
string(REPLACE ";" "|" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}")
ExternalProject_Add(netcdf
DEPENDS ${hdf5_built}
- URL_HASH MD5=f48ee01534365006934f0c63d4055ea0
PREFIX ${BUILD_PREFIX}/netcdf-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
URL ${NETCDF_URL}
- LIST_SEPARATOR |
- CMAKE_ARGS
+ LIST_SEPARATOR |
+ CMAKE_ARGS
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- -DNC_EXTRA_DEPS=${RT_DEP}
-DBUILD_SHARED_LIBS=OFF
-DBUILD_TESTING=OFF
-DCMAKE_BUILD_TYPE=Release
-DENABLE_NETCDF4=ON
- -DENABLE_BYTERANGE=FALSE
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON
- -DENABLE_DAP=OFF
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+ -DENABLE_DAP=OFF
-DCMAKE_INSTALL_PREFIX=${NETCDF_BIN_DIR}
-DHDF5_C_LIBRARY=${HDF5_C_STATIC_LIBRARY}
-DHDF5_HL_LIBRARY=${HDF5_HL_STATIC_LIBRARY}
-DHDF5_INCLUDE_DIR=${HDF5_INCLUDE_DIRS}
- -DCMAKE_INSTALL_LIBDIR=lib
+ -DCMAKE_INSTALL_LIBDIR=lib
)
SET(NETCDFCXX_SOURCE_DIR ${BUILD_PREFIX}/netcdf-c++-prefix/src/netcdf-c++)
ExternalProject_Add(netcdf-c++
DEPENDS ${hdf5_built} netcdf
PREFIX ${BUILD_PREFIX}/netcdf-c++-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
URL ${NETCDFCXX_URL}
CMAKE_ARGS
- -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DBUILD_SHARED_LIBS=OFF
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON
- -DHDF5_C_LIBRARY=${HDF5_C_STATIC_LIBRARY}
- -DHDF5_HL_LIBRARY=${HDF5_HL_STATIC_LIBRARY}
- -DHDF5_INCLUDE_DIR=${HDF5_INCLUDE_DIRS}
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_TESTING=OFF
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=${NETCDF_BIN_DIR}
@@ -251,8 +234,7 @@ if (INTERNAL_BOOST)
ExternalProject_Add(boost
URL ${BOOST_URL}
PREFIX ${BUILD_PREFIX}/boost-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
- URL_HASH MD5=f7050f554a65f6a42ece221eaeec1660
+ URL_HASH MD5=da07ca30dd1c0d1fdedbd487efee01bd
CONFIGURE_COMMAND
${BOOST_SOURCE_DIR}/bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/ext_build/boost
BUILD_IN_SOURCE 1
@@ -295,7 +277,6 @@ IF(INTERNAL_GSL)
ExternalProject_Add(gsl
URL ${GSL_URL}
PREFIX ${BUILD_PREFIX}/gsl-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
CONFIGURE_COMMAND ${GSL_SOURCE_DIR}/configure
--prefix=${EXT_INSTALL} --disable-shared
--with-pic
@@ -348,7 +329,6 @@ IF(INTERNAL_FFTW)
ExternalProject_Add(fftw
URL ${FFTW_URL}
PREFIX ${BUILD_PREFIX}/fftw-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
CONFIGURE_COMMAND
${FFTW_SOURCE}/configure
--prefix=${EXT_INSTALL}
@@ -378,7 +358,6 @@ IF (INTERNAL_EIGEN)
ExternalProject_Add(eigen
URL ${EIGEN_URL}
URL_HASH MD5=b9e98a200d2455f06db9c661c5610496
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
PREFIX ${BUILD_PREFIX}/eigen-prefix
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXT_INSTALL}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@@ -411,7 +390,6 @@ SET(cosmotool_DEPS ${cosmotool_DEPS} omptl)
SET(OMPTL_BUILD_DIR ${BUILD_PREFIX}/omptl-prefix/src/omptl)
ExternalProject_Add(omptl
PREFIX ${BUILD_PREFIX}/omptl-prefix
- DOWNLOAD_DIR ${SOURCE_PREFIX}/downloads
URL ${CMAKE_SOURCE_DIR}/external/omptl-20120422.tar.bz2
CONFIGURE_COMMAND echo "No configure"
BUILD_COMMAND echo "No build"
diff --git a/external/libsharp-8d51946.tar.gz b/external/libsharp-8d51946.tar.gz
deleted file mode 100644
index 7ca7602..0000000
Binary files a/external/libsharp-8d51946.tar.gz and /dev/null differ
diff --git a/external/patch-omptl b/external/patch-omptl
index 1386247..9ea9d28 100644
--- a/external/patch-omptl
+++ b/external/patch-omptl
@@ -1,6 +1,6 @@
diff -ur omptl.old/omptl_algorithm omptl/omptl_algorithm
---- omptl.old/omptl_algorithm 2022-06-19 08:21:39.815498672 +0200
-+++ omptl/omptl_algorithm 2022-06-19 08:21:52.953544672 +0200
+--- omptl.old/omptl_algorithm 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_algorithm 2021-06-20 15:40:29.000000000 +0200
@@ -20,7 +20,7 @@
#define OMPTL_ALGORITHM 1
@@ -23,13 +23,11 @@ diff -ur omptl.old/omptl_algorithm omptl/omptl_algorithm
#endif /* OMPTL_ALGORITHM */
diff -ur omptl.old/omptl_algorithm_par.h omptl/omptl_algorithm_par.h
---- omptl.old/omptl_algorithm_par.h 2022-06-19 08:21:39.816498675 +0200
-+++ omptl/omptl_algorithm_par.h 2022-06-19 08:23:50.705956964 +0200
-@@ -20,9 +20,10 @@
- #include
+--- omptl.old/omptl_algorithm_par.h 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_algorithm_par.h 2021-06-20 15:40:50.000000000 +0200
+@@ -21,8 +21,8 @@
#include
#include
-+#include
-#include
-#include
@@ -38,78 +36,7 @@ diff -ur omptl.old/omptl_algorithm_par.h omptl/omptl_algorithm_par.h
#include
-@@ -510,7 +511,7 @@
-
- typename std::vector::iterator result =
- std::find_if(results.begin(),results.end(),
-- std::bind2nd(std::not_equal_to(), last) );
-+ std::bind(std::not_equal_to(), std::placeholders::_1, last) );
-
- if ( result != results.end() )
- return *result;
-@@ -569,7 +570,7 @@
-
- const typename std::vector::iterator result
- = std::find_if(results.begin(), results.end(),
-- std::bind2nd(std::not_equal_to(), last) );
-+ std::bind(std::not_equal_to(), std::placeholders::_1, last) );
-
- if ( result != results.end() )
- return *result;
-@@ -654,7 +655,7 @@
-
- const typename std::vector::iterator
- result = std::find_if(results.begin(), results.end(),
-- std::bind2nd(std::not_equal_to(), last1));
-+ std::bind(std::not_equal_to(), std::placeholders::_1, last1));
-
- if ( result != results.end() )
- return *result;
-@@ -953,7 +954,7 @@
- results[t] = std::lower_bound(partitions[t].first, partitions[t].second, value, comp);
-
- const typename std::vector::iterator result =
-- std::find_if(results.begin(), results.end(), std::bind2nd(std::not_equal_to(), last) );
-+ std::find_if(results.begin(), results.end(), std::bind(std::not_equal_to(), std::placeholders::_1, last) );
-
- if (result != results.end())
- return *result;
-@@ -1179,7 +1180,7 @@
-
- namespace detail
- {
--
-+
- template
- Iterator _pivot_range(Iterator first, Iterator last,
- const typename std::iterator_traits::value_type pivot,
-@@ -1309,14 +1310,14 @@
- void random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
- const unsigned P)
- {
-- std::random_shuffle(first, last);
-+ std::shuffle(first, last, std::mt19937(std::random_device()()));
- }
-
- template
- void random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
- RandomNumberGenerator& rgen, const unsigned P)
- {
-- std::random_shuffle(first, last, rgen);
-+ std::shuffle(first, last, std::mt19937(std::random_device()()));
- }
-
- // Not (yet) parallelized, not straightforward due to possible dependencies
-@@ -1472,7 +1473,7 @@
- const T& new_value, const unsigned P)
- {
- return ::omptl::replace_copy_if(first, last, result,
-- std::bind2nd(std::equal_to(), old_value), new_value, P);
-+ std::bind(std::equal_to(), std::placeholders::_1, old_value), new_value, P);
- }
-
- template
-@@ -1700,7 +1701,7 @@
+@@ -1700,7 +1700,7 @@
std::vector pivot_used(pivots.size(), false); // can't be bool due to parallel write
@@ -118,56 +45,9 @@ diff -ur omptl.old/omptl_algorithm_par.h omptl/omptl_algorithm_par.h
assert(1u << max_depth <= P);
for (unsigned i = 0; i < max_depth; ++i)
{
-@@ -1781,7 +1782,7 @@
- std::cout << std::endl;
-
- std::cout << borders.size() << " " << partitions.size() << " " << P << std::endl;
--*/
-+*/
- // Round one: sort final partitions, split remaining
- #pragma omp parallel for
- for (int i = 0; i < int(partitions.size()); ++i)
-@@ -1814,7 +1815,7 @@
-
- const RandomAccessIterator begin = partitions[i].first;
- const RandomAccessIterator end = partitions[i].second;
--
-+
- const RandomAccessIterator middle =
- detail::_pivot_range(begin, end, pivots[pivot_index], comp);
- partitions[i ] = std::make_pair(begin, middle);
-diff -ur omptl.old/omptl_algorithm_ser.h omptl/omptl_algorithm_ser.h
---- omptl.old/omptl_algorithm_ser.h 2022-06-19 08:21:39.815498672 +0200
-+++ omptl/omptl_algorithm_ser.h 2022-06-19 08:21:52.960544697 +0200
-@@ -14,7 +14,7 @@
- // You should have received a copy of the GNU Lesser General Public
- // License along with this library; if not, write to the Free Software
- // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
--
-+#include
-
- namespace omptl
- {
-@@ -463,14 +463,14 @@
- void random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
- const unsigned P)
- {
-- return ::std::random_shuffle(first, last);
-+ return ::std::shuffle(first, last, std::mt19937(std::random_device()()));
- }
-
- template
- void random_shuffle(RandomAccessIterator first, RandomAccessIterator last,
- RandomNumberGenerator &rgen, const unsigned P)
- {
-- return ::std::random_shuffle(first, last, rgen);
-+ return ::std::shuffle(first, last, std::mt19937(std::random_device()()));
- }
-
- template
diff -ur omptl.old/omptl_numeric omptl/omptl_numeric
---- omptl.old/omptl_numeric 2022-06-19 08:21:39.816498675 +0200
-+++ omptl/omptl_numeric 2022-06-19 08:21:52.955544679 +0200
+--- omptl.old/omptl_numeric 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_numeric 2021-06-20 15:40:29.000000000 +0200
@@ -19,7 +19,7 @@
#define OMPTL_NUMERIC 1
@@ -193,8 +73,8 @@ diff -ur omptl.old/omptl_numeric omptl/omptl_numeric
#endif /* OMPTL_NUMERIC */
diff -ur omptl.old/omptl_numeric_extensions.h omptl/omptl_numeric_extensions.h
---- omptl.old/omptl_numeric_extensions.h 2022-06-19 08:21:39.815498672 +0200
-+++ omptl/omptl_numeric_extensions.h 2022-06-19 08:21:52.956544683 +0200
+--- omptl.old/omptl_numeric_extensions.h 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_numeric_extensions.h 2021-06-20 15:40:29.000000000 +0200
@@ -51,9 +51,9 @@
} // namespace
@@ -208,8 +88,8 @@ diff -ur omptl.old/omptl_numeric_extensions.h omptl/omptl_numeric_extensions.h
namespace omptl
diff -ur omptl.old/omptl_numeric_par.h omptl/omptl_numeric_par.h
---- omptl.old/omptl_numeric_par.h 2022-06-19 08:21:39.816498675 +0200
-+++ omptl/omptl_numeric_par.h 2022-06-19 08:21:52.957544686 +0200
+--- omptl.old/omptl_numeric_par.h 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_numeric_par.h 2021-06-20 15:40:29.000000000 +0200
@@ -23,8 +23,8 @@
#include
#include
@@ -222,8 +102,8 @@ diff -ur omptl.old/omptl_numeric_par.h omptl/omptl_numeric_par.h
namespace omptl
{
diff -ur omptl.old/omptl_tools.h omptl/omptl_tools.h
---- omptl.old/omptl_tools.h 2022-06-19 08:21:39.816498675 +0200
-+++ omptl/omptl_tools.h 2022-06-19 08:21:52.957544686 +0200
+--- omptl.old/omptl_tools.h 2012-04-22 16:29:41.000000000 +0200
++++ omptl/omptl_tools.h 2021-06-20 15:40:42.000000000 +0200
@@ -25,7 +25,7 @@
#include
#include
diff --git a/pyproject.toml b/pyproject.toml
deleted file mode 100644
index 7a031e7..0000000
--- a/pyproject.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[build-system]
-requires = ["setuptools","wheel","cython"]
-build-backend = "setuptools.build_meta"
-
-
-[tool.towncrier]
-directory = "changes"
-
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 1b3fe10..7eda7ac 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -2,7 +2,7 @@ set(CMAKE_SHARED_MODULE_PREFIX)
set(PYTHON_INCLUDES ${NUMPY_INCLUDE_DIRS} ${PYTHON_INCLUDE_PATH} ${CMAKE_SOURCE_DIR}/python)
-include_directories(${CMAKE_SOURCE_DIR}/python ${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src)
+include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_BINARY_DIR}/src)
IF(CYTHON)
add_custom_command(
@@ -69,10 +69,13 @@ target_link_libraries(_fast_interp PRIVATE ${CosmoTool_local} )
SET(ct_TARGETS _cosmotool _project _cosmo_power _cosmo_cic _fast_interp _cosmomath)
if (Boost_FOUND)
- message(STATUS "Building bispectrum support")
+ message(STATUS "Building bispectrum support (path = ${Boost_INCLUDE_DIRS})")
include_directories(${Boost_INCLUDE_DIRS})
add_library(_cosmo_bispectrum MODULE _cosmo_bispectrum.cpp)
target_link_libraries(_cosmo_bispectrum ${MATH_LIBRARY})
+ if(ENABLE_OPENMP)
+ set_target_properties(_cosmo_bispectrum PROPERTIES COMPILE_FLAGS "${OpenMP_CXX_FLAGS}" LINK_FLAGS "${OpenMP_CXX_FLAGS}")
+ endif()
if (Boost_DEP)
add_dependencies(_cosmo_bispectrum ${Boost_DEP})
endif()
diff --git a/python/_cosmomath.pyx b/python/_cosmomath.pyx
index fc4b3b6..e5ab880 100644
--- a/python/_cosmomath.pyx
+++ b/python/_cosmomath.pyx
@@ -12,7 +12,7 @@ cdef extern from "numpy/npy_common.h":
ctypedef npy_intp
cdef extern from "special_math.hpp" namespace "CosmoTool":
- T log_modified_bessel_first_kind[T](T v, T z) except + nogil
+ T log_modified_bessel_first_kind[T](T v, T z) nogil except +
cdef extern from "numpy_adaptors.hpp" namespace "CosmoTool":
void parallel_ufunc_dd_d[T,IT](char **args, IT* dimensions, IT* steps, void *func)
diff --git a/python/_cosmotool.pyx b/python/_cosmotool.pyx
index 7f2bc76..b2494bd 100644
--- a/python/_cosmotool.pyx
+++ b/python/_cosmotool.pyx
@@ -39,7 +39,7 @@ cdef extern from "loadSimu.hpp" namespace "CosmoTool":
cdef extern from "loadGadget.hpp" namespace "CosmoTool":
- SimuData *loadGadgetMulti(const char *fname, int id, int flags, int gformat) except + nogil
+ SimuData *loadGadgetMulti(const char *fname, int id, int flags, int gformat) nogil except +
void cxx_writeGadget "CosmoTool::writeGadget" (const char * s, SimuData *data) except +
cdef extern from "safe_gadget.hpp":
@@ -313,13 +313,6 @@ tries to get an array from the object."""
references to the object are gone. """
pass
-
-cdef extern from "numpy/arrayobject.h":
- # a little bit awkward: the reference to obj will be stolen
- # using PyObject* to signal that Cython cannot handle it automatically
- int PyArray_SetBaseObject(np.ndarray arr, PyObject *obj) except -1 # -1 means there was an error
-
-
cdef object wrap_array(void *p, np.uint64_t s, int typ):
cdef np.ndarray ndarray
cdef ArrayWrapper wrapper
@@ -327,8 +320,7 @@ cdef object wrap_array(void *p, np.uint64_t s, int typ):
wrapper = ArrayWrapper()
wrapper.set_data(s, typ, p)
ndarray = np.array(wrapper, copy=False)
- #ndarray.base = wrapper
- PyArray_SetBaseObject(ndarray, wrapper)
+ ndarray.base = wrapper
Py_INCREF(wrapper)
return ndarray
diff --git a/python/_project.pyx b/python/_project.pyx
index 726ed0c..bd64667 100644
--- a/python/_project.pyx
+++ b/python/_project.pyx
@@ -727,7 +727,7 @@ cdef DTYPE_t C_line_of_sight_projection(DTYPE_t[:,:,:] density,
cdef int iu0[3]
cdef int i
cdef int N = density.shape[0]
- cdef int half_N = density.shape[0]//2
+ cdef int half_N = density.shape[0]/2
cdef int completed
cdef DTYPE_t I0, d, dist2, delta, s, max_distance2
cdef int jumper[1]
diff --git a/requirements.txt b/requirements.txt
index 922eaeb..3a4577b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
-numpy<1.22
+numpy<1.19
cffi
numexpr
-cython<3
+pyfftw
+cython
diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt
index 6d019a7..839b37f 100644
--- a/sample/CMakeLists.txt
+++ b/sample/CMakeLists.txt
@@ -1,8 +1,4 @@
SET(tolink ${CosmoTool_local} ${CosmoTool_LIBS} ${GSL_LIBRARIES} ${DL_LIBRARY})
-if (RT_LIBRARY)
- SET(tolink ${tolink} ${RT_LIBRARY})
-endif()
-
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${FFTW3_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIRS} ${GSL_INCLUDE_PATH})
if(YORICK_SUPPORT)
@@ -91,7 +87,7 @@ if (Boost_FOUND)
ENDIF (YORICK_SUPPORT)
if (HDF5_FOUND)
add_executable(simple3DFilter simple3DFilter.cpp)
- target_link_libraries(simple3DFilter ${tolink})
+ target_link_libraries(simple3DFilter ${tolink} ${MPI_C_LIBRARIES})
add_executable(simpleDistanceFilter simpleDistanceFilter.cpp)
target_link_libraries(simpleDistanceFilter ${tolink})
@@ -105,7 +101,7 @@ if (Boost_FOUND)
add_executable(gadgetToArray gadgetToArray.cpp)
target_link_libraries(gadgetToArray ${tolink})
-
+
add_executable(testHDF5 testHDF5.cpp)
target_link_libraries(testHDF5 ${tolink})
diff --git a/sample/simple3DFilter.cpp b/sample/simple3DFilter.cpp
index 2dbde42..ace6ecb 100644
--- a/sample/simple3DFilter.cpp
+++ b/sample/simple3DFilter.cpp
@@ -1,3 +1,11 @@
+#include
+#include
+
+#include
+#include
+#include
+#include
+
#include "hdf5_array.hpp"
#include "miniargs.hpp"
#include "mykdtree.hpp"
@@ -5,11 +13,6 @@
#include "openmp.hpp"
#include "sphSmooth.hpp"
#include "yorick.hpp"
-#include
-#include
-#include
-#include
-#include
using namespace std;
using namespace CosmoTool;
@@ -27,37 +30,32 @@ typedef boost::multi_array array_type;
typedef boost::multi_array array3_type;
typedef boost::multi_array array4_type;
-ComputePrecision getVelocity(const VCoord &v, int i) { return v.mass * v.v[i]; }
+ComputePrecision getVelocity(const VCoord& v, int i) { return v.mass * v.v[i]; }
-ComputePrecision getMass(const VCoord &v) { return v.mass; }
+ComputePrecision getMass(const VCoord& v) { return v.mass; }
typedef SPHSmooth MySmooth;
typedef MySmooth::SPHTree MyTree;
typedef MyTree::Cell MyCell;
template
-void computeInterpolatedField(MyTree *tree1, double boxsize, int Nres,
+void computeInterpolatedField(MyTree* tree1, double boxsize, int Nres,
double cx, double cy, double cz,
- array3_type &bins, array3_type &arr, FuncT func,
+ array3_type& bins, array3_type& arr, FuncT func,
double rLimit2) {
- int rz_max = 0;
-#pragma omp parallel shared(rz_max)
+#pragma omp parallel
{
MySmooth smooth1(tree1, N_SPH);
-#pragma omp for collapse(3) schedule(dynamic)
+#pragma omp for schedule(dynamic)
for (int rz = 0; rz < Nres; rz++) {
+ double pz = (rz)*boxsize / Nres - cz;
+ cout << format("[%d] %d / %d") % smp_get_thread_id() % rz % Nres << endl;
for (int ry = 0; ry < Nres; ry++) {
+ double py = (ry)*boxsize / Nres - cy;
for (int rx = 0; rx < Nres; rx++) {
- if (rz > rz_max) {
- rz_max = rz;
- cout << format("[%d] %d / %d") % smp_get_thread_id() % rz % Nres
- << endl;
- }
double px = (rx)*boxsize / Nres - cx;
- double py = (ry)*boxsize / Nres - cy;
- double pz = (rz)*boxsize / Nres - cz;
MyTree::coords c = {float(px), float(py), float(pz)};
@@ -80,11 +78,18 @@ void computeInterpolatedField(MyTree *tree1, double boxsize, int Nres,
}
}
-int main(int argc, char **argv) {
- char *fname1, *outFile;
+int main(int argc, char** argv) {
+ int provided;
+ MPI_Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &provided);
+ if (provided < MPI_THREAD_FUNNELED) {
+ std::cerr << "Cannot mix MPI and Threads here. Please recompile with "
+ "OpenMP or MPI switched off."
+ << std::endl;
+ MPI_Abort(MPI_COMM_WORLD, 99);
+ }
+ char *fname1, *fname2;
double rLimit, boxsize, rLimit2, cx, cy, cz;
int Nres;
- int periodic;
MiniArgDesc args[] = {{"INPUT DATA1", &fname1, MINIARG_STRING},
{"RADIUS LIMIT", &rLimit, MINIARG_DOUBLE},
@@ -93,17 +98,17 @@ int main(int argc, char **argv) {
{"CX", &cx, MINIARG_DOUBLE},
{"CY", &cy, MINIARG_DOUBLE},
{"CZ", &cz, MINIARG_DOUBLE},
- {"OUTPUT FILE", &outFile, MINIARG_STRING},
- {"PERIODIC", &periodic, MINIARG_INT},
{0, 0, MINIARG_NULL}};
- if (!parseMiniArgs(argc, argv, args))
- return 1;
+ if (!parseMiniArgs(argc, argv, args)) return 1;
+ int rank, size;
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &size);
H5::H5File in_f(fname1, 0);
- H5::H5File out_f(outFile, H5F_ACC_TRUNC);
+ H5::H5File out_f(boost::str(boost::format("fields_%d.h5", rank), H5F_ACC_TRUNC);
array_type v1_data;
- uint64_t N1_points, N2_points;
+ uint32_t N1_points, N2_points;
array3_type bins(boost::extents[Nres][Nres][Nres]);
@@ -116,17 +121,15 @@ int main(int argc, char **argv) {
cout << "Got " << N1_points << " in the first file." << endl;
- MyCell *allCells_1 = new MyCell[N1_points];
+ MyCell* allCells_1 = new MyCell[N1_points];
#pragma omp parallel for schedule(static)
- for (uint32_t i = 0; i < Nres * Nres * Nres; i++)
- bins.data()[i] = 0;
+ for (long i = 0; i < Nres * Nres * Nres; i++) bins.data()[i] = 0;
cout << "Shuffling data in cells..." << endl;
#pragma omp parallel for schedule(static)
- for (uint64_t i = 0; i < N1_points; i++) {
- for (int j = 0; j < 3; j++)
- allCells_1[i].coord[j] = v1_data[i][j];
+ for (int i = 0; i < N1_points; i++) {
+ for (int j = 0; j < 3; j++) allCells_1[i].coord[j] = v1_data[i][j];
for (int k = 0; k < 3; k++)
allCells_1[i].val.pValue.v[k] = v1_data[i][3 + k];
allCells_1[i].val.pValue.mass = v1_data[i][6];
@@ -140,9 +143,8 @@ int main(int argc, char **argv) {
if (rx < 0 || rx >= Nres || ry < 0 || ry >= Nres || rz < 0 || rz >= Nres)
continue;
- auto &b = bins[rx][ry][rz];
-#pragma omp atomic
- b++;
+ //#pragma omp atomic update
+ bins[rx][ry][rz]++;
}
v1_data.resize(boost::extents[1][1]);
@@ -150,7 +152,6 @@ int main(int argc, char **argv) {
cout << "Building trees..." << endl;
MyTree tree1(allCells_1, N1_points);
- tree1.setPeriodic(periodic != 0, boxsize);
cout << "Creating smoothing filter..." << endl;
@@ -158,21 +159,18 @@ int main(int argc, char **argv) {
cout << "Weighing..." << endl;
- int rz_max = 0;
-#pragma omp parallel shared(rz_max)
+#pragma omp parallel
{
MySmooth smooth1(&tree1, N_SPH);
-#pragma omp for collapse(3) schedule(dynamic, 8)
+#pragma omp for schedule(dynamic)
for (int rz = 0; rz < Nres; rz++) {
+ double pz = (rz)*boxsize / Nres - cz;
+
+ (cout << rz << " / " << Nres << endl).flush();
for (int ry = 0; ry < Nres; ry++) {
+ double py = (ry)*boxsize / Nres - cy;
for (int rx = 0; rx < Nres; rx++) {
- if (rz > rz_max) {
- rz_max = rz;
- (cout << rz << " / " << Nres << endl).flush();
- }
- double pz = (rz)*boxsize / Nres - cz;
- double py = (ry)*boxsize / Nres - cy;
double px = (rx)*boxsize / Nres - cx;
MyTree::coords c = {float(px), float(py), float(pz)};
@@ -187,11 +185,30 @@ int main(int argc, char **argv) {
smooth1.fetchNeighbours(c, numInCell);
else
smooth1.fetchNeighbours(c);
+#pragma omp critical
smooth1.addGridSite(c);
}
}
+ (cout << " Done " << rz << endl).flush();
}
}
+ //
+ // Reduction on the cell.weight in the tree.
+ // MPI_Allreduce to act on contiguous arrays.
+ auto tree = smooth1.getTree();
+ auto nodes = tree->getAllNodes();
+ double *weight_array = new double[N1_points];
+ for (size_t c = 0; c < N1_points; c++) {
+ weight_array[c] = allCells[c].val.weight;
+ }
+ MPI_Allreduce(MPI_IN_PLACE, weight_array, N1_points, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
+ for (size_t c = 0; c < N1_points; c++) {
+ allCells[c].val.weight = weight_array[c];
+ }
+ delete[] weight_array;
+
+ // cell.weights -> build a 1d array of the particles weight -> MPI_Allreduce -> resend the new weights to the particles
+ //
cout << "Interpolating..." << endl;
diff --git a/setup.py b/setup.py
index 0b98cce..da984f3 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,6 @@ import stat
import os
import sys
import shutil
-from sysconfig import get_config_var
from distutils.command.install_data import install_data
import pathlib
from setuptools import find_packages, setup, Extension
@@ -77,9 +76,9 @@ class InstallCMakeLibs(install_lib):
# # your files are moved to the appropriate location when the installation
# # is run
#
-# libs = [os.path.join(bin_dir, _lib) for _lib in
-# os.listdir(bin_dir) if
-# os.path.isfile(os.path.join(bin_dir, _lib)) and
+# libs = [os.path.join(bin_dir, _lib) for _lib in
+# os.listdir(bin_dir) if
+# os.path.isfile(os.path.join(bin_dir, _lib)) and
# os.path.splitext(_lib)[1] in [".dll", ".so"]
# and not (_lib.startswith("python") or _lib.startswith(PACKAGE_NAME))]
#
@@ -88,16 +87,16 @@ class InstallCMakeLibs(install_lib):
# shutil.move(lib, os.path.join(self.build_dir,
# os.path.basename(lib)))
#
-# # Mark the libs for installation, adding them to
-# # distribution.data_files seems to ensure that setuptools' record
+# # Mark the libs for installation, adding them to
+# # distribution.data_files seems to ensure that setuptools' record
# # writer appends them to installed-files.txt in the package's egg-info
# #
-# # Also tried adding the libraries to the distribution.libraries list,
-# # but that never seemed to add them to the installed-files.txt in the
-# # egg-info, and the online recommendation seems to be adding libraries
-# # into eager_resources in the call to setup(), which I think puts them
-# # in data_files anyways.
-# #
+# # Also tried adding the libraries to the distribution.libraries list,
+# # but that never seemed to add them to the installed-files.txt in the
+# # egg-info, and the online recommendation seems to be adding libraries
+# # into eager_resources in the call to setup(), which I think puts them
+# # in data_files anyways.
+# #
# # What is the best way?
#
# # These are the additional installation files that should be
@@ -105,7 +104,7 @@ class InstallCMakeLibs(install_lib):
# # step; depending on the files that are generated from your cmake
# # build chain, you may need to modify the below code
#
-# self.distribution.data_files = [os.path.join(self.install_dir,
+# self.distribution.data_files = [os.path.join(self.install_dir,
# os.path.basename(lib))
# for lib in libs]
# print(self.distribution.data_files)
@@ -168,24 +167,17 @@ class BuildCMakeExt(build_ext):
# Change your cmake arguments below as necessary
# Below is just an example set of arguments for building Blender as a Python module
- c_compiler=os.environ.get('CC', get_config_var("CC"))
- cxx_compiler=os.environ.get('CXX', get_config_var("CXX"))
-
compilers=[]
fill_up_settings=[
- ("CMAKE_C_COMPILER", "CC", get_config_var("CC")),
- ("CMAKE_CXX_COMPILER", "CXX", get_config_var("CXX")),
- ("CMAKE_C_FLAGS", "CFLAGS", None),
- ("CMAKE_CXX_FLAGS", "CXXFLAGS", None),
- ("CMAKE_EXE_LINKER_FLAGS_INIT", "LDFLAGS", None),
- ("CMAKE_SHARED_LINKER_FLAGS_INIT", "LDFLAGS", None),
- ("CMAKE_MODULE_LINKER_FLAGS_INIT", "LDFLAGS", None)]
- for cmake_flag, os_flag, default_flag in fill_up_settings:
- if os_flag in os.environ or default_flag is not None:
- c = os.environ.get(os_flag, default_flag)
- if not c is None:
- compilers.append(f"-D{cmake_flag}={c}")
- print(compilers)
+ ("CMAKE_C_COMPILER", "CC"),
+ ("CMAKE_CXX_COMPILER", "CXX"),
+ ("CMAKE_C_FLAGS", "CFLAGS"),
+ ("CMAKE_EXE_LINKER_FLAGS_INIT", "LDFLAGS"),
+ ("CMAKE_SHARED_LINKER_FLAGS_INIT", "LDFLAGS"),
+ ("CMAKE_MODULE_LINKER_FLAGS_INIT", "LDFLAGS")]
+ for cmake_flag, os_flag in fill_up_settings:
+ if os_flag in os.environ:
+ compilers.append(f"-D{cmake_flag}={os.environ[os_flag]}")
self.spawn(['cmake', '-H'+SOURCE_DIR, '-B'+self.build_temp,
'-DENABLE_OPENMP=ON','-DINTERNAL_BOOST=ON','-DINTERNAL_EIGEN=ON',
@@ -221,7 +213,7 @@ class BuildCMakeExt(build_ext):
if _pyd_top[0].startswith(PACKAGE_NAME):
if os.path.splitext(_pyd)[1] in [".pyd", ".so"] or _pyd_top[-1] == 'config.py':
pyd_path.append((_pyd_top,_pyd))
-
+
for top,p in pyd_path:
_,n = os.path.split(p)
@@ -237,10 +229,10 @@ class BuildCMakeExt(build_ext):
CosmoTool_extension = CMakeExtension(name="cosmotool")
setup(name='cosmotool',
- version='1.3.6',
+ version='1.2.3',
packages=["cosmotool"],
package_dir={'cosmotool': 'python/cosmotool'},
- install_requires=['cython','numpy','cffi','numexpr','h5py'],
+ install_requires=['numpy','cffi','numexpr','pyfftw','h5py'],
setup_requires=['cython','cffi','numpy','numexpr'],
ext_modules=[CosmoTool_extension],
description='A small cosmotool box of useful functions',
diff --git a/src/cosmopower.cpp b/src/cosmopower.cpp
index 7ecaf2d..5e58c2c 100644
--- a/src/cosmopower.cpp
+++ b/src/cosmopower.cpp
@@ -212,30 +212,6 @@ double CosmoPower::powerHuWiggles(double k)
return normPower * pow(k,n) * T_k * T_k;
}
-double CosmoPower::BAO_Tk(double k){
-
- double no_wiggle_tk = noWiggleTk(k);
-
- double A = 0;
- double r_s = 10;
- double k_D = 2 * M_PI / 100;
-
- //sqrt as we want to make the parameterization part of the transfer function
- double param = sqrt(1 + A * sin(k * r_s) * exp(- k / k_D));
- return no_wiggle_tk * param;
-
-}
-
-double CosmoPower::sample_BAO(double k)
-{
- // BAO wiggle parameterization for reconstruction
- // Babic et al. 2022, https://arxiv.org/abs/2203.06177
-
- double T_k = BAO_Tk(k);
-
- return normPower * pow(k,n) * T_k * T_k;
- }
-
double CosmoPower::primordialPowerSpectrum(double k)
{
//Primordial power spectrum, needed for PNG
@@ -273,19 +249,6 @@ double CosmoPower::matterTransferFunctionHu(double k)
return T_k;
}
-double CosmoPower::noWiggleTk(double k)
-{
- double s = 44.5 * log(9.83 / OmegaEff) / (sqrt(1 + 10 * pow(OMEGA_B * h * h, 0.75)));
- double alpha_Gamma = 1 - 0.328 * log(431 * OmegaEff) * OMEGA_B / OMEGA_0 + 0.38 * log(22.3 * OmegaEff) * pow(OMEGA_B / OMEGA_0, 2);
- double GammaEff = OMEGA_0 * h * (alpha_Gamma + (1 - alpha_Gamma)/(1 + pow(0.43 * k * s, 4)));
- double q = k/(h*GammaEff) * pow(Theta_27, 2);
- double L_0 = log(2 * M_E + 1.8 * q);
- double C_0 = 14.2 + 731 / (1 + 62.5 * q);
- double T0 = L_0 / (L_0 + C_0 * q * q);
-
- return T0;
-}
-
double CosmoPower::powerHuBaryons(double k)
{
double s = 44.5 * log(9.83 / OmegaEff) / (sqrt(1 + 10 * pow(OMEGA_B * h * h, 0.75)));
@@ -481,18 +444,12 @@ void CosmoPower::setFunction(CosmoFunction f)
case POWER_SUGIYAMA:
eval = &CosmoPower::powerSugiyama;
break;
- case SAMPLE_WIGGLES:
- eval = &CosmoPower::sample_BAO;
- break;
case POWER_BDM:
eval = &CosmoPower::powerBDM;
break;
case POWER_TEST:
eval = &CosmoPower::powerTest;
break;
- case BAO_TK:
- eval = &CosmoPower::BAO_Tk;
- break;
default:
abort();
}
diff --git a/src/cosmopower.hpp b/src/cosmopower.hpp
index 86ad8b1..ba0bffc 100644
--- a/src/cosmopower.hpp
+++ b/src/cosmopower.hpp
@@ -89,9 +89,7 @@ namespace CosmoTool {
POWER_SUGIYAMA,
POWER_BDM,
POWER_TEST,
- HU_WIGGLES_ORIGINAL,
- SAMPLE_WIGGLES,
- BAO_TK
+ HU_WIGGLES_ORIGINAL
};
CosmoPower();
@@ -124,9 +122,6 @@ namespace CosmoTool {
double powerBDM(double k);
double powerTest(double k);
double powerHuWigglesOriginal(double k);
- double sample_BAO(double k);
- double noWiggleTk(double k);
- double BAO_Tk(double k);
};
};
diff --git a/src/h5_readFlash.cpp b/src/h5_readFlash.cpp
index 6e2ec3a..8e46b89 100644
--- a/src/h5_readFlash.cpp
+++ b/src/h5_readFlash.cpp
@@ -7,16 +7,16 @@ This software is a computer program whose purpose is to provide a toolbox for co
data analysis (e.g. filters, generalized Fourier transforms, power spectra, ...)
This software is governed by the CeCILL license under French law and
-abiding by the rules of distribution of free software. You can use,
+abiding by the rules of distribution of free software. You can use,
modify and/ or redistribute the software under the terms of the CeCILL
license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info".
+"http://www.cecill.info".
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
-liability.
+liability.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
@@ -25,9 +25,9 @@ that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or
-data to be ensured and, more generally, to use and operate it in the
-same conditions as regards security.
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL license and that you accept its terms.
@@ -59,8 +59,8 @@ int ipvz_out = 5;
/* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */
-/* n*_runtime_parameters should be set by the caller to
- the maximum number of runtime parameters to read.
+/* n*_runtime_parameters should be set by the caller to
+ the maximum number of runtime parameters to read.
*/
void h5_read_runtime_parameters
@@ -100,12 +100,12 @@ void h5_read_runtime_parameters
nreal_runtime_parameters = MAX_PARM;
/* integer runtime parameters */
- int_rt_parms = (int_runtime_params_t *) malloc(nint_runtime_parameters * sizeof(int_runtime_params_t));
+ int_rt_parms = (int_runtime_params_t *) malloc(nint_runtime_parameters * sizeof(int_runtime_params_t));
rank = 1;
DataSet dataset = file->openDataSet("integer runtime parameters");
-
- IntType int_rt_type = dataset.getIntType();
+
+ IntType int_rt_type = dataset.getIntType();
//int_rt_type = H5Dget_type(dataset);
DataSpace dataspace = dataset.getSpace();
@@ -123,7 +123,10 @@ void h5_read_runtime_parameters
DataSpace memspace(rank, &dimens_1d);
//memspace = H5Screate_simple(rank, &dimens_1d, NULL);
- dataset.read(int_rt_parms, int_rt_type, memspace, dataspace);
+ dataset.read(int_rt_parms, int_rt_type, memspace, dataspace,
+ H5P_DEFAULT);
+ //status = H5Dread(dataset, int_rt_type, memspace, dataspace,
+ // H5P_DEFAULT, int_rt_parms);
for (i = 0; i < nint_runtime_parameters; i++) {
@@ -142,14 +145,14 @@ void h5_read_runtime_parameters
/* reals */
- real_rt_parms = (real_runtime_params_t *) malloc(nreal_runtime_parameters * sizeof(real_runtime_params_t));
-
+ real_rt_parms = (real_runtime_params_t *) malloc(nreal_runtime_parameters * sizeof(real_runtime_params_t));
+
rank = 1;
dataset = file->openDataSet("real runtime parameters");
- //dataset = H5Dopen(*file_identifier, "real runtime parameters");
-
+ //dataset = H5Dopen(*file_identifier, "real runtime parameters");
+
dataspace = dataset.getSpace();
- FloatType real_rt_type = dataset.getFloatType();
+ FloatType real_rt_type = dataset.getFloatType();
ndims = dataspace.getSimpleExtentDims(&dimens_1d, NULL);
//dataspace = H5Dget_space(dataset);
//real_rt_type = H5Dget_type(dataset);
@@ -164,7 +167,10 @@ void h5_read_runtime_parameters
memspace = DataSpace(rank, &dimens_1d);
//memspace = H5Screate_simple(rank, &dimens_1d, NULL);
- dataset.read(real_rt_parms, real_rt_type, memspace, dataspace);
+ dataset.read(real_rt_parms, real_rt_type, memspace, dataspace,
+ H5P_DEFAULT);
+ //status = H5Dread(dataset, real_rt_type, memspace, dataspace,
+// H5P_DEFAULT, real_rt_parms);
for (i = 0; i < nreal_runtime_parameters; i++) {
@@ -187,7 +193,7 @@ void h5_read_runtime_parameters
*LBox = real_runtime_parameter_values[i];
}
if (strncmp(real_runtime_parameter_names[i],"hubbleconstant", 14) == 0 ) {
- *hubble = real_runtime_parameter_values[i];
+ *hubble = real_runtime_parameter_values[i];
}
if (strncmp(real_runtime_parameter_names[i],"omegamatter", 11) == 0 ) {
*omegam = real_runtime_parameter_values[i];
@@ -199,7 +205,7 @@ void h5_read_runtime_parameters
*omegalambda = real_runtime_parameter_values[i];
}
}
-
+
for (i = 0; i < nint_runtime_parameters; i++) {
if (strncmp(int_runtime_parameter_names[i],"pt_numx",7) == 0 ) {
*numPart = int_runtime_parameter_values[i];
@@ -208,7 +214,7 @@ void h5_read_runtime_parameters
}
}
-
+
/* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
void h5_read_flash3_particles (H5File* file,
int* totalparticles,
@@ -235,8 +241,8 @@ void h5_read_flash3_particles (H5File* file,
char *propName;
double *partBuffer;
char part_names[50][OUTPUT_PROP_LENGTH];
- int string_size;
-
+ int string_size;
+
// char part_names[NPART_PROPS][OUTPUT_PROP_LENGTH];
hsize_t dimens_2d[2], maxdimens_2d[2];
hsize_t start_2d[2], count_2d[2], stride_2d[2];
@@ -259,12 +265,12 @@ void h5_read_flash3_particles (H5File* file,
//total number of particle properties
numProps = dimens_2d[0];
-
+
string_size = OUTPUT_PROP_LENGTH;
StrType string_type = H5Tcopy(H5T_C_S1);
string_type.setSize(string_size);
//status = H5Tset_size(string_type, string_size);
-
+
rank = 2;
start_2d[0] = 0;
@@ -276,20 +282,22 @@ void h5_read_flash3_particles (H5File* file,
count_2d[0] = dimens_2d[0];
count_2d[1] = dimens_2d[1];
- dataspace.selectHyperslab(H5S_SELECT_SET, count_2d, start_2d);
+ dataspace.selectHyperslab(H5S_SELECT_SET, count_2d, start_2d);
//status = H5Sselect_hyperslab(dataspace, H5S_SELECT_SET, start_2d,
// stride_2d, count_2d, NULL);
DataSpace memspace(rank, dimens_2d);
//memspace = H5Screate_simple(rank, dimens_2d, NULL);
- dataset.read(part_names, string_type);
-
+ dataset.read(part_names, string_type, H5S_ALL, H5S_ALL, H5P_DEFAULT);
+ //status = H5Dread(dataset, string_type, H5S_ALL, H5S_ALL,
+ // H5P_DEFAULT, part_names);
+
string_type.close();
memspace.close();
dataspace.close();
- dataset.close();
+ dataset.close();
//H5Tclose(string_type);
//H5Sclose(memspace);
//H5Sclose(dataspace);
@@ -305,7 +313,7 @@ void h5_read_flash3_particles (H5File* file,
if (strncmp(part_names[i], "velz", 4) == 0) { ipvz = i+1; }
}
- if ((iptag < 0) || (ipx < 0) || (ipy < 0) || (ipz < 0) || (ipvx < 0) ||
+ if ((iptag < 0) || (ipx < 0) || (ipy < 0) || (ipz < 0) || (ipvx < 0) ||
(ipvy < 0) || (ipvz < 0) ) {
printf("One or more required particle attributes not found in file!\n");
return;
@@ -317,7 +325,7 @@ void h5_read_flash3_particles (H5File* file,
//read particles
dataset = file->openDataSet("tracer particles");
//dataset = H5Dopen(*file_identifier, "tracer particles");
-
+
FloatType datatype = dataset.getFloatType();
//datatype = H5Dget_type(dataset);
@@ -330,7 +338,7 @@ void h5_read_flash3_particles (H5File* file,
ndims = dataspace.getSimpleExtentDims(dimens_2d, NULL);
//dataspace = H5Dget_space(dataset);
//H5Sget_simple_extent_dims(dataspace, dimens_2d, maxdimens_2d);
-
+
/*insert particle properties (numPartBuffer) particles at a time*/
pstack = (*localnp);
poffset = 0;
@@ -358,7 +366,7 @@ void h5_read_flash3_particles (H5File* file,
dimens_2d[0] = (pcount);
dimens_2d[1] = (numProps);
- dataspace.selectHyperslab(H5S_SELECT_SET, count_2d, start_2d);
+ dataspace.selectHyperslab(H5S_SELECT_SET, count_2d, start_2d);
//status = H5Sselect_hyperslab(dataspace, H5S_SELECT_SET, start_2d,
// stride_2d, count_2d, NULL);
@@ -366,7 +374,8 @@ void h5_read_flash3_particles (H5File* file,
//memspace = H5Screate_simple(rank, dimens_2d, maxdimens_2d);
/* read data from the dataset */
- dataset.read(partBuffer, datatype, memspace, dataspace);
+ dataset.read(partBuffer, datatype, memspace, dataspace, H5P_DEFAULT);
+ //status = H5Dread(dataset, datatype, memspace, dataspace, H5P_DEFAULT, partBuffer);
/* convert buffer into particle struct */
@@ -382,8 +391,8 @@ void h5_read_flash3_particles (H5File* file,
pos3[p+poffset] = (float) *(partBuffer+ipz-1+p*numProps);
}
}
-
-
+
+
if (vel1 && vel2 && vel3) {
for(p=0; p < (pcount); p++) {
vel1[p+poffset] = (float) *(partBuffer+ipvx-1+p*numProps);
@@ -414,7 +423,7 @@ void h5_read_flash3_particles (H5File* file,
//status = H5Sclose(dataspace);
//status = H5Dclose(dataset);
}
-
+
/*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
@@ -442,7 +451,7 @@ void h5_read_flash3_header_info(H5File* file,
H5std_string DATASET_NAME;
- string_type = H5Tcopy(H5T_C_S1);
+ string_type = H5Tcopy(H5T_C_S1);
H5Tset_size(string_type, MAX_STRING_LENGTH);
DataSet dataset = file->openDataSet("real scalars");
@@ -458,13 +467,13 @@ void h5_read_flash3_header_info(H5File* file,
/* malloc a pointer to a list of real_list_t's */
real_list = (real_list_t *) malloc(dimens_1d * sizeof(real_list_t));
- // create a new simple dataspace of 1 dimension and size of 'dimens_1d'
+ // create a new simple dataspace of 1 dimension and size of 'dimens_1d'
DataSpace memspace(1, &dimens_1d);
- // create an empty vessel sized to hold one real_list_t's worth of data
+ // create an empty vessel sized to hold one real_list_t's worth of data
CompType real_list_type( sizeof(real_list_t) );
- // subdivide the empty vessel into its component sections (name and value)
+ // subdivide the empty vessel into its component sections (name and value)
real_list_type.insertMember(
"name",
HOFFSET(real_list_t, name),
@@ -475,8 +484,9 @@ void h5_read_flash3_header_info(H5File* file,
HOFFSET(real_list_t, value),
PredType::NATIVE_DOUBLE);
- // read the data into 'real_list'
- dataset.read( real_list, real_list_type, memspace, dataspace);
+ // read the data into 'real_list'
+ dataset.read( real_list, real_list_type, memspace, dataspace,
+ H5P_DEFAULT);
if (status < 0) {
diff --git a/src/hdf5_array.hpp b/src/hdf5_array.hpp
index 55dc87b..db75a33 100644
--- a/src/hdf5_array.hpp
+++ b/src/hdf5_array.hpp
@@ -426,7 +426,7 @@ namespace CosmoTool {
#define CTOOL_HDF5_INSERT_ELEMENT(r, STRUCT, element) \
{ \
::CosmoTool::get_hdf5_data_type t; \
- long position = offsetof(STRUCT, BOOST_PP_TUPLE_ELEM(2, 1, element)); \
+ long position = HOFFSET(STRUCT, BOOST_PP_TUPLE_ELEM(2, 1, element)); \
const char *field_name = BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2, 1, element)); \
type.insertMember(field_name, position, t.type()); \
}
diff --git a/src/interpolate.cpp b/src/interpolate.cpp
index b996f7a..3de19f5 100644
--- a/src/interpolate.cpp
+++ b/src/interpolate.cpp
@@ -157,7 +157,6 @@ const Interpolate& Interpolate::operator=(const Interpolate& a)
gsl_spline_init(spline, a.spline->x, a.spline->y, a.spline->size);
logx = a.logx;
logy = a.logy;
- return *this;
}
double Interpolate::getMaxX() const
diff --git a/src/mykdtree.hpp b/src/mykdtree.hpp
index 67908cf..1b36eea 100644
--- a/src/mykdtree.hpp
+++ b/src/mykdtree.hpp
@@ -1,5 +1,5 @@
/*+
-This is CosmoTool (./src/mykdtree.hpp) -- Copyright (C) Guilhem Lavaux (2007-2022)
+This is CosmoTool (./src/mykdtree.hpp) -- Copyright (C) Guilhem Lavaux (2007-2014)
guilhem.lavaux@gmail.com
@@ -7,16 +7,16 @@ This software is a computer program whose purpose is to provide a toolbox for co
data analysis (e.g. filters, generalized Fourier transforms, power spectra, ...)
This software is governed by the CeCILL license under French law and
-abiding by the rules of distribution of free software. You can use,
+abiding by the rules of distribution of free software. You can use,
modify and/ or redistribute the software under the terms of the CeCILL
license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info".
+"http://www.cecill.info".
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
-liability.
+liability.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
@@ -25,9 +25,9 @@ that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or
-data to be ensured and, more generally, to use and operate it in the
-same conditions as regards security.
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL license and that you accept its terms.
@@ -48,13 +48,13 @@ namespace CosmoTool {
typedef uint64_t NodeIntType;
- template
+ template
struct KDDef
{
typedef CType CoordType;
typedef float KDCoordinates[N];
};
-
+
template
struct KDCell
{
@@ -99,10 +99,10 @@ namespace CosmoTool {
typename KDDef::CoordType r, r2;
KDCell **cells;
typename KDDef::CoordType *distances;
- uint64_t currentRank;
- uint64_t numCells;
+ uint32_t currentRank;
+ uint32_t numCells;
};
-
+
template
class RecursionMultipleInfo
@@ -114,14 +114,14 @@ namespace CosmoTool {
RecursionMultipleInfo(const typename KDDef::KDCoordinates& rx,
KDCell **cells,
- uint64_t numCells)
+ uint32_t numCells)
: queue(cells, numCells, INFINITY),traversed(0)
{
std::copy(rx, rx+N, x);
}
};
- template
+ template
struct KD_default_cell_splitter
{
void operator()(KDCell **cells, NodeIntType Ncells, NodeIntType& split_index, int axis, typename KDDef::KDCoordinates minBound, typename KDDef::KDCoordinates maxBound);
@@ -135,7 +135,7 @@ namespace CosmoTool {
typedef typename KDDef::KDCoordinates coords;
typedef KDCell Cell;
typedef KDTreeNode Node;
-
+
CellSplitter splitter;
KDTree(Cell *cells, NodeIntType Ncells);
@@ -153,20 +153,20 @@ namespace CosmoTool {
std::copy(replicate, replicate+N, this->replicate);
}
- uint64_t getIntersection(const coords& x, CoordType r,
+ uint32_t getIntersection(const coords& x, CoordType r,
Cell **cells,
- uint64_t numCells);
- uint64_t getIntersection(const coords& x, CoordType r,
+ uint32_t numCells);
+ uint32_t getIntersection(const coords& x, CoordType r,
Cell **cells,
CoordType *distances,
- uint64_t numCells);
- uint64_t countCells(const coords& x, CoordType r);
+ uint32_t numCells);
+ uint32_t countCells(const coords& x, CoordType r);
Cell *getNearestNeighbour(const coords& x);
- void getNearestNeighbours(const coords& x, uint64_t NumCells,
+ void getNearestNeighbours(const coords& x, uint32_t NumCells,
Cell **cells);
- void getNearestNeighbours(const coords& x, uint64_t NumCells,
+ void getNearestNeighbours(const coords& x, uint32_t NumCells,
Cell **cells,
CoordType *distances);
@@ -183,7 +183,7 @@ namespace CosmoTool {
NodeIntType getNumberInNode(const Node *n) const { return n->numNodes; }
#else
NodeIntType getNumberInNode(const Node *n) const {
- if (n == 0)
+ if (n == 0)
return 0;
return 1+getNumberInNode(n->children[0])+getNumberInNode(n->children[1]);
}
@@ -211,7 +211,7 @@ namespace CosmoTool {
uint32_t depth,
coords minBound,
coords maxBound);
-
+
template
void recursiveIntersectionCells(RecursionInfoCells& info,
Node *node,
@@ -224,7 +224,7 @@ namespace CosmoTool {
CoordType& R2,
Cell*& cell);
void recursiveMultipleNearest(RecursionMultipleInfo& info, Node *node,
- int level);
+ int level);
};
diff --git a/src/mykdtree.tcc b/src/mykdtree.tcc
index 6b6831d..e3fbdc8 100644
--- a/src/mykdtree.tcc
+++ b/src/mykdtree.tcc
@@ -33,7 +33,7 @@ namespace CosmoTool {
template
KDTree::KDTree(Cell *cells, NodeIntType Ncells)
{
- periodic = false;
+ periodic = false;
base_cell = cells;
numNodes = Ncells;
@@ -41,7 +41,7 @@ namespace CosmoTool {
sortingHelper = new Cell *[Ncells];
for (NodeIntType i = 0; i < Ncells; i++)
- sortingHelper[i] = &cells[i];
+ sortingHelper[i] = &cells[i];
optimize();
}
@@ -73,16 +73,16 @@ namespace CosmoTool {
absoluteMax[k] = cell->coord[k];
}
}
-
+
std::cout << " rebuilding the tree..." << std::endl;
- root = buildTree(sortingHelper, activeCells, 0, absoluteMin, absoluteMax);
+ root = buildTree(sortingHelper, activeCells, 0, absoluteMin, absoluteMax);
std::cout << " done." << std::endl;
}
template
- uint64_t KDTree::getIntersection(const coords& x, CoordType r,
+ uint32_t KDTree::getIntersection(const coords& x, CoordType r,
KDTree::Cell **cells,
- uint64_t numCells)
+ uint32_t numCells)
{
RecursionInfoCells info;
@@ -112,10 +112,10 @@ namespace CosmoTool {
}
template
- uint64_t KDTree::getIntersection(const coords& x, CoordType r,
+ uint32_t KDTree::getIntersection(const coords& x, CoordType r,
Cell **cells,
CoordType *distances,
- uint64_t numCells)
+ uint32_t numCells)
{
RecursionInfoCells info;
@@ -144,7 +144,7 @@ namespace CosmoTool {
}
template
- uint64_t KDTree::countCells(const coords& x, CoordType r)
+ uint32_t KDTree::countCells(const coords& x, CoordType r)
{
RecursionInfoCells info;
@@ -175,7 +175,7 @@ namespace CosmoTool {
template
template
- void KDTree::recursiveIntersectionCells(RecursionInfoCells& info,
+ void KDTree::recursiveIntersectionCells(RecursionInfoCells& info,
Node *node,
int level)
{
@@ -183,7 +183,7 @@ namespace CosmoTool {
CoordType d2 = 0;
#if __KD_TREE_ACTIVE_CELLS == 1
- if (node->value->active)
+ if (node->value->active)
#endif
{
for (int j = 0; j < 3; j++)
@@ -250,9 +250,9 @@ namespace CosmoTool {
}
template
- void KD_default_cell_splitter::operator()(KDCell **cells, NodeIntType Ncells,
+ void KD_default_cell_splitter::operator()(KDCell **cells, NodeIntType Ncells,
NodeIntType& split_index, int axis,
- typename KDDef::KDCoordinates minBound,
+ typename KDDef::KDCoordinates minBound,
typename KDDef::KDCoordinates maxBound)
{
CellCompare compare(axis);
@@ -279,9 +279,9 @@ namespace CosmoTool {
//#pragma omp atomic capture
nodeId = (this->lastNode)++;
-
+
node = &nodes[nodeId];
-
+
// Isolate the environment
splitter(cell0, Ncells, mid, axis, minBound, maxBound);
@@ -297,12 +297,12 @@ namespace CosmoTool {
{
node->children[0] = buildTree(cell0, mid, depth, minBound, tmpBound);
}
-
+
memcpy(tmpBound, minBound, sizeof(coords));
tmpBound[axis] = node->value->coord[axis];
#pragma omp task private(tmpBound)
{
- node->children[1] = buildTree(cell0+mid+1, Ncells-mid-1, depth,
+ node->children[1] = buildTree(cell0+mid+1, Ncells-mid-1, depth,
tmpBound, maxBound);
}
@@ -391,17 +391,17 @@ namespace CosmoTool {
}
return;
}
-
+
// Check if current node is not the nearest
- CoordType thisR2 =
+ CoordType thisR2 =
computeDistance(node->value, x);
-
+
if (thisR2 < R2)
{
R2 = thisR2;
best = node->value;
- }
-
+ }
+
// Now we found the best. We check whether the hypersphere
// intersect the hyperplane of the other branch
@@ -435,11 +435,11 @@ namespace CosmoTool {
{
coords x_new;
r.getPosition(x_new);
- recursiveNearest(root, 0, x_new, R2, best);
+ recursiveNearest(root, 0, x_new, R2, best);
}
while (r.next());
}
-
+
return best;
}
@@ -474,15 +474,15 @@ namespace CosmoTool {
{
recursiveMultipleNearest(info, go, level+1);
}
-
+
// Check if current node is not the nearest
- CoordType thisR2 =
+ CoordType thisR2 =
computeDistance(node->value, info.x);
info.queue.push(node->value, thisR2);
info.traversed++;
// if (go == 0)
// return;
-
+
// Now we found the best. We check whether the hypersphere
// intersect the hyperplane of the other branch
@@ -497,15 +497,15 @@ namespace CosmoTool {
{
recursiveMultipleNearest(info, other, level+1);
}
- }
+ }
}
template
- void KDTree::getNearestNeighbours(const coords& x, uint64_t N2,
+ void KDTree::getNearestNeighbours(const coords& x, uint32_t N2,
Cell **cells)
{
RecursionMultipleInfo info(x, cells, N2);
-
+
for (int i = 0; i < N2; i++)
cells[i] = 0;
@@ -527,12 +527,12 @@ namespace CosmoTool {
}
template
- void KDTree::getNearestNeighbours(const coords& x, uint64_t N2,
+ void KDTree::getNearestNeighbours(const coords& x, uint32_t N2,
Cell **cells,
CoordType *distances)
{
RecursionMultipleInfo info(x, cells, N2);
-
+
for (int i = 0; i < N2; i++)
cells[i] = 0;
@@ -555,14 +555,14 @@ namespace CosmoTool {
#ifdef __KD_TREE_SAVE_ON_DISK
#define KDTREE_DISK_SIGNATURE "KDTREE"
#define KDTREE_DISK_SIGNATURE_LEN 7
-
+
template
struct KDTreeOnDisk
{
long cell_id;
long children_node[2];
typename KDDef::KDCoordinates minBound, maxBound;
- };
+ };
struct KDTreeHeader
{
@@ -619,7 +619,7 @@ namespace CosmoTool {
{
std::cerr << "KDTree Signature invalid" << std::endl;
throw InvalidOnDiskKDTree();
- }
+ }
if (h.numCells != Ncells || h.nodesUsed < 0) {
std::cerr << "The number of cells has changed (" << h.numCells << " != " << Ncells << ") or nodesUsed=" << h.nodesUsed << std::endl;
@@ -643,8 +643,8 @@ namespace CosmoTool {
throw InvalidOnDiskKDTree();
}
if (node_on_disk.cell_id > numNodes || node_on_disk.cell_id < 0 ||
- (node_on_disk.children_node[0] >= 0 && node_on_disk.children_node[0] > lastNode) || node_on_disk.children_node[0] < -1 ||
- (node_on_disk.children_node[1] >= 0 && node_on_disk.children_node[1] > lastNode) || node_on_disk.children_node[1] < -1)
+ node_on_disk.children_node[0] > lastNode || node_on_disk.children_node[0] < -1 ||
+ node_on_disk.children_node[1] > lastNode || node_on_disk.children_node[1] < -1)
{
delete[] nodes;
std::cerr << "Invalid cell id or children node id invalid" << std::endl;
@@ -683,10 +683,10 @@ namespace CosmoTool {
}
root = &nodes[h.rootId];
-
+
sortingHelper = new Cell *[Ncells];
for (NodeIntType i = 0; i < Ncells; i++)
- sortingHelper[i] = &cells[i];
+ sortingHelper[i] = &cells[i];
}
#endif
diff --git a/src/powerSpectrum.cpp b/src/powerSpectrum.cpp
index 7786080..777654c 100644
--- a/src/powerSpectrum.cpp
+++ b/src/powerSpectrum.cpp
@@ -58,7 +58,6 @@ using namespace std;
#define POWER_TEST 8
#define POWER_SPECTRUM POWER_EFSTATHIOU
-#define SAMPLE_WIGGLES 9
namespace Cosmology {
@@ -207,31 +206,6 @@ double powG(double y)
*/
double powerSpectrum(double k, double normPower)
{
-#if POWER_SPECTRUM == SAMPLE_WIGGLES
- // BAO wiggle parameterization for reconstruction
- // Babic et al. 2022, https://arxiv.org/abs/2203.06177
-
- // No-wiggle transfer function
-
- double s = 44.5 * log(9.83 / OmegaEff) / (sqrt(1 + 10 * pow(OMEGA_B * h * h, 0.75)));
- double alpha_Gamma = 1 - 0.328 * log(431 * OmegaEff) * OMEGA_B / OMEGA_0 + 0.38 * log(22.3 * OmegaEff) * pow(OMEGA_B / OMEGA_0, 2);
- double GammaEff = OMEGA_0 * h * (alpha_Gamma + (1 - alpha_Gamma)/(1 + pow(0.43 * k * s, 4)));
- double q = k/(h*GammaEff) * pow(Theta_27, 2);
- double L_0 = log(2 * M_E + 1.8 * q);
- double C_0 = 14.2 + 731 / (1 + 62.5 * q);
- double T0 = L_0 / (L_0 + C_0 * q * q);
-
- // Wiggle parameterization
-
- double A = 0;
- double r_s = 10;
- double k_D = 2 * M_PI / 100;
-
- double param = 1 + A * sin(k * r_s) * exp(- k / k_D);
-
- return normPower * pow(k, n) * T0 * T0 * param;
-#endif
-
#if POWER_SPECTRUM == POWER_EFSTATHIOU
double a = 6.4/Gamma0;
double b = 3/Gamma0;
diff --git a/src/sphSmooth.hpp b/src/sphSmooth.hpp
index f9c468b..c364621 100644
--- a/src/sphSmooth.hpp
+++ b/src/sphSmooth.hpp
@@ -1,5 +1,5 @@
/*+
-This is CosmoTool (./src/sphSmooth.hpp) -- Copyright (C) Guilhem Lavaux (2007-2022)
+This is CosmoTool (./src/sphSmooth.hpp) -- Copyright (C) Guilhem Lavaux (2007-2014)
guilhem.lavaux@gmail.com
@@ -7,16 +7,16 @@ This software is a computer program whose purpose is to provide a toolbox for co
data analysis (e.g. filters, generalized Fourier transforms, power spectra, ...)
This software is governed by the CeCILL license under French law and
-abiding by the rules of distribution of free software. You can use,
+abiding by the rules of distribution of free software. You can use,
modify and/ or redistribute the software under the terms of the CeCILL
license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info".
+"http://www.cecill.info".
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
-liability.
+liability.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
@@ -25,9 +25,9 @@ that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or
-data to be ensured and, more generally, to use and operate it in the
-same conditions as regards security.
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL license and that you accept its terms.
@@ -39,89 +39,80 @@ knowledge of the CeCILL license and that you accept its terms.
#include "config.hpp"
#include "mykdtree.hpp"
-namespace CosmoTool {
+namespace CosmoTool
+{
template
- class SPHSmooth {
+ class SPHSmooth
+ {
public:
- typedef struct {
+ typedef struct
+ {
ComputePrecision weight;
ValType pValue;
} FullType;
- typedef KDTree SPHTree;
- typedef KDTreeNode SPHNode;
- typedef KDCell SPHCell;
- typedef typename KDTree::CoordType CoordType;
+ typedef KDTree SPHTree;
+ typedef KDTreeNode SPHNode;
+ typedef KDCell SPHCell;
+ typedef typename KDTree::CoordType CoordType;
- typedef ComputePrecision (*computeParticleValue)(const ValType &t);
- typedef void (*runParticleValue)(ValType &t);
+ typedef ComputePrecision (*computeParticleValue)(const ValType& t);
+ typedef void (*runParticleValue)(ValType& t);
public:
typedef SPHCell *P_SPHCell;
- struct SPHState {
+ struct SPHState
+ {
boost::shared_ptr ngb;
boost::shared_ptr distances;
typename SPHTree::coords currentCenter;
int currentNgb;
ComputePrecision smoothRadius;
};
-
+
+
SPHSmooth(SPHTree *tree, uint32_t Nsph);
- virtual ~SPHSmooth();
+ virtual ~SPHSmooth();
- void
- fetchNeighbours(const typename SPHTree::coords &c, SPHState *state = 0);
-
- void fetchNeighbours(
- const typename SPHTree::coords &c, uint32_t newNsph,
- SPHState *state = 0);
- void fetchNeighboursOnVolume(
- const typename SPHTree::coords &c, ComputePrecision radius);
- const typename SPHTree::coords &getCurrentCenter() const {
+ void fetchNeighbours(const typename SPHTree::coords& c, SPHState *state = 0);
+
+ void fetchNeighbours(const typename SPHTree::coords& c, uint32_t newNsph);
+ void fetchNeighboursOnVolume(const typename SPHTree::coords& c, ComputePrecision radius);
+ const typename SPHTree::coords& getCurrentCenter() const
+ {
return internal.currentCenter;
}
- /** This is the pure SPH smoothing function. It does not reweight by the
- * value computed at each grid site.
- */
- template
- ComputePrecision computeSmoothedValue(
- const typename SPHTree::coords &c, FuncT fun, SPHState *state = 0);
+ template
+ ComputePrecision computeSmoothedValue(const typename SPHTree::coords& c,
+ FuncT fun, SPHState *state = 0);
+
+ template
+ ComputePrecision computeInterpolatedValue(const typename SPHTree::coords& c,
+ FuncT fun, SPHState *state = 0);
+
+ ComputePrecision getMaxDistance(const typename SPHTree::coords& c,
+ SPHNode *node) const;
- /** This is the weighted SPH smoothing function. It does reweight by the
- * value computed at each grid site. This ensures the total sum of the interpolated
- * quantity is preserved by interpolating to the target mesh.
- */
- template
- ComputePrecision computeInterpolatedValue(
- const typename SPHTree::coords &c, FuncT fun, SPHState *state = 0);
-
- /** This is the adjoint gradient of computeInterpolatedValue w.r.t. to the value
- * array. FuncT is expected to have the following prototype:
- * void((CellValue defined by the user), ComputePrecision weighted_ag_value)
- */
- template
- void computeAdjointGradientSmoothedValue(
- const typename SPHTree::coords &c, ComputePrecision ag_value, FuncT fun,
- SPHState *state = 0);
-
- ComputePrecision
- getMaxDistance(const typename SPHTree::coords &c, SPHNode *node) const;
-
- ComputePrecision getSmoothingLen() const { return internal.smoothRadius; }
+ ComputePrecision getSmoothingLen() const
+ {
+ return internal.smoothRadius;
+ }
// TO USE WITH EXTREME CARE !
- void setSmoothingLen(ComputePrecision len) { internal.smoothRadius = len; }
+ void setSmoothingLen(ComputePrecision len)
+ {
+ internal.smoothRadius = len;
+ }
// END
- template
+ template
void runForEachNeighbour(FuncT fun, SPHState *state = 0);
- void addGridSite(const typename SPHTree::coords &c, SPHState *state);
- void addGridSite(const typename SPHTree::coords &c);
+ void addGridSite(const typename SPHTree::coords& c);
bool hasNeighbours() const;
- virtual ComputePrecision getKernel(ComputePrecision d) const;
+ virtual ComputePrecision getKernel(ComputePrecision d) const;
SPHTree *getTree() { return tree; }
@@ -134,29 +125,29 @@ namespace CosmoTool {
uint32_t getCurrent() const { return internal.currentNgb; }
uint32_t getNgb() const { return maxNgb; }
-
+
protected:
SPHState internal;
uint32_t Nsph;
uint32_t deltaNsph;
uint32_t maxNgb;
SPHTree *tree;
-
- template
- ComputePrecision computeWValue(
- const typename SPHTree::coords &c, SPHCell &cell, CoordType d,
- FuncT fun, SPHState *state);
-
- template
- void runUnrollNode(SPHNode *node, FuncT fun);
+
+ template
+ ComputePrecision computeWValue(const typename SPHTree::coords & c,
+ SPHCell& cell,
+ CoordType d,
+ FuncT fun, SPHState *state);
+
+ template
+ void runUnrollNode(SPHNode *node,
+ FuncT fun);
};
- template
- bool operator<(
- const SPHSmooth &s1,
- const SPHSmooth &s2);
+ template
+ bool operator<(const SPHSmooth& s1, const SPHSmooth& s2);
-}; // namespace CosmoTool
+};
#include "sphSmooth.tcc"
diff --git a/src/sphSmooth.tcc b/src/sphSmooth.tcc
index 6643dd3..45a3c29 100644
--- a/src/sphSmooth.tcc
+++ b/src/sphSmooth.tcc
@@ -3,248 +3,225 @@
namespace CosmoTool {
- template
- SPHSmooth::SPHSmooth(SPHTree *tree, uint32_t Nsph) {
- this->Nsph = Nsph;
- this->tree = tree;
- internal.currentNgb = 0;
+template
+SPHSmooth::SPHSmooth(SPHTree *tree, uint32_t Nsph)
+{
+ this->Nsph = Nsph;
+ this->tree = tree;
+ internal.currentNgb = 0;
- this->maxNgb = Nsph;
- internal.ngb = boost::shared_ptr(new SPHCell *[maxNgb]);
- internal.distances = boost::shared_ptr(new CoordType[maxNgb]);
- }
+ this->maxNgb = Nsph;
+ internal.ngb = boost::shared_ptr(new SPHCell *[maxNgb]);
+ internal.distances = boost::shared_ptr(new CoordType[maxNgb]);
+}
- template
- SPHSmooth::~SPHSmooth() {}
+template
+SPHSmooth::~SPHSmooth()
+{
+}
- template
- template
- ComputePrecision SPHSmooth::computeWValue(
- const typename SPHTree::coords &c, SPHCell &cell, CoordType d, FuncT fun,
- SPHState *state) {
- CoordType weight;
+template
+template
+ComputePrecision SPHSmooth::computeWValue(const typename SPHTree::coords& c,
+ SPHCell& cell,
+ CoordType d,
+ FuncT fun, SPHState *state)
+{
+ CoordType weight;
- d /= state->smoothRadius;
- weight = getKernel(d);
+ d /= state->smoothRadius;
+ weight = getKernel(d);
- if (cell.val.weight != 0)
- return weight * fun(cell.val.pValue) / cell.val.weight;
- else
- return 0;
- }
+ if (cell.val.weight != 0)
+ return weight * fun(cell.val.pValue) / cell.val.weight;
+ else
+ return 0;
+}
- template
- void SPHSmooth::fetchNeighbours(
- const typename SPHTree::coords &c, uint32_t newNngb, SPHState *state) {
- ComputePrecision d2, max_dist = 0;
- uint32_t requested = newNngb;
+template
+void
+SPHSmooth::fetchNeighbours(const typename SPHTree::coords& c, uint32_t newNngb)
+{
+ ComputePrecision d2, max_dist = 0;
+ uint32_t requested = newNngb;
- if (state != 0) {
- state->distances = boost::shared_ptr(new CoordType[newNngb]);
- state->ngb = boost::shared_ptr(new SPHCell *[newNngb]);
- } else {
- state = &internal;
- if (requested > maxNgb) {
- maxNgb = requested;
- internal.ngb = boost::shared_ptr(new P_SPHCell[maxNgb]);
- internal.distances =
- boost::shared_ptr(new CoordType[maxNgb]);
- }
+ if (requested > maxNgb)
+ {
+ maxNgb = requested;
+ internal.ngb = boost::shared_ptr(new P_SPHCell[maxNgb]);
+ internal.distances = boost::shared_ptr(new CoordType[maxNgb]);
}
- memcpy(state->currentCenter, c, sizeof(c));
- tree->getNearestNeighbours(
- c, requested, (SPHCell **)state->ngb.get(),
- (CoordType *)state->distances.get());
+ memcpy(internal.currentCenter, c, sizeof(c));
+ tree->getNearestNeighbours(c, requested, (SPHCell **)internal.ngb.get(), (CoordType*)internal.distances.get());
- state->currentNgb = 0;
- for (uint32_t i = 0; i < requested && (state->ngb)[i] != 0;
- i++, state->currentNgb++) {
- state->distances[i] = sqrt(state->distances[i]);
- d2 = state->distances[i];
+ internal.currentNgb = 0;
+ for (uint32_t i = 0; i < requested && (internal.ngb)[i] != 0; i++,internal.currentNgb++)
+ {
+ internal.distances[i] = sqrt(internal.distances[i]);
+ d2 = internal.distances[i];
if (d2 > max_dist)
max_dist = d2;
}
- state->smoothRadius = max_dist / 2;
- }
+ internal.smoothRadius = max_dist / 2;
+}
- template
- void SPHSmooth::fetchNeighbours(
- const typename SPHTree::coords &c, SPHState *state) {
- ComputePrecision d2, max_dist = 0;
- uint32_t requested = Nsph;
+template
+void SPHSmooth::fetchNeighbours(const typename SPHTree::coords& c, SPHState *state)
+{
+ ComputePrecision d2, max_dist = 0;
+ uint32_t requested = Nsph;
- if (state != 0) {
- state->distances = boost::shared_ptr(new CoordType[Nsph]);
- state->ngb = boost::shared_ptr(new SPHCell *[Nsph]);
- } else
- state = &internal;
+ if (state != 0) {
+ state->distances = boost::shared_ptr(new CoordType[Nsph]);
+ state->ngb = boost::shared_ptr(new SPHCell *[Nsph]);
+ } else
+ state = &internal;
+
+ memcpy(state->currentCenter, c, sizeof(c));
+
+ tree->getNearestNeighbours(c, requested, state->ngb.get(), state->distances.get());
- memcpy(state->currentCenter, c, sizeof(c));
-
- tree->getNearestNeighbours(
- c, requested, state->ngb.get(), state->distances.get());
-
- state->currentNgb = 0;
- for (uint32_t i = 0; i < requested && state->ngb[i] != 0;
- i++, state->currentNgb++) {
- d2 = state->distances[i] = sqrt(state->distances[i]);
- if (d2 > max_dist)
- max_dist = d2;
- }
-
- state->smoothRadius = max_dist / 2;
- }
-
- template
- void SPHSmooth::fetchNeighboursOnVolume(
- const typename SPHTree::coords &c, ComputePrecision radius) {
- uint32_t numPart;
- ComputePrecision d2, max_dist = 0;
-
- memcpy(internal.currentCenter, c, sizeof(c));
-
- internal.currentNgb = tree->getIntersection(
- c, radius, internal.ngb, internal.distances, maxNgb);
-
- for (uint32_t i = 0; i < internal.currentNgb; i++) {
+ state->currentNgb = 0;
+ for (uint32_t i = 0; i < requested && state->ngb[i] != 0; i++,state->currentNgb++)
+ {
d2 = internal.distances[i] = sqrt(internal.distances[i]);
if (d2 > max_dist)
max_dist = d2;
}
- internal.smoothRadius = max_dist / 2;
- }
- template
- template
- ComputePrecision SPHSmooth::computeSmoothedValue(
- const typename SPHTree::coords &c, FuncT fun, SPHState *state) {
- if (state == 0)
- state = &internal;
+ state->smoothRadius = max_dist / 2;
+}
- ComputePrecision outputValue = 0;
- ComputePrecision max_dist = 0;
- ComputePrecision r3 = cube(state->smoothRadius);
- for (uint32_t i = 0; i < state->currentNgb; i++) {
- outputValue +=
- computeWValue(c, *state->ngb[i], state->distances[i], fun, state);
+template
+void
+SPHSmooth::fetchNeighboursOnVolume(const typename SPHTree::coords& c,
+ ComputePrecision radius)
+{
+ uint32_t numPart;
+ ComputePrecision d2, max_dist = 0;
+
+ memcpy(internal.currentCenter, c, sizeof(c));
+
+ internal.currentNgb = tree->getIntersection(c, radius, internal.ngb, internal.distances,
+ maxNgb);
+
+ for (uint32_t i = 0; i < internal.currentNgb; i++)
+ {
+ d2 = internal.distances[i] = sqrt(internal.distances[i]);
+ if (d2 > max_dist)
+ max_dist = d2;
+ }
+ internal.smoothRadius = max_dist / 2;
+}
+
+template
+template
+ComputePrecision
+SPHSmooth::computeSmoothedValue(const typename SPHTree::coords& c,
+ FuncT fun, SPHState *state)
+{
+ if (state == 0)
+ state = &internal;
+
+ ComputePrecision outputValue = 0;
+ ComputePrecision max_dist = 0;
+ ComputePrecision r3 = cube(state->smoothRadius);
+
+ for (uint32_t i = 0; i < state->currentNgb; i++)
+ {
+ outputValue += computeWValue(c, *state->ngb[i], state->distances[i], fun, state);
}
- return outputValue / r3;
- }
+ return outputValue / r3;
+}
- template
- ComputePrecision interpolateOne(const ValType &t) {
- return 1.0;
- }
+template
+ComputePrecision interpolateOne(const ValType& t)
+{
+ return 1.0;
+}
- template
- template
- void SPHSmooth::computeAdjointGradientSmoothedValue(
- const typename SPHTree::coords &c, ComputePrecision ag_value, FuncT fun,
- SPHState *state) {
- if (state == 0)
- state = &internal;
+// WARNING ! Cell's weight must be 1 !!!
+template
+template
+ComputePrecision SPHSmooth::computeInterpolatedValue(const typename SPHTree::coords& c,
+ FuncT fun, SPHState *state)
+{
+ if (state == 0)
+ state = &internal;
+
+ ComputePrecision outputValue = 0;
+ ComputePrecision max_dist = 0;
+ ComputePrecision weight = 0;
- ComputePrecision outputValue = 0;
- ComputePrecision max_dist = 0;
- ComputePrecision weight = 0;
-
- for (uint32_t i = 0; i < state->currentNgb; i++) {
- weight +=
- computeWValue(c, *state->ngb[i], state->distances[i], interpolateOne);
- }
-
- for (uint32_t i = 0; i < state->currentNgb; i++) {
- auto &cell = *state->ngb[i];
- double partial_ag =
- computeWValue(
- c, cell, state->distances[i],
- [ag_value](ComputePrecision) { return ag_value; }) /
- weight;
- fun(cell.val.pValue, ag_value);
- }
- }
-
- // WARNING ! Cell's weight must be 1 !!!
- template
- template
- ComputePrecision SPHSmooth::computeInterpolatedValue(
- const typename SPHTree::coords &c, FuncT fun, SPHState *state) {
- if (state == 0)
- state = &internal;
-
- ComputePrecision outputValue = 0;
- ComputePrecision max_dist = 0;
- ComputePrecision weight = 0;
-
- for (uint32_t i = 0; i < state->currentNgb; i++) {
+ for (uint32_t i = 0; i < state->currentNgb; i++)
+ {
outputValue += computeWValue(c, *state->ngb[i], state->distances[i], fun);
- weight +=
- computeWValue(c, *state->ngb[i], state->distances[i], interpolateOne);
+ weight += computeWValue(c, *state->ngb[i], state->distances[i], interpolateOne);
}
- return (outputValue == 0) ? 0 : (outputValue / weight);
- }
+ return (outputValue == 0) ? 0 : (outputValue / weight);
+}
- template
- template
- void
- SPHSmooth::runForEachNeighbour(FuncT fun, SPHState *state) {
- if (state == 0)
- state = &internal;
-
- for (uint32_t i = 0; i < state->currentNgb; i++) {
+template
+template
+void SPHSmooth::runForEachNeighbour(FuncT fun, SPHState *state)
+{
+ if (state == 0)
+ state = &internal;
+
+ for (uint32_t i = 0; i < state->currentNgb; i++)
+ {
fun(state->ngb[i]);
}
- }
+}
- template
- void SPHSmooth::addGridSite(
- const typename SPHTree::coords &c, SPHState *state) {
- ComputePrecision outputValue = 0;
- ComputePrecision max_dist = 0;
- ComputePrecision r3 = cube(state->smoothRadius);
- for (uint32_t i = 0; i < state->currentNgb; i++) {
- ComputePrecision d = state->distances[i];
- SPHCell &cell = *(state->ngb[i]);
- double kernel_value = getKernel(d / state->smoothRadius) / r3;
-#pragma omp atomic update
- cell.val.weight += kernel_value;
+template
+void SPHSmooth::addGridSite(const typename SPHTree::coords& c)
+{
+ ComputePrecision outputValue = 0;
+ ComputePrecision max_dist = 0;
+
+ ComputePrecision r3 = cube(internal.smoothRadius);
+
+ for (uint32_t i = 0; i < internal.currentNgb; i++)
+ {
+ ComputePrecision d = internal.distances[i];
+ SPHCell& cell = *(internal.ngb[i]);
+ cell.val.weight += getKernel(d/internal.smoothRadius) / r3;
}
- }
+}
- template
- void
- SPHSmooth::addGridSite(const typename SPHTree::coords &c) {
- addGridSite(c, &internal);
- }
-
- template
- ComputePrecision
- SPHSmooth::getKernel(ComputePrecision x) const {
- // WARNING !!! This is an unnormalized version of the kernel.
- if (x < 1)
- return 1 - 1.5 * x * x + 0.75 * x * x * x;
- else if (x < 2) {
+template
+ComputePrecision
+SPHSmooth::getKernel(ComputePrecision x) const
+{
+ // WARNING !!! This is an unnormalized version of the kernel.
+ if (x < 1)
+ return 1 - 1.5 * x * x + 0.75 * x * x * x;
+ else if (x < 2)
+ {
ComputePrecision d = 2 - x;
return 0.25 * d * d * d;
- } else
- return 0;
- }
+ }
+ else
+ return 0;
+}
- template
- bool SPHSmooth::hasNeighbours() const {
- return (internal.currentNgb != 0);
- }
+template
+bool SPHSmooth::hasNeighbours() const
+{
+ return (internal.currentNgb != 0);
+}
- template
- bool operator<(
- const SPHSmooth &s1,
- const SPHSmooth &s2) {
- return (s1.getSmoothingLen() < s2.getSmoothingLen());
- }
-}; // namespace CosmoTool
+template
+bool operator<(const SPHSmooth& s1, const SPHSmooth& s2)
+{
+ return (s1.getSmoothingLen() < s2.getSmoothingLen());
+}
+
+};
diff --git a/src/yorick_nc3.cpp b/src/yorick_nc3.cpp
index 07064c9..b1f09e9 100644
--- a/src/yorick_nc3.cpp
+++ b/src/yorick_nc3.cpp
@@ -260,6 +260,7 @@ namespace CosmoTool {
template
void loadArray(const std::string& fname,
T*&array, uint32_t *&dimList, uint32_t& rank)
+ throw (NoSuchFileException)
{
NcFile f(fname.c_str(), NcFile::ReadOnly);