207 lines
8.3 KiB
Plaintext
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.
|
|
|