complibs/cloog: add support for the ISL backend

CLooG 0.18+ will use ISL instead of PPL, so we have to configure
adequately depending of which backend is in use.

The Kconfig entries will decide for us which is selected, so we
can rely on either PPL xor ISL to be selected, not both.

Reported-by: "Plotnikov Dmitry" <leitz@ispras.ru>
[Dmitry did a preliminray patch to add ISL support,
 which this patch is inspired from]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
This commit is contained in:
Yann E. MORIN" 2013-05-05 00:01:05 +02:00
parent 1dc3dd9167
commit e1675bac64
3 changed files with 68 additions and 24 deletions

View File

@ -67,7 +67,6 @@ config ISL
config CLOOG
bool
select GMP
select PPL
select COMPLIBS
config MPC

View File

@ -2,10 +2,22 @@
choice
bool
prompt "CLooG/ppl version"
prompt "CLooG version"
if ISL
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config CLOOG_V_0_18_0
bool
prompt "0.18.0"
select CLOOG_0_18_or_later
endif # ISL
if PPL
config CLOOG_V_0_15_11
bool
prompt "0.15.11"
@ -32,12 +44,15 @@ config CLOOG_V_0_15_6
bool
prompt "0.15.6"
endif # PPL
endchoice
config CLOOG_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "0.18.0" if CLOOG_V_0_18_0
default "0.15.11" if CLOOG_V_0_15_11
default "0.15.10" if CLOOG_V_0_15_10
default "0.15.9" if CLOOG_V_0_15_9
@ -45,6 +60,9 @@ config CLOOG_VERSION
default "0.15.7" if CLOOG_V_0_15_7
default "0.15.6" if CLOOG_V_0_15_6
config CLOOG_0_18_or_later
bool
config CLOOG_0_15_1x
bool
select CLOOG_NEEDS_AUTORECONF

View File

@ -7,12 +7,24 @@ do_cloog_extract() { :; }
do_cloog_for_build() { :; }
do_cloog_for_host() { :; }
cloog_basename() {
printf "cloog"
if [ "${CT_PPL}" = "y" ]; then
printf -- "-ppl"
fi
}
cloog_basename_version() {
cloog_basename
printf -- "-${CT_CLOOG_VERSION}"
}
# Overide functions depending on configuration
if [ "${CT_CLOOG}" = "y" ]; then
# Download CLooG
do_cloog_get() {
CT_GetFile "cloog-ppl-${CT_CLOOG_VERSION}" \
CT_GetFile "$(cloog_basename_version)" \
http://www.bastoul.net/cloog/pages/download \
ftp://gcc.gnu.org/pub/gcc/infrastructure
}
@ -24,20 +36,20 @@ do_cloog_extract() {
# while versions 0.15.4 onward do have the version in the dirname.
# But, because the infrastructure properly creates the extracted
# directories (with tar's --strip-components), we can live safely...
CT_Extract "cloog-ppl-${CT_CLOOG_VERSION}"
CT_Patch "cloog-ppl" "${CT_CLOOG_VERSION}"
CT_Extract "$(cloog_basename_version)"
CT_Patch "$(cloog_basename)" "${CT_CLOOG_VERSION}"
# Help the autostuff in case it thinks there are things to regenerate...
CT_DoExecLog DEBUG mkdir -p "${CT_SRC_DIR}/cloog-ppl-${CT_CLOOG_VERSION}/m4"
CT_DoExecLog DEBUG mkdir -p "${CT_SRC_DIR}/$(cloog_basename_version)/m4"
if [ "${CT_CLOOG_NEEDS_AUTORECONF}" = "y" ]; then
CT_Pushd "${CT_SRC_DIR}/cloog-ppl-${CT_CLOOG_VERSION}"
CT_Pushd "${CT_SRC_DIR}/$(cloog_basename_version)"
CT_DoExecLog CFG ./autogen.sh
CT_Popd
fi
}
# Build CLooG/PPL for running on build
# Build CLooG for running on build
# - always build statically
# - we do not have build-specific CFLAGS
# - install in build-tools prefix
@ -48,8 +60,8 @@ do_cloog_for_build() {
native|cross) return 0;;
esac
CT_DoStep INFO "Installing CLooG/PPL for build"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cloog-ppl-build-${CT_BUILD}"
CT_DoStep INFO "Installing CLooG for build"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cloog-build-${CT_BUILD}"
cloog_opts+=( "host=${CT_BUILD}" )
cloog_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
@ -61,12 +73,12 @@ do_cloog_for_build() {
CT_EndStep
}
# Build CLooG/PPL for running on host
# Build CLooG for running on host
do_cloog_for_host() {
local -a cloog_opts
CT_DoStep INFO "Installing CLooG/PPL for host"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cloog-ppl-host-${CT_HOST}"
CT_DoStep INFO "Installing CLooG for host"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cloog-host-${CT_HOST}"
cloog_opts+=( "host=${CT_HOST}" )
cloog_opts+=( "prefix=${CT_HOST_COMPLIBS_DIR}" )
@ -78,7 +90,7 @@ do_cloog_for_host() {
CT_EndStep
}
# Build ClooG/PPL
# Build CLooG
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
@ -89,14 +101,30 @@ do_cloog_backend() {
local prefix
local cflags
local ldflags
local cloog_src_dir="${CT_SRC_DIR}/cloog-ppl-${CT_CLOOG_VERSION}"
local cloog_src_dir="${CT_SRC_DIR}/$(cloog_basename_version)"
local arg
local -a cloog_opts
local -a cloog_targets
local -a cloog_install_targets
for arg in "$@"; do
eval "${arg// /\\ }"
done
CT_DoLog EXTRA "Configuring CLooG/ppl"
if [ "${CT_CLOOG_0_18_or_later}" = y ]; then
cloog_opts+=( --with-gmp=system --with-gmp-prefix="${prefix}" )
cloog_opts+=( --with-isl=system --with-isl-prefix="${prefix}" )
cloog_opts+=( --without-osl )
cloog_targets=( all )
cloog_install_targets=( install )
else
cloog_opts+=( --with-gmp="${prefix}" )
cloog_opts+=( --with-ppl="${prefix}" )
cloog_targets=( libcloog.la )
cloog_install_targets=( install-libLTLIBRARIES install-pkgincludeHEADERS )
fi
CT_DoLog EXTRA "Configuring CLooG"
CT_DoExecLog CFG \
CFLAGS="${cflags}" \
@ -106,23 +134,22 @@ do_cloog_backend() {
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
--with-gmp="${prefix}" \
--with-ppl="${prefix}" \
--with-bits=gmp \
--with-host-libstdcxx='-lstdc++' \
--disable-shared \
--enable-static
--enable-static \
"${cloog_opts[@]}"
CT_DoLog EXTRA "Building CLooG/ppl"
CT_DoExecLog ALL make ${JOBSFLAGS} libcloog.la
CT_DoLog EXTRA "Building CLooG"
CT_DoExecLog ALL make ${JOBSFLAGS} "${cloog_targets[@]}"
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking CLooG/ppl"
CT_DoLog EXTRA "Checking CLooG"
CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing CLooG/ppl"
CT_DoExecLog ALL make install-libLTLIBRARIES install-pkgincludeHEADERS
CT_DoLog EXTRA "Installing CLooG"
CT_DoExecLog ALL make "${cloog_install_targets[@]}"
}
fi # CT_CLOOG