Files
pkgsrc-ng/devel/polly/patches/patch-CMakeLists.txt
2016-11-18 22:39:22 +01:00

207 lines
8.3 KiB
Plaintext

$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.