summaryrefslogtreecommitdiff
path: root/devel/polly/patches
diff options
context:
space:
mode:
authorkamil <kamil>2016-09-12 22:49:23 +0000
committerkamil <kamil>2016-09-12 22:49:23 +0000
commit8855d23e66f4153f5941bb9be3452cf141e0027e (patch)
tree3e6b5268f0da2ba9288017426e2b3cccc9acad09 /devel/polly/patches
parent370ad72a68f10344fcef5cc7e8886449a4e13669 (diff)
downloadpkgsrc-8855d23e66f4153f5941bb9be3452cf141e0027e.tar.gz
Import LLVM Polly 3.8.1 as devel/polly
Polly is a high-level loop and data-locality optimizer and optimization infrastructure for LLVM. It uses an abstract mathematical representation based on integer polyhedra to analyze and optimize the memory access pattern of a program. We currently perform classical loop transformations, especially tiling and loop fusion to improve data-locality. Polly can also exploit OpenMP level parallelism, expose SIMDization opportunities. Work has also be done in the area of automatic GPU code generation. For many users, however, it's not the existing optimizations in Polly that are of most interest, but the new analyses and optimizations enabled by the Polly infrastructure. At polyhedral.info you can get an idea of what has already been done and what is possible in the context of polyhedral compilation.
Diffstat (limited to 'devel/polly/patches')
-rw-r--r--devel/polly/patches/patch-CMakeLists.txt206
-rw-r--r--devel/polly/patches/patch-lib_External_isl_configure29
2 files changed, 235 insertions, 0 deletions
diff --git a/devel/polly/patches/patch-CMakeLists.txt b/devel/polly/patches/patch-CMakeLists.txt
new file mode 100644
index 00000000000..7105a9d2476
--- /dev/null
+++ b/devel/polly/patches/patch-CMakeLists.txt
@@ -0,0 +1,206 @@
+$NetBSD: patch-CMakeLists.txt,v 1.1 2016/09/12 22:49:23 kamil Exp $
+
+Bump minimal required CMake version to 3.4.3 like modern LLVM
+Add support for standalone builds
+Disable tests - they require missing files from standard LLVM build (lit tool)
+
+--- CMakeLists.txt.orig 2015-10-15 12:18:37.000000000 +0000
++++ CMakeLists.txt
+@@ -1,90 +1,107 @@
+ # Check if this is a in tree build.
+ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
+ project(Polly)
+- cmake_minimum_required(VERSION 2.8)
++ cmake_minimum_required(VERSION 3.4.3)
+
+- # Where is LLVM installed?
+- set(LLVM_INSTALL_ROOT "" CACHE PATH "Root of LLVM install.")
+- # Check if the LLVM_INSTALL_ROOT valid.
+- if( NOT EXISTS ${LLVM_INSTALL_ROOT}/include/llvm )
+- message(FATAL_ERROR "LLVM_INSTALL_ROOT (${LLVM_INSTALL_ROOT}) is not a valid LLVM installation.")
+- endif(NOT EXISTS ${LLVM_INSTALL_ROOT}/include/llvm)
+- #FileCheck is not install by default, warn the user to Copy FileCheck
+- if( NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/FileCheck
+- OR NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/not)
+- message(WARNING "FileCheck or not are required by running regress tests, "
+- "but they are not installed! Please copy it to "
+- "${LLVM_INSTALL_ROOT}/bin.")
+- endif(NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/FileCheck
+- OR NOT EXISTS ${LLVM_INSTALL_ROOT}/bin/not)
+- # Add the llvm header path.
+- include_directories(${LLVM_INSTALL_ROOT}/include/)
+-
+- # Get the system librarys that will link into LLVM.
+- function(get_system_libs return_var)
+- # Returns in `return_var' a list of system libraries used by LLVM.
+- if( NOT MSVC )
+- if( MINGW )
+- set(system_libs ${system_libs} imagehlp psapi)
+- elseif( CMAKE_HOST_UNIX )
+- if( HAVE_LIBDL )
+- set(system_libs ${system_libs} ${CMAKE_DL_LIBS})
+- endif()
+- if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD )
+- set(system_libs ${system_libs} pthread)
+- endif()
+- endif( MINGW )
+- endif( NOT MSVC )
+- set(${return_var} ${system_libs} PARENT_SCOPE)
+- endfunction(get_system_libs)
+-
+- # Now set the header paths.
+- execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --includedir
+- OUTPUT_VARIABLE LLVM_INCLUDE_DIR
+- OUTPUT_STRIP_TRAILING_WHITESPACE)
+- include_directories( ${LLVM_INCLUDE_DIR} )
+-
+- # Get the TARGET_TRIPLE
+- execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --host-target
+- OUTPUT_VARIABLE TARGET_TRIPLE
+- OUTPUT_STRIP_TRAILING_WHITESPACE)
+-
+- # And then set the cxx flags.
+- execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --cxxflags
+- OUTPUT_VARIABLE LLVM_CXX_FLAGS
+- OUTPUT_STRIP_TRAILING_WHITESPACE)
+- set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS})
+-
+- # Check LLVM_ENABLE_ASSERTIONS
+- execute_process(COMMAND "${LLVM_INSTALL_ROOT}/bin/llvm-config" --assertion-mode
+- OUTPUT_VARIABLE LLVM_ENABLE_ASSERTIONS
+- OUTPUT_STRIP_TRAILING_WHITESPACE)
+- # Copied from LLVM's HandleLLVMOptions.cmake
+- if( LLVM_ENABLE_ASSERTIONS )
+- # MSVC doesn't like _DEBUG on release builds. See PR 4379.
+- if( NOT MSVC )
+- add_definitions( -D_DEBUG )
+- endif()
+- # On non-Debug builds cmake automatically defines NDEBUG, so we
+- # explicitly undefine it:
+- if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" )
+- add_definitions( -UNDEBUG )
+- # Also remove /D NDEBUG to avoid MSVC warnings about conflicting defines.
+- foreach (flags_var_to_scrub
+- CMAKE_CXX_FLAGS_RELEASE
+- CMAKE_CXX_FLAGS_RELWITHDEBINFO
+- CMAKE_CXX_FLAGS_MINSIZEREL
+- CMAKE_C_FLAGS_RELEASE
+- CMAKE_C_FLAGS_RELWITHDEBINFO
+- CMAKE_C_FLAGS_MINSIZEREL)
+- string (REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " "
+- "${flags_var_to_scrub}" "${${flags_var_to_scrub}}")
+- endforeach()
+- endif()
++ option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
++
++ # Rely on llvm-config.
++ set(CONFIG_OUTPUT)
++ find_program(LLVM_CONFIG "llvm-config")
++ if(LLVM_CONFIG)
++ message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}")
++ set(CONFIG_COMMAND ${LLVM_CONFIG}
++ "--assertion-mode"
++ "--bindir"
++ "--libdir"
++ "--includedir"
++ "--prefix"
++ "--src-root")
++ execute_process(
++ COMMAND ${CONFIG_COMMAND}
++ RESULT_VARIABLE HAD_ERROR
++ OUTPUT_VARIABLE CONFIG_OUTPUT
++ )
++ if(NOT HAD_ERROR)
++ string(REGEX REPLACE
++ "[ \t]*[\r\n]+[ \t]*" ";"
++ CONFIG_OUTPUT ${CONFIG_OUTPUT})
++ else()
++ string(REPLACE ";" " " CONFIG_COMMAND_STR "${CONFIG_COMMAND}")
++ message(STATUS "${CONFIG_COMMAND_STR}")
++ message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
++
++ endif()
++ else()
++ message(FATAL_ERROR "llvm-config not found -- ${LLVM_CONFIG}")
++ endif()
++
++ list(GET CONFIG_OUTPUT 0 ENABLE_ASSERTIONS)
++ list(GET CONFIG_OUTPUT 1 TOOLS_BINARY_DIR)
++ list(GET CONFIG_OUTPUT 2 LIBRARY_DIR)
++ list(GET CONFIG_OUTPUT 3 INCLUDE_DIR)
++ list(GET CONFIG_OUTPUT 4 LLVM_OBJ_ROOT)
++ list(GET CONFIG_OUTPUT 5 MAIN_SRC_DIR)
++
++ if(NOT MSVC_IDE)
++ set(LLVM_ENABLE_ASSERTIONS ${ENABLE_ASSERTIONS}
++ CACHE BOOL "Enable assertions")
++ # Assertions should follow llvm-config's.
++ mark_as_advanced(LLVM_ENABLE_ASSERTIONS)
++ endif()
++
++ set(LLVM_TOOLS_BINARY_DIR ${TOOLS_BINARY_DIR} CACHE PATH "Path to llvm/bin")
++ set(LLVM_LIBRARY_DIR ${LIBRARY_DIR} CACHE PATH "Path to llvm/lib")
++ set(LLVM_MAIN_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH "Path to llvm/include")
++ set(LLVM_DIR ${LLVM_OBJ_ROOT}/cmake/modules/CMakeFiles CACHE PATH "Path to LLVM build tree CMake files")
++ set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM build tree")
++ set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
++
++ find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR}
++ NO_DEFAULT_PATH)
++
++ set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake")
++ set(LLVMCONFIG_FILE "${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
++ if(EXISTS ${LLVMCONFIG_FILE})
++ list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
++ include(${LLVMCONFIG_FILE})
++ else()
++ message(FATAL_ERROR "Not found: ${LLVMCONFIG_FILE}")
++ endif()
++
++ # They are used as destination of target generators.
++ set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
++ set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
++ if(WIN32 OR CYGWIN)
++ # DLL platform -- put DLLs into bin.
++ set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
++ else()
++ set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
+ endif()
+
+- # Make sure the isl c files are built as fPIC
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
++ include(AddLLVM)
++ include(HandleLLVMOptions)
++ include(TableGen)
++
++ # Import CMake library targets from LLVM and Clang.
++ include("${LLVM_OBJ_ROOT}/share/llvm/cmake/LLVMConfig.cmake")
++ set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
++ set(LLVM_BINARY_DIR ${CMAKE_BINARY_DIR})
++
++ set(CMAKE_INCLUDE_CURRENT_DIR ON)
++ include_directories("${LLVM_BINARY_DIR}/include" "${LLVM_MAIN_INCLUDE_DIR}")
++ # Next three include directories are needed when llvm-config is located in build directory.
++ # LLVM and Cland are assumed to be built together
++ if (EXISTS "${LLVM_OBJ_ROOT}/include")
++ include_directories("${LLVM_OBJ_ROOT}/include")
++ endif()
++ link_directories("${LLVM_LIBRARY_DIR}")
++
++ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
++ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
++ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
++
++ set(POLLY_BUILT_STANDALONE 1)
+ endif(NOT DEFINED LLVM_MAIN_SRC_DIR)
+
+ set(POLLY_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+@@ -155,7 +172,7 @@ install(DIRECTORY ${POLLY_BINARY_DIR}/in
+ add_definitions( -D_GNU_SOURCE )
+
+ add_subdirectory(lib)
+-add_subdirectory(test)
++#add_subdirectory(test)
+ add_subdirectory(tools)
+ # TODO: docs.
+
diff --git a/devel/polly/patches/patch-lib_External_isl_configure b/devel/polly/patches/patch-lib_External_isl_configure
new file mode 100644
index 00000000000..9b097e279ea
--- /dev/null
+++ b/devel/polly/patches/patch-lib_External_isl_configure
@@ -0,0 +1,29 @@
+$NetBSD: patch-lib_External_isl_configure,v 1.1 2016/09/12 22:49:24 kamil Exp $
+
+Fix shell portability issue.
+
+--- lib/External/isl/configure.orig 2015-12-02 09:35:04.000000000 +0000
++++ lib/External/isl/configure
+@@ -17487,7 +17487,7 @@ else
+ fi
+
+
+- if test "x$with_int" == "ximath-32"; then
++ if test "x$with_int" = "ximath-32"; then
+ SMALL_INT_OPT_TRUE=
+ SMALL_INT_OPT_FALSE='#'
+ else
+@@ -17495,7 +17495,7 @@ else
+ SMALL_INT_OPT_FALSE=
+ fi
+
+-if test "x$with_int" == "ximath-32"; then :
++if test "x$with_int" = "ximath-32"; then :
+
+
+ $as_echo "#define USE_SMALL_INT_OPT /**/" >>confdefs.h
+@@ -21881,4 +21881,3 @@ if test -n "$ac_unrecognized_opts" && te
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+-