[packages/candl] - added git patch (with latest snap), updates required by pluto 0.11 - updated isl patch, added syst

qboosh qboosh at pld-linux.org
Sun Oct 5 17:59:09 CEST 2014


commit 65a2ccbcf7286adc211eb5d2967d98480d041b58
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Oct 5 17:56:53 2014 +0200

    - added git patch (with latest snap), updates required by pluto 0.11
    - updated isl patch, added system-libs patch

 candl-git.patch         | 13861 ++++++++++++++++++++++++++++++++++++++++++++++
 candl-isl.patch         |    27 +-
 candl-system-libs.patch |    20 +
 candl.spec              |    32 +-
 4 files changed, 13921 insertions(+), 19 deletions(-)
---
diff --git a/candl.spec b/candl.spec
index b9eb7d7..22f09a1 100644
--- a/candl.spec
+++ b/candl.spec
@@ -2,19 +2,27 @@ Summary:	Candl - Data Dependence Analysis Tool in the Polyhedral Model
 Summary(pl.UTF-8):	Candl - narzędzie do analizy zależności danych w modelu wielościennym
 Name:		candl
 Version:	0.6.2
-Release:	1
+%define	snap	20140806
+Release:	1.%{snap}.1
 License:	LGPL v3+
 Group:		Libraries
 Source0:	http://web.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/%{name}-%{version}.tar.gz
 # Source0-md5:	4e86392fa46a514b03532f93d9c83f8d
-Patch0:		%{name}-isl.patch
-Patch1:		%{name}-info.patch
+# git clone git://repo.or.cz/candl.git
+# git diff 0.6.2
+Patch0:		%{name}-git.patch
+Patch1:		%{name}-isl.patch
+Patch2:		%{name}-info.patch
+Patch3:		%{name}-system-libs.patch
 URL:		http://icps.u-strasbg.fr/people/bastoul/public_html/development/candl/
+BuildRequires:	autoconf >= 2.53
+BuildRequires:	automake >= 1:1.9
 BuildRequires:	gmp-devel
 # 0.12.x originally, 0.13 with isl patch
 BuildRequires:	isl-devel >= 0.13
+BuildRequires:	libtool
+BuildRequires:	osl-devel
 BuildRequires:	piplib-devel
-BuildRequires:	scoplib-devel >= 0.2.1-2
 BuildRequires:	texinfo
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -34,8 +42,8 @@ Group:		Development/Libraries
 Requires:	%{name} = %{version}-%{release}
 Requires:	gmp-devel
 Requires:	isl-devel >= 0.13
+Requires:	osl-devel
 Requires:	piplib-devel
-Requires:	scoplib-devel >= 0.2.1-2
 
 %description devel
 Header files for Candl library.
@@ -57,10 +65,24 @@ Statyczna biblioteka Candl.
 
 %prep
 %setup -q
+# clean after make dist to allow git patch
+%{__rm} include/candl/candl.h
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
+
+# because of tests subdir stripped from git patch
+> tests/Makefile.am
+
+%{__rm} osl piplib
+install -d osl piplib
 
 %build
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__automake}
 %configure \
 	--enable-mp-version \
 	--disable-silent-rules
diff --git a/candl-git.patch b/candl-git.patch
new file mode 100644
index 0000000..cd74220
--- /dev/null
+++ b/candl-git.patch
@@ -0,0 +1,13861 @@
+diff --git a/.gitmodules b/.gitmodules
+new file mode 100644
+index 0000000..3279daf
+--- /dev/null
++++ b/.gitmodules
+@@ -0,0 +1,6 @@
++[submodule "osl"]
++	path = osl
++	url = https://github.com/periscop/openscop.git
++[submodule "piplib"]
++	path = piplib
++	url = https://github.com/periscop/piplib.git
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+new file mode 100755
+index 0000000..a16d5e4
+--- /dev/null
++++ b/CMakeLists.txt
+@@ -0,0 +1,249 @@
++cmake_minimum_required(VERSION 2.8)
++
++
++set(PACKAGE_VERSION "0.6.2")
++set(RELEASE "${PACKAGE_VERSION}")
++set(BITS "32")
++set(DEFINE_HAS_ISL_LIB "")
++set(top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}")
++
++set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
++
++
++# User's settings - C Flags
++
++# 	set(release "TRUE")
++	set(release "FALSE")
++
++	# Release
++	if (release)
++		set(CMAKE_C_FLAGS "-O3")
++	# Debug # valgrind --show-reachable=yes --leak-check=full -v exe
++	else()
++		set(CMAKE_C_FLAGS "-O0 -g3")
++	endif()
++
++# User's settings - General C Flags
++	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99")
++
++
++# Build doxygen
++	find_package(Doxygen)
++	if (DOXYGEN_FOUND)
++		configure_file("doc/Doxyfile.in" "Doxyfile")
++		add_custom_target(
++			doxygen
++			${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
++			WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
++			COMMENT "Generating API documentation with Doxygen" VERBATIM
++		)
++	else()
++		message (STATUS "Doxygen not found :( API documentation can not be built")
++	endif()
++
++# Build documentation
++
++	# doc
++	find_program(texi2pdf_exe texi2pdf)
++	if (texi2pdf_exe)
++		add_custom_target(
++			doc
++			${texi2pdf_exe} ${CMAKE_CURRENT_SOURCE_DIR}/doc/candl.texi --output=${CMAKE_CURRENT_BINARY_DIR}/candl.pdf
++			WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
++			COMMENT "Generating documentation (pdf) (with texi2pdf)" VERBATIM
++		)
++	else()
++		message (STATUS "texi2pdf not found :( Documentation can not be built")
++	endif()
++
++
++# osl
++	find_package(osl REQUIRED)
++
++# GMP & piplib
++	message(STATUS "---")
++	find_library(gmp_LIB gmp)
++	if (gmp_LIB)
++		message (STATUS "Library gmp found =) ${gmp_LIB}")
++		set(BITS "MP")
++		# piplibMP
++		find_package(piplibMP REQUIRED)
++	else()
++		message(STATUS "Library gmp not found :(")
++		# piplib64
++		find_package(piplib64 REQUIRED)
++	endif()
++
++# Include directories (to use #include <> instead of #include "")
++
++	# include/candl/macros.h
++	configure_file("include/candl/macros.h.in" "include/candl/macros.h")
++	include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
++	# candl
++	include_directories("./include")
++
++
++# Compiler log
++	message(STATUS "---")
++	message(STATUS "C compiler = ${CMAKE_C_COMPILER}")
++	if (release)
++		message(STATUS "Mode Release")
++	else()
++		message(STATUS "Mode Debug")
++	endif()
++	message(STATUS "C flags    = ${CMAKE_C_FLAGS}")
++
++
++# Library
++
++	message(STATUS "---")
++
++	# files .c
++	file(
++		GLOB_RECURSE
++		sources
++		source/*
++	)
++	string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/candl.c;" "" sources "${sources}") # with ;
++	string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/candl.c" "" sources "${sources}")  # without ;
++
++	# Shared
++	add_library(
++		candl
++		SHARED
++		${sources}
++	)
++	target_link_libraries(candl ${OSL_LIBRARY})
++	if (gmp_LIB)
++		target_link_libraries(candl ${PIPLIBMP_LIBRARY})
++	else()
++		target_link_libraries(candl ${PIPLIB64_LIBRARY})
++	endif()
++	get_property(candl_lib_location TARGET candl PROPERTY LOCATION)
++	message(STATUS "Add candl library (shared) ${candl_lib_location}")
++
++	# Static
++	add_library(
++		candl_static
++		STATIC
++		${sources}
++	)
++	set_target_properties(candl_static PROPERTIES OUTPUT_NAME candl)
++	if (gmp_LIB)
++		target_link_libraries(candl_static ${PIPLIBMP_LIBRARY})
++	else()
++		target_link_libraries(candl_static ${PIPLIB64_LIBRARY})
++	endif()
++	target_link_libraries(candl_static ${OSL_LIBRARY})
++	get_property(candl_static_lib_location TARGET candl_static PROPERTY LOCATION)
++	message(STATUS "Add candl library (static) ${candl_static_lib_location}")
++
++
++# Executables & tests
++
++	message(STATUS "---") # candl
++
++	message(STATUS "Add executable candl")
++	add_executable(candl_exe "source/candl.c")
++	set_target_properties(candl_exe PROPERTIES OUTPUT_NAME "candl")
++	target_link_libraries(candl_exe candl_static ${OSL_LIBRARY})
++	if (gmp_LIB)
++		target_link_libraries(candl_exe candl_static ${gmp_LIB})
++	endif()
++
++	# candl test
++	find_program(bash_exe bash)
++	if (bash_exe)
++	
++		message(STATUS "---")
++
++		enable_testing()
++		
++		file(
++			GLOB_RECURSE
++			tests_unitary
++			tests/unitary/*.c
++		)
++
++		foreach(test ${tests_unitary})
++			message(STATUS "Add Unitary test ${test}")
++			add_test(
++				"tests_unitary_${test}"
++				"${bash_exe}"
++				"${CMAKE_CURRENT_SOURCE_DIR}/tests/checker.sh"
++				"${test}"
++				"${test}"
++				"0"
++			)
++		endforeach()
++
++		file(
++			GLOB_RECURSE
++			tests_transformations_must_fail
++			tests/transformations/must_fail/*.c
++		)
++
++		foreach(test ${tests_transformations_must_fail})
++			message(STATUS "Add Transformation must fail test ${test}")
++			add_test(
++				"tests_transformations_must_fail_${test}"
++				"${bash_exe}"
++				"${CMAKE_CURRENT_SOURCE_DIR}/tests/checker.sh"
++				"${test}"
++				"${test}"
++				"1"
++			)
++		endforeach()
++
++		file(
++			GLOB_RECURSE
++			tests_transformations_working
++			tests/transformations/working/*.c
++		)
++
++		foreach(test ${tests_transformations_working})
++			message(STATUS "Add Transformation working test ${test}")
++			add_test(
++				"tests_transformations_working_${test}"
++				"${bash_exe}"
++				"${CMAKE_CURRENT_SOURCE_DIR}/tests/checker.sh"
++				"${test}"
++				"${test}"
++				"1"
++			)
++		endforeach()
++
++	endif()
++
++
++# Install
++
++	install(TARGETS candl LIBRARY DESTINATION lib)
++	install(TARGETS candl_static ARCHIVE DESTINATION lib)
++	install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
++	install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.hpp")
++	install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION include FILES_MATCHING PATTERN "*.h")
++	install(FILES candl-config.cmake DESTINATION lib/candl)
++	install(TARGETS candl_exe RUNTIME DESTINATION bin)
++
++
++# Little help
++
++	message(STATUS "You can execute:")
++	message(STATUS "    make         # To compile candl library & candl")
++	if (bash_exe)
++		message(STATUS "    make test    # To execute tests")
++		message(STATUS "                   (with the first candl in the $PATH (?))")
++	endif()
++	message(STATUS "    make install # To install library, include and CMake module")
++	message(STATUS "                 # If you need root access:")
++	message(STATUS "                 #     sudo make install")
++	message(STATUS "                 #     su -c \"make install\"")
++	if (DOXYGEN_FOUND)
++		message(STATUS "    make doxygen # To generate the Doxygen")
++	endif()
++	if( texi2pdf_exe)
++		message(STATUS "    make doc     # To generate the documentation")
++	endif()
++
++	message(STATUS "---")
+diff --git a/Makefile.am b/Makefile.am
+index fefbf45..6839b4b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -32,39 +32,90 @@
+ # *                                                                           *
+ # *****************************************************************************/
+ 
++#############################################################################
++
++if BUNDLED_OSL
++  MAYBE_OSL = osl
++  OSL_LA = $(top_builddir)/osl/libosl.la
++endif
++if BUNDLED_PIPLIB
++  MAYBE_PIPLIB = piplib
++  PIPLIB_LA = $(top_builddir)/piplib/libpiplib$(BITS).la
++endif
++
++SUBDIRS         = $(MAYBE_OSL) $(MAYBE_PIPLIB) doc tests
++DIST_SUBDIRS    = $(MAYBE_OSL) $(MAYBE_PIPLIB) doc tests
++ACLOCAL_AMFLAGS = -I m4
++
++#############################################################################
++
++bin_PROGRAMS    = candl
++lib_LTLIBRARIES = libcandl.la
+ 
+ #############################################################################
+-SUBDIRS 		= doc source include tests
+ 
++pkginclude_HEADERS =                   \
++	include/candl/candl.h          \
++	include/candl/dependence.h     \
++	include/candl/scop.h           \
++	include/candl/statement.h      \
++	include/candl/macros.h         \
++	include/candl/util.h           \
++	include/candl/ddv.h            \
++	include/candl/matrix.h         \
++	include/candl/options.h        \
++	include/candl/piplib.h         \
++	include/candl/piplib-wrapper.h \
++	include/candl/violation.h
++
++DEFAULT_INCLUDES = -I.
++INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
++AM_CFLAGS = $(CFLAGS_WARN)
+ 
+ #############################################################################
+-ACLOCAL_AMFLAGS		= -I autoconf
+ 
+-m4datadir		= $(datadir)/aclocal
++EXTRA_DIST = COPYING.LESSER AUTHORS
++
++libcandl_la_LIBADD   = @OSL_LIBS@ @PIPLIB_LIBS@ $(OSL_LA) $(PIPLIB_LA)
++libcandl_la_CPPFLAGS = @OSL_CPPFLAGS@ @PIPLIB_CPPFLAGS@ -g
++libcandl_la_LDFLAGS  = @OSL_LDFLAGS@ @PIPLIB_LDFLAGS@ 
++libcandl_la_SOURCES  =          \
++	source/dependence.c     \
++	source/ddv.c            \
++	source/scop.c           \
++	source/statement.c      \
++	source/util.c           \
++	source/isl-wrapper.c    \
++	source/matrix.c         \
++	source/options.c        \
++	source/piplib-wrapper.c \
++	source/pruning.c        \
++	source/violation.c
+ 
+-EXTRA_DIST		= COPYING.LESSER AUTHORS
++#############################################################################
+ 
+-AUX_DIST                =			\
+-	$(ac_aux_dir)/config.guess		\
+-	$(ac_aux_dir)/config.sub		\
+-	$(ac_aux_dir)/install-sh		\
+-	$(ac_aux_dir)/ltmain.sh			\
+-	$(ac_aux_dir)/missing			\
+-	$(ac_aux_dir)/depcomp			\
+-	$(ac_aux_dir)/texinfo.tex
++LDADD              = @CANDL_LIBS@ @OSL_LIBS@ @PIPLIB_LIBS@
++candl_CPPFLAGS     = @OSL_CPPFLAGS@ @PIPLIB_CPPFLAGS@ -g -Wall
++candl_LDFLAGS      = #@OSL_LDFLAGS@ @PIPLIB_LDFLAGS@ # TO BE REMOVED
++candl_DEPENDENCIES = libcandl.la
++candl_SOURCES      = source/candl.c
+ 
++#############################################################################
+ 
+-MAINTAINERCLEANFILES 	=			\
+-	Makefile.in				\
+-	aclocal.m4				\
+-	configure				\
+-	source/stamp-h.in			\
++MAINTAINERCLEANFILES = \
++	Makefile.in    \
++	aclocal.m4     \
++	configure      \
+ 	$(AUX_DIST)
+ 
+ #############################################################################
++
+ dist-hook:
+ 	(cd $(distdir) && mkdir -p $(ac_aux_dir))
+ 	for file in $(AUX_DIST); do \
+ 	  cp $$file $(distdir)/$$file; \
+ 	done
+ #############################################################################
++
++valcheck:
++	$(MAKE) valcheck -C tests
+diff --git a/README b/README
+index 1b20de6..864d102 100644
+--- a/README
++++ b/README
+@@ -5,7 +5,7 @@
+ Install
+ -------
+ 
+-To install candl, PIPLib must be installed. Optionally, scoplib must
++To install candl, PIPLib must be installed. Optionally, OpenScop library must
+ be installed to enable SCoP support.
+ 
+ $> ./configure --with-piplib=/path/to/piplib/install --with-scoplib=/path/to/scoplib/install
+@@ -15,6 +15,32 @@ $> make
+ $> make install
+ 
+ 
++Alternatively, to use bunled PIPLib and  OpenScop library, follow following command
++sequence:
++
++$> ./get_submodules.sh
++
++$> ./autogen.sh
++
++$> ./configure --with-piplib=bundled --with-scoplib=bundled
++
++$> make
++
++$> make install
++
++Alternative: Install with CMake
++-------------------------------
++
++$> mkdir build
++$> cd build
++$> cmake .. # -DCMAKE_INSTALL_PREFIX="/your/install/directory"
++$> make
++$> make test
++$> # make install # sudo make install # su -c "make install"
++$> make doc
++$> make doxygen
++
++
+ Support
+ -------
+ 
+diff --git a/TODO b/TODO
+new file mode 100644
+index 0000000..74b6087
+--- /dev/null
++++ b/TODO
+@@ -0,0 +1,59 @@
++
++- unchecked -commute 
++
++- lastwriter not finished
++  see the FIXME in the function candl_dep_compute_lastwriter
++
++- compilation error with ISL :
++  To test it, in isl-wrapper change #ifdef CANDL_SUPPORTS_ISL to
++  #ifndef CANDL_SUPPORTS_ISL
++  
++  The error is :
++  source/isl-wrapper.c: In function ‘isl_constraint_read_from_matrix’:
++  source/isl-wrapper.c:79: warning: passing argument 1 of ‘isl_equality_alloc’ from incompatible pointer type
++  /home/jpoudroux/usr/include/isl/constraint.h:28: note: expected ‘struct isl_local_space *’ but argument is of type ‘struct isl_space *’
++  source/isl-wrapper.c:81: warning: passing argument 1 of ‘isl_inequality_alloc’ from incompatible pointer type
++  /home/jpoudroux/usr/include/isl/constraint.h:29: note: expected ‘struct isl_local_space *’ but argument is of type ‘struct isl_space *’
++
++- prunnning not finish (prunning.c: line 258 to 328)
++  Uncomment the CANDL_COMPILE_PRUNNING in candl.h, or remove the ifdef in
++  prunning.c
++
++- change the type of the dependence/violation domain
++  (at the end of candl_dependence_build_system and candl_matrix_violation)
++  today it's : OSL_UNDEFINED
++  
++- candl_usr_init
++  the statements must be sorted to compute the statement label
++  the problem is if the scop is reordered, the second transformed scop
++  must be "aligned" with it (the first statement need to corresponds to the first
++  statement of the second scop, but the scattering could be different)
++
++  Functions of clay, which could return a non ordered scop :
++  (they create new statements)
++  iss, unroll, peel
++
++- in pip_has_rational_point:
++  -> FIXME (dependence.c:2243)
++
++- autocorrect not implemented yet 
++
++- compilation warning with gmp :
++  /usr/bin/ld: warning: libgmp.so.3, needed by /home/jpoudroux/usr/lib/libosl.so, may conflict with libgmp.so.10
++
++- autoreconf error in the piplib module
++  -> piplib must be installed in /
++  
++  or execute these commands :
++  $ cd piplib
++  $ echo "AM_PROG_CC_C_O" >>configure.in
++  $ touch NEWS AUTHORS ChangeLog
++  $ cd ..
++  $ ./redo.sh
++
++  If you want to set piplib as "bundled", uncomment these lines in the
++  configure.ac :
++  295: if test $with_piplib = bundled; then
++  296:   AC_CONFIG_SUBDIRS(piplib)
++  297: fi
++
+diff --git a/autoconf/.gitignore b/autoconf/.gitignore
+new file mode 100644
+index 0000000..e69de29
+diff --git a/autoconf/candl.m4 b/autoconf/candl.m4
+deleted file mode 100644
+index 2d1347e..0000000
+--- a/autoconf/candl.m4
++++ /dev/null
+@@ -1,81 +0,0 @@
+-AC_DEFUN([CANDL_ARG_LIBS_DEPENDENCIES],
+-[
+-dnl Add $prefix to the library path (convenience).
+-  if test -e ${prefix}/include; then
+-    CPPFLAGS="${CPPFLAGS} -I${prefix}/include"
+-  fi;
+-  if test -e ${prefix}/lib; then
+-    LDFLAGS="${LDFLAGS} -L${prefix}/lib"
+-  fi;
+-dnl Offer --with-piplib.
+-  AC_ARG_WITH(piplib,
+-	      AC_HELP_STRING([--with-piplib=DIR],
+-              	             [DIR Location of PIPLib package]),
+-              [with_piplib=$withval;
+-	       CPPFLAGS="${CPPFLAGS} -I$withval/include";
+-	       LDFLAGS="${LDFLAGS} -L$withval/lib"
+-	      ],
+-              [with_piplib=yes])
+-dnl Check for piplib existence.
+-  AS_IF([test "x$with_piplib" != xno],
+-	[AC_SEARCH_LIBS([pip_solve], [piplib$BITS],
+-	 [LIBS="-lpiplib$BITS $LIBS";
+-	 AC_DEFINE([HAVE_LIBPIPLIB], [1], [Define if you have libpiplib$BITS])
+-         ],
+-         [if test "x$with_piplib" != xcheck; then
+-           AC_MSG_FAILURE([--with-piplib was given, but test for piplib failed])
+-          fi
+-         ])
+-	])
+-dnl Offer --with-scoplib.
+-  AC_ARG_WITH(scoplib,
+-	      AC_HELP_STRING([--with-scoplib=DIR],
+-              	             [DIR Location of ScopLib package]),
+-              [with_scoplib=$withval;
+-	       CPPFLAGS="${CPPFLAGS} -I$withval/include";
+-	       LDFLAGS="${LDFLAGS} -L$withval/lib"
+-	      ],
+-              [with_scoplib=check])
+-dnl Check for scoplib existence.
+-  AS_IF([test "x$with_scoplib" != xno],
+-	[AC_SEARCH_LIBS([scoplib_scop_read], [scoplib],
+-	 [LIBS="-lscoplib $LIBS";
+-	 DEFINE_HAS_SCOPLIB_LIB="# define CANDL_SUPPORTS_SCOPLIB"
+-	 ],
+-         [DEFINE_HAS_SCOPLIB_LIB=""
+-  	  if test "x$with_scoplib" != xcheck; then
+-           AC_MSG_FAILURE([Test for ScopLib failed. Use --with-scoplib to specify libscoplib path.])
+-          fi
+-         ])
+-	])
+-dnl Offer --with-gmp-prefix.
+-  AC_ARG_WITH(gmp-prefix,
+-	      AC_HELP_STRING([--with-gmp-prefix=DIR],
+-              	             [DIR Location of GMP package (only headers are needed)]),
+-              [CPPFLAGS="${CPPFLAGS} -I$withval/include";
+-               LDFLAGS="${LDFLAGS} -L$withval/lib";
+-	      ])
+-dnl Offer --with-isl.
+-  AC_ARG_WITH(isl,
+-	      AC_HELP_STRING([--with-isl=DIR],
+-              	             [DIR Location of Isl package]),
+-              [with_isl=$withval;
+-	       CPPFLAGS="${CPPFLAGS} -I$withval/include";
+-	       LDFLAGS="${LDFLAGS} -L$withval/lib"
+-	      ],
+-              [with_isl=check])
+-dnl Check for isl existence.
+-  AS_IF([test "x$with_isl" != xno],
+-	[AC_SEARCH_LIBS([isl_version], [isl],
+-	 [LIBS="-lisl $LIBS";
+-	 DEFINE_HAS_ISL_LIB="# define CANDL_SUPPORTS_ISL"
+-	 ],
+-         [DEFINE_HAS_ISL_LIB=""
+-  	  if test "x$with_isl" != xcheck; then
+-           AC_MSG_FAILURE([Test for Isl failed. Use --with-isl to specify libisl path.])
+-          fi
+-         ])
+-	])
+-])
+-
+-
+#diff --git a/autogen.sh b/autogen.sh
+#index b67de1f..c27fa40 100755
+#--- a/autogen.sh
+#+++ b/autogen.sh
+#@@ -1,5 +1,8 @@
+#-#! /bin/sh
+#-
+#-aclocal -I autoconf
+#-libtoolize --force --copy
+#-autoreconf -vfi
+#+#!/bin/sh
+#+autoreconf -i
+#+if test -f osl/autogen.sh; then
+#+	(cd osl; ./autogen.sh)
+#+fi
+#+if test -f piplib/autogen.sh; then
+#+	(cd piplib; ./autogen.sh)
+#+fi
+diff --git a/candl-config.cmake b/candl-config.cmake
+new file mode 100644
+index 0000000..c1047d0
+--- /dev/null
++++ b/candl-config.cmake
+@@ -0,0 +1,25 @@
++# Try to find the candl library
++
++# CANDL_FOUND       - System has candl lib
++# CANDL_INCLUDE_DIR - The candl include directory
++# CANDL_LIBRARY     - Library needed to use candl
++
++
++if (CANDL_INCLUDE_DIR AND CANDL_LIBRARY)
++	# Already in cache, be silent
++	set(CANDL_FIND_QUIETLY TRUE)
++endif()
++
++find_path(CANDL_INCLUDE_DIR NAMES candl/candl.h)
++find_library(CANDL_LIBRARY NAMES candl)
++
++if (CANDL_LIBRARY AND CANDL_INCLUDE_DIR)
++	message(STATUS "Library candl found =) ${CANDL_LIBRARY}")
++else()
++	message(STATUS "Library candl not found =(")
++endif()
++
++include(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(CANDL DEFAULT_MSG CANDL_INCLUDE_DIR CANDL_LIBRARY)
++
++mark_as_advanced(CANDL_INCLUDE_DIR CANDL_LIBRARY)
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..03c9ce4
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,320 @@
++dnl /**-------------------------------------------------------------------**
++dnl  **                              CAnDL                                **
++dnl  **-------------------------------------------------------------------**
++dnl  **                           configure.in                            **
++dnl  **-------------------------------------------------------------------**
++dnl  **                 First version: september 8th 2003                 **
++dnl  **-------------------------------------------------------------------**/
++dnl 
++dnl /**************************************************************************
++dnl *   CAnDL : the Chunky Analyser for Dependences in Loops (experimental)   *
++dnl ***************************************************************************
++dnl *                                                                         *
++dnl * Copyright (C) 2003-2008 Cedric Bastoul                                  *
++dnl *                                                                         *
++dnl * This is free software; you can redistribute it and/or modify it under   *
++dnl * the terms of the GNU General Public License as published by the Free    *
++dnl * Software Foundation; either version 2 of the License, or (at your       *
++dnl * option) any later version.                                              *
++dnl *                                                                         *
++dnl * This software is distributed in the hope that it will be useful, but    *
++dnl * WITHOUT ANY WARRANTY; without even the implied warranty of              *
++dnl * MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU        *
++dnl * General Public License for more details.                                *
++dnl *                                                                         *
++dnl * You should have received a copy of the GNU General Public License along *
++dnl * with software; if not, write to the Free Software Foundation, Inc.,     *
++dnl * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                  *
++dnl *                                                                         *
++dnl * CAnDL, the Chunky Dependence Analyser                                   *
++dnl * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                      *
++dnl *                                                                         *
++dnl ***************************************************************************/
++
++m4_define([version_major], [0])
++m4_define([version_minor], [0])
++m4_define([version_revision], [1])
++
++AC_PREREQ(2.53)
++
++dnl Fill here the @bug email adress.
++AC_INIT([candl], [0.6.2], [cedric.bastoul at inria.fr,pouchet at cse.ohio-state.edu])
++
++AC_CONFIG_SRCDIR([include/candl/candl.h])
++
++dnl Put as most as possible configuration files to an auxialiry
++dnl directory.
++AC_CONFIG_AUX_DIR(autoconf)
++AC_CONFIG_MACRO_DIR([m4])
++
++dnl Initialize automake. Here, a special tar version that enables
++dnl (very) long filenames.
++#AM_INIT_AUTOMAKE([1.9 tar-ustar no-define foreign dist-bzip2])
++AM_INIT_AUTOMAKE([foreign])
++m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
++
++dnl default version
++BITS="MP"
++CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_MP
++
++
++dnl /**************************************************************************
++dnl  *                              Checking                                  *
++dnl  **************************************************************************/
++
++
++dnl Checks for programs.
++AC_PROG_CC
++AC_PROG_LN_S
++AC_PROG_MAKE_SET
++AC_CHECK_PROG(CD, cd)
++AC_PROG_INSTALL
++AC_PROG_LIBTOOL
++AC_CHECK_PROGS(DOXYGEN,doxygen,doxygen)
++
++AX_CC_MAXOPT
++AC_SUBST(CFLAGS_WARN)
++AX_CFLAGS_WARN_ALL(CFLAGS_WARN)
++
++dnl Checks for typedefs, structures, and compiler characteristics.
++AC_C_CONST
++AC_TYPE_SIZE_T
++
++dnl Checks for header files.
++AC_HEADER_STDC
++AC_CHECK_HEADERS([errno.h stddef.h stdlib.h string.h strings.h unistd.h])
++
++dnl Checks for library functions.
++AC_CHECK_FUNCS(strtol)
++
++
++dnl /**************************************************************************
++dnl  *                             Option setting                             *
++dnl  **************************************************************************/
++
++dnl /**************************************************************************
++dnl  *                   Where is the OpenScop Library?                       *
++dnl  **************************************************************************/
++
++AX_SUBMODULE(osl,system|build|bundled,system)
++
++AC_SUBST(OSL_CPPFLAGS)
++AC_SUBST(OSL_LDFLAGS)
++AC_SUBST(OSL_LIBS)
++case "$with_osl" in
++bundled)
++  OSL_CPPFLAGS="-I$srcdir/osl/include -Iosl/include"
++  OSL_LIBS="$srcdir/osl/libosl.la"
++  ;;
++build)
++  OSL_CPPFLAGS="-I$osl_srcdir/include -I$with_osl_builddir/include"
++  OSL_LIBS="$with_osl_builddir/libosl.la"
++  ;;
++system)
++  if test "x$with_osl_prefix" != "x"; then
++    OSL_CPPFLAGS="-I$with_osl_prefix/include"
++  fi
++  if test "x$with_osl_exec_prefix" != "x"; then
++    OSL_LDFLAGS="-L$with_osl_exec_prefix/lib"
++  fi
++  OSL_LIBS="$with_osl_prefix/lib/libosl.la -losl"
++esac
++AM_CONDITIONAL(BUNDLED_OSL, test $with_osl = bundled)
++
++
++
++dnl GMP
++
++dnl Some default values cause I'm not sure whether autoconf set them, while
++dnl documentation says it does...
++gmp_package="yes"
++gmp_include_package="yes"
++gmp_library_package="yes"
++
++NEED_MP="no"
++
++dnl --with-gmp=gmp-path
++AC_ARG_WITH(gmp,
++        [  --with-gmp=DIR          DIR where the gmp package is installed],
++  [ echo "Package gmp : $withval" &&
++    gmp_package=$withval &&
++          GMP_INC=$gmp_package/include &&
++          GMP_LIB=$gmp_package/lib &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_MP &&
++          NEED_MP="yes"])
++
++AC_ARG_WITH(gmp-include,
++        [  --with-gmp-include=DIR  DIR where gmp.h is installed],
++  [ echo "Package gmp-include : $withval" &&
++    gmp_include_package=$withval &&
++          GMP_INC=$gmp_include_package &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_MP &&
++    NEED_MP="yes"])
++
++AC_ARG_WITH(gmp-library,
++        [  --with-gmp-library=DIR  DIR where the gmp library is installed],
++  [ echo "Package gmp-library : $withval" &&
++    gmp_library_package=$withval &&
++          GMP_LIB=$gmp_library_package &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_MP &&
++    NEED_MP="yes"])
++
++AC_ARG_ENABLE(int-version,
++  [  --enable-int-version    'int' (32 bits) version is built],
++  [ echo "Package int : $enableval" &&
++    BITS="32" &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_LONG])
++
++AC_ARG_ENABLE(llint-version,
++  [  --enable-llint-version  'long long int' (64 bits) version is built],
++  [ echo "Package long long int : $enableval" &&
++    BITS="64" &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_LONGLONG])
++
++AC_ARG_ENABLE(mp-version,
++  [  --enable-mp-version     'MP' (multiple precision) version is built],
++  [ echo "Package mp : $enableval" &&
++    BITS="MP" &&
++          CPPFLAGS=-DCANDL_LINEAR_VALUE_IS_MP &&
++          NEED_MP="yes"])
++
++AC_ARG_ENABLE(piplib-hybrid,
++  [  --enable-piplib-hybrid   Link with piplib-hybrid],
++  [ echo "Piplib-hybrid support : $enableval" &&
++          if test "x$enableval" = "xyes"; then 
++            CPPFLAGS=-DCANDL_HAS_PIPLIB_HYBRID
++          fi])
++
++
++dnl /**************************************************************************
++dnl  *                   Where is the PipLib Library?                         *
++dnl  **************************************************************************/
++
++AX_SUBMODULE(piplib,system|build|bundled,system)
++
++AC_SUBST(PIPLIB_CPPFLAGS)
++AC_SUBST(PIPLIB_LDFLAGS)
++AC_SUBST(PIPLIB_LIBS)
++case "$with_piplib" in
++bundled)
++  PIPLIB_CPPFLAGS="-I$srcdir/piplib/include -Ipiplib/include"
++  PIPLIB_LIBS="$srcdir/piplib/libpiplib$BITS.la"
++  ;;
++build)
++  PIPLIB_CPPFLAGS="-I$piplib_srcdir/include -I$with_piplib_builddir/include"
++  PIPLIB_LIBS="$with_piplib_builddir/libpiplib$BITS.la"
++  ;;
++system)
++  if test "x$with_piplib_prefix" != "x"; then
++    PIPLIB_CPPFLAGS="-I$with_piplib_prefix/include"
++  fi
++  if test "x$with_piplib_exec_prefix" != "x"; then
++    PIPLIB_LDFLAGS="-L$with_piplib_exec_prefix/lib"
++  fi
++  PIPLIB_LIBS="$with_piplib_prefix/lib/libpiplib$BITS.la -lpiplib$BITS"
++esac
++AM_CONDITIONAL(BUNDLED_PIPLIB, test $with_piplib = bundled)
++
++
++
++dnl /**************************************************************************
++dnl  *                            Where is GMP?                               *
++dnl  **************************************************************************/
++
++
++dnl Checking for gmp
++AC_MSG_CHECKING(whether gmp works)
++if test "$gmp_package" = "no"; then
++  echo "GMP package not defined"
++  AC_MSG_RESULT(no)
++  TO_BUILD_MP=""
++else
++  if test "$NEED_MP" = "no"; then
++    echo "Mode normal GMP"
++    TO_BUILD="$TO_BUILD MP"
++    AC_CHECK_HEADER(gmp.h,
++                    [AC_SEARCH_LIBS([__gmpz_init], [gmp],
++                      [LIBS="$LIBS -lgmp"],
++          [echo "Can't find gmp library." &&
++           echo "MP version will not be built." &&
++           TO_BUILD_MP=""])],
++        [echo "Can't find gmp headers." &&
++         echo "MP version will not be built." &&
++         TO_BUILD_MP=""])
++  else
++    dnl Default given by --with-X is "yes", --without-X is "no". We also
++    dnl initialized manually all gmp_package* variables to "yes" (thus they are
++    dnl supposed to be "yes" except if the user set them himself).
++    if test "$gmp_package" != "yes" ; then
++      echo "(GMP path has been set by user)"
++      GMP_DIR=$gmp_package
++      dnl Useful for AC_CHECK_X to find what we want.
++      CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS"
++      LDFLAGS="-L$GMP_DIR/lib $LDFLAGS"
++    fi
++
++    if test "$gmp_include_package" != "yes" ; then
++      CPPFLAGS="-I$GMP_INC $CPPFLAGS"
++    fi
++
++    if test "$gmp_library_package" != "yes" ; then
++      LDFLAGS="-L$GMP_LIB $LDFLAGS"
++    fi
++
++    AC_CHECK_HEADER(gmp.h,
++                    [],
++                    [AC_MSG_ERROR(Can't find gmp headers.)])
++    AC_SEARCH_LIBS([__gmpz_init], [gmp],
++                 [LIBS="$LIBS -lgmp"],
++                 [AC_MSG_ERROR(Can't find gmp library.)])
++
++    AC_MSG_RESULT(yes)
++  fi
++fi
++
++dnl /**************************************************************************
++dnl  *                            Substitutions                               *
++dnl  **************************************************************************/
++
++
++dnl Substitutions to do.
++AC_SUBST(BITS)
++AC_SUBST(DEFINE_HAS_ISL_LIB)
++AC_SUBST(ac_aux_dir)
++AC_SUBST(abs_top_srcdir)
++
++
++dnl Configure Makefiles.
++AC_CONFIG_FILES([
++  Makefile
++  doc/Makefile
++  doc/Doxyfile
++  include/candl/macros.h
++  include/candl/piplib.h
++  tests/Makefile
++  ],
++  [test -z "$CONFIG_HEADERS" || echo timestamp > source/stamp-h.in])
++
++#if test $with_piplib = system; then
++#  AC_CONFIG_SUBDIRS(piplib)
++#fi
++if test $with_osl = bundled; then
++  AC_CONFIG_SUBDIRS(osl)
++fi
++
++dnl forcing candl to use local libcandl.la
++dnl if --prefix is not specified
++CANDL_LIBS="$srcdir/libcandl.la -lcandl"
++AC_SUBST(CANDL_LIBS)
++
++
++
++AC_OUTPUT
++
++echo "             /*-----------------------------------------------*"
++echo "              *          Candl configuration is OK            *"
++echo "              *-----------------------------------------------*/"
++echo "It appears that your system is OK to start Candl compilation. You need"
++echo "now to type \"make\". Lastly type \"make install\" to install Candl on"
++echo "your system (log as root if necessary)."
++
+diff --git a/configure.in b/configure.in
+deleted file mode 100644
+index f6cf7ad..0000000
+--- a/configure.in
++++ /dev/null
+@@ -1,233 +0,0 @@
+-dnl /**-------------------------------------------------------------------**
+-dnl  **                              CAnDL                                **
+-dnl  **-------------------------------------------------------------------**
+-dnl  **                           configure.in                            **
+-dnl  **-------------------------------------------------------------------**
+-dnl  **                 First version: september 8th 2003                 **
+-dnl  **-------------------------------------------------------------------**/
+-dnl 
+-dnl /**************************************************************************
+-dnl *   CAnDL : the Chunky Analyser for Dependences in Loops (experimental)   *
+-dnl ***************************************************************************
+-dnl *                                                                         *
+-dnl * Copyright (C) 2003-2008 Cedric Bastoul                                  *
+-dnl *                                                                         *
+-dnl * This is free software; you can redistribute it and/or modify it under   *
+-dnl * the terms of the GNU General Public License as published by the Free    *
+-dnl * Software Foundation; either version 2 of the License, or (at your       *
+-dnl * option) any later version.                                              *
+-dnl *                                                                         *
+-dnl * This software is distributed in the hope that it will be useful, but    *
+-dnl * WITHOUT ANY WARRANTY; without even the implied warranty of              *
+-dnl * MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU        *
+-dnl * General Public License for more details.                                *
+-dnl *                                                                         *
+-dnl * You should have received a copy of the GNU General Public License along *
+-dnl * with software; if not, write to the Free Software Foundation, Inc.,     *
+-dnl * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                  *
+-dnl *                                                                         *
+-dnl * CAnDL, the Chunky Dependence Analyser                                   *
+-dnl * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                      *
+-dnl *                                                                         *
+-dnl ***************************************************************************/
+-
+-
+-AC_PREREQ(2.13)
+-dnl Fill here the @bug email adress.
+-AC_INIT([candl], [0.6.2], [cedric.bastoul at inria.fr,pouchet at cse.ohio-state.edu])
+-dnl A common file, which serve as a test.
+-AC_CONFIG_SRCDIR([include/candl/program.h])
+-dnl Put as most as possible configuration files to an auxialiry
+-dnl directory.
+-AC_CONFIG_AUX_DIR([autoconf])
+-dnl Initialize automake. Here, a special tar version that enables
+-dnl (very) long filenames.
+-AM_INIT_AUTOMAKE([1.9 tar-ustar no-define foreign dist-bzip2])
+-
+-
+-dnl default version
+-BITS="64"
+-CPPFLAGS=-DLINEAR_VALUE_IS_LONGLONG
+-
+-
+-dnl /**************************************************************************
+-dnl  *                              Checking                                  *
+-dnl  **************************************************************************/
+-
+-
+-dnl Checks for programs.
+-AC_PROG_CC
+-AC_PROG_LN_S
+-AC_PROG_MAKE_SET
+-AC_CHECK_PROG(CD, cd)
+-AC_PROG_LIBTOOL
+-AC_CHECK_PROGS(DOXYGEN,doxygen,doxygen)
+-
+-dnl Checks for typedefs, structures, and compiler characteristics.
+-AC_C_CONST
+-AC_TYPE_SIZE_T
+-
+-dnl Checks for header files.
+-AC_HEADER_STDC
+-AC_CHECK_HEADERS([errno.h stddef.h stdlib.h string.h strings.h unistd.h])
+-
+-dnl Checks for library functions.
+-AC_CHECK_FUNCS(strtol)
+-
+-
+-dnl /**************************************************************************
+-dnl  *                             Option setting                             *
+-dnl  **************************************************************************/
+-
+-dnl Some default values cause I'm not sure whether autoconf set them, while
+-dnl documentation says it does...
+-gmp_package="yes"
+-gmp_include_package="yes"
+-gmp_library_package="yes"
+-
+-NEED_MP="no"
+-
+-dnl --with-gmp=gmp-path
+-AC_ARG_WITH(gmp,
+-        [  --with-gmp=DIR          DIR where the gmp package is installed],
+-	[ echo "Package gmp : $withval" &&
+-	  gmp_package=$withval &&
+-          GMP_INC=$gmp_package/include &&
+-          GMP_LIB=$gmp_package/lib &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_MP &&
+-          NEED_MP="yes"])
+-
+-AC_ARG_WITH(gmp-include,
+-        [  --with-gmp-include=DIR  DIR where gmp.h is installed],
+-	[ echo "Package gmp-include : $withval" &&
+-	  gmp_include_package=$withval &&
+-          GMP_INC=$gmp_include_package &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_MP &&
+-	  NEED_MP="yes"])
+-
+-AC_ARG_WITH(gmp-library,
+-        [  --with-gmp-library=DIR  DIR where the gmp library is installed],
+-	[ echo "Package gmp-library : $withval" &&
+-	  gmp_library_package=$withval &&
+-          GMP_LIB=$gmp_library_package &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_MP &&
+-	  NEED_MP="yes"])
+-
+-AC_ARG_ENABLE(int-version,
+-	[  --enable-int-version    'int' (32 bits) version is built],
+-	[ echo "Package int : $enableval" &&
+-	  BITS="32" &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_LONG])
+-
+-AC_ARG_ENABLE(llint-version,
+-	[  --enable-llint-version  'long long int' (64 bits) version is built],
+-	[ echo "Package long long int : $enableval" &&
+-	  BITS="64" &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_LONGLONG])
+-
+-AC_ARG_ENABLE(mp-version,
+-	[  --enable-mp-version     'MP' (multiple precision) version is built],
+-	[ echo "Package mp : $enableval" &&
+-	  BITS="MP" &&
+-          CPPFLAGS=-DLINEAR_VALUE_IS_MP &&
+-          NEED_MP="yes"])
+-
+-AC_ARG_ENABLE(piplib-hybrid,
+-	[  --enable-piplib-hybrid   Link with piplib-hybrid],
+-	[ echo "Piplib-hybrid support : $enableval" &&
+-          if test "x$enableval" = "xyes"; then 
+-            CPPFLAGS=-DCANDL_HAS_PIPLIB_HYBRID
+-          fi])
+-
+-
+-dnl /**************************************************************************
+-dnl  *                            Where is GMP?                               *
+-dnl  **************************************************************************/
+-
+-
+-dnl Checking for gmp
+-AC_MSG_CHECKING(whether gmp works)
+-if test "$gmp_package" = "no"; then
+-  echo "GMP package not defined"
+-  AC_MSG_RESULT(no)
+-  TO_BUILD_MP=""
+-else
+-  if test "$NEED_MP" = "no"; then
+-    echo "Mode normal GMP"
+-    TO_BUILD="$TO_BUILD MP"
+-    AC_CHECK_HEADER(gmp.h,
+-                    [AC_SEARCH_LIBS([__gmpz_init], [gmp],
+-		                  [LIBS="$LIBS -lgmp"],
+-				  [echo "Can't find gmp library." &&
+-				   echo "MP version will not be built." &&
+-				   TO_BUILD_MP=""])],
+-		    [echo "Can't find gmp headers." &&
+-		     echo "MP version will not be built." &&
+-		     TO_BUILD_MP=""])
+-  else
+-    dnl Default given by --with-X is "yes", --without-X is "no". We also
+-    dnl initialized manually all gmp_package* variables to "yes" (thus they are
+-    dnl supposed to be "yes" except if the user set them himself).
+-
+-    if test "$gmp_package" != "yes" ; then
+-      echo "(GMP path has been set by user)"
+-      GMP_DIR=$gmp_package
+-      dnl Useful for AC_CHECK_X to find what we want.
+-      CPPFLAGS="-I$GMP_DIR/include $CPPFLAGS"
+-      LDFLAGS="-L$GMP_DIR/lib $LDFLAGS"
+-    fi
+-
+-    if test "$gmp_include_package" != "yes" ; then
+-      CPPFLAGS="-I$GMP_INC $CPPFLAGS"
+-    fi
+-
+-    if test "$gmp_library_package" != "yes" ; then
+-      LDFLAGS="-L$GMP_LIB $LDFLAGS"
+-    fi
+-
+-    AC_CHECK_HEADER(gmp.h,
+-                    [],
+-                    [AC_MSG_ERROR(Can't find gmp headers.)])
+-    AC_SEARCH_LIBS([__gmpz_init], [gmp],
+-                 [LIBS="$LIBS -lgmp"],
+-                 [AC_MSG_ERROR(Can't find gmp library.)])
+-
+-    AC_MSG_RESULT(yes)
+-  fi
+-fi
+-
+-CANDL_ARG_LIBS_DEPENDENCIES
+-
+-
+-
+-dnl /**************************************************************************
+-dnl  *                            Substitutions                               *
+-dnl  **************************************************************************/
+-
+-
+-dnl Substitutions to do.
+-AC_SUBST(BITS)
+-AC_SUBST(DEFINE_HAS_SCOPLIB_LIB)
+-AC_SUBST(DEFINE_HAS_ISL_LIB)
+-AC_SUBST(ac_aux_dir)
+-
+-dnl Configure Makefiles.
+-AC_CONFIG_FILES([
+-	Makefile
+-	doc/Makefile
+-	doc/Doxyfile
+-	include/Makefile
+-	include/candl/candl.h
+-	source/Makefile
+-	tests/Makefile
+-	],
+-	[test -z "$CONFIG_HEADERS" || echo timestamp > source/stamp-h.in])
+-
+-AC_OUTPUT
+-
+-echo "             /*-----------------------------------------------*"
+-echo "              *          Candl configuration is OK            *"
+-echo "              *-----------------------------------------------*/"
+-echo "It appears that your system is OK to start Candl compilation. You need"
+-echo "now to type \"make\". Lastly type \"make install\" to install Candl on"
+-echo "your system (log as root if necessary)."
+diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
+index e172bda..510d8f1 100644
+--- a/doc/Doxyfile.in
++++ b/doc/Doxyfile.in
+@@ -478,7 +478,8 @@ WARN_LOGFILE           =
+ # with spaces.
+ 
+ INPUT                  = @top_srcdir@/source \
+-                         @top_srcdir@/include/candl
++                         @top_srcdir@/include/candl \
++                         include/candl/macros.h
+ 
+ # This tag can be used to specify the character encoding of the source files that 
+ # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+diff --git a/get_submodules.sh b/get_submodules.sh
+new file mode 100755
+index 0000000..94842b6
+--- /dev/null
++++ b/get_submodules.sh
+@@ -0,0 +1,9 @@
++#!/bin/bash
++git submodule init
++git submodule update
++if test -f osl/autogen.sh; then
++	(cd osl; ./autogen.sh && ./configure)
++fi
++if test -f piplib/autogen.sh; then
++	(cd piplib; ./autogen.sh && ./configure)
++fi
+diff --git a/include/Makefile.am b/include/Makefile.am
+deleted file mode 100644
+index ed48dcd..0000000
+--- a/include/Makefile.am
++++ /dev/null
+@@ -1,54 +0,0 @@
+-#
+-#   /**-------------------------------------------------------------------**
+-#    **                              CAnDL                                **
+-#    **-------------------------------------------------------------------**
+-#    **                           Makefile.am                             **
+-#    **-------------------------------------------------------------------**
+-#    **                 First version: september 8th 2003                 **
+-#    **-------------------------------------------------------------------**/
+-#
+-#/*****************************************************************************
+-# *   CAnDL : the Chunky Analyser for Dependences in Loops (experimental)     *
+-# *****************************************************************************
+-# *                                                                           *
+-# * Copyright (C) 2003-2008 Cedric Bastoul                                    *
+-# *                                                                           *
+-# * This 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 2 of the License, or (at your option) any      *
+-# * later version.							      *
+-# *                                                                           *
+-# * This software 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 software; if not, write to the Free Software Foundation, Inc.,       *
+-# * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                    *
+-# *                                                                           *
+-# * CAnDL, the Chunky Dependence Analyser                                     *
+-# * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                        *
+-# *                                                                           *
+-# *****************************************************************************/
+-
+-
+-#############################################################################
+-SUBDIRS			=
+-
+-#############################################################################
+-MAINTAINERCLEANFILES	= Makefile.in
+-
+-#############################################################################
+-
+-pkginclude_HEADERS 	=			\
+-	candl/candl.h				\
+-	candl/dependence.h			\
+-	candl/ddv.h				\
+-	candl/matrix.h				\
+-	candl/options.h				\
+-	candl/piplib-wrapper.h			\
+-	candl/program.h				\
+-	candl/pruning.h				\
+-	candl/statement.h			\
+-	candl/violation.h
+diff --git a/include/candl/candl.h b/include/candl/candl.h
+new file mode 100644
+index 0000000..926511f
+--- /dev/null
++++ b/include/candl/candl.h
+@@ -0,0 +1,50 @@
++
++   /**------ ( ----------------------------------------------------------**
++    **       )\                      CAnDL                               **
++    **----- /  ) --------------------------------------------------------**
++    **     ( * (                    candl.h                              **
++    **----  \#/  --------------------------------------------------------**
++    **    .-"#'-.        First version: september 8th 2003               **
++    **--- |"-.-"| -------------------------------------------------------**
++          |     |
++          |     |
++ ******** |     | *************************************************************
++ * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
++ ******************************************************************************
++ *                                                                            *
++ * Copyright (C) 2003-2008 Cedric Bastoul                                     *
++ *                                                                            *
++ * This is free software; you can redistribute it and/or modify it under the  *
++ * terms of the GNU Lesser General Public License as published by the Free    *
++ * Software Foundation; either version 3 of the License, or (at your option)  *
++ * any later version.                                                         *
++ *                                                                            *
++ * This software 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 Lesser General Public License   *
++ * along with software; if not, write to the Free Software Foundation, Inc.,  *
++ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
++ *                                                                            *
++ * CAnDL, the Chunky Dependence Analyser                                      *
++ * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
++ *                                                                            *
++ ******************************************************************************/
++
++#ifndef CANDL_H
++#define CANDL_H
++
++# include <candl/ddv.h>
++# include <candl/dependence.h>
++# include <candl/macros.h>
++# include <candl/matrix.h>
++# include <candl/options.h>
++# include <candl/piplib-wrapper.h>
++# include <candl/scop.h>
++# include <candl/statement.h>
++# include <candl/util.h>
++# include <candl/violation.h>
++
++#endif
+diff --git a/include/candl/candl.h.in b/include/candl/candl.h.in
+deleted file mode 100644
+index 187981e..0000000
+--- a/include/candl/candl.h.in
++++ /dev/null
+@@ -1,160 +0,0 @@
+-
+-   /**------ ( ----------------------------------------------------------**
+-    **       )\                      CAnDL                               **
+-    **----- /  ) --------------------------------------------------------**
+-    **     ( * (                    candl.h                              **
+-    **----  \#/  --------------------------------------------------------**
+-    **    .-"#'-.        First version: september 8th 2003               **
+-    **--- |"-.-"| -------------------------------------------------------**
+-          |     |
+-          |     |
+- ******** |     | *************************************************************
+- * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
+- ******************************************************************************
+- *                                                                            *
+- * Copyright (C) 2003-2008 Cedric Bastoul                                     *
+- *                                                                            *
+- * This is free software; you can redistribute it and/or modify it under the  *
+- * terms of the GNU Lesser General Public License as published by the Free    *
+- * Software Foundation; either version 3 of the License, or (at your option)  *
+- * any later version.                                                         *
+- *                                                                            *
+- * This software 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 Lesser General Public License   *
+- * along with software; if not, write to the Free Software Foundation, Inc.,  *
+- * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
+- *                                                                            *
+- * CAnDL, the Chunky Dependence Analyser                                      *
+- * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
+- *                                                                            *
+- ******************************************************************************/
+-
+-
+-/******************************************************************************
+- *  THIS FILE HAS BEEN AUTOMATICALLY GENERATED FROM candl.h.in BY configure   *
+- ******************************************************************************/
+-
+-
+-#ifndef CANDL_H
+-# define CANDL_H
+-
+-# define CANDL_RELEASE "@PACKAGE_VERSION@"
+-# define CANDL_VERSION "@BITS@"
+- at DEFINE_HAS_SCOPLIB_LIB@
+- at DEFINE_HAS_ISL_LIB@
+-
+-
+-# include <piplib/piplib at BITS@.h>
+-# include <candl/options.h>
+-# include <candl/matrix.h>
+-# include <candl/statement.h>
+-# include <candl/program.h>
+-# include <candl/dependence.h>
+-# include <candl/ddv.h>
+-# include <candl/violation.h>
+-# include <candl/pruning.h>
+-
+-# define CANDL_UNSET -1 /* Must be negative (we do use that property).
+-                         * All other constants have to be different.
+-                         */
+-
+-# define CANDL_RAW    1
+-# define CANDL_WAR    2
+-# define CANDL_WAW    3
+-# define CANDL_RAR    4
+-# define CANDL_RAW_SCALPRIV	5
+-
+-# define CANDL_ASSIGNMENT  1
+-# define CANDL_P_REDUCTION 2
+-# define CANDL_M_REDUCTION 3
+-# define CANDL_T_REDUCTION 4
+-
+-# define CANDL_EQUAL 1
+-# define CANDL_POSIT 2
+-# define CANDL_LATER 3
+-# define CANDL_NEVER 4
+-
+-# define CANDL_NB_INFOS  3
+-
+-# define CANDL_MAX_STRING  2048
+-# define CANDL_TEMP_OUTPUT "candl.temp"
+-
+-/* Useful macros. */
+-# define CANDL_max(x,y)    ((x) > (y)? (x) : (y))
+-# define CANDL_min(x,y)    ((x) < (y)? (x) : (y))
+-
+-# define CANDL_FAIL(msg)   { fprintf(stderr, "[Candl] " msg "\n"); exit(1); }
+-
+-/******************************************************************************
+- *                                   FORMAT                                   *
+- ******************************************************************************/
+-#if defined(LINEAR_VALUE_IS_LONGLONG)
+-#define CANDL_FMT "%4lld "
+-#elif defined(LINEAR_VALUE_IS_LONG)
+-#define CANDL_FMT "%4ld "
+-#else  /* GNUMP */
+-#define CANDL_FMT "%4s"
+-#endif
+-
+-/******************************************************************************
+- *                             CANDL GMP MACROS                               *
+- ******************************************************************************/
+-#ifdef LINEAR_VALUE_IS_MP
+-/* Basic Macros */
+-#define CANDL_init(val)                (mpz_init((val)))
+-#define CANDL_assign(v1,v2)            (mpz_set((v1),(v2)))
+-#define CANDL_set_si(val,i)            (mpz_set_si((val),(i)))
+-#define CANDL_get_si(val)              (mpz_get_si((val)))
+-#define CANDL_clear(val)               (mpz_clear((val)))
+-#define CANDL_print(Dst,fmt,val)       { char *str; \
+-                                         str = mpz_get_str(0,10,(val)); \
+-                                         fprintf((Dst),(fmt),str); free(str); \
+-                                       }
+-
+-/* Boolean operators on 'Value' or 'Entier' */
+-#define CANDL_eq(v1,v2)                (mpz_cmp((v1),(v2)) == 0)
+-#define CANDL_ne(v1,v2)                (mpz_cmp((v1),(v2)) != 0)
+-
+-/* Binary operators on 'Value' or 'Entier' */
+-#define CANDL_increment(ref,val)       (mpz_add_ui((ref),(val),1))
+-#define CANDL_decrement(ref,val)       (mpz_sub_ui((ref),(val),1))
+-#define CANDL_subtract(ref,val1,val2) (mpz_sub((ref),(val1),(val2)))
+-#define CANDL_oppose(ref,val)          (mpz_neg((ref),(val)))
+-
+-/* Conditional operations on 'Value' or 'Entier' */
+-#define CANDL_zero_p(val)              (mpz_sgn(val) == 0)
+-#define CANDL_notzero_p(val)           (mpz_sgn(val) != 0)
+-
+-/******************************************************************************
+- *                          CANDL BASIC TYPES MACROS                          *
+- ******************************************************************************/
+-#else
+-/* Basic Macros */
+-#define CANDL_init(val)                ((val) = 0)
+-#define CANDL_assign(v1,v2)            ((v1)  = (v2))
+-#define CANDL_set_si(val,i)            ((val) = (Entier)(i))
+-#define CANDL_get_si(val)              ((val))
+-#define CANDL_clear(val)               ((val) = 0)
+-#define CANDL_print(Dst,fmt,val)       (fprintf((Dst),(fmt),(val)))
+-
+-/* Boolean operators on 'Value' or 'Entier' */
+-#define CANDL_eq(v1,v2)                ((v1)==(v2))
+-#define CANDL_ne(v1,v2)                ((v1)!=(v2))
+-
+-/* Binary operators on 'Value' or 'Entier' */
+-#define CANDL_increment(ref,val)       ((ref) = (val)+(Entier)(1))
+-#define CANDL_decrement(ref,val)       ((ref) = (val)-(Entier)(1))
+-#define CANDL_subtract(ref,val1,val2) ((ref) = (val1)-(val2))
+-#define CANDL_oppose(ref,val)          ((ref) = (-(val)))
+-
+-/* Conditional operations on 'Value' or 'Entier' */
+-#define CANDL_zero_p(val)               CANDL_eq(val,0)
+-#define CANDL_notzero_p(val)            CANDL_ne(val,0)
+-
+-#endif
+-
+-#endif // !CANDL_H
+diff --git a/include/candl/ddv.h b/include/candl/ddv.h
+index bbc97db..8ae9a61 100644
+--- a/include/candl/ddv.h
++++ b/include/candl/ddv.h
+@@ -38,26 +38,18 @@
+  * \author Louis-Noel Pouchet
+  */
+ 
+-
+ #ifndef CANDL_DDV_H
+ # define CANDL_DDV_H
+ 
+-
+ # include <stdio.h>
+-# include <candl/statement.h>
+-# include <candl/matrix.h>
+-# include <candl/program.h>
+-# include <candl/options.h>
+-# include <candl/dependence.h>
+-
+-
+ 
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+ 
+-
++struct osl_scop;
++struct osl_dependence;
+ 
+ /******************************************************************************
+  *                        Dependence Distance structures                      *
+@@ -112,9 +104,6 @@ extern "C"
+ 
+     typedef struct candl_ddv CandlDDV;
+ 
+-
+-
+-
+ /******************************************************************************
+  *                         Memory deallocation function                       *
+  ******************************************************************************/
+@@ -127,7 +116,6 @@ extern "C"
+ CandlDDV*
+ candl_ddv_malloc();
+ 
+-
+ /**
+  * candl_ddv_alloc: Allocate a ddv for a loop of depth 'size'.
+  *
+@@ -136,7 +124,6 @@ candl_ddv_malloc();
+ CandlDDV*
+ candl_ddv_alloc(int);
+ 
+-
+ /**
+  * candl_ddv_free: Free a ddv.
+  *
+@@ -145,7 +132,6 @@ candl_ddv_alloc(int);
+ void
+ candl_ddv_free(CandlDDV*);
+ 
+-
+ /**
+  * candl_ddv_set_type_at: Set the type of a ddv component. Type is one of
+  * '=', '>', '<', '*' or 'constant' as defined by the enum e_dv_type.
+@@ -173,12 +159,10 @@ candl_ddv_set_value_at(CandlDDV*, int, int);
+ void
+ candl_ddv_set_deptype(CandlDDV*, int);
+ 
+-
+ /******************************************************************************
+  *                          Structure display function                        *
+  ******************************************************************************/
+ 
+-
+ /**
+  * candl_ddv_print: print a ddv.
+  *
+@@ -186,7 +170,6 @@ candl_ddv_set_deptype(CandlDDV*, int);
+ void
+ candl_ddv_print(FILE*, CandlDDV*);
+ 
+-
+ /******************************************************************************
+  *                            Processing functions                            *
+  ******************************************************************************/
+@@ -199,7 +182,7 @@ candl_ddv_print(FILE*, CandlDDV*);
+  *
+  */
+ CandlDDV*
+-candl_ddv_extract_in_loop(CandlProgram*, CandlDependence*, int);
++candl_ddv_extract_in_loop(struct osl_scop*, struct osl_dependence*, int);
+     
+ /**
+  * candl_loops_are_permutable: output 1 if the 2 loops are permutable.
+@@ -207,10 +190,7 @@ candl_ddv_extract_in_loop(CandlProgram*, CandlDependence*, int);
+  *
+  */
+ int
+-candl_loops_are_permutable(CandlProgram* program, CandlDependence* deps,
+-			   int loop_id1, int loop_id2);
+-    
+-
++candl_loops_are_permutable(struct osl_scop*, struct osl_dependence*, int, int);
+ 
+ # if defined(__cplusplus)
+   }
+diff --git a/include/candl/dependence.h b/include/candl/dependence.h
+index 0f40e65..9205de4 100644
+--- a/include/candl/dependence.h
++++ b/include/candl/dependence.h
+@@ -33,153 +33,99 @@
+  *                                                                            *
+  ******************************************************************************/
+ 
+-
+ #ifndef CANDL_DEPENDENCE_H
+ # define CANDL_DEPENDENCE_H
+ 
+-
+ # include <stdio.h>
+-# include <candl/statement.h>
+-# include <candl/matrix.h>
+-# include <candl/program.h>
+ # include <candl/options.h>
+ 
+-
+-
+-# define CANDL_ARRAY_BUFF_SIZE		2048
+-# define CANDL_VAR_UNDEF		1
+-# define CANDL_VAR_IS_DEF		2
+-# define CANDL_VAR_IS_USED		3
+-# define CANDL_VAR_IS_DEF_USED		4
+-
++# define CANDL_ARRAY_BUFF_SIZE 2048
++# define CANDL_VAR_UNDEF       1
++# define CANDL_VAR_IS_DEF      2
++# define CANDL_VAR_IS_USED     3
++# define CANDL_VAR_IS_DEF_USED 4
+ 
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+ 
+-
+-/**
+- * CandlDependence structure:
+- * this structure contains all the informations about a data dependence, it is
+- * also a node of the linked list of all dependences of the dependence graph.
+- */
+-struct candldependence
+-{ CandlStatement  * source;      /**< Pointer to source statement. */
+-  CandlStatement  * target;      /**< Pointer to target statement. */
+-  int depth;                     /**< Dependence level. */
+-  int type;                      /**< Dependence type: a dependence from source
+-                                   *   to target can be:
+-				   *   - CANDL_UNSET if the dependence type is
+-				   *     still not set,
+-				   *   - CANDL_RAW if source writes M and
+-				   *     target read M (flow-dependence),
+-				   *   - CANDL_WAR if source reads M and
+-				   *     target writes M (anti-dependence),
+-				   *   - CANDL_WAW if source writes M and
+-				   *     target writes M too (output-dependence)
+-				   *   - CANDL_RAR if source reads M and
+-				   *     target reads M too (input-dependence).
+-				   */
+-  int ref_source;                /**< Position of source reference. */
+-  int ref_target;                /**< Position of target reference. */
+-  CandlMatrix * domain;          /**< Dependence polyhedron. */
+-
+-  void* usr;			 /**< User field, for library users
+-				    convenience. */
+-  struct candldependence * next; /**< Pointer to next dependence */
+-};
+-typedef struct candldependence CandlDependence;
+-typedef struct candldependence candl_dependence_t;
+-typedef struct candldependence * candl_dependence_p;
+-
+-
+-/******************************************************************************
+- *                          Structure display function                        *
+- ******************************************************************************/
+-void candl_dependence_print_structure(FILE *, candl_dependence_p, int);
+-void candl_dependence_print(FILE *, candl_dependence_p);
+-void candl_dependence_pprint(FILE *, candl_dependence_p);
+-void candl_dependence_view(candl_dependence_p);
+-# ifdef CANDL_SUPPORTS_SCOPLIB
+-CandlDependence* candl_dependence_read_from_scop(scoplib_scop_p, CandlProgram*);
+-void candl_dependence_update_scop_with_deps(scoplib_scop_p, CandlDependence*);
+-void candl_dependence_print_scop(FILE*, FILE*, CandlDependence*);
+-# endif
++struct osl_relation;
++struct osl_statement;
++struct osl_scop;
++struct osl_dependence;
+ 
+ #ifdef CANDL_SUPPORTS_ISL
+-CandlDependence* candl_dependence_isl_simplify(CandlDependence*, CandlProgram*);
++struct osl_dependence* candl_dependence_isl_simplify(struct osl_dependence*,
++                                        struct osl_scop*);
+ # endif
+ 
+-
+-/******************************************************************************
+- *                         Memory alloc/dealloc function                      *
+- ******************************************************************************/
+-candl_dependence_p      candl_dependence_malloc();
+-void			candl_dependence_free(candl_dependence_p);
+-
++/*+***************************************************************************
++ *                          Structure display function                       *
++ *****************************************************************************/
++void                   candl_dependence_pprint(FILE*, struct osl_dependence*);
++void                   candl_dependence_view(struct osl_dependence*);
+ 
+ /******************************************************************************
+  *                             Processing functions                           *
+  ******************************************************************************/
+-int			candl_dependence_gcd_test(CandlStatement*,
+-						  CandlStatement*,
+-						  CandlMatrix*, int);
+-int			candl_dependence_check(CandlProgram *,
+-					       candl_dependence_p,
+-					       CandlOptions *);
+-candl_dependence_p      candl_dependence(CandlProgram *, CandlOptions *);
+-
++int                    candl_dependence_gcd_test(struct osl_statement*,
++                                        struct osl_statement*,
++                                        struct osl_relation*, int);
++int                    candl_dependence_check(struct osl_scop*,
++                                        struct osl_dependence*,
++                                        candl_options_p);
++struct osl_dependence* candl_dependence(struct osl_scop*, candl_options_p);
++void                   candl_dependence_add_extension(struct osl_scop*,
++                                        candl_options_p);
++
++/*+***************************************************************************
++ *                    Memory allocation/deallocation function                *
++ *****************************************************************************/
++void                   candl_dependence_init_fields(struct osl_scop*,
++                                        struct osl_dependence*);
+ 
+ /******************************************************************************
+  *                          Scalar analysis functions                         *
+  ******************************************************************************/
+-int
+-candl_dependence_var_is_scalar (candl_program_p, int);
+-
+-CandlStatement**
+-candl_dependence_refvar_chain(candl_program_p, CandlStatement*, int, int);
+-
+-int
+-candl_dependence_var_is_ref(CandlStatement*, int);
+-
+-int
+-candl_dependence_check_domain_is_included(CandlStatement*, CandlStatement*,
+-					  CandlMatrix*, int);
+-
+-int
+-candl_dependence_scalar_is_privatizable_at(candl_program_p, int, int);
+-
+-int
+-candl_dependence_is_loop_carried (candl_program_p, CandlDependence*, int);
+-
+-void
+-candl_dependence_prune_scalar_waw (candl_program_p, CandlOptions*,
+-				   CandlDependence**);
+-
+-void
+-candl_dependence_prune_with_privatization (candl_program_p, CandlOptions*,
+-					   CandlDependence**);
+-
+-int
+-candl_dependence_scalar_renaming(candl_program_p, CandlOptions*,
+-				 CandlDependence**);
+-
+-int
+-candl_dependence_analyze_scalars(candl_program_p, CandlOptions*);
++int                    candl_dependence_var_is_scalar(struct osl_scop*, int);
++struct osl_statement** candl_dependence_refvar_chain(struct osl_scop*,
++                                        struct osl_statement*, int, int);
++int                    candl_dependence_var_is_ref(struct osl_statement*, int);
++int                    candl_dependence_check_domain_is_included(
++                                        struct osl_statement*,
++                                        struct osl_statement*,
++                                        struct osl_relation*, int);
++int                    candl_dependence_scalar_is_privatizable_at(
++                                        struct osl_scop*, int, int);
++int                    candl_dependence_is_loop_carried(struct osl_scop*,
++                                        struct osl_dependence*, int);
++void                   candl_dependence_prune_scalar_waw(struct osl_scop*,
++                                        candl_options_p,
++                                        struct osl_dependence**);
++void                   candl_dependence_prune_with_privatization(
++                                        struct osl_scop*,
++                                        candl_options_p,
++                                        struct osl_dependence**);
++int                    candl_dependence_scalar_renaming(struct osl_scop*,
++                                        candl_options_p,
++                                        struct osl_dependence**);
++int                    candl_dependence_analyze_scalars(struct osl_scop*,
++                                        candl_options_p);
+ 
+ /******************************************************************************
+  *                          Miscellaneous functions                           *
+  ******************************************************************************/
+-int
+-candl_num_dependences(CandlDependence *candl_deps);
+-
+-void
+-candl_compute_last_writer (CandlDependence *dep, CandlProgram *prog);
++struct osl_relation*   candl_dependence_get_relation_ref_source_in_dep(
++                                        struct osl_dependence*);
++struct osl_relation*   candl_dependence_get_relation_ref_target_in_dep(
++                                        struct osl_dependence*);
++int                    candl_num_dependences(struct osl_dependence*);
++void                   candl_compute_last_writer(struct osl_dependence*,
++                                        struct osl_scop*);
++struct osl_dependence* candl_dependence_prune_transitively_covered(
++                                        struct osl_dependence*);
+ 
+-CandlDependence*
+-candl_dependence_prune_transitively_covered (CandlDependence* deps);
+-    
+ # if defined(__cplusplus)
+   }
+ # endif
+diff --git a/include/candl/macros.h.in b/include/candl/macros.h.in
+new file mode 100644
+index 0000000..def4643
+--- /dev/null
++++ b/include/candl/macros.h.in
+@@ -0,0 +1,160 @@
++
++   /**------ ( ----------------------------------------------------------**
++    **       )\                      CAnDL                               **
++    **----- /  ) --------------------------------------------------------**
++    **     ( * (                    candl.h                              **
++    **----  \#/  --------------------------------------------------------**
++    **    .-"#'-.        First version: september 8th 2003               **
++    **--- |"-.-"| -------------------------------------------------------**
++          |     |
++          |     |
++ ******** |     | *************************************************************
++ * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
++ ******************************************************************************
++ *                                                                            *
++ * Copyright (C) 2003-2008 Cedric Bastoul                                     *
++ *                                                                            *
++ * This is free software; you can redistribute it and/or modify it under the  *
++ * terms of the GNU Lesser General Public License as published by the Free    *
++ * Software Foundation; either version 3 of the License, or (at your option)  *
++ * any later version.                                                         *
++ *                                                                            *
++ * This software 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 Lesser General Public License   *
++ * along with software; if not, write to the Free Software Foundation, Inc.,  *
++ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
++ *                                                                            *
++ * CAnDL, the Chunky Dependence Analyser                                      *
++ * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
++ *                                                                            *
++ ******************************************************************************/
++
++
++/******************************************************************************
++ *  THIS FILE HAS BEEN AUTOMATICALLY GENERATED FROM macros.h.in BY configure  *
++ ******************************************************************************/
++
++#ifndef CANDL_MACROS_H
++# define CANDL_MACROS_H
++
++# define CANDL_EQUAL 1
++# define CANDL_POSIT 2
++# define CANDL_LATER 3
++# define CANDL_NEVER 4
++
++# define CANDL_NB_INFOS  3
++
++# define CANDL_MAX_STRING  2048
++# define CANDL_TEMP_OUTPUT "candl.temp"
++
++# define CANDL_RELEASE "@PACKAGE_VERSION@"
++# define CANDL_VERSION "@BITS@"
++ at DEFINE_HAS_ISL_LIB@
++
++/* Useful macros. */
++# define CANDL_max(x,y)    ((x) > (y)? (x) : (y))
++# define CANDL_min(x,y)    ((x) < (y)? (x) : (y))
++
++# define CANDL_info(msg)                                                   \
++         do {                                                              \
++           fprintf(stderr,"[Candl] Info: "msg" (%s).\n", __func__);        \
++         } while (0)
++
++# define CANDL_warning(msg)                                                \
++         do {                                                              \
++           fprintf(stderr,"[Candl] Warning: "msg" (%s).\n", __func__);     \
++         } while (0)
++
++# define CANDL_error(msg)                                                  \
++         do {                                                              \
++           fprintf(stderr,"[Candl] Error: "msg" (%s).\n", __func__);       \
++           exit(1);                                                        \
++         } while (0)
++
++# define CANDL_malloc(ptr, type, size)                                     \
++         do {                                                              \
++           if (((ptr) = (type)malloc(size)) == NULL)                       \
++             CANDL_error("memory overflow");                               \
++         } while (0)
++
++# define CANDL_realloc(ptr, type, size)                                    \
++         do {                                                              \
++           if (((ptr) = (type)realloc(ptr, size)) == NULL)                 \
++             CANDL_error("memory overflow");                               \
++         } while (0)
++
++# define CANDL_fail(msg)   { fprintf(stderr, "[Candl] " msg "\n"); exit(1); }
++
++/******************************************************************************
++ *                                   FORMAT                                   *
++ ******************************************************************************/
++#if defined(CANDL_LINEAR_VALUE_IS_LONGLONG)
++#define CANDL_FMT "%4lld "
++#elif defined(CANDL_LINEAR_VALUE_IS_LONG)
++#define CANDL_FMT "%4ld "
++#else  /* GNUMP */
++#define CANDL_FMT "%4s"
++#endif
++
++/******************************************************************************
++ *                             CANDL GMP MACROS                               *
++ ******************************************************************************/
++#ifdef CANDL_LINEAR_VALUE_IS_MP
++/* Basic Macros */
++#define CANDL_init(val)                (mpz_init((val)))
++#define CANDL_assign(v1,v2)            (mpz_set((v1),(v2)))
++#define CANDL_set_si(val,i)            (mpz_set_si((val),(i)))
++#define CANDL_get_si(val)              (mpz_get_si((val)))
++#define CANDL_clear(val)               (mpz_clear((val)))
++#define CANDL_print(Dst,fmt,val)       { char *str; \
++                                         str = mpz_get_str(0,10,(val)); \
++                                         fprintf((Dst),(fmt),str); free(str); \
++                                       }
++
++/* Boolean operators on 'Value' or 'Entier' */
++#define CANDL_eq(v1,v2)                (mpz_cmp((v1),(v2)) == 0)
++#define CANDL_ne(v1,v2)                (mpz_cmp((v1),(v2)) != 0)
++
++/* Binary operators on 'Value' or 'Entier' */
++#define CANDL_increment(ref,val)       (mpz_add_ui((ref),(val),1))
++#define CANDL_decrement(ref,val)       (mpz_sub_ui((ref),(val),1))
++#define CANDL_subtract(ref,val1,val2) (mpz_sub((ref),(val1),(val2)))
++#define CANDL_oppose(ref,val)          (mpz_neg((ref),(val)))
++
++/* Conditional operations on 'Value' or 'Entier' */
++#define CANDL_zero_p(val)              (mpz_sgn(val) == 0)
++#define CANDL_notzero_p(val)           (mpz_sgn(val) != 0)
++
++/******************************************************************************
++ *                          CANDL BASIC TYPES MACROS                          *
++ ******************************************************************************/
++#else
++/* Basic Macros */
++#define CANDL_init(val)                ((val) = 0)
++#define CANDL_assign(v1,v2)            ((v1)  = (v2))
++#define CANDL_set_si(val,i)            ((val) = (Entier)(i))
++#define CANDL_get_si(val)              ((val))
++#define CANDL_clear(val)               ((val) = 0)
++#define CANDL_print(Dst,fmt,val)       (fprintf((Dst),(fmt),(val)))
++
++/* Boolean operators on 'Value' or 'Entier' */
++#define CANDL_eq(v1,v2)                ((v1)==(v2))
++#define CANDL_ne(v1,v2)                ((v1)!=(v2))
++
++/* Binary operators on 'Value' or 'Entier' */
++#define CANDL_increment(ref,val)       ((ref) = (val)+(Entier)(1))
++#define CANDL_decrement(ref,val)       ((ref) = (val)-(Entier)(1))
++#define CANDL_subtract(ref,val1,val2) ((ref) = (val1)-(val2))
++#define CANDL_oppose(ref,val)          ((ref) = (-(val)))
++
++/* Conditional operations on 'Value' or 'Entier' */
++#define CANDL_zero_p(val)               CANDL_eq(val,0)
++#define CANDL_notzero_p(val)            CANDL_ne(val,0)
++
++#endif
++
++#endif // !CANDL_MACROS_H
+diff --git a/include/candl/matrix.h b/include/candl/matrix.h
+index 7bbc13b..60e525f 100644
+--- a/include/candl/matrix.h
++++ b/include/candl/matrix.h
+@@ -33,92 +33,26 @@
+  *                                                                            *
+  ******************************************************************************/
+ 
+-
+ #ifndef CANDL_MATRIX_H
+ # define CANDL_MATRIX_H
+ 
+-# include <stdio.h>
+-# include <piplib/piplib.h>
+-
+-# ifdef LINEAR_VALUE_IS_LONG
+-#  define CLAN_INT_T_IS_LONG
+-# endif
+-# ifdef LINEAR_VALUE_IS_LONGLONG
+-#  define CLAN_INT_T_IS_LONGLONG
+-# endif
+-# ifdef LINEAR_VALUE_IS_MP
+-#  define CLAN_INT_T_IS_MP
+-# endif
++# include <candl/violation.h>
+ 
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+ 
++struct osl_relation;
++struct osl_dependence;
+ 
+-/**
+- * The matrix structure comes directly from PipLib (defined in piplib/piplib.h)
+- * which is directly the PolyLib Matrix (defined in polylib/types.h)
+- * here is how it looks like (at least in PipLib 1.3.5 version):
+- *
+- * struct pipmatrix
+- * { unsigned NbRows;    // The number of rows (= NbConstraints in Polyhedron).
+- *   unsigned NbColumns; // The number of columns (= Dimension+2 in Polyhedron).
+- *   Value **p;          // An array of pointers to the beginning of each row.
+- *   Value *p_Init;      // The matrix is stored here, contiguously in memory.
+- *   int p_Init_size;    // Needed to free the memory allocated by mpz_init.
+- * } ;
+- * typedef struct pipmatrix PipMatrix ;
+- */
+-
+-typedef PipMatrix CandlMatrix;
+-
+-
+-/**
+- * CandlMatrixList structure:
+- * this structure reprensents a node of a linked list of CandlMatrix structures.
+- */
+-struct candlmatrixlist
+-{ CandlMatrix * matrix;         /**< An element of the list. */
+-  struct candlmatrixlist * next;/**< Pointer to the next element of the list.*/
+-};
+-typedef struct candlmatrixlist CandlMatrixList;
+-
+-
+-/******************************************************************************
+- *                          Structure display function                        *
+- ******************************************************************************/
+-void candl_matrix_print_structure(FILE *, CandlMatrix *, int);
+-void candl_matrix_print(FILE *, CandlMatrix *);
+-void candl_matrix_print_data(FILE *, CandlMatrix *);
+-void candl_matrix_list_print_structure(FILE *, CandlMatrixList *, int);
+-void candl_matrix_list_print(FILE *, CandlMatrixList *);
+-
+-/******************************************************************************
+- *                         Memory deallocation function                       *
+- ******************************************************************************/
+-void candl_matrix_free(CandlMatrix *);
+-void candl_matrix_list_free(CandlMatrixList *);
+-
+-
+-/******************************************************************************
+- *                              Reading functions                             *
+- ******************************************************************************/
+-CandlMatrix * candl_matrix_read(FILE *);
+-CandlMatrixList * candl_matrix_list_read(FILE *);
+-
+-
+-/******************************************************************************
+- *                            Processing functions                            *
+- ******************************************************************************/
+-CandlMatrix     * candl_matrix_malloc(int, int);
+-CandlMatrixList * candl_matrix_list_malloc();
+-CandlMatrix     * candl_matrix_violation(CandlMatrix  *, CandlMatrix  *,
+-                                         CandlMatrix  *, int, int);
+-int		candl_matrix_check_point (CandlMatrix* , CandlMatrix* );
++candl_violation_p candl_matrix_violation(struct osl_dependence*,
++                               struct osl_relation*, struct osl_relation*,
++                               int, int);
++int               candl_matrix_check_point(struct osl_relation*,
++                               struct osl_relation*);
+ 
+ # if defined(__cplusplus)
+   }
+ # endif
+-#endif /* define CANDL_DEPENDENCE_H */
+-
++#endif
+diff --git a/include/candl/options.h b/include/candl/options.h
+index e62fddb..7154cb5 100644
+--- a/include/candl/options.h
++++ b/include/candl/options.h
+@@ -33,7 +33,6 @@
+  *                                                                            *
+  ******************************************************************************/
+ 
+-
+ #ifndef CANDL_OPTIONS_H
+ # define CANDL_OPTIONS_H
+ 
+@@ -44,60 +43,55 @@ extern "C"
+   {
+ # endif
+ 
+-
+ /**
+- * CandlOptions structure:
++ * candl_options structure:
+  * this structure contains all the informations on the state of Candl options.
+  */
+-struct candloptions
+-{ /* OPTIONS FOR DEPENDENCE COMPUTATION */
++struct candl_options {
++  /* OPTIONS FOR DEPENDENCE COMPUTATION */
+   int waw;       /**< 1 if write after write (output) dependences matter. */
+   int raw;       /**< 1 if read  after write (flow)   dependences matter. */
+   int war;       /**< 1 if write after read  (anti)   dependences matter. */
+   int rar;       /**< 1 if read  after read  (input)  dependences matter. */
+   int commute;   /**< 1 to use commutativity to simplify dependences. */
+   int fullcheck; /**< 1 to compute all dependence violations. */
+-  int depgraph;  /**< 1 to print the dependence graph. */
+-  int violgraph; /**< 1 to print the violation graph. */
+   int scalar_renaming; /**< 1 to enable scalar renaming. */
+   int scalar_privatization; /**< 1 to enable scalar privatization. */
+   int scalar_expansion; /**< 1 to enable scalar privatization. */
+   int lastwriter; /**< 1 to compute last writer */
+-  int readscop; /**< 1 to enable reading from a .scop formatted file. */
+-  int writescop; /**< 1 to enable writing to a .scop formatted file. */
+-  int scoptocandl; /**< 1 to act as a .scop to candl converter. */
+   int verbose; /**< 1 to enable verbose output. */
++  int outscop; /**< 1 to print the scop with dependences. */
++  int autocorrect; /**< 1 to correct violations. fullcheck is set to 1 and 
++                     * the -test is required.
++                    */
+   /* UNDOCUMENTED OPTIONS FOR THE AUTHOR ONLY */
+   int view;      /**< 1 to call dot and gv to visualize the graphs. */
+   int structure; /**< 1 to print internal dependence structure. */
+   int prune_dups; /**< 1 to use experimental dependence pruning algorithm. */
+-} ;
+-typedef struct candloptions CandlOptions;
++};
+ 
++typedef struct candl_options  candl_options_t;
++typedef struct candl_options* candl_options_p;
+ 
+ /******************************************************************************
+  *                          Structure display function                        *
+  ******************************************************************************/
+-void candl_options_print(FILE *, CandlOptions *);
+-
++void candl_options_print(FILE *, candl_options_p);
+ 
+ /******************************************************************************
+  *                         Memory deallocation function                       *
+  ******************************************************************************/
+-void candl_options_free(CandlOptions *);
+-
++void candl_options_free(candl_options_p);
+ 
+ /******************************************************************************
+  *                               Reading function                             *
+  ******************************************************************************/
+-void candl_options_read(int, char **, FILE **, FILE **, CandlOptions **);
+-
++void candl_options_read(int, char **, FILE **, FILE **, FILE**, candl_options_p*);
+ 
+ /******************************************************************************
+  *                            Processing functions                            *
+  ******************************************************************************/
+-CandlOptions * candl_options_malloc(void);
+-
++candl_options_p candl_options_malloc(void);
+ 
+ #if defined(__cplusplus)
+   }
+diff --git a/include/candl/piplib-wrapper.h b/include/candl/piplib-wrapper.h
+index 27576f5..642e366 100644
+--- a/include/candl/piplib-wrapper.h
++++ b/include/candl/piplib-wrapper.h
+@@ -41,23 +41,27 @@
+ #ifndef CANDL_PIPLIB_WRAPPER_H
+ # define CANDL_PIPLIB_WRAPPER_H
+ 
+-
+-# include <stdio.h>
+-# include <candl/matrix.h>
+-
+-
+-
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+-    
+ 
+-int 
+-pip_has_rational_point(PipMatrix* system,
+-		       PipMatrix* context,
+-		       int conservative);
+-    
++struct osl_relation;
++struct pipmatrix;
++struct pipquast;
++struct pipoptions;
++struct piplist;
++
++struct pipmatrix*    pip_relation2matrix(struct osl_relation*);
++struct osl_relation* pip_matrix2relation(struct pipmatrix*);
++int                  pip_has_rational_point(struct osl_relation*,
++                         struct osl_relation*, int);
++struct pipquast*     pip_solve_osl(struct osl_relation*, struct osl_relation*,
++                         int, struct pipoptions*);
++int                  piplist_are_equal(struct piplist*, struct piplist*, int);
++struct osl_relation* pip_quast_to_polyhedra(struct pipquast*, int, int);
++struct osl_relation* pip_quast_no_solution_to_polyhedra(struct pipquast*,
++                         int, int);
+ 
+ # if defined(__cplusplus)
+   }
+diff --git a/include/candl/piplib.h.in b/include/candl/piplib.h.in
+new file mode 100644
+index 0000000..dfaf33a
+--- /dev/null
++++ b/include/candl/piplib.h.in
+@@ -0,0 +1,51 @@
++
++   /**------ ( ----------------------------------------------------------**
++    **       )\                      CAnDL                               **
++    **----- /  ) --------------------------------------------------------**
++    **     ( * (                    piplib.h                             **
++    **----  \#/  --------------------------------------------------------**
++    **    .-"#'-.         First version: August 5th 2014                 **
++    **--- |"-.-"| -------------------------------------------------------**
++          |     |
++          |     |
++ ******** |     | *************************************************************
++ * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
++ ******************************************************************************
++ *                                                                            *
++ * Copyright (C) 2003-2008 Cedric Bastoul                                     *
++ *                                                                            *
++ * This is free software; you can redistribute it and/or modify it under the  *
++ * terms of the GNU Lesser General Public License as published by the Free    *
++ * Software Foundation; either version 3 of the License, or (at your option)  *
++ * any later version.                                                         *
++ *                                                                            *
++ * This software 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 Lesser General Public License   *
++ * along with software; if not, write to the Free Software Foundation, Inc.,  *
++ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
++ *                                                                            *
++ * CAnDL, the Chunky Dependence Analyzer                                      *
++ * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
++ *                                                                            *
++ ******************************************************************************/
++
++
++#ifndef CANDL_PIPLIB_H
++# define CANDL_PIPLIB_H
++
++# if defined(__cplusplus)
++extern "C"
++  {
++# endif
++
++# include <piplib/piplib at BITS@.h>
++
++# if defined(__cplusplus)
++  }
++# endif
++#endif /* define CANDL_PIPLIB_H */
++
+diff --git a/include/candl/program.h b/include/candl/program.h
+deleted file mode 100644
+index 073016a..0000000
+--- a/include/candl/program.h
++++ /dev/null
+@@ -1,113 +0,0 @@
+-
+-   /**------ ( ----------------------------------------------------------**
+-    **       )\                      CAnDL                               **
+-    **----- /  ) --------------------------------------------------------**
+-    **     ( * (                   program.h                             **
+-    **----  \#/  --------------------------------------------------------**
+-    **    .-"#'-.        First version: september 9th 2003               **
+-    **--- |"-.-"| -------------------------------------------------------**
+-          |     |
+-          |     |
+- ******** |     | *************************************************************
+- * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
+- ******************************************************************************
+- *                                                                            *
+- * Copyright (C) 2003-2008 Cedric Bastoul                                     *
+- *                                                                            *
+- * This 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 2 of the License, or (at your option) any later *
+- * version.                                                                   *
+- *                                                                            *
+- * This software 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 software; if not, write to the Free Software Foundation, Inc.,        *
+- * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
+- *                                                                            *
+- * CAnDL, the Chunky Dependence Analyzer                                      *
+- * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
+- *                                                                            *
+- ******************************************************************************/
+-
+-
+-#ifndef CANDL_PROGRAM_H
+-# define CANDL_PROGRAM_H
+-
+-# include <stdio.h>
+-# include <stdlib.h>
+-# include <candl/matrix.h>
+-# include <candl/statement.h>
+-
+-# ifdef CANDL_SUPPORTS_SCOPLIB
+-#  include <scoplib/scop.h>
+-# endif
+-
+-
+-# if defined(__cplusplus)
+-extern "C"
+-  {
+-# endif
+-
+-/**
+- * candl_program_t structure:
+- * this structure contains all the informations about a program.
+- */
+-struct candl_program
+-{
+-  CandlMatrix * context;            /**< The context of the program. */
+-  int nb_statements;                /**< The number of statements. */
+-  CandlStatement ** statement;      /**< Array of nb_statements pointers on
+-                                      *   the statements of the program.
+-                                      */
+-  CandlMatrix    ** transformation; /**< Array of nb_statements pointers on
+-                                      *   the transformation candidate (one
+-                                      *   function per statement). If NULL:
+-                                      *   no tranformation candidate.
+-                                      */
+-  int* scalars_privatizable;
+-};
+-typedef struct candl_program CandlProgram;
+-typedef struct candl_program candl_program_t;
+-typedef struct candl_program * candl_program_p;
+-
+-
+-/******************************************************************************
+- *                          Structure display function                        *
+- ******************************************************************************/
+-void candl_program_print_structure(FILE *, candl_program_p, int);
+-void candl_program_print(FILE *, candl_program_p);
+-void candl_program_print_candl_file(FILE *, candl_program_p);
+-
+-/******************************************************************************
+- *                         Memory alloc/dealloc function                      *
+- ******************************************************************************/
+-candl_program_p candl_program_malloc();
+-void candl_program_free(candl_program_p);
+-
+-
+-/******************************************************************************
+- *                               Reading function                             *
+- ******************************************************************************/
+-candl_program_p candl_program_read(FILE *);
+-/* This function is compiled if candl was configured with CLAN support. */
+-# ifdef CANDL_SUPPORTS_SCOPLIB
+-candl_program_p candl_program_read_scop(FILE *);
+-# endif
+-
+-/******************************************************************************
+- *                            Processing functions                            *
+- ******************************************************************************/
+-/* This function is compiled if candl was configured with CLAN support. */
+-# ifdef CANDL_SUPPORTS_SCOPLIB
+-candl_program_p candl_program_convert_scop(scoplib_scop_p, int**);
+-# endif
+-
+-# if defined(__cplusplus)
+-  }
+-# endif
+-#endif /* define CANDL_PROGRAM_H */
+-
+diff --git a/include/candl/pruning.h b/include/candl/pruning.h
+deleted file mode 100644
+index ad75e38..0000000
+--- a/include/candl/pruning.h
++++ /dev/null
+@@ -1,65 +0,0 @@
+-
+-   /**------ ( ----------------------------------------------------------**
+-    **       )\                      CAnDL                               **
+-    **----- /  ) --------------------------------------------------------**
+-    **     ( * (                    pruning.h                            **
+-    **----  \#/  --------------------------------------------------------**
+-    **    .-"#'-.        First version: July 17th 2011                   **
+-    **--- |"-.-"| -------------------------------------------------------**
+-          |     |
+-          |     |
+- ******** |     | *************************************************************
+- * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
+- ******************************************************************************
+- *                                                                            *
+- * Copyright (C) 2003-2008 Cedric Bastoul                                     *
+- *                                                                            *
+- * This 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 2 of the License, or (at your option) any later *
+- * version.                                                                   *
+- *                                                                            *
+- * This software 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 software; if not, write to the Free Software Foundation, Inc.,        *
+- * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
+- *                                                                            *
+- * CAnDL, the Chunky Dependence Analyzer                                      *
+- * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
+- *                                                                            *
+- ******************************************************************************/
+-
+-/**
+- * \file pruning.h
+- * \author Louis-Noel Pouchet
+- */
+-
+-#ifndef CANDL_PRUNING_H
+-# define CANDL_PRUNING_H
+-
+-
+-# include <stdio.h>
+-# include <candl/statement.h>
+-# include <candl/matrix.h>
+-# include <candl/program.h>
+-# include <candl/options.h>
+-# include <candl/matrix.h>
+-
+-
+-# if defined(__cplusplus)
+-extern "C"
+-  {
+-# endif
+-
+-CandlDependence*
+-candl_dependence_prune_transitively_covered (CandlDependence* deps);
+-
+-# if defined(__cplusplus)
+-  }
+-# endif
+-#endif /* define CANDL_PRUNING_H */
+-
+diff --git a/include/candl/scop.h b/include/candl/scop.h
+new file mode 100644
+index 0000000..ead43ed
+--- /dev/null
++++ b/include/candl/scop.h
+@@ -0,0 +1,66 @@
++
++   /**------ ( ----------------------------------------------------------**
++    **       )\                      CAnDL                               **
++    **----- /  ) --------------------------------------------------------**
++    **     ( * (                   scop.h                                **
++    **----  \#/  --------------------------------------------------------**
++    **    .-"#'-.        First version: july 9th 2012                    **
++    **--- |"-.-"| -------------------------------------------------------**
++          |     |
++          |     |
++ ******** |     | *************************************************************
++ * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
++ ******************************************************************************
++ *                                                                            *
++ * Copyright (C) 2003-2008 Cedric Bastoul                                     *
++ *                                                                            *
++ * This 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 2 of the License, or (at your option) any later *
++ * version.                                                                   *
++ *                                                                            *
++ * This software 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 software; if not, write to the Free Software Foundation, Inc.,        *
++ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
++ *                                                                            *
++ * CAnDL, the Chunky Dependence Analyzer                                      *
++ * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
++ *                                                                            *
++ ******************************************************************************/
++
++/*
++ * author Joel Poudroux
++ */
++
++#ifndef CANDL_SCOP_H
++# define CANDL_SCOP_H
++
++# if defined(__cplusplus)
++extern "C"
++  {
++# endif
++
++struct osl_scop;
++
++struct candl_scop_usr {
++  int size;
++  int *scalars_privatizable;
++  void *usr_backup; /**< If there is already a usr field, it will be saved */
++};
++
++typedef struct candl_scop_usr  candl_scop_usr_t;
++typedef struct candl_scop_usr* candl_scop_usr_p;
++
++void candl_scop_usr_init(struct osl_scop*);
++void candl_scop_usr_cleanup(struct osl_scop*);
++
++# if defined(__cplusplus)
++  }
++# endif
++
++#endif
+diff --git a/include/candl/statement.h b/include/candl/statement.h
+index 9e434a4..a26eff6 100644
+--- a/include/candl/statement.h
++++ b/include/candl/statement.h
+@@ -4,7 +4,7 @@
+     **----- /  ) --------------------------------------------------------**
+     **     ( * (                   statement.h                           **
+     **----  \#/  --------------------------------------------------------**
+-    **    .-"#'-.        First version: september 8th 2003               **
++    **    .-"#'-.        First version: july 9th 2012                    **
+     **--- |"-.-"| -------------------------------------------------------**
+           |     |
+           |     |
+@@ -33,68 +33,38 @@
+  *                                                                            *
+  ******************************************************************************/
+ 
++/*
++ * author Joel Poudroux
++ */
+ 
+ #ifndef CANDL_STATEMENT_H
+-# define CANDL_STATEMENT_H
+-
+-# include <stdio.h>
+-# include <candl/matrix.h>
++#define CANDL_STATEMENT_H
+ 
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+ 
++struct osl_scop;
++struct osl_statement;
+ 
+-/**
+- * CandlStatement structure:
+- * this structure contains all the informations about a program statement.
+- */
+-struct candlstatement
+-{ int label;                    /**< Statement number (it must be the array
+-                                  *   index of this statement in the "statement"
+-                                  *   field of the CandlProgram structure).
+-                                  */
+-  int type;                     /**< Statement type. */
+-  int depth;                    /**< Nesting level (nb of surrounding loops).*/
+-  int * index;                  /**< Iteration domain's iterator labels. */
+-  CandlMatrix * domain;         /**< Iteration domain. */
+-  CandlMatrix * written;        /**< Array of written data. */
+-  CandlMatrix * read;           /**< Array of read data. */
+-  void* ref;			/**< Reference to another structure
+-				   describing the same statement. */
++struct candl_statement_usr {
++  int label; /**< Statement label = 'n'th statement */
++  int depth;
++  int type;
++  int *index; /**< Loops label name */
++  void *usr_backup; /**< If there is already a usr field, it will be saved */
+ };
+-typedef struct candlstatement CandlStatement;
+-
+ 
+-/******************************************************************************
+- *                          Structure display function                        *
+- ******************************************************************************/
+-void candl_statement_print_structure(FILE *, CandlStatement *, int);
+-void candl_statement_print(FILE *, CandlStatement *);
+-
+-
+-/******************************************************************************
+- *                         Memory deallocation function                       *
+- ******************************************************************************/
+-void candl_statement_free(CandlStatement *);
+-
+-
+-/******************************************************************************
+- *                              Reading functions                             *
+- ******************************************************************************/
+-CandlStatement * candl_statement_read(FILE *, int, int);
+-
+-
+-/******************************************************************************
+- *                            Processing functions                            *
+- ******************************************************************************/
+-CandlStatement * candl_statement_malloc();
+-int              candl_statement_commute(CandlStatement *, CandlStatement *);
++typedef struct candl_statement_usr  candl_statement_usr_t;
++typedef struct candl_statement_usr* candl_statement_usr_p;
+ 
++void candl_statement_usr_init_all(struct osl_scop*);
++void candl_statement_usr_cleanup(struct osl_statement*);
+ 
+ # if defined(__cplusplus)
+   }
+ # endif
+-#endif /* define CANDL_STATEMENT_H */
+ 
++
++#endif
+diff --git a/include/candl/util.h b/include/candl/util.h
+new file mode 100644
+index 0000000..c20f09b
+--- /dev/null
++++ b/include/candl/util.h
+@@ -0,0 +1,61 @@
++
++   /**------ ( ----------------------------------------------------------**
++    **       )\                      CAnDL                               **
++    **----- /  ) --------------------------------------------------------**
++    **     ( * (                   util.h                                **
++    **----  \#/  --------------------------------------------------------**
++    **    .-"#'-.        First version: june 7th 2012                    **
++    **--- |"-.-"| -------------------------------------------------------**
++          |     |
++          |     |
++ ******** |     | *************************************************************
++ * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
++ ******************************************************************************
++ *                                                                            *
++ * Copyright (C) 2003-2008 Cedric Bastoul                                     *
++ *                                                                            *
++ * This 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 2 of the License, or (at your option) any later *
++ * version.                                                                   *
++ *                                                                            *
++ * This software 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 software; if not, write to the Free Software Foundation, Inc.,        *
++ * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
++ *                                                                            *
++ * CAnDL, the Chunky Dependence Analyzer                                      *
++ * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                         *
++ *                                                                            *
++ ******************************************************************************/
++
++/*
++ * author Joel Poudroux
++ */
++
++#ifndef CANDL_UTIL_H
++#define CANDL_UTIL_H
++
++# if defined(__cplusplus)
++extern "C"
++  {
++# endif
++
++struct osl_scop;
++struct osl_relation;
++struct osl_statement;
++
++int candl_util_relation_get_line(struct osl_relation*, int);
++int candl_util_statement_commute(struct osl_statement*, struct osl_statement*);
++int candl_util_check_scop(struct osl_scop*, struct osl_scop*);
++int candl_util_check_scop_list(struct osl_scop*, struct osl_scop*);
++
++# if defined(__cplusplus)
++  }
++# endif
++
++#endif
+diff --git a/include/candl/violation.h b/include/candl/violation.h
+index da09565..f395b63 100644
+--- a/include/candl/violation.h
++++ b/include/candl/violation.h
+@@ -38,52 +38,92 @@
+ # define CANDL_VIOLATION_H
+ 
+ # include <stdio.h>
+-# include <candl/dependence.h>
+-# include <candl/matrix.h>
++# include <candl/options.h>
+ 
+ # if defined(__cplusplus)
+ extern "C"
+   {
+ # endif
+ 
++struct osl_scop;
++struct osl_dependence;
++struct osl_relation;
+ 
+ /**
+  * CandlViolation structure:
+  * this structure contains all informations about a data dependence violation.
+- */
+-struct candlviolation
+-{ CandlDependence * dependence; /**< Pointer to violated dependence. */
+-  int dimension;                /**< Violation dimension. */
+-  CandlMatrix * domain;         /**< Violation polyhedron. */
+-  struct candlviolation * next; /**< Pointer to next violation. */
++ *
++ 
++  Violation domain structure
++                                     ________________________________________________________________________________________________  
++                                   /       source (output) |       target (input)  |                   local dims                     \ 
++                                __ |_______________________|_______________________|___________________________________________________|_____________
++                              / eq |output |output |output |output |output |output |ld dom |ld acc |ld scatt |ld dom |ld acc |ld scatt |           |  \ 
++                              | in |domain |access |scatt  |domain |access |scatt  |source |source |source   |target |target |target   |parameters | 1 |
++         _____________________|____|_______|_______|_______|_______|_______|_______|_______|_______|_________|_______|_______|_________|___________|___|
++             |Domain source   | X  |   X   :       :       |       :       :       |   X   :       :         |       :       :         |     X     | X |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++             |Domain target   | X  |       :       :       |   X   :       :       |       :       :         |   X   :       :         |     X     | X |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++  Dependence |Access source   | X  |   X   :   X   :       |       :       :       |       :   X   :         |       :       :         |     X     | X |
++  system     |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___| 
++             |Access target   | X  |       :       :       |   X   :   X   :       |       :       :         |       :   X   :         |     X     | X |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++             |Access equality |    |       :  Id   :       |       :  -Id  :       |       :       :         |       :       :         |           |   |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|    | 0    : 0..depth-1 
++             |Precedence      | X  |  Id   :       :       |  -Id  :       :       |       :       :         |       :       :         |           | X | <--| 0|-1 : depth
++         ===============================================================================================================================================
++             |Scattering      |    |       :       :       |       :       :       |       :       :         |       :       :         |           |   |
++             |source          | X  |   X   :       :   X   |       :       :       |       :       :    X    |       :       :         |     X     | X |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++             |Scattering      |    |       :       :       |       :       :       |       :       :         |       :       :         |           |   |
++             |target          | X  |       :       :       |   X   :       :   X   |       :       :         |       :       :    X    |     X     | X |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++             |Equality at     |    |       :       :       |       :       :       |       :       :         |       :       :         |           |   |
++             |1 ... dim_1     |    |       :       :  Id   |       :       : -Id   |       :       :         |       :       :         |           |   |
++             |________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___|
++         at  |Scat source >   |    |       :       :       |       :       :       |       :       :         |       :       :         |           |   |
++         dim |Scat target     | 1  |       :       :   1   |       :       :  -1   |       :       :         |       :       :         |           |-1 |
++             \________________|____|_______:_______:_______|_______:_______:_______|_______:_______:_________|_______:_______:_________|___________|___/
++
++                                                      (1)                     (2)                      (3)                       (4)
++*/
++
++struct candl_violation {
++  struct osl_dependence* dependence;    /**< Pointer to violated dependence. */
++  int dimension;                        /**< Violation dimension. */
++  struct osl_relation* domain;          /**< Violation polyhedron. */
++  struct candl_violation* next;         /**< Pointer to next violation. */
++  
++  int source_nb_output_dims_scattering; // (1)
++  int target_nb_output_dims_scattering; // (2)
++  int source_nb_local_dims_scattering;  // (3)
++  int target_nb_local_dims_scattering;  // (4)
+ };
+-typedef struct candlviolation CandlViolation;
+-
++typedef struct candl_violation  candl_violation_t;
++typedef struct candl_violation* candl_violation_p;
+ 
+ /******************************************************************************
+  *                          Structure display function                        *
+  ******************************************************************************/
+-void candl_violation_print_structure(FILE *, CandlViolation *, int);
+-void candl_violation_print(FILE *, CandlViolation *);
+-void candl_violation_pprint(FILE *, CandlViolation *);
+-void candl_violation_view(CandlViolation *);
+-
++void              candl_violation_idump(FILE*, candl_violation_p, int);
++void              candl_violation_dump(FILE*, candl_violation_p);
++void              candl_violation_pprint(FILE*, candl_violation_p);
++void              candl_violation_view(candl_violation_p);
+ 
+ /******************************************************************************
+  *                         Memory deallocation function                       *
+  ******************************************************************************/
+-void candl_violation_free(CandlViolation *);
+-
++void              candl_violation_free(candl_violation_p);
+ 
+ /******************************************************************************
+  *                             Processing functions                           *
+  ******************************************************************************/
+-CandlViolation * candl_violation_malloc();
+-void             candl_violation_add(CandlViolation **, CandlViolation **,
+-                                     CandlViolation *);
+-CandlViolation * candl_violation(CandlProgram *, CandlDependence *,
+-                                 CandlOptions *);
+-
++candl_violation_p candl_violation_malloc();
++void              candl_violation_add(candl_violation_p*, candl_violation_p*,
++                                  candl_violation_p);
++candl_violation_p candl_violation(struct osl_scop*, struct osl_dependence*,
++                                  struct osl_scop*, candl_options_p);
+ 
+ # if defined(__cplusplus)
+   }
+diff --git a/m4/ax_cc_maxopt.m4 b/m4/ax_cc_maxopt.m4
+new file mode 100644
+index 0000000..da415be
+--- /dev/null
++++ b/m4/ax_cc_maxopt.m4
+@@ -0,0 +1,178 @@
++# ===========================================================================
++#          http://www.nongnu.org/autoconf-archive/ax_cc_maxopt.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_CC_MAXOPT
++#
++# DESCRIPTION
++#
++#   Try to turn on "good" C optimization flags for various compilers and
++#   architectures, for some definition of "good". (In our case, good for
++#   FFTW and hopefully for other scientific codes. Modify as needed.)
++#
++#   The user can override the flags by setting the CFLAGS environment
++#   variable. The user can also specify --enable-portable-binary in order to
++#   disable any optimization flags that might result in a binary that only
++#   runs on the host architecture.
++#
++#   Note also that the flags assume that ANSI C aliasing rules are followed
++#   by the code (e.g. for gcc's -fstrict-aliasing), and that floating-point
++#   computations can be re-ordered as needed.
++#
++#   Requires macros: AX_CHECK_COMPILER_FLAGS, AX_COMPILER_VENDOR,
++#   AX_GCC_ARCHFLAG, AX_GCC_X86_CPUID.
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
++#   Copyright (c) 2008 Matteo Frigo
++#
++#   This program 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_CC_MAXOPT],
++[
++AC_REQUIRE([AC_PROG_CC])
++AC_REQUIRE([AX_COMPILER_VENDOR])
++AC_REQUIRE([AC_CANONICAL_HOST])
++
++AC_ARG_ENABLE(portable-binary, [AC_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])],
++	acx_maxopt_portable=$withval, acx_maxopt_portable=no)
++
++# Try to determine "good" native compiler flags if none specified via CFLAGS
++if test "$ac_test_CFLAGS" != "set"; then
++  CFLAGS=""
++  case $ax_cv_c_compiler_vendor in
++    dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
++	 if test "x$acx_maxopt_portable" = xno; then
++           CFLAGS="$CFLAGS -arch host"
++         fi;;
++
++    sun) CFLAGS="-native -fast -xO5 -dalign"
++	 if test "x$acx_maxopt_portable" = xyes; then
++	   CFLAGS="$CFLAGS -xarch=generic"
++         fi;;
++
++    hp)  CFLAGS="+Oall +Optrs_ansi +DSnative"
++	 if test "x$acx_maxopt_portable" = xyes; then
++	   CFLAGS="$CFLAGS +DAportable"
++	 fi;;
++
++    ibm) if test "x$acx_maxopt_portable" = xno; then
++           xlc_opt="-qarch=auto -qtune=auto"
++	 else
++           xlc_opt="-qtune=auto"
++	 fi
++         AX_CHECK_COMPILER_FLAGS($xlc_opt,
++         	CFLAGS="-O3 -qansialias -w $xlc_opt",
++               [CFLAGS="-O3 -qansialias -w"
++                echo "******************************************************"
++                echo "*  You seem to have the IBM  C compiler.  It is      *"
++                echo "*  recommended for best performance that you use:    *"
++                echo "*                                                    *"
++                echo "*    CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
++                echo "*                      ^^^        ^^^                *"
++                echo "*  where xxx is pwr2, pwr3, 604, or whatever kind of *"
++                echo "*  CPU you have.  (Set the CFLAGS environment var.   *"
++                echo "*  and re-run configure.)  For more info, man cc.    *"
++                echo "******************************************************"])
++         ;;
++
++    intel) CFLAGS="-O3 -ansi_alias"
++	if test "x$acx_maxopt_portable" = xno; then
++	  icc_archflag=unknown
++	  icc_flags=""
++	  case $host_cpu in
++	    i686*|x86_64*)
++              # icc accepts gcc assembly syntax, so these should work:
++	      AX_GCC_X86_CPUID(0)
++              AX_GCC_X86_CPUID(1)
++	      case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
++                *:756e6547:*:*) # Intel
++                  case $ax_cv_gcc_x86_cpuid_1 in
++                    *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";;
++                    *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";;
++                    *f??:*:*:*) icc_flags="-xN -xW -xK";;
++                  esac ;;
++              esac ;;
++          esac
++          if test "x$icc_flags" != x; then
++            for flag in $icc_flags; do
++              AX_CHECK_COMPILER_FLAGS($flag, [icc_archflag=$flag; break])
++            done
++          fi
++          AC_MSG_CHECKING([for icc architecture flag])
++	  AC_MSG_RESULT($icc_archflag)
++          if test "x$icc_archflag" != xunknown; then
++            CFLAGS="$CFLAGS $icc_archflag"
++          fi
++        fi
++	;;
++
++    gnu)
++     # default optimization flags for gcc on all systems
++     CFLAGS="-O3 -fomit-frame-pointer"
++
++     # -malign-double for x86 systems
++     AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double")
++
++     #  -fstrict-aliasing for gcc-2.95+
++     AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing,
++	CFLAGS="$CFLAGS -fstrict-aliasing")
++
++     # note that we enable "unsafe" fp optimization with other compilers, too
++     AX_CHECK_COMPILER_FLAGS(-ffast-math, CFLAGS="$CFLAGS -ffast-math")
++
++     AX_GCC_ARCHFLAG($acx_maxopt_portable)
++     ;;
++  esac
++
++  if test -z "$CFLAGS"; then
++	echo ""
++	echo "********************************************************"
++        echo "* WARNING: Don't know the best CFLAGS for this system  *"
++        echo "* Use ./configure CFLAGS=... to specify your own flags *"
++	echo "* (otherwise, a default of CFLAGS=-O3 will be used)    *"
++	echo "********************************************************"
++	echo ""
++        CFLAGS="-O3"
++  fi
++
++  AX_CHECK_COMPILER_FLAGS($CFLAGS, [], [
++	echo ""
++        echo "********************************************************"
++        echo "* WARNING: The guessed CFLAGS don't seem to work with  *"
++        echo "* your compiler.                                       *"
++        echo "* Use ./configure CFLAGS=... to specify your own flags *"
++        echo "********************************************************"
++        echo ""
++        CFLAGS=""
++  ])
++
++fi
++])
+diff --git a/m4/ax_cflags_warn_all.m4 b/m4/ax_cflags_warn_all.m4
+new file mode 100644
+index 0000000..026c6e9
+--- /dev/null
++++ b/m4/ax_cflags_warn_all.m4
+@@ -0,0 +1,149 @@
++# ===========================================================================
++#       http://www.nongnu.org/autoconf-archive/ax_cflags_warn_all.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
++#
++# DESCRIPTION
++#
++#   Try to find a compiler option that enables most reasonable warnings.
++#
++#   For the GNU CC compiler it will be -Wall (and -ansi -pedantic) The
++#   result is added to the shellvar being CFLAGS by default.
++#
++#   Currently this macro knows about GCC, Solaris C compiler, Digital Unix C
++#   compiler, C for AIX Compiler, HP-UX C compiler, IRIX C compiler, NEC
++#   SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos 10.0.0.8) C
++#   compiler.
++#
++#    - $1 shell-variable-to-add-to : CFLAGS
++#    - $2 add-value-if-not-found : nothing
++#    - $3 action-if-found : add value to shellvariable
++#    - $4 action-if-not-found : nothing
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Guido U. Draheim <guidod at gmx.de>
++#
++#   This program 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 2 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
++AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
++AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_warn_all])dnl
++AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
++VAR,[VAR="no, unknown"
++ AC_LANG_SAVE
++ AC_LANG_C
++ ac_save_[]FLAGS="$[]FLAGS"
++for ac_arg dnl
++in "-pedantic  % -Wall"       dnl   GCC
++   "-xstrconst % -v"          dnl Solaris C
++   "-std1      % -verbose -w0 -warnprotos" dnl Digital Unix
++   "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
++   "-ansi -ansiE % -fullwarn" dnl IRIX
++   "+ESlit     % +w1"         dnl HP-UX C
++   "-Xc        % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
++   "-h conform % -h msglevel 2" dnl Cray C (Unicos)
++   #
++do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
++   AC_TRY_COMPILE([],[return 0;],
++   [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
++done
++ FLAGS="$ac_save_[]FLAGS"
++ AC_LANG_RESTORE
++])
++case ".$VAR" in
++     .ok|.ok,*) m4_ifvaln($3,$3) ;;
++   .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
++        AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
++                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
++   *) m4_ifvaln($3,$3,[
++   if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
++   then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
++   else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
++                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
++   fi ]) ;;
++esac
++AS_VAR_POPDEF([VAR])dnl
++AS_VAR_POPDEF([FLAGS])dnl
++])
++
++dnl the only difference - the LANG selection... and the default FLAGS
++
++AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl
++AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl
++AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_warn_all])dnl
++AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
++VAR,[VAR="no, unknown"
++ AC_LANG_SAVE
++ AC_LANG_CPLUSPLUS
++ ac_save_[]FLAGS="$[]FLAGS"
++for ac_arg dnl
++in "-pedantic  % -Wall"       dnl   GCC
++   "-xstrconst % -v"          dnl Solaris C
++   "-std1      % -verbose -w0 -warnprotos" dnl Digital Unix
++   "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX
++   "-ansi -ansiE % -fullwarn" dnl IRIX
++   "+ESlit     % +w1"         dnl HP-UX C
++   "-Xc        % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10)
++   "-h conform % -h msglevel 2" dnl Cray C (Unicos)
++   #
++do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
++   AC_TRY_COMPILE([],[return 0;],
++   [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
++done
++ FLAGS="$ac_save_[]FLAGS"
++ AC_LANG_RESTORE
++])
++case ".$VAR" in
++     .ok|.ok,*) m4_ifvaln($3,$3) ;;
++   .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
++        AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
++                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
++   *) m4_ifvaln($3,$3,[
++   if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
++   then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
++   else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
++                      m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
++   fi ]) ;;
++esac
++AS_VAR_POPDEF([VAR])dnl
++AS_VAR_POPDEF([FLAGS])dnl
++])
++
++dnl  implementation tactics:
++dnl   the for-argument contains a list of options. The first part of
++dnl   these does only exist to detect the compiler - usually it is
++dnl   a global option to enable -ansi or -extrawarnings. All other
++dnl   compilers will fail about it. That was needed since a lot of
++dnl   compilers will give false positives for some option-syntax
++dnl   like -Woption or -Xoption as they think of it is a pass-through
++dnl   to later compile stages or something. The "%" is used as a
++dnl   delimimiter. A non-option comment can be given after "%%" marks
++dnl   which will be shown but not added to the respective C/CXXFLAGS.
+diff --git a/m4/ax_check_compiler_flags.m4 b/m4/ax_check_compiler_flags.m4
+new file mode 100644
+index 0000000..7da8324
+--- /dev/null
++++ b/m4/ax_check_compiler_flags.m4
+@@ -0,0 +1,74 @@
++# ===========================================================================
++#     http://www.nongnu.org/autoconf-archive/ax_check_compiler_flags.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
++#
++# DESCRIPTION
++#
++#   Check whether the given compiler FLAGS work with the current language's
++#   compiler, or whether they give an error. (Warnings, however, are
++#   ignored.)
++#
++#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
++#   success/failure.
++#
++# LICENSE
++#
++#   Copyright (c) 2009 Steven G. Johnson <stevenj at alum.mit.edu>
++#   Copyright (c) 2009 Matteo Frigo
++#
++#   This program 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
++[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
++AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
++dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
++AS_LITERAL_IF([$1],
++  [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1]), [
++      ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
++      _AC_LANG_PREFIX[]FLAGS="$1"
++      AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
++        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
++        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
++      _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
++  [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
++   _AC_LANG_PREFIX[]FLAGS="$1"
++   AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
++     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
++     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
++   _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
++eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])
++AC_MSG_RESULT($ax_check_compiler_flags)
++if test "x$ax_check_compiler_flags" = xyes; then
++	m4_default([$2], :)
++else
++	m4_default([$3], :)
++fi
++])dnl AX_CHECK_COMPILER_FLAGS
+diff --git a/m4/ax_compiler_vendor.m4 b/m4/ax_compiler_vendor.m4
+new file mode 100644
+index 0000000..b074260
+--- /dev/null
++++ b/m4/ax_compiler_vendor.m4
+@@ -0,0 +1,61 @@
++# ===========================================================================
++#       http://www.nongnu.org/autoconf-archive/ax_compiler_vendor.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_COMPILER_VENDOR
++#
++# DESCRIPTION
++#
++#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
++#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
++#   watcom, etc. The vendor is returned in the cache variable
++#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
++#   Copyright (c) 2008 Matteo Frigo
++#
++#   This program 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_COMPILER_VENDOR],
++[
++AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
++ [ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
++  # note: don't check for gcc first since some other compilers define __GNUC__
++  for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
++    vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
++#if !($vencpp)
++      thisisanerror;
++#endif
++])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
++  done
++ ])
++])
+diff --git a/m4/ax_gcc_archflag.m4 b/m4/ax_gcc_archflag.m4
+new file mode 100644
+index 0000000..dedeef4
+--- /dev/null
++++ b/m4/ax_gcc_archflag.m4
+@@ -0,0 +1,213 @@
++# ===========================================================================
++#         http://www.nongnu.org/autoconf-archive/ax_gcc_archflag.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE])
++#
++# DESCRIPTION
++#
++#   This macro tries to guess the "native" arch corresponding to the target
++#   architecture for use with gcc's -march=arch or -mtune=arch flags. If
++#   found, the cache variable $ax_cv_gcc_archflag is set to this flag and
++#   ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is is set to
++#   "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
++#   to add $ax_cv_gcc_archflag to the end of $CFLAGS.
++#
++#   PORTABLE? should be either [yes] (default) or [no]. In the former case,
++#   the flag is set to -mtune (or equivalent) so that the architecture is
++#   only used for tuning, but the instruction set used is still portable. In
++#   the latter case, the flag is set to -march (or equivalent) so that
++#   architecture-specific instructions are enabled.
++#
++#   The user can specify --with-gcc-arch=<arch> in order to override the
++#   macro's choice of architecture, or --without-gcc-arch to disable this.
++#
++#   When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
++#   called unless the user specified --with-gcc-arch manually.
++#
++#   Requires macros: AX_CHECK_COMPILER_FLAGS, AX_GCC_X86_CPUID
++#
++#   (The main emphasis here is on recent CPUs, on the principle that doing
++#   high-performance computing on old hardware is uncommon.)
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
++#   Copyright (c) 2008 Matteo Frigo
++#
++#   This program 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_GCC_ARCHFLAG],
++[AC_REQUIRE([AC_PROG_CC])
++AC_REQUIRE([AC_CANONICAL_HOST])
++
++AC_ARG_WITH(gcc-arch, [AC_HELP_STRING([--with-gcc-arch=<arch>], [use architecture <arch> for gcc -march/-mtune, instead of guessing])],
++	ax_gcc_arch=$withval, ax_gcc_arch=yes)
++
++AC_MSG_CHECKING([for gcc architecture flag])
++AC_MSG_RESULT([])
++AC_CACHE_VAL(ax_cv_gcc_archflag,
++[
++ax_cv_gcc_archflag="unknown"
++
++if test "$GCC" = yes; then
++
++if test "x$ax_gcc_arch" = xyes; then
++ax_gcc_arch=""
++if test "$cross_compiling" = no; then
++case $host_cpu in
++  i[[3456]]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
++     AX_GCC_X86_CPUID(0)
++     AX_GCC_X86_CPUID(1)
++     case $ax_cv_gcc_x86_cpuid_0 in
++       *:756e6547:*:*) # Intel
++          case $ax_cv_gcc_x86_cpuid_1 in
++	    *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
++	    *5??:*:*:*) ax_gcc_arch=pentium ;;
++	    *6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
++	    *6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
++	    *6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
++	    *6[[9d]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
++	    *6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
++	    *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
++            *f3[[347]]:*:*:*|*f4[1347]:*:*:*)
++		case $host_cpu in
++                  x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
++                  *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
++                esac ;;
++            *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
++          esac ;;
++       *:68747541:*:*) # AMD
++          case $ax_cv_gcc_x86_cpuid_1 in
++	    *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;;
++	    *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
++	    *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
++	    *60?:*:*:*) ax_gcc_arch=k7 ;;
++	    *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;;
++	    *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
++	    *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
++	    *6[[68a]]?:*:*:*)
++	       AX_GCC_X86_CPUID(0x80000006) # L2 cache size
++	       case $ax_cv_gcc_x86_cpuid_0x80000006 in
++                 *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256
++			ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
++                 *) ax_gcc_arch="athlon-4 athlon k7" ;;
++	       esac ;;
++	    *f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
++	    *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
++	    *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
++	    *f??:*:*:*) ax_gcc_arch="k8" ;;
++          esac ;;
++	*:746e6543:*:*) # IDT
++	   case $ax_cv_gcc_x86_cpuid_1 in
++	     *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
++	     *58?:*:*:*) ax_gcc_arch=winchip2 ;;
++	     *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;;
++	     *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
++	   esac ;;
++     esac
++     if test x"$ax_gcc_arch" = x; then # fallback
++	case $host_cpu in
++	  i586*) ax_gcc_arch=pentium ;;
++	  i686*) ax_gcc_arch=pentiumpro ;;
++        esac
++     fi
++     ;;
++
++  sparc*)
++     AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
++     cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
++     cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
++     case $cputype in
++         *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
++         *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
++         *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
++         *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;;
++         *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;;
++         *cypress*) ax_gcc_arch=cypress ;;
++     esac ;;
++
++  alphaev5) ax_gcc_arch=ev5 ;;
++  alphaev56) ax_gcc_arch=ev56 ;;
++  alphapca56) ax_gcc_arch="pca56 ev56" ;;
++  alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
++  alphaev6) ax_gcc_arch=ev6 ;;
++  alphaev67) ax_gcc_arch=ev67 ;;
++  alphaev68) ax_gcc_arch="ev68 ev67" ;;
++  alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
++  alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
++  alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
++
++  powerpc*)
++     cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
++     cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
++     case $cputype in
++       *750*) ax_gcc_arch="750 G3" ;;
++       *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;;
++       *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;;
++       *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;;
++       *970*) ax_gcc_arch="970 G5 power4";;
++       *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
++       *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
++       603ev|8240) ax_gcc_arch="$cputype 603e 603";;
++       *) ax_gcc_arch=$cputype ;;
++     esac
++     ax_gcc_arch="$ax_gcc_arch powerpc"
++     ;;
++esac
++fi # not cross-compiling
++fi # guess arch
++
++if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
++for arch in $ax_gcc_arch; do
++  if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code
++    flags="-mtune=$arch"
++    # -mcpu=$arch and m$arch generate nonportable code on every arch except
++    # x86.  And some other arches (e.g. Alpha) don't accept -mtune.  Grrr.
++    case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
++  else
++    flags="-march=$arch -mcpu=$arch -m$arch"
++  fi
++  for flag in $flags; do
++    AX_CHECK_COMPILER_FLAGS($flag, [ax_cv_gcc_archflag=$flag; break])
++  done
++  test "x$ax_cv_gcc_archflag" = xunknown || break
++done
++fi
++
++fi # $GCC=yes
++])
++AC_MSG_CHECKING([for gcc architecture flag])
++AC_MSG_RESULT($ax_cv_gcc_archflag)
++if test "x$ax_cv_gcc_archflag" = xunknown; then
++  m4_default([$3],:)
++else
++  m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"])
++fi
++])
+diff --git a/m4/ax_gcc_x86_cpuid.m4 b/m4/ax_gcc_x86_cpuid.m4
+new file mode 100644
+index 0000000..5420b09
+--- /dev/null
++++ b/m4/ax_gcc_x86_cpuid.m4
+@@ -0,0 +1,77 @@
++# ===========================================================================
++#        http://www.nongnu.org/autoconf-archive/ax_gcc_x86_cpuid.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_GCC_X86_CPUID(OP)
++#
++# DESCRIPTION
++#
++#   On Pentium and later x86 processors, with gcc or a compiler that has a
++#   compatible syntax for inline assembly instructions, run a small program
++#   that executes the cpuid instruction with input OP. This can be used to
++#   detect the CPU type.
++#
++#   On output, the values of the eax, ebx, ecx, and edx registers are stored
++#   as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
++#   ax_cv_gcc_x86_cpuid_OP.
++#
++#   If the cpuid instruction fails (because you are running a
++#   cross-compiler, or because you are not using gcc, or because you are on
++#   a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
++#   is set to the string "unknown".
++#
++#   This macro mainly exists to be used in AX_GCC_ARCHFLAG.
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
++#   Copyright (c) 2008 Matteo Frigo
++#
++#   This program 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 <http://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++AC_DEFUN([AX_GCC_X86_CPUID],
++[AC_REQUIRE([AC_PROG_CC])
++AC_LANG_PUSH([C])
++AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
++ [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
++     int op = $1, eax, ebx, ecx, edx;
++     FILE *f;
++      __asm__("cpuid"
++        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++        : "a" (op));
++     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++     fclose(f);
++     return 0;
++])],
++     [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
++     [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
++     [ax_cv_gcc_x86_cpuid_$1=unknown])])
++AC_LANG_POP([C])
++])
+diff --git a/m4/ax_submodule.m4 b/m4/ax_submodule.m4
+new file mode 100644
+index 0000000..57e3a56
+--- /dev/null
++++ b/m4/ax_submodule.m4
+@@ -0,0 +1,63 @@
++AC_DEFUN([AX_SUBMODULE],
++[
++
++AC_ARG_WITH($1,
++	[AS_HELP_STRING([--with-$1=$2],
++			[Which $1 to use])])
++case "system" in
++$2)
++	AC_ARG_WITH($1_prefix,
++		    [AS_HELP_STRING([--with-$1-prefix=DIR],
++				    [Prefix of $1 installation])])
++	AC_ARG_WITH($1_exec_prefix,
++		    [AS_HELP_STRING([--with-$1-exec-prefix=DIR],
++				    [Exec prefix of $1 installation])])
++esac
++case "build" in
++$2)
++	AC_ARG_WITH($1_builddir,
++		    [AS_HELP_STRING([--with-$1-builddir=DIR],
++				    [Location of $1 builddir])])
++esac
++if test "x$with_$1_prefix" != "x" -a "x$with_$1_exec_prefix" = "x"; then
++	with_$1_exec_prefix=$with_$1_prefix
++fi
++if test "x$with_$1_prefix" != "x" -o "x$with_$1_exec_prefix" != "x"; then
++	if test "x$with_$1" != "x" -a "x$with_$1" != "xsystem"; then
++		AC_MSG_ERROR([Setting $with_$1_prefix implies use of system $1])
++	fi
++	with_$1="system"
++fi
++if test "x$with_$1_builddir" != "x"; then
++	if test "x$with_$1" != "x" -a "x$with_$1" != "xbuild"; then
++		AC_MSG_ERROR([Setting $with_$1_builddir implies use of build $1])
++	fi
++	with_$1="build"
++	$1_srcdir=`echo @abs_srcdir@ | $with_$1_builddir/config.status --file=-`
++	AC_MSG_NOTICE($1 sources in $$1_srcdir)
++fi
++case "$with_$1" in
++$2)
++	;;
++*)
++	if test -d $srcdir/.git -a \
++		-d $srcdir/$1 -a \
++		! -d $srcdir/$1/.git; then
++		AC_MSG_WARN(
++[git repo detected, but submodule $1 not initialized])
++		AC_MSG_WARN([You may want to run])
++		AC_MSG_WARN([	git submodule init])
++		AC_MSG_WARN([	git submodule update])
++		AC_MSG_WARN([	sh autogen.sh])
++	fi
++	if test -f $srcdir/$1/configure -a "$3" != "no"; then
++		with_$1="bundled"
++	else
++		with_$1="$3"
++	fi
++	;;
++esac
++AC_MSG_CHECKING([which $1 to use])
++AC_MSG_RESULT($with_$1)
++
++])
+diff --git a/osl b/osl
+new file mode 160000
+index 0000000..46ef4ec
+--- /dev/null
++++ b/osl
+@@ -0,0 +1 @@
++Subproject commit 46ef4ec9917713d5d51dd45331c0e74870c5375d
+diff --git a/piplib b/piplib
+new file mode 160000
+index 0000000..f2cfdd3
+--- /dev/null
++++ b/piplib
+@@ -0,0 +1 @@
++Subproject commit f2cfdd3f7a7c4c0c4f7408437205fa27bfb041ba
+diff --git a/redo.sh b/redo.sh
+new file mode 100755
+index 0000000..a1cdb50
+--- /dev/null
++++ b/redo.sh
+@@ -0,0 +1,12 @@
++#!/bin/sh
++make maintainer-clean
++#./get_submodules.sh
++./autogen.sh
++./configure  \
++            --prefix=$HOME/usr \
++            --with-osl=system \
++            --with-osl-prefix=$HOME/usr \
++            --with-piplib=system \
++            --with-piplib-prefix=$HOME/usr 
++
++make
+diff --git a/source/Makefile.am b/source/Makefile.am
+deleted file mode 100644
+index 3909be1..0000000
+--- a/source/Makefile.am
++++ /dev/null
+@@ -1,70 +0,0 @@
+-#
+-#   /**-------------------------------------------------------------------**
+-#    **                              CAnDL                                **
+-#    **-------------------------------------------------------------------**
+-#    **                           Makefile.am                             **
+-#    **-------------------------------------------------------------------**
+-#    **                 First version: september 8th 2003                 **
+-#    **-------------------------------------------------------------------**/
+-#
+-#/*****************************************************************************
+-# *   CAnDL : the Chunky Analyser for Dependences in Loops (experimental)     *
+-# *****************************************************************************
+-# *                                                                           *
+-# * Copyright (C) 2003-2008 Cedric Bastoul                                    *
+-# *                                                                           *
+-# * This 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 2 of the License, or (at your option) any      *
+-# * later version.							      *
+-# *                                                                           *
+-# * This software 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 software; if not, write to the Free Software Foundation, Inc.,       *
+-# * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                    *
+-# *                                                                           *
+-# * CAnDL, the Chunky Dependence Analyser                                     *
+-# * Written by Cedric Bastoul, Cedric.Bastoul at inria.fr                        *
+-# *                                                                           *
+-# *****************************************************************************/
+-
+-
+-#############################################################################
+-SUBDIRS			=
+-
+-#############################################################################
+-MAINTAINERCLEANFILES	= Makefile.in
+-
+-INCLUDES		= -I$(top_builddir) -I$(top_srcdir)	\
+-			  -I$(top_builddir)/include		\
+-		          -I$(top_srcdir)/include
+-
+-#############################################################################
+-
+-lib_LTLIBRARIES 	= libcandl.la
+-
+-
+-libcandl_la_SOURCES 	=			\
+-	dependence.c				\
+-	ddv.c					\
+-	isl-wrapper.c				\
+-	matrix.c				\
+-	options.c				\
+-	piplib-wrapper.c			\
+-	program.c				\
+-	pruning.c				\
+-	statement.c				\
+-	violation.c
+-
+-AM_CFLAGS = -Wall -fomit-frame-pointer -g
+-
+-
+-bin_PROGRAMS = candl
+-
+-LDADD = libcandl.la
+-
+-candl_SOURCES = candl.c
+diff --git a/source/candl.c b/source/candl.c
+index 27e8ca4..df6bf18 100644
+--- a/source/candl.c
++++ b/source/candl.c
+@@ -6,8 +6,8 @@
+     **----  \#/  --------------------------------------------------------**
+     **    .-"#'-.        First version: september 8th 2003               **
+     **--- |"-.-"| -------------------------------------------------------**
+-          |     |
+-          |     |
++    |     |
++    |     |
+  ******** |     | *************************************************************
+  * CAnDL  '-._,-' the Chunky Analyzer for Dependences in Loops (experimental) *
+  ******************************************************************************
+@@ -33,98 +33,162 @@
+  *                                                                            *
+  ******************************************************************************/
+ 
+-
+ #include <stdlib.h>
+ #include <stdio.h>
+-#include <candl/candl.h>
++#include <osl/scop.h>
++#include <osl/macros.h>
++#include <osl/util.h>
++#include <osl/extensions/dependence.h>
++#include <candl/macros.h>
+ #include <candl/dependence.h>
+-#include <candl/program.h>
+ #include <candl/violation.h>
+ #include <candl/options.h>
++#include <candl/scop.h>
++#include <candl/util.h>
++#include <candl/piplib.h>
+ 
+ 
+-int main(int argc, char * argv[])
+-{
+-  CandlProgram * program = NULL;
+-  CandlOptions * options;
+-  CandlDependence * dependence;
+-  CandlViolation * violation = NULL;
+-  FILE * input, * output;
++int main(int argc, char * argv[]) {
++  
++  osl_scop_p scop = NULL;
++  osl_scop_p orig_scop = NULL;
++  osl_dependence_p dep = NULL;
++  int num_scops = 0,  i= 0;
++  candl_options_p options;
++  candl_violation_p *violations = NULL;
++  FILE *input, *output, *input_test;
++  int precision;
++  #if defined(CANDL_LINEAR_VALUE_IS_INT)
++    precision = OSL_PRECISION_SP;
++  #elif defined(CANDL_LINEAR_VALUE_IS_LONGLONG)
++    precision = OSL_PRECISION_DP;
++  #elif defined(CANDL_LINEAR_VALUE_IS_MP)
++    precision = OSL_PRECISION_MP;
++  #endif
+ 
+   /* Options and input/output file setting. */
+-  candl_options_read(argc, argv, &input, &output, &options);
+-
+-  /* Reading the program informations. */
+-#ifdef CANDL_SUPPORTS_SCOPLIB
+-  if (options->readscop)
+-    {
+-      program = candl_program_read_scop(input);
+-      if (options->scoptocandl)
+-	{
+-	  if (! options->readscop)
+-	    program = candl_program_read_scop(input);
+-	  candl_program_print_candl_file(output, program);
+-	  candl_program_free(program);
+-	  candl_options_free(options);
+-	  return 0;
+-	}
+-    }
+-  else
+-#endif
+-    program = candl_program_read(input);
+-
<Skipped 10030 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/candl.git/commitdiff/65a2ccbcf7286adc211eb5d2967d98480d041b58



More information about the pld-cvs-commit mailing list