import ghc-8.2.2-68.3.el8

This commit is contained in:
CentOS Sources 2019-05-07 07:28:00 -04:00 committed by Andrew Lukoshko
commit 959407c721
15 changed files with 2498 additions and 0 deletions

2
.ghc.metadata Normal file
View File

@ -0,0 +1,2 @@
a33222646c440826af744ad70447446fb82b74cf SOURCES/ghc-8.2.2-src.tar.xz
ce801cf456b8dacd565ce8df8288b4d90e7317ff SOURCES/llvm-3.9.1.src.tar.xz

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
SOURCES/ghc-8.2.2-src.tar.xz
SOURCES/llvm-3.9.1.src.tar.xz

70
SOURCES/D4159.patch Normal file
View File

@ -0,0 +1,70 @@
diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs
--- a/utils/ghc-pkg/Main.hs
+++ b/utils/ghc-pkg/Main.hs
@@ -1208,7 +1208,18 @@
pkgsCabalFormat = packages db
pkgsGhcCacheFormat :: [PackageCacheFormat]
- pkgsGhcCacheFormat = map convertPackageInfoToCacheFormat pkgsCabalFormat
+ pkgsGhcCacheFormat
+ = map (recomputeValidAbiDeps pkgsCabalFormat) -- Note [Recompute abi-depends]
+ $ map convertPackageInfoToCacheFormat
+ pkgsCabalFormat
+
+ hasAnyAbiDepends :: InstalledPackageInfo -> Bool
+ hasAnyAbiDepends x = length (abiDepends x) > 0
+
+-- -- warn when we find any (possibly-)bogus abi-depends fields;
+-- -- Note [Recompute abi-depends]
+-- when (any hasAnyAbiDepends pkgsCabalFormat) $
+-- infoLn "ignoring (possibly broken) abi-depends field for packages"
when (verbosity > Normal) $
infoLn ("writing cache " ++ filename)
@@ -1231,6 +1242,45 @@
ModuleName
OpenModule
+{- Note [Recompute abi-depends]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Like most fields, `ghc-pkg` relies on who-ever is performing package
+registration to fill in fields; this includes the `abi-depends` field present
+for the package.
+
+However, this was likely a mistake, and is not very robust; in certain cases,
+versions of Cabal may use bogus abi-depends fields for a package when doing
+builds. Why? Because package database information is aggressively cached; it is
+possible to work Cabal into a situation where it uses a cached version of
+`abi-depends`, rather than the one in the actual database after it has been
+recomputed.
+
+However, there is an easy fix: ghc-pkg /already/ knows the `abi-depends` of a
+package, because they are the ABIs of the packages pointed at by the `depends`
+field. So it can simply look up the abi from the dependencies in the original
+database, and ignore whatever the system registering gave it.
+
+So, instead, we do two things here:
+
+ - We throw away the information for a registered package's `abi-depends` field.
+
+ - We recompute it: we simply look up the unit ID of the package in the original
+ database, and use *its* abi-depends.
+
+See Trac #14381, and Cabal issue #4728.
+
+-}
+
+recomputeValidAbiDeps :: [InstalledPackageInfo] -> PackageCacheFormat -> PackageCacheFormat
+recomputeValidAbiDeps db pkg = pkg { GhcPkg.abiDepends = catMaybes (newAbiDeps) }
+ where
+ newAbiDeps = flip map (GhcPkg.abiDepends pkg) $ \(k, _) ->
+ case filter (\d -> installedUnitId d == k) db of
+ [] -> Nothing
+ [x] -> Just (k, unAbiHash (abiHash x))
+ _ -> Nothing -- ???
+
convertPackageInfoToCacheFormat :: InstalledPackageInfo -> PackageCacheFormat
convertPackageInfoToCacheFormat pkg =
GhcPkg.InstalledPackageInfo {

View File

@ -0,0 +1,20 @@
--- ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs~ 2017-05-05 16:51:43.000000000 +0200
+++ ghc-8.2.2/libraries/Cabal/Cabal/Distribution/Simple/Install.hs 2018-01-23 23:05:47.047081056 +0100
@@ -36,7 +36,7 @@
import Distribution.Simple.Utils
( createDirectoryIfMissingVerbose
, installDirectoryContents, installOrdinaryFile, isInSearchPath
- , die', info, noticeNoWrap, warn, matchDirFileGlob )
+ , die', info, noticeNoWrap, warn, matchDirFileGlob, debug )
import Distribution.Simple.Compiler
( CompilerFlavor(..), compilerFlavor )
import Distribution.Simple.Setup
@@ -215,7 +215,7 @@
++ " in " ++ binPref)
inPath <- isInSearchPath binPref
when (not inPath) $
- warn verbosity ("The directory " ++ binPref
+ debug verbosity ("The directory " ++ binPref
++ " is not in the system search path.")
case compilerFlavor (compiler lbi) of
GHC -> GHC.installExe verbosity lbi binPref buildPref progFix pkg_descr exe

View File

@ -0,0 +1,22 @@
Description: Do not emit a warning if the .haddock file is missing
As it is quite common on Debian installations to install the -dev package
without the -doc package.
Author: Joachim Breitner <nomeata@debian.org>
Index: ghc-8.0.2/utils/ghc-pkg/Main.hs
===================================================================
--- ghc-8.0.2.orig/utils/ghc-pkg/Main.hs
+++ ghc-8.0.2/utils/ghc-pkg/Main.hs
@@ -1588,8 +1588,10 @@
mapM_ (checkDir True "dynamic-library-dirs") (libraryDynDirs pkg)
mapM_ (checkDir True "include-dirs") (includeDirs pkg)
mapM_ (checkDir True "framework-dirs") (frameworkDirs pkg)
- mapM_ (checkFile True "haddock-interfaces") (haddockInterfaces pkg)
- mapM_ (checkDirURL True "haddock-html") (haddockHTMLs pkg)
+ -- In Debian, it is quite normal that the package is installed without the
+ -- documentation. Do not print a warning there.
+ -- mapM_ (checkFile True "haddock-interfaces") (haddockInterfaces pkg)
+ -- mapM_ (checkDirURL True "haddock-html") (haddockHTMLs pkg)
checkDuplicateModules pkg
checkExposedModules db_stack pkg
checkOtherModules pkg

View File

@ -0,0 +1,43 @@
This is an attempt to make GHC build reproducible. The name of .c files may end
up in the resulting binary (in the debug section), but not the directory.
Instead of using the process id, create a hash from the command line arguments,
and assume that is going to be unique.
Index: ghc-8.0.2/compiler/main/SysTools.hs
===================================================================
--- ghc-8.0.2.orig/compiler/main/SysTools.hs
+++ ghc-8.0.2/compiler/main/SysTools.hs
@@ -65,6 +65,7 @@
import Util
import DynFlags
import Exception
+import Fingerprint
import LlvmCodeGen.Base (llvmVersionStr, supportedLlvmVersion)
@@ -1145,8 +1146,8 @@
mapping <- readIORef dir_ref
case Map.lookup tmp_dir mapping of
Nothing -> do
- pid <- getProcessID
- let prefix = tmp_dir </> "ghc" ++ show pid ++ "_"
+ pid <- getStableProcessID
+ let prefix = tmp_dir </> "ghc" ++ pid ++ "_"
mask_ $ mkTempDir prefix
Just dir -> return dir
where
@@ -1562,6 +1563,13 @@
getProcessID = System.Posix.Internals.c_getpid >>= return . fromIntegral
#endif
+-- Debian-specific hack to get reproducible output, by not using the "random"
+-- pid, but rather something determinisic
+getStableProcessID :: IO String
+getStableProcessID = do
+ args <- getArgs
+ return $ take 4 $ show $ fingerprintString $ unwords args
+
-- Divvy up text stream into lines, taking platform dependent
-- line termination into account.
linesPlatform :: String -> [String]

View File

@ -0,0 +1,27 @@
Description: Use native x86_64 instructions on x32
This patch enables a few native 64-bit integer instructions
on x32 which are available on this architecture despite using
32-bit pointers. These instructions are present on x86_64 but
not on x86 and ghc checks the size of (void *) to determine
that. This method fails on x32 since despite using 32-bit
pointers and hence sizeof(void *) == 4, it still uses the
full x86_64 instruction set and software-emulated variants
of the aforementioned 64-bit integer instructions are
therefore not present in the toolchain which will make ghc
fail to build on x32.
See: https://ghc.haskell.org/trac/ghc/ticket/11571
.
Index: ghc-8.0.2/rts/RtsSymbols.c
===================================================================
--- ghc-8.0.2.orig/rts/RtsSymbols.c
+++ ghc-8.0.2/rts/RtsSymbols.c
@@ -857,7 +857,7 @@
// 64-bit support functions in libgcc.a
-#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32)
+#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32) && !(defined(__x86_64__) && defined(__ILP32__))
#define RTS_LIBGCC_SYMBOLS \
SymI_NeedsProto(__divdi3) \
SymI_NeedsProto(__udivdi3) \

View File

@ -0,0 +1,11 @@
--- ghc-7.8.3/aclocal.m4~ 2014-07-10 13:27:16.000000000 +0900
+++ ghc-7.8.3/aclocal.m4 2014-11-05 12:19:08.530044128 +0900
@@ -408,7 +408,7 @@
)],
[changequote(, )dnl
ARM_ISA=ARMv7
- ARM_ISA_EXT="[VFPv3,NEON]"
+ ARM_ISA_EXT="[VFPv3D16]"
changequote([, ])dnl
])
])

View File

@ -0,0 +1,11 @@
--- ghc-8.2.2/configure.ac~ 2017-11-21 05:22:42.000000000 +0900
+++ ghc-8.2.2/configure.ac 2018-05-28 12:37:35.296728423 +0900
@@ -745,7 +745,7 @@
AC_CACHE_CHECK([for version of sphinx-build], fp_cv_sphinx_version,
changequote(, )dnl
[if test -n "$SPHINXBUILD"; then
- fp_cv_sphinx_version=`"$SPHINXBUILD" --version 2>&1 | sed 's/Sphinx\( (sphinx-build)\)\? v\?\([0-9]\.[0-9]\.[0-9]\)/\2/' | head -n1`;
+ fp_cv_sphinx_version=`"$SPHINXBUILD" --version 2>&1 | sed 's/.* v\?\([0-9]\.[0-9]\.[0-9]\)/\1/' | head -n1`;
fi;
changequote([, ])dnl
])

38
SOURCES/ghc-doc-index Executable file
View File

@ -0,0 +1,38 @@
#!/bin/sh
LOCKFILE=/var/lock/ghc-doc-index.lock
# the lockfile is not meant to be perfect, it's just in case
# two cron scripts get run close to each other to keep
# them from stepping on each other's toes.
if [ -f $LOCKFILE ]; then
echo "Locked with $LOCKFILE"
exit 0
fi
if [ "$(id -u)" != "0" ]; then
echo Need to be root!
exit 1
fi
trap "{ rm -f $LOCKFILE ; exit 255; }" EXIT
touch $LOCKFILE
PKGDIRCACHE=/var/lib/ghc/pkg-dir.cache
LISTING="env LANG=C ls -dl"
# only re-index ghc docs when there are changes
cd /usr/share/doc/ghc/html/libraries
if [ -r "$PKGDIRCACHE" ]; then
$LISTING */ > $PKGDIRCACHE.new
DIR_DIFF=$(diff $PKGDIRCACHE $PKGDIRCACHE.new)
else
$LISTING */ > $PKGDIRCACHE
fi
if [ -x "gen_contents_index" -a ! -r "$PKGDIRCACHE.new" -o -n "$DIR_DIFF" ]; then
./gen_contents_index
fi
if [ -f $PKGDIRCACHE.new ]; then
mv -f $PKGDIRCACHE.new $PKGDIRCACHE
fi

9
SOURCES/ghc-doc-index.cron Executable file
View File

@ -0,0 +1,9 @@
#! /bin/bash
# updates the library documentation index after updates
# This can be disabled by uninstalling ghc-doc-index
# or adding ghc-doc-index to "./jobs-deny".
/usr/bin/ghc-doc-index
exit 0

View File

@ -0,0 +1,10 @@
--- ghc-7.6.3/libraries/gen_contents_index~ 2013-04-19 06:22:46.000000000 +0900
+++ ghc-7.6.3/libraries/gen_contents_index 2013-04-22 12:07:48.922152864 +0900
@@ -60,6 +60,6 @@
done
else
- HADDOCK=../../../../../bin/haddock
+ HADDOCK=/usr/bin/haddock
# We don't want the GHC API to swamp the index
HADDOCK_FILES=`ls -1 */*.haddock | grep -v '/ghc\.haddock' | sort`
HADDOCK_ARGS="-p prologue.txt"

View File

@ -0,0 +1,83 @@
From 417001588d232151050db2d32df443e2d073ebbf Mon Sep 17 00:00:00 2001
From: Valentin Churavy <v.churavy@gmail.com>
Date: Fri, 21 Oct 2016 17:25:04 +0900
Subject: [PATCH] Fix llvm-shlib cmake build
Summary:
This fixes a few things that used to work with a Makefile build, but were broken in cmake.
1. Treat MINGW like a Linux system.
2. The shlib should never contain other shared libraries.
Subscribers: beanz, mgorny
Differential Revision: https://reviews.llvm.org/D25865
---
tools/llvm-shlib/CMakeLists.txt | 42 ++++++++++++++++++++---------------------
1 file changed, 20 insertions(+), 22 deletions(-)
diff --git a/tools/llvm-shlib/CMakeLists.txt b/tools/llvm-shlib/CMakeLists.txt
index 3fe672d..edadb82 100644
--- a/tools/llvm-shlib/CMakeLists.txt
+++ b/tools/llvm-shlib/CMakeLists.txt
@@ -8,29 +8,27 @@ set(SOURCES
llvm_map_components_to_libnames(LIB_NAMES ${LLVM_DYLIB_COMPONENTS})
-if(LLVM_LINK_LLVM_DYLIB)
- if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE)
- message(WARNING "Using LLVM_LINK_LLVM_DYLIB with LLVM_DYLIB_EXPORTED_SYMBOL_FILE may not work. Use at your own risk.")
- endif()
-
- # libLLVM.so should not have any dependencies on any other LLVM
- # shared libraries. When using the "all" pseudo-component,
- # LLVM_AVAILABLE_LIBS is added to the dependencies, which may
- # contain shared libraries (e.g. libLTO).
- #
- # Also exclude libLLVMTableGen for the following reasons:
- # - it is only used by internal *-tblgen utilities;
- # - it pollutes the global options space.
- foreach(lib ${LIB_NAMES})
- get_target_property(t ${lib} TYPE)
- if("${lib}" STREQUAL "LLVMTableGen")
- elseif("x${t}" STREQUAL "xSTATIC_LIBRARY")
- list(APPEND FILTERED_LIB_NAMES ${lib})
- endif()
- endforeach()
- set(LIB_NAMES ${FILTERED_LIB_NAMES})
+if(LLVM_LINK_LLVM_DYLIB AND LLVM_DYLIB_EXPORTED_SYMBOL_FILE)
+ message(WARNING "Using LLVM_LINK_LLVM_DYLIB with LLVM_DYLIB_EXPORTED_SYMBOL_FILE may not work. Use at your own risk.")
endif()
+# libLLVM.so should not have any dependencies on any other LLVM
+# shared libraries. When using the "all" pseudo-component,
+# LLVM_AVAILABLE_LIBS is added to the dependencies, which may
+# contain shared libraries (e.g. libLTO).
+#
+# Also exclude libLLVMTableGen for the following reasons:
+# - it is only used by internal *-tblgen utilities;
+# - it pollutes the global options space.
+foreach(lib ${LIB_NAMES})
+ get_target_property(t ${lib} TYPE)
+ if("${lib}" STREQUAL "LLVMTableGen")
+ elseif("x${t}" STREQUAL "xSTATIC_LIBRARY")
+ list(APPEND FILTERED_LIB_NAMES ${lib})
+ endif()
+endforeach()
+set(LIB_NAMES ${FILTERED_LIB_NAMES})
+
if(LLVM_DYLIB_EXPORTED_SYMBOL_FILE)
set(LLVM_EXPORTED_SYMBOL_FILE ${LLVM_DYLIB_EXPORTED_SYMBOL_FILE})
add_custom_target(libLLVMExports DEPENDS ${LLVM_EXPORTED_SYMBOL_FILE})
@@ -39,7 +37,7 @@ endif()
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
list(REMOVE_DUPLICATES LIB_NAMES)
-if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # FIXME: It should be "GNU ld for elf"
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR MINGW) # FIXME: It should be "GNU ld for elf"
# GNU ld doesn't resolve symbols in the version script.
set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
--
2.10.1

View File

@ -0,0 +1,392 @@
diff -up llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt.instdirs llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt
--- llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt.instdirs 2014-12-29 20:24:07.000000000 -0700
+++ llvm-3.9.1.src/bindings/ocaml/backends/CMakeLists.txt 2017-02-13 13:36:43.999154756 -0700
@@ -23,5 +23,5 @@ foreach(TARGET ${LLVM_TARGETS_TO_BUILD})
"${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}")
install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}"
- DESTINATION lib/ocaml)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
endforeach()
diff -up llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt.instdirs llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt
--- llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt.instdirs 2014-12-29 20:24:07.000000000 -0700
+++ llvm-3.9.1.src/bindings/ocaml/llvm/CMakeLists.txt 2017-02-13 13:36:43.999154756 -0700
@@ -8,4 +8,4 @@ configure_file(
"${LLVM_LIBRARY_DIR}/ocaml/META.llvm")
install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm"
- DESTINATION lib/ocaml)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
diff -up llvm-3.9.1.src/CMakeLists.txt.instdirs llvm-3.9.1.src/CMakeLists.txt
--- llvm-3.9.1.src/CMakeLists.txt.instdirs 2016-09-13 07:44:50.000000000 -0600
+++ llvm-3.9.1.src/CMakeLists.txt 2017-02-13 13:36:44.003154733 -0700
@@ -194,13 +194,15 @@ if (CMAKE_BUILD_TYPE AND
endif()
set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
-
-set(LLVM_TOOLS_INSTALL_DIR "bin" CACHE STRING "Path for binary subdirectory (defaults to 'bin')")
-mark_as_advanced(LLVM_TOOLS_INSTALL_DIR)
+set(CMAKE_INSTALL_BINDIR bin CACHE STRING "Path for binary subdirectory relative to prefix (defaults to 'bin')" )
+set(CMAKE_INSTALL_LIBDIR lib${LLVM_LIBDIR_SUFFIX} CACHE STRING "Path for library subdirectory (defaults to 'lib${LLVM_LIBDIR_SUFFIX}'" )
+set(CMAKE_INSTALL_INCLUDEDIR include CACHE STRING "Path for include subdirectory relative to prefix (defaults to 'include'" )
+set(CMAKE_INSTALL_DOCDIR share/doc/${project} CACHE STRING "Path for documentation subdirectory relative to prefix (defaults to 'share/doc/${project}')" )
+set(CMAKE_INSTALL_MANDIR share/man CACHE STRING "Path for manpages subdirectory relative to prefix (defaults to 'share/man')" )
# They are used as destination of target generators.
-set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
-set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
+set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_BINDIR})
+set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_LIBDIR})
if(WIN32 OR CYGWIN)
# DLL platform -- put DLLs into bin.
set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
@@ -613,8 +615,8 @@ configure_file(
# They are not referenced. See set_output_directory().
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin )
-set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
-set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
+set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} )
+set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} )
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
if (APPLE)
@@ -622,7 +624,7 @@ if (APPLE)
set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
else(UNIX)
if(NOT DEFINED CMAKE_INSTALL_RPATH)
- set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
+ set(CMAKE_INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin")
@@ -799,7 +801,7 @@ add_subdirectory(cmake/modules)
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY include/llvm include/llvm-c
- DESTINATION include
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT llvm-headers
FILES_MATCHING
PATTERN "*.def"
@@ -811,7 +813,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
)
install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm
- DESTINATION include
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT llvm-headers
FILES_MATCHING
PATTERN "*.def"
diff -up llvm-3.9.1.src/cmake/modules/AddLLVM.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddLLVM.cmake
--- llvm-3.9.1.src/cmake/modules/AddLLVM.cmake.instdirs 2016-07-09 20:43:47.000000000 -0600
+++ llvm-3.9.1.src/cmake/modules/AddLLVM.cmake 2017-02-13 13:36:44.012154680 -0700
@@ -546,7 +558,7 @@ macro(add_llvm_library name)
set_target_properties( ${name} PROPERTIES EXCLUDE_FROM_ALL ON)
elseif(NOT _is_gtest)
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LTO")
- set(install_dir lib${LLVM_LIBDIR_SUFFIX})
+ set(install_dir ${CMAKE_INSTALL_LIBDIR})
if(ARG_SHARED OR BUILD_SHARED_LIBS)
if(WIN32 OR CYGWIN OR MINGW)
set(install_type RUNTIME)
@@ -590,12 +602,12 @@ macro(add_llvm_loadable_module name)
# DLL platform
set(dlldir "bin")
else()
- set(dlldir "lib${LLVM_LIBDIR_SUFFIX}")
+ set(dlldir "${CMAKE_INSTALL_LIBDIR}")
endif()
install(TARGETS ${name}
EXPORT LLVMExports
LIBRARY DESTINATION ${dlldir}
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
endif()
@@ -770,7 +782,7 @@ macro(add_llvm_tool name)
if( LLVM_BUILD_TOOLS )
install(TARGETS ${name}
EXPORT LLVMExports
- RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT ${name})
if (NOT CMAKE_CONFIGURATION_TYPES)
@@ -795,7 +807,7 @@ macro(add_llvm_example name)
endif()
add_llvm_executable(${name} ${ARGN})
if( LLVM_BUILD_EXAMPLES )
- install(TARGETS ${name} RUNTIME DESTINATION examples)
+ install(TARGETS ${name} RUNTIME DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
endif()
set_target_properties(${name} PROPERTIES FOLDER "Examples")
endmacro(add_llvm_example name)
@@ -811,7 +823,7 @@ macro(add_llvm_utility name)
set_target_properties(${name} PROPERTIES FOLDER "Utils")
if( LLVM_INSTALL_UTILS AND LLVM_BUILD_UTILS )
install (TARGETS ${name}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT ${name})
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
@@ -1173,7 +1185,7 @@ function(llvm_install_library_symlink na
set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
- set(output_dir lib${LLVM_LIBDIR_SUFFIX})
+ set(output_dir ${CMAKE_INSTALL_LIBDIR})
if(WIN32 AND "${type}" STREQUAL "SHARED")
set(output_dir bin)
endif()
@@ -1210,7 +1222,7 @@ function(llvm_install_symlink name dest)
set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX})
install(SCRIPT ${INSTALL_SYMLINK}
- CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})"
+ CODE "install_symlink(${full_name} ${full_dest} ${CMAKE_INSTALL_BINDIR})"
COMPONENT ${component})
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE)
diff -up llvm-3.9.1.src/cmake/modules/AddOCaml.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddOCaml.cmake
--- llvm-3.9.1.src/cmake/modules/AddOCaml.cmake.instdirs 2016-06-21 17:10:37.000000000 -0600
+++ llvm-3.9.1.src/cmake/modules/AddOCaml.cmake 2017-02-13 13:36:44.001154744 -0700
@@ -189,12 +189,12 @@ function(add_ocaml_library name)
endforeach()
install(FILES ${install_files}
- DESTINATION lib/ocaml)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
install(FILES ${install_shlibs}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
- DESTINATION lib/ocaml)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
foreach( install_file ${install_files} ${install_shlibs} )
get_filename_component(filename "${install_file}" NAME)
diff -up llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake.instdirs llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake
--- llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake.instdirs 2014-08-14 05:57:16.000000000 -0600
+++ llvm-3.9.1.src/cmake/modules/AddSphinxTarget.cmake 2017-02-13 13:36:44.001154744 -0700
@@ -50,11 +50,11 @@ function (add_sphinx_target builder proj
if (builder STREQUAL man)
# FIXME: We might not ship all the tools that these man pages describe
install(DIRECTORY "${SPHINX_BUILD_DIR}/" # Slash indicates contents of
- DESTINATION share/man/man1)
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
elseif (builder STREQUAL html)
install(DIRECTORY "${SPHINX_BUILD_DIR}"
- DESTINATION "share/doc/${project}")
+ DESTINATION ${CMAKE_INSTALL_DOCDIR})
else()
message(WARNING Installation of ${builder} not supported)
endif()
diff -up llvm-3.9.1.src/cmake/modules/CMakeLists.txt.instdirs llvm-3.9.1.src/cmake/modules/CMakeLists.txt
--- llvm-3.9.1.src/cmake/modules/CMakeLists.txt.instdirs 2017-02-13 13:36:43.995154779 -0700
+++ llvm-3.9.1.src/cmake/modules/CMakeLists.txt 2017-02-13 13:40:40.508732673 -0700
@@ -1,4 +1,4 @@
-set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm)
+set(LLVM_INSTALL_PACKAGE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/llvm CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')")
set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
get_property(LLVM_EXPORTS GLOBAL PROPERTY LLVM_EXPORTS)
@@ -49,20 +49,12 @@ file(COPY .
# Generate LLVMConfig.cmake for the install tree.
set(LLVM_CONFIG_CODE "
-# Compute the installation prefix from this LLVMConfig.cmake file location.
-get_filename_component(LLVM_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
-# Construct the proper number of get_filename_component(... PATH)
-# calls to compute the installation prefix.
-string(REGEX REPLACE "/" ";" _count "${LLVM_INSTALL_PACKAGE_DIR}")
-foreach(p ${_count})
- set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE}
-get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)")
-endforeach(p)
-set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include")
-set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
+set(LLVM_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\")")
+set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
+set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}")
-set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin")
+set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
set(LLVM_CONFIG_EXPORTS_FILE "\${LLVM_CMAKE_DIR}/LLVMExports.cmake")
configure_file(
LLVMConfig.cmake.in
diff -up llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in.instdirs llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in
--- llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in.instdirs 2016-07-01 08:22:52.000000000 -0600
+++ llvm-3.9.1.src/cmake/modules/LLVMConfig.cmake.in 2017-02-13 13:36:44.002154738 -0700
@@ -59,7 +59,7 @@ set(LLVM_DEFINITIONS "@LLVM_DEFINITIONS@
set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@")
set(LLVM_BINARY_DIR "@LLVM_CONFIG_BINARY_DIR@")
set(LLVM_TOOLS_BINARY_DIR "@LLVM_CONFIG_TOOLS_BINARY_DIR@")
-set(LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@")
+set(LLVM_TOOLS_INSTALL_DIR "@CMAKE_INSTALL_BINDIR@")
if(NOT TARGET LLVMSupport)
set(LLVM_EXPORTED_TARGETS "@LLVM_EXPORTS@")
diff -up llvm-3.9.1.src/cmake/modules/TableGen.cmake.instdirs llvm-3.9.1.src/cmake/modules/TableGen.cmake
--- llvm-3.9.1.src/cmake/modules/TableGen.cmake.instdirs 2016-06-08 15:19:26.000000000 -0600
+++ llvm-3.9.1.src/cmake/modules/TableGen.cmake 2017-02-13 13:47:59.832154520 -0700
@@ -6,7 +6,6 @@ function(tablegen project ofn)
# Validate calling context.
foreach(v
${project}_TABLEGEN_EXE
- LLVM_MAIN_SRC_DIR
LLVM_MAIN_INCLUDE_DIR
)
if(NOT ${v})
@@ -23,10 +22,14 @@ function(tablegen project ofn)
set(LLVM_TARGET_DEFINITIONS_ABSOLUTE
${CMAKE_CURRENT_SOURCE_DIR}/${LLVM_TARGET_DEFINITIONS})
endif()
+ if (LLVM_MAIN_SRC_DIR)
+ set(TABLEGEN_INCLUDES -I ${LLVM_MAIN_SRC_DIR}/lib/Target)
+ endif()
+ set(TABLEGEN_INCLUDES ${TABLEGEN_INCLUDES} -I ${LLVM_MAIN_INCLUDE_DIR})
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
# Generate tablegen output in a temporary file.
COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
- -I ${LLVM_MAIN_SRC_DIR}/lib/Target -I ${LLVM_MAIN_INCLUDE_DIR}
+ ${TABLEGEN_INCLUDES}
${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
-o ${CMAKE_CURRENT_BINARY_DIR}/${ofn}.tmp
# The file in LLVM_TARGET_DEFINITIONS may be not in the current
@@ -141,7 +144,7 @@ macro(add_tablegen target project)
if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(TARGETS ${target}
EXPORT LLVMExports
- RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR})
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target})
endmacro()
diff -up llvm-3.9.1.src/docs/CMakeLists.txt.instdirs llvm-3.9.1.src/docs/CMakeLists.txt
--- llvm-3.9.1.src/docs/CMakeLists.txt.instdirs 2015-08-17 17:24:17.000000000 -0600
+++ llvm-3.9.1.src/docs/CMakeLists.txt 2017-02-13 13:36:44.004154727 -0700
@@ -94,7 +94,7 @@ if (LLVM_ENABLE_DOXYGEN)
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html
- DESTINATION docs/html)
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/html)
endif()
endif()
endif()
@@ -155,6 +155,6 @@ if( NOT uses_ocaml LESS 0 )
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ocamldoc/html
- DESTINATION docs/ocaml/html)
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/ocaml/html)
endif()
endif()
diff -up llvm-3.9.1.src/include/llvm/CMakeLists.txt.instdirs llvm-3.9.1.src/include/llvm/CMakeLists.txt
--- llvm-3.9.1.src/include/llvm/CMakeLists.txt.instdirs 2014-08-13 18:51:47.000000000 -0600
+++ llvm-3.9.1.src/include/llvm/CMakeLists.txt 2017-02-13 13:36:44.004154727 -0700
@@ -3,5 +3,5 @@ add_subdirectory(IR)
# If we're doing an out-of-tree build, copy a module map for generated
# header files into the build area.
if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
- configure_file(module.modulemap.build module.modulemap COPYONLY)
+ configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY)
endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
diff -up llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in.instdirs llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in
--- llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in.instdirs 2016-03-07 17:02:50.000000000 -0700
+++ llvm-3.9.1.src/tools/llvm-config/BuildVariables.inc.in 2017-02-13 13:36:44.005154721 -0700
@@ -23,7 +23,9 @@
#define LLVM_LDFLAGS "@LLVM_LDFLAGS@"
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
-#define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
+#define LLVM_BINARY_DIR "@CMAKE_INSTALL_BINDIR@"
+#define LLVM_LIBRARY_DIR "@CMAKE_INSTALL_LIBDIR@"
+#define LLVM_INCLUDE_DIR "@CMAKE_INSTALL_INCLUDEDIR@"
#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
#define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@"
diff -up llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp.instdirs llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp
--- llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp.instdirs 2016-03-14 15:39:58.000000000 -0600
+++ llvm-3.9.1.src/tools/llvm-config/llvm-config.cpp 2017-02-13 13:36:44.006154715 -0700
@@ -290,7 +290,7 @@ int main(int argc, char **argv) {
DevelopmentTreeLayout = CMakeStyle;
ActiveObjRoot = LLVM_OBJ_ROOT;
} else if (sys::fs::equivalent(CurrentExecPrefix,
- Twine(LLVM_OBJ_ROOT) + "/bin")) {
+ Twine(LLVM_OBJ_ROOT) + "/" + LLVM_BINARY_DIR)) {
IsInDevelopmentTree = true;
DevelopmentTreeLayout = CMakeBuildModeStyle;
ActiveObjRoot = LLVM_OBJ_ROOT;
@@ -304,32 +304,32 @@ int main(int argc, char **argv) {
std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir;
std::string ActiveIncludeOption;
if (IsInDevelopmentTree) {
- ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
+ ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/" + LLVM_INCLUDE_DIR;
ActivePrefix = CurrentExecPrefix;
// CMake organizes the products differently than a normal prefix style
// layout.
switch (DevelopmentTreeLayout) {
case CMakeStyle:
- ActiveBinDir = ActiveObjRoot + "/bin";
- ActiveLibDir = ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX;
+ ActiveBinDir = ActiveObjRoot + "/" + LLVM_BINARY_DIR;
+ ActiveLibDir = ActiveObjRoot + LLVM_LIBRARY_DIR;
break;
case CMakeBuildModeStyle:
ActivePrefix = ActiveObjRoot;
- ActiveBinDir = ActiveObjRoot + "/bin/" + build_mode;
+ ActiveBinDir = ActiveObjRoot + "/" + LLVM_BINARY_DIR + "/" + build_mode;
ActiveLibDir =
- ActiveObjRoot + "/lib" + LLVM_LIBDIR_SUFFIX + "/" + build_mode;
+ ActiveObjRoot + "/" + LLVM_LIBRARY_DIR + "/" + build_mode;
break;
}
// We need to include files from both the source and object trees.
ActiveIncludeOption =
- ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
+ ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/" + LLVM_INCLUDE_DIR);
} else {
ActivePrefix = CurrentExecPrefix;
- ActiveIncludeDir = ActivePrefix + "/include";
- ActiveBinDir = ActivePrefix + "/bin";
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
+ ActiveIncludeDir = ActivePrefix + "/" + LLVM_INCLUDE_DIR;
+ ActiveBinDir = ActivePrefix + "/" + LLVM_BINARY_DIR;
+ ActiveLibDir = ActivePrefix + "/" + LLVM_LIBRARY_DIR;
ActiveIncludeOption = "-I" + ActiveIncludeDir;
}
diff -up llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt.instdirs llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt
--- llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt.instdirs 2016-05-25 22:35:35.000000000 -0600
+++ llvm-3.9.1.src/tools/llvm-shlib/CMakeLists.txt 2017-02-13 13:36:44.065154372 -0700
@@ -68,7 +66,7 @@ if(LLVM_BUILD_LLVM_C_DYLIB)
set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_BINARY_DIR}/libllvm-c.exports)
- set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
+ set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_LIBDIR})
set(LIB_NAME ${LIB_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}LLVM)
set(LIB_PATH ${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(LIB_EXPORTS_PATH ${LIB_NAME}.exports)
diff -up llvm-3.9.1.src/tools/lto/CMakeLists.txt.instdirs llvm-3.9.1.src/tools/lto/CMakeLists.txt
--- llvm-3.9.1.src/tools/lto/CMakeLists.txt.instdirs 2016-07-11 21:01:22.000000000 -0600
+++ llvm-3.9.1.src/tools/lto/CMakeLists.txt 2017-02-13 13:36:44.007154709 -0700
@@ -19,7 +19,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CU
add_llvm_library(LTO SHARED ${SOURCES})
install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
- DESTINATION include/llvm-c
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c
COMPONENT LTO)
if (APPLE)

1758
SPECS/ghc.spec Normal file

File diff suppressed because it is too large Load Diff