24326140 upgrade LLVM to 3.8.1
24326159 upgrade clang to 3.8.1
22902339 memory corruption caused by undefined behavior in LLVM IR Module
22777179 implement [ -mtune= -march= -mcpu= ] in clang SPARC
22778085 LLVM is using %icc when it should be using %xcc
22778089 the SPARCV9 IS implementation is incomplete
22778098 LLVM should emit proc identifiers in SPARC assembler (capabilities)
22778650 clang should support OpenMP because it can
22859423 llvm CodeGen on Intel emits a bogus .ctors section
22902355 clang CodeGen is affected by 22902339
23701635 clang produces amd64 opcodes, but calls 32-bit assembler by default
23593143 lli JIT bitcode parsing creates a main function with wrong argc/argv
21759660 clang packages should include the scan-view and scan-build utilities
23854357 clang should check for GNU ld
17867434 clang crashed in LEXER
24306550 clang crashes in llvm::Twine::toStringRef
24311726 clang's Perl and Python utilities should not use #!/usr/bin/env
24312028 llvm::Twine needs copy constructors and assignment operators
24312221 classes must be CopyConstructible, CopyAssignable, MoveConstructible ...
24314621 LLVM should build using the new CMake based build system
24314638 LLVM CommandLine subsystem is busted
24314687 static initialization of optimization passes doesn't work as intended
21870069 clang makes incorrect assumptions about anonymous namespace instantiation order
22643565 llvm's Google test harness needs some attention
24314745 clang should support PIE executables in Solaris
# 24314621 LLVM should build using the new CMake based build system
# CMake parts for upstream, Solaris-specific parts no.
--- Makefile.config.in 2015-08-07 12:44:47.000000000 -0400
+++ Makefile.config.in 2016-05-08 23:19:20.538430899 -0400
@@ -12,6 +12,12 @@
#
#===------------------------------------------------------------------------===#
+MACH = $(shell uname -p)
+MACH64=sparcv9
+ifeq ($(MACH),i386)
+ MACH64=amd64
+endif
+
# Define LLVM specific info and directories based on the autoconf variables
LLVMPackageName := @PACKAGE_TARNAME@
LLVMVersion := @PACKAGE_VERSION@
@@ -185,6 +191,11 @@
# Path to the nm program
NM_PATH = @NM@
+# Solaris-specific filesystem locations
+ifeq ($(findstring m32,$(CXXFLAGS)),)
+ PROJ_libdir = $(PROJ_prefix)/lib/$(MACH64)
+endif
+
# The pathnames of the programs we require to build
CMP := @CMP@
CP := @CP@
@@ -225,6 +236,12 @@
LIBS := @LIBS@
+ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+ ifeq ($(MACH),sparc)
+ LIBS += -lkstat
+ endif
+endif
+
# Targets that are possible to build
ALL_TARGETS := @ALL_TARGETS@
@@ -347,14 +364,14 @@
ENABLE_EMBED_STDCXX := @ENABLE_EMBED_STDCXX@
# Use -fvisibility-inlines-hidden?
-ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
+ENABLE_VISIBILITY_INLINES_HIDDEN := 0
# Do we want to allow timestamping information into builds?
ENABLE_TIMESTAMPS := @ENABLE_TIMESTAMPS@
# This option tells the Makefiles to produce verbose output.
# It essentially prints the commands that make is executing
-#VERBOSE = 1
+VERBOSE := 1
# Enable JIT for this platform
TARGET_HAS_JIT = @TARGET_HAS_JIT@
###
--- Makefile.rules 2015-11-09 08:10:00.000000000 -0800
+++ Makefile.rules 2016-05-28 17:08:22.413887137 -0700
@@ -291,8 +291,8 @@
LD.Flags += $(OPTIMIZE_OPTION)
ifdef DEBUG_SYMBOLS
BuildMode := $(BuildMode)+Debug
- CXX.Flags += -g
- C.Flags += -g
+ CXX.Flags += -g3
+ C.Flags += -g3
KEEP_SYMBOLS := 1
endif
else
@@ -307,8 +307,8 @@
CXX.Flags += -gsplit-dwarf
C.Flags += -gsplit-dwarf
else
- CXX.Flags += -g
- C.Flags += -g
+ CXX.Flags += -g3
+ C.Flags += -g3
endif
KEEP_SYMBOLS := 1
endif
@@ -331,6 +331,13 @@
endif
endif
+ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+ REQUIRES_EH := 1
+ REQUIRES_FRAME_POINTER := 1
+else
+ REQUIRES_EH := 0
+endif
+
ifeq ($(ENABLE_WERROR),1)
CXX.Flags += -Werror
C.Flags += -Werror
@@ -355,14 +362,16 @@
endif
# IF REQUIRES_EH=1 is specified then don't disable exceptions
-ifndef REQUIRES_EH
+ifneq ($(REQUIRES_EH), 1)
CXX.Flags += -fno-exceptions
+ REQUIRES_RTTI := 0
else
# If the library requires EH, it also requires RTTI.
+ CXX.Flags += -fexceptions
REQUIRES_RTTI := 1
endif
-ifdef REQUIRES_FRAME_POINTER
+ifeq ($(REQUIRES_FRAME_POINTER), 1)
CXX.Flags := $(filter-out -fomit-frame-pointer,$(CXX.Flags))
C.Flags := $(filter-out -fomit-frame-pointer,$(C.Flags))
LD.Flags := $(filter-out -fomit-frame-pointer,$(LD.Flags))
@@ -371,6 +380,8 @@
# If REQUIRES_RTTI=1 is specified then don't disable run-time type id.
ifneq ($(REQUIRES_RTTI), 1)
CXX.Flags += -fno-rtti
+else
+ CXX.Flags += -frtti
endif
ifeq ($(ENABLE_COVERAGE),1)
@@ -596,7 +607,7 @@
endif
ifdef SHARED_LIBRARY
-ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW SunOS))
ifneq ($(HOST_OS),Darwin)
LD.Flags += $(RPATH) -Wl,'$$ORIGIN'
else
@@ -646,9 +657,13 @@
ifeq ($(HOST_OS),SunOS)
LD.Flags += -Wl,-z -Wl,discard-unused=sections
else
- ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+ ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW SunOS))
LD.Flags += -Wl,--gc-sections
endif
+ ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+ LD.Flags += -Wl,-z -Wl,discard-unused=sections
+ LD.Flags += -Wl,-M -Wl,$(PROJ_SRC_ROOT)/mapfiles/map.gnu-sections
+ endif
endif
endif
endif
@@ -660,8 +675,14 @@
endif
ifneq ($(HOST_OS), Darwin)
ifdef TOOLNAME
+ ifneq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
LD.Flags += $(RPATH) -Wl,'$$ORIGIN/../lib'
endif
+ ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+ LD.Flags += -Wl,-z -Wl,discard-unused=sections
+ LD.Flags += -Wl,-M -Wl,$(PROJ_SRC_ROOT)/mapfiles/map.gnu-sections
+ endif
+ endif
else
ifneq ($(DARWIN_MAJVERS),4)
LD.Flags += $(RPATH) -Wl,@executable_path/../lib
@@ -1105,6 +1126,18 @@
clean-local::
-$(Verb) $(RM) -f $(NativeExportsFile)
else
+ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+# Solaris ld requires a version script rather than a plain list.
+NativeExportsFile := $(ObjDir)/$(notdir $(EXPORTED_SYMBOL_FILE)).map
+$(NativeExportsFile): $(EXPORTED_SYMBOL_FILE) $(ObjDir)/.dir
+ $(Verb) echo "{" > $@
+ $(Verb) ggrep -q '[[:alnum:]_]' $< && echo " global:" >> $@ || :
+ $(Verb) gsed -e 's/$$/;/' -e 's/^/ /' < $< >> $@
+ $(Verb) echo " local: *;" >> $@
+ $(Verb) echo "};" >> $@
+clean-local::
+ -$(Verb) $(RM) -f $(NativeExportsFile)
+else
ifeq ($(HAVE_LINK_VERSION_SCRIPT),1)
# Gold and BFD ld require a version script rather than a plain list.
NativeExportsFile := $(ObjDir)/$(notdir $(EXPORTED_SYMBOL_FILE)).map
@@ -1134,6 +1167,7 @@
endif
endif
endif
+endif
# Now add the linker command-line options to use the native export file.
@@ -1153,6 +1187,11 @@
SharedLinkOptions += $(NativeExportsFile)
endif
+# Solaris
+ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+LLVMLibsOptions += -Wl,-M -Wl,$(NativeExportsFile)
+endif
+
endif
###############################################################################
###
--- lib/Support/CMakeLists.txt 2015-12-14 16:59:19.000000000 -0800
+++ lib/Support/CMakeLists.txt 2016-07-11 13:59:48.145404115 -0700
@@ -28,6 +28,16 @@
endif( MINGW )
endif( NOT MSVC )
+# On Solaris, -lkstat is only needed on SPARC.
+if(CMAKE_HOST_SOLARIS)
+ set(UNAME "")
+ execute_process(COMMAND uname -p OUTPUT_VARIABLE UNAME)
+ if("${UNAME}" MATCHES "sparc")
+ message(INFO "Adding -lkstat to link line.")
+ set(system_libs ${system_libs} kstat)
+ endif()
+endif()
+
add_llvm_library(LLVMSupport
APFloat.cpp
APInt.cpp
###
--- tools/clang/include/clang/Basic/Makefile 2014-03-31 09:14:44.000000000 -0400
+++ tools/clang/include/clang/Basic/Makefile 2016-05-08 23:19:20.552431239 -0400
@@ -16,8 +16,17 @@
INPUT_TDS = $(wildcard $(PROJ_SRC_DIR)/Diagnostic*.td)
+SVN_OR_RC :=
+
# Compute the Clang version from the LLVM version, unless specified explicitly.
ifndef CLANG_VERSION
+ifeq ($(LLVMVersion), $(findstring svn, $(LLVMVersion)), svn)
+ SVN_OR_RC := "svn"
+endif
+
+ifeq ($(LLVMVersion), $(findstring rc, $(LLVMVersion)), rc)
+ SVN_OR_RC := "rc"
+endif
CLANG_VERSION := $(subst svn,,$(LLVMVersion))
CLANG_VERSION := $(subst rc,,$(CLANG_VERSION))
endif
@@ -26,6 +35,14 @@
CLANG_VERSION_MAJOR := $(word 1,$(CLANG_VERSION_COMPONENTS))
CLANG_VERSION_MINOR := $(word 2,$(CLANG_VERSION_COMPONENTS))
CLANG_VERSION_PATCHLEVEL := $(word 3,$(CLANG_VERSION_COMPONENTS))
+CLANG_VERSION_TAGGED_STRING :=
+
+ifeq ($(SVN_OR_RC),)
+ CLANG_VERSION_TAGGED_STRING := "\"\(tags/RELEASE_$(CLANG_VERSION_MAJOR)$(CLANG_VERSION_MINOR)$(CLANG_VERSION_PATCHLEVEL)/final\)\""
+else
+ CLANG_VERSION_TAGGED_STRING := "\"\(tags/RELEASE_$(CLANG_VERSION_MAJOR)$(CLANG_VERSION_MINOR)$(CLANG_VERSION_PATCHLEVEL)/$(SVN_OR_RC)\)\""
+endif
+
ifeq ($(CLANG_VERSION_PATCHLEVEL),)
CLANG_HAS_VERSION_PATCHLEVEL := 0
else
@@ -67,4 +84,5 @@
-e "s#@CLANG_VERSION_MINOR@#$(CLANG_VERSION_MINOR)#g" \
-e "s#@CLANG_VERSION_PATCHLEVEL@#$(CLANG_VERSION_PATCHLEVEL)#g" \
-e "s#@CLANG_HAS_VERSION_PATCHLEVEL@#$(CLANG_HAS_VERSION_PATCHLEVEL)#g" \
+ -e "s#@CLANG_VERSION_TAGGED_STRING@#$(CLANG_VERSION_TAGGED_STRING:' '='')#g" \
$< > $@
###
--- tools/clang/tools/libclang/Makefile 2015-07-07 21:00:30.000000000 -0400
+++ tools/clang/tools/libclang/Makefile 2016-05-08 23:19:20.577431847 -0400
@@ -35,10 +35,16 @@
include $(CLANG_LEVEL)/Makefile
# Add soname to the library.
-ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU GNU/kFreeBSD))
+ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU GNU/kFreeBSD SunOS))
LLVMLibsOptions += -Wl,-soname,lib$(LIBRARYNAME)$(SHLIBEXT)
endif
+# Extract everything necessary from Solaris *.a archives
+ifeq ($(HOST_OS), $(filter $(HOST_OS), SunOS))
+ SharedLinkOptions += -Wl,-z -Wl,rescan-now -Wl,-z -Wl,allextract
+ LLVMLibsOptions += -Wl,-z -Wl,defaultextract
+endif
+
ifeq ($(ENABLE_CLANG_ARCMT),1)
CXX.Flags += -DCLANG_ENABLE_ARCMT
endif
###
--- tools/llvm-shlib/Makefile 2014-08-01 02:16:03.000000000 -0400
+++ tools/llvm-shlib/Makefile 2016-05-08 23:19:20.579431896 -0400
@@ -71,7 +71,10 @@
ifeq ($(HOST_OS),SunOS)
# add -z allextract ahead of other libraries on Solaris
- LLVMLibsOptions := -Wl,-z -Wl,allextract $(LLVMLibsOptions)
+ LLVMLibsOptions := -Wl,-z -Wl,rescan -Wl,-z -Wl,allextract $(LLVMLibsOptions)
+ LLVMLibsOptions += -Wl,-h -Wl,lib$(LIBRARYNAME)$(SHLIBEXT)
+ LLVMLibsOptions += -Wl,-z -Wl,defaultextract -Wl,-z -Wl,defs
+ LLVMLibsOptions += -lkstat
endif
ifeq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
###
--- tools/clang/tools/libclang/CMakeLists.txt 2015-11-11 16:46:57.000000000 -0800
+++ tools/clang/tools/libclang/CMakeLists.txt 2016-05-15 17:35:29.587888133 -0700
@@ -92,6 +92,7 @@
LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD}
+
Core
Support
)
@@ -108,6 +109,9 @@
set_property(TARGET libclang APPEND_STRING PROPERTY
LINK_FLAGS ${LIBCLANG_LINK_FLAGS})
+ elseif(CMAKE_HOST_SOLARIS)
+ set(LIBCLANG_LINK_FLAGS " -Wl,-z -Wl,allextract -Wl,-z -Wl,defs -Bsymbolic-functions ")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LIBCLANG_LINK_FLAGS}")
else()
set_target_properties(libclang
PROPERTIES
###
--- tools/llvm-shlib/CMakeLists.txt 2015-11-04 14:11:12.000000000 -0900
+++ tools/llvm-shlib/CMakeLists.txt 2016-07-05 22:08:15.168330085 -0800
@@ -40,12 +40,18 @@
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
-list(REMOVE_DUPLICATES LIB_NAMES)
+if (LIB_NAMES)
+ list(REMOVE_DUPLICATES "LIB_NAMES")
+endif()
+
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") # 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")
set(LIB_NAMES -Wl,-all_load ${LIB_NAMES})
+elseif(CMAKE_HOST_SOLARIS)
+ set(LIB_NAMES -Wl,-z -Wl,defs -Wl,-Bsymbolic-functions -Wl,-z -Wl,allextract ${LIB_NAMES} -Wl,-z -Wl,defaultextract)
+ # message(STATUS "LIB_NAMES: ${LIB_NAMES}")
endif()
target_link_libraries(LLVM PRIVATE ${LIB_NAMES})
###
--- cmake/modules/HandleLLVMOptions.cmake 2016-01-06 11:05:19.000000000 -0800
+++ cmake/modules/HandleLLVMOptions.cmake 2016-05-18 19:22:28.803960478 -0700
@@ -132,6 +132,7 @@
# Pass -Wl,-z,defs. This makes sure all symbols are defined. Otherwise a DSO
# build might work on ELF but fail on MachO/COFF.
if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR WIN32 OR CYGWIN OR
+ CMAKE_HOST_SOLARIS OR
${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR
${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") AND
NOT LLVM_USE_SANITIZER)
@@ -185,13 +186,13 @@
endif()
endif()
-if(NOT WIN32 AND NOT CYGWIN)
+if(NOT WIN32 AND NOT CYGWIN AND NOT CMAKE_HOST_SOLARIS)
# MinGW warns if -fvisibility-inlines-hidden is used.
check_cxx_compiler_flag("-fvisibility-inlines-hidden" SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG)
append_if(SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG "-fvisibility-inlines-hidden" CMAKE_CXX_FLAGS)
endif()
-if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
+if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 AND NOT CMAKE_HOST_SOLARIS )
# TODO: support other platforms and toolchains.
if( LLVM_BUILD_32_BITS )
message(STATUS "Building 32 bits executables and libraries.")
@@ -200,10 +201,12 @@
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m32")
endif( LLVM_BUILD_32_BITS )
-endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
+endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 AND NOT CMAKE_HOST_SOLARIS )
if (LLVM_BUILD_STATIC)
+ if (NOT CMAKE_HOST_SOLARIS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
+ endif(CMAKE_HOST_SOLARIS)
endif()
if( XCODE )
###
--- lib/Transforms/Hello/CMakeLists.txt 2015-06-15 17:44:12.000000000 -0700
+++ lib/Transforms/Hello/CMakeLists.txt 2016-05-17 18:08:53.730103135 -0700
@@ -1,14 +1,18 @@
# If we don't need RTTI or EH, there's no reason to export anything
# from the hello plugin.
-if( NOT LLVM_REQUIRES_RTTI )
- if( NOT LLVM_REQUIRES_EH )
- set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Hello.exports)
- endif()
-endif()
+# It doesn't export anything anyway, regardless of RTTI or no RTTI.
+# Why does it need an empty linker mapfile?
+IF (NOT CMAKE_HOST_SOLARIS)
+ IF (NOT LLVM_REQUIRES_RTTI)
+ IF (NOT LLVM_REQUIRES_EH)
+ SET (LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Hello.exports)
+ ENDIF()
+ ENDIF()
+ENDIF()
-if(WIN32 OR CYGWIN)
- set(LLVM_LINK_COMPONENTS Core Support)
-endif()
+if(WIN32 OR CYGWIN OR CMAKE_HOST_SOLARIS)
+ SET (LLVM_LINK_COMPONENTS Core Support)
+ENDIF()
add_llvm_loadable_module( LLVMHello
Hello.cpp
###
--- tools/clang/tools/driver/CMakeLists.txt 2015-11-10 04:51:25.000000000 -0800
+++ tools/clang/tools/driver/CMakeLists.txt 2016-05-21 07:44:27.981263031 -0700
@@ -1,3 +1,7 @@
+IF(CMAKE_HOST_SOLARIS)
+ include (GNUInstallDirs)
+ENDIF(CMAKE_HOST_SOLARIS)
+
set( LLVM_LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD}
Analysis
@@ -51,9 +55,15 @@
add_dependencies(clang clang-headers)
+IF(CMAKE_HOST_SOLARIS)
+ install(TARGETS clang
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT clang)
+ELSE()
install(TARGETS clang
RUNTIME DESTINATION bin
COMPONENT clang)
+ENDIF()
if(NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-clang
--- tools/clang/tools/scan-view/CMakeLists.txt 2015-11-13 12:34:15.000000000 -0800
+++ tools/clang/tools/scan-view/CMakeLists.txt 2016-05-21 08:48:55.352488404 -0700
@@ -1,3 +1,7 @@
+IF(CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+ENDIF(CMAKE_HOST_SOLARIS)
+
option(CLANG_INSTALL_SCANVIEW "Install the scan-view tool" ON)
set(BinFiles
@@ -21,7 +25,11 @@
${CMAKE_BINARY_DIR}/bin/
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
+ IF(CMAKE_HOST_SOLARIS)
+ install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
+ ELSE()
install(PROGRAMS bin/${BinFile} DESTINATION bin)
+ ENDIF()
endforeach()
foreach(ShareFile ${ShareFiles})
@@ -33,7 +41,12 @@
${CMAKE_BINARY_DIR}/share/scan-view/
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
+ IF(CMAKE_HOST_SOLARIS)
+ install(FILES share/${ShareFile} DESTINATION
+ ${CMAKE_INSTALL_DATAROOTDIR}//scan-view)
+ ELSE()
install(FILES share/${ShareFile} DESTINATION share/scan-view)
+ ENDIF()
endforeach()
add_custom_target(scan-view ALL DEPENDS ${Depends})
--- tools/clang/tools/clang-check/CMakeLists.txt 2015-07-16 18:19:54.000000000 -0700
+++ tools/clang/tools/clang-check/CMakeLists.txt 2016-05-21 08:52:13.223643264 -0700
@@ -1,3 +1,7 @@
+IF (CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+ENDIF(CMAKE_HOST_SOLARIS)
+
set( LLVM_LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD}
Option
@@ -18,5 +22,9 @@
clangTooling
)
-install(TARGETS clang-check
- RUNTIME DESTINATION bin)
+IF(CMAKE_HOST_SOLARIS)
+ install(TARGETS clang-check RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ELSE()
+ install(TARGETS clang-check RUNTIME DESTINATION bin)
+ENDIF()
+
###
--- tools/clang/tools/diagtool/CMakeLists.txt 2014-02-20 23:59:59.000000000 -0800
+++ tools/clang/tools/diagtool/CMakeLists.txt 2016-05-23 06:25:56.330339818 -0700
@@ -1,6 +1,6 @@
-set(LLVM_LINK_COMPONENTS
- Support
- )
+include(GNUInstallDirs)
+
+set(LLVM_LINK_COMPONENTS Support)
add_clang_executable(diagtool
diagtool_main.cpp
@@ -13,11 +13,15 @@
target_link_libraries(diagtool
clangBasic
- clangFrontend
- )
+ clangFrontend)
if(UNIX)
set(CLANGXX_LINK_OR_COPY create_symlink)
else()
set(CLANGXX_LINK_OR_COPY copy)
endif()
+
+install(TARGETS diagtool
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT diagtool)
+
--- tools/clang/tools/c-arcmt-test/CMakeLists.txt 2014-11-05 06:04:25.000000000 -0800
+++ tools/clang/tools/c-arcmt-test/CMakeLists.txt 2016-05-23 06:30:27.431481181 -0700
@@ -1,17 +1,16 @@
-add_clang_executable(c-arcmt-test
- c-arcmt-test.c
- )
+include(GNUInstallDirs)
+
+add_clang_executable(c-arcmt-test c-arcmt-test.c)
if (LLVM_BUILD_STATIC)
- target_link_libraries(c-arcmt-test
- libclang_static
- )
+ target_link_libraries(c-arcmt-test libclang_static)
else()
- target_link_libraries(c-arcmt-test
- libclang
- )
+ target_link_libraries(c-arcmt-test libclang)
endif()
-set_target_properties(c-arcmt-test
- PROPERTIES
- LINKER_LANGUAGE CXX)
+set_target_properties(c-arcmt-test PROPERTIES LINKER_LANGUAGE CXX)
+
+install(TARGETS c-arcmt-test
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT c-arcmt-test)
+
--- tools/clang/tools/arcmt-test/CMakeLists.txt 2014-01-31 10:09:49.000000000 -0800
+++ tools/clang/tools/arcmt-test/CMakeLists.txt 2016-05-23 06:29:00.860135211 -0700
@@ -1,14 +1,16 @@
-set(LLVM_LINK_COMPONENTS
- support
- )
+include(GNUInstallDirs)
-add_clang_executable(arcmt-test
- arcmt-test.cpp
- )
+set(LLVM_LINK_COMPONENTS Support)
+
+add_clang_executable(arcmt-test arcmt-test.cpp)
target_link_libraries(arcmt-test
clangARCMigrate
clangBasic
clangFrontend
- clangLex
- )
+ clangLex)
+
+install(TARGETS arcmt-test
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT arcmt-test)
+
###
--- tools/clang/tools/c-index-test/CMakeLists.txt 2015-11-13 14:41:14.000000000 -0800
+++ tools/clang/tools/c-index-test/CMakeLists.txt 2016-05-23 07:56:42.716288730 -0700
@@ -1,27 +1,18 @@
-add_clang_executable(c-index-test
- c-index-test.c
- )
+include(GNUInstallDirs)
+
+add_clang_executable(c-index-test c-index-test.c)
if(NOT MSVC)
- set_property(
- SOURCE c-index-test.c
- PROPERTY COMPILE_FLAGS "-std=gnu89"
- )
+ set_property( SOURCE c-index-test.c PROPERTY COMPILE_FLAGS "-std=gnu89")
endif()
if (LLVM_BUILD_STATIC)
- target_link_libraries(c-index-test
- libclang_static
- )
+ target_link_libraries(c-index-test libclang_static)
else()
- target_link_libraries(c-index-test
- libclang
- )
+ target_link_libraries(c-index-test libclang)
endif()
-set_target_properties(c-index-test
- PROPERTIES
- LINKER_LANGUAGE CXX)
+set_target_properties(c-index-test PROPERTIES LINKER_LANGUAGE CXX)
# If libxml2 is available, make it available for c-index-test.
if (CLANG_HAVE_LIBXML)
@@ -31,9 +22,18 @@
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
if(INTERNAL_INSTALL_PREFIX)
- set(INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/bin")
+ if(CMAKE_HOST_SOLARIS)
+ set(INSTALL_DESTINATION
+ "${INTERNAL_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
+ else()
+ set(INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/bin")
+ endif()
else()
- set(INSTALL_DESTINATION bin)
+ if (CMAKE_HOST_SOLARIS)
+ set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR})
+ else()
+ set(INSTALL_DESTINATION bin)
+ endif()
endif()
install(TARGETS c-index-test
@@ -48,3 +48,4 @@
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif()
endif()
+
###
--- tools/llvm-lto/CMakeLists.txt 2015-10-19 08:21:46.000000000 -0700
+++ tools/llvm-lto/CMakeLists.txt 2016-05-23 06:23:43.366481218 -0700
@@ -1,3 +1,5 @@
+include(GNUInstallDirs)
+
set(LLVM_LINK_COMPONENTS
${LLVM_TARGETS_TO_BUILD}
BitWriter
@@ -6,10 +8,11 @@
MC
Object
Support
- Target
- )
+ Target)
+
+add_llvm_tool(llvm-lto llvm-lto.cpp)
-add_llvm_tool(llvm-lto
- llvm-lto.cpp
- )
+install(TARGETS llvm-lto
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT llvm-lto)
###
--- tools/clang/tools/scan-build/CMakeLists.txt 2015-11-20 10:49:02.000000000 -0800
+++ tools/clang/tools/scan-build/CMakeLists.txt 2016-05-21 09:18:25.745824278 -0700
@@ -38,7 +38,11 @@
${CMAKE_BINARY_DIR}/bin/
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
+ if (CMAKE_HOST_SOLARIS)
+ install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
+ else()
install(PROGRAMS bin/${BinFile} DESTINATION bin)
+ endif()
endforeach()
foreach(LibexecFile ${LibexecFiles})
@@ -50,7 +54,12 @@
${CMAKE_BINARY_DIR}/libexec/
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
+ if (CMAKE_HOST_SOLARIS)
+ install(PROGRAMS libexec/${LibexecFile} DESTINATION
+ ${CMAKE_INSTALL_LIBEXECDIR})
+ ELSE()
install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec)
+ ENDIF()
endforeach()
foreach(ManPage ${ManPages})
@@ -74,9 +83,15 @@
${CMAKE_BINARY_DIR}/share/scan-build/
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
+ IF (CMAKE_HOST_SOLARIS)
+ install(FILES share/scan-build/${ShareFile} DESTINATION
+ ${CMAKE_INSTALL_DATAROOTDIR}/scan-build)
+ ELSE()
install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build)
+ ENDIF()
endforeach()
add_custom_target(scan-build ALL DEPENDS ${Depends})
set_target_properties(scan-build PROPERTIES FOLDER "Misc")
endif()
+
--- tools/clang/tools/clang-format/CMakeLists.txt 2015-09-30 12:28:47.000000000 -0700
+++ tools/clang/tools/clang-format/CMakeLists.txt 2016-05-21 09:33:31.300900932 -0700
@@ -1,5 +1,9 @@
set(LLVM_LINK_COMPONENTS support)
+if(CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+endif()
+
add_clang_executable(clang-format
ClangFormat.cpp
)
@@ -19,6 +23,21 @@
add_subdirectory(fuzzer)
endif()
+if(CMAKE_HOST_SOLARIS)
+ install(TARGETS clang-format RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(PROGRAMS clang-format-bbedit.applescript
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/clang)
+ install(PROGRAMS clang-format-diff.py
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/clang)
+ install(PROGRAMS clang-format-sublime.py
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/clang)
+ install(PROGRAMS clang-format.el
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/clang)
+ install(PROGRAMS clang-format.py
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/clang)
+ install(PROGRAMS git-clang-format
+ DESTINATION ${CMAKE_INSTALL_BINDIR})
+else()
install(TARGETS clang-format RUNTIME DESTINATION bin)
install(PROGRAMS clang-format-bbedit.applescript DESTINATION share/clang)
install(PROGRAMS clang-format-diff.py DESTINATION share/clang)
@@ -26,3 +45,5 @@
install(PROGRAMS clang-format.el DESTINATION share/clang)
install(PROGRAMS clang-format.py DESTINATION share/clang)
install(PROGRAMS git-clang-format DESTINATION bin)
+endif()
+
###
--- tools/clang/CMakeLists.txt 2016-01-05 15:51:42.000000000 -0800
+++ tools/clang/CMakeLists.txt 2016-05-23 14:00:47.358240529 -0700
@@ -1,5 +1,7 @@
cmake_minimum_required(VERSION 2.8.8)
+include(GNUInstallDirs)
+
# FIXME: It may be removed when we use 2.8.12.
if(CMAKE_VERSION VERSION_LESS 2.8.12)
# Invalidate a couple of keywords.
@@ -84,6 +86,7 @@
# 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})
@@ -196,11 +199,21 @@
set(DEFAULT_SYSROOT "" CACHE PATH
"Default <path> to all compiler invocations for --sysroot=<path>." )
+if(CMAKE_HOST_SOLARIS)
+ set(CLANG_DEFAULT_OPENMP_RUNTIME "libgomp" CACHE STRING
+ "Default OpenMP runtime used by -fopenmp.")
+else()
set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING
"Default OpenMP runtime used by -fopenmp.")
+endif()
+if(CMAKE_HOST_SOLARIS)
+ set(CLANG_VENDOR "Oracle Solaris" CACHE STRING
+ "Vendor-specific text for showing with version information.")
+else()
set(CLANG_VENDOR "" CACHE STRING
"Vendor-specific text for showing with version information.")
+endif()
if( CLANG_VENDOR )
add_definitions( -DCLANG_VENDOR="${CLANG_VENDOR} " )
@@ -399,12 +412,21 @@
target_link_libraries(${name} ${cmake_2_8_12_INTERFACE} ${LLVM_COMMON_LIBS})
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libclang")
+ if(CMAKE_HOST_SOLARIS)
install(TARGETS ${name}
COMPONENT ${name}
EXPORT ClangTargets
- LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
- ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ else()
+ install(TARGETS ${name}
+ COMPONENT ${name}
+ EXPORT ClangTargets
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin)
+ endif()
if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
@@ -443,6 +465,26 @@
${CMAKE_CURRENT_SOURCE_DIR}/include
)
+if (CMAKE_HOST_SOLARIS)
+ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ install(DIRECTORY include/clang include/clang-c
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING
+ PATTERN "*.def"
+ PATTERN "*.h"
+ PATTERN "config.h" EXCLUDE
+ PATTERN ".svn" EXCLUDE
+ )
+
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING
+ PATTERN "CMakeFiles" EXCLUDE
+ PATTERN "*.inc"
+ PATTERN "*.h"
+ )
+ endif()
+else()
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY include/clang include/clang-c
DESTINATION include
@@ -461,12 +503,17 @@
PATTERN "*.h"
)
endif()
+endif()
if(INTERNAL_INSTALL_PREFIX)
set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
else()
+ if (CMAKE_HOST_SOLARIS)
+ set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ else()
set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
endif()
+endif()
install(DIRECTORY include/clang-c
COMPONENT libclang-headers
###
--- tools/clang/lib/Headers/CMakeLists.txt 2015-12-31 06:14:07.000000000 -0800
+++ tools/clang/lib/Headers/CMakeLists.txt 2016-05-21 09:37:34.349722741 -0700
@@ -1,3 +1,5 @@
+include(GNUInstallDirs)
+
set(files
adxintrin.h
altivec.h
@@ -101,11 +103,18 @@
add_custom_target(clang-headers ALL DEPENDS ${out_files})
set_target_properties(clang-headers PROPERTIES FOLDER "Misc")
-install(
- FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
+if(CMAKE_HOST_SOLARIS)
+ install(FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
+ COMPONENT clang-headers
+ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
+ DESTINATION
+ ${CMAKE_INSTALL_LIBDIR}/clang/${CLANG_VERSION}/include)
+else()
+ install(FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
COMPONENT clang-headers
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
+endif()
if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDE's.
add_custom_target(install-clang-headers
@@ -114,3 +123,4 @@
-DCMAKE_INSTALL_COMPONENT=clang-headers
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
endif()
+
--- bindings/ocaml/llvm/CMakeLists.txt 2014-12-29 19:24:07.000000000 -0800
+++ bindings/ocaml/llvm/CMakeLists.txt 2016-05-21 10:59:56.318803888 -0700
@@ -1,3 +1,7 @@
+if (CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+endif()
+
add_ocaml_library(llvm
OCAML llvm
C llvm_ocaml
@@ -7,5 +11,10 @@
"${CMAKE_CURRENT_SOURCE_DIR}/META.llvm.in"
"${LLVM_LIBRARY_DIR}/ocaml/META.llvm")
+if (CMAKE_HOST_SOLARIS)
install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm"
- DESTINATION lib/ocaml)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
+else()
+ install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm" DESTINATION lib/ocaml)
+endif()
+
--- bindings/ocaml/backends/CMakeLists.txt 2014-12-29 19:24:07.000000000 -0800
+++ bindings/ocaml/backends/CMakeLists.txt 2016-05-21 11:02:23.891171801 -0700
@@ -1,3 +1,7 @@
+if (CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+endif()
+
foreach(TARGET ${LLVM_TARGETS_TO_BUILD})
set(OCAML_LLVM_TARGET ${TARGET})
@@ -22,6 +26,12 @@
"${CMAKE_CURRENT_SOURCE_DIR}/META.llvm_backend.in"
"${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}")
+ if (CMAKE_HOST_SOLARIS)
+ install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/ocaml)
+ else()
install(FILES "${LLVM_LIBRARY_DIR}/ocaml/META.llvm_${TARGET}"
DESTINATION lib/ocaml)
+ endif()
endforeach()
+
###
--- CMakeLists.txt 2016-01-13 11:03:44.000000000 -0800
+++ CMakeLists.txt 2016-07-08 05:07:23.987736754 -0700
@@ -2,6 +2,8 @@
cmake_minimum_required(VERSION 2.8.12.2)
+include(GNUInstallDirs)
+
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "No build type selected, default to Debug")
set(CMAKE_BUILD_TYPE "Debug")
@@ -79,6 +81,16 @@
endif()
endif()
+if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ if (NOT (${CMAKE_MAJOR_VERSION} GREATER 3))
+ if (NOT (${CMAKE_MINOR_VERSION} GREATER 6))
+ if (NOT ${CMAKE_HOST_SOLARIS} EQUAL 1)
+ message(ERROR "You must provide -DCMAKE_HOST_SOLARIS:BOOL=TRUE for CMake < 3.6.0")
+ endif()
+ endif()
+ endif()
+endif()
+
# Add path for custom modules
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
@@ -334,6 +346,12 @@
# Define the default arguments to use with 'lit', and an option for the user to
# override.
set(LIT_ARGS_DEFAULT "-sv")
+if (CMAKE_HOST_SOLARIS)
+ set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --threads=1")
+ set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --succinct")
+ set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
+endif()
+
if (MSVC_IDE OR XCODE)
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
endif()
@@ -554,20 +572,33 @@
${LLVM_INCLUDE_DIR}/llvm/Support/DataTypes.h)
# They are not referenced. See set_output_directory().
+if(CMAKE_HOST_SOLARIS)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
+ ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINIR})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
+ ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+ ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
+else()
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} )
+endif()
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
+
if (APPLE)
set(CMAKE_INSTALL_NAME_DIR "@rpath")
set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
else(UNIX)
if(NOT DEFINED CMAKE_INSTALL_RPATH)
+ if (NOT CMAKE_HOST_SOLARIS)
set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
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")
+ set(CMAKE_SHARED_LINKER_FLAGS
+ "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin")
+ endif()
endif()
endif(NOT DEFINED CMAKE_INSTALL_RPATH)
endif()
@@ -639,6 +670,12 @@
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")
endif()
+if(CMAKE_HOST_SOLARIS)
+ llvm_replace_compiler_option(CMAKE_C_FLAGS_RELEASE "-O3" "-O0")
+ llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O0")
+ llvm_replace_compiler_option(CMAKE_ASM_FLAGS_RELEASE "-O3" "-O0")
+endif()
+
# Put this before tblgen. Else we have a circular dependence.
add_subdirectory(lib/Support)
add_subdirectory(lib/TableGen)
###
--- cmake/modules/AddLLVM.cmake 2016-02-12 09:52:29.000000000 -0800
+++ cmake/modules/AddLLVM.cmake 2016-05-21 11:50:17.129351767 -0700
@@ -2,6 +2,17 @@
include(LLVM-Config)
include(DetermineGCCCompatible)
+if (CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+endif()
+
+if (CMAKE_HOST_SOLARIS)
+ SET (LLVM_REQUIRES_EH ON)
+ SET (LLVM_ENABLE_EH ON)
+ SET (LLVM_REQUIRES_RTTI ON)
+ SET (LLVM_ENABLE_RTTI ON)
+endif(CMAKE_HOST_SOLARIS)
+
function(llvm_update_compile_flags name)
get_property(sources TARGET ${name} PROPERTY SOURCES)
if("${sources}" MATCHES "\\.c(;|$)")
@@ -69,7 +80,26 @@
COMMENT "Creating export file for ${target_name}")
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,-exported_symbols_list,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
- elseif(LLVM_HAVE_LINK_VERSION_SCRIPT)
+ elseif(CMAKE_HOST_SOLARIS)
+ # Gold and BFD ld require a version script rather than a plain list.
+ set(native_export_file "${target_name}.exports")
+ add_custom_command(OUTPUT ${native_export_file}
+ COMMAND /usr/gnu/bin/echo "$mapfile_version 2" > ${native_export_file}
+ COMMAND /usr/gnu/bin/echo "" >> ${native_export_file}
+ COMMAND /usr/gnu/bin/echo "SYMBOL_SCOPE {" >> ${native_export_file}
+ COMMAND /usr/gnu/bin/grep -q "[[:alnum:]]" ${export_file} && /usr/gnu/bin/echo " global:" >> ${native_export_file} || :
+ COMMAND /usr/gnu/bin/sed -e "s/$/;/" -e "s/^/ /" < ${export_file} >> ${native_export_file}
+ # COMMAND echo " local: *;" >> ${native_export_file}
+ COMMAND /usr/gnu/bin/echo "};" >> ${native_export_file}
+ COMMAND /usr/gnu/bin/touch -am ${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}
+ DEPENDS ${export_file}
+ VERBATIM
+ COMMENT "Creating export file for ${target_name}")
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+ set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+ LINK_FLAGS " -Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+ elseif(LLVM_HAVE_LINK_VERSION_SCRIPT AND NOT CMAKE_HOST_SOLARIS)
# Gold and BFD ld require a version script rather than a plain list.
set(native_export_file "${target_name}.exports")
# FIXME: Don't write the "local:" line on OpenBSD.
@@ -82,13 +112,8 @@
DEPENDS ${export_file}
VERBATIM
COMMENT "Creating export file for ${target_name}")
- if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
- set_property(TARGET ${target_name} APPEND_STRING PROPERTY
- LINK_FLAGS " -Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
- else()
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
LINK_FLAGS " -Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
- endif()
else()
set(native_export_file "${target_name}.def")
@@ -529,11 +554,13 @@
""
""
${ARGN})
+
if( BUILD_SHARED_LIBS )
llvm_add_library(${name} SHARED ${ARGN})
else()
llvm_add_library(${name} ${ARGN})
endif()
+
# The gtest libraries should not be installed or exported as a target
if ("${name}" STREQUAL gtest OR "${name}" STREQUAL gtest_main)
set(_is_gtest TRUE)
@@ -546,16 +573,37 @@
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})
+ if (CMAKE_HOST_SOLARIS)
+ set(install_dir ${CMAKE_INSTALL_LIBDIR})
+ else()
+ set(install_dir lib)
+ endif()
+
if(ARG_SHARED OR BUILD_SHARED_LIBS)
if(WIN32 OR CYGWIN OR MINGW)
set(install_type RUNTIME)
set(install_dir bin)
else()
set(install_type LIBRARY)
+ if (CMAKE_HOST_SOLARIS)
+ set(install_dir ${CMAKE_INSTALL_LIBDIR})
endif()
+ endif()
+ elseif(LLVM_BUILD_LVLM_DYLIB)
+ if (CMAKE_HOST_SOLARIS)
+ set(install_type RUNTIME)
+ set(install_dir ${CMAKE_INSTALL_BINDIR})
+ else()
+ set(install_type RUNTIME)
+ set(install_dir bin)
+ endif()
else()
set(install_type ARCHIVE)
+ if (CMAKE_HOST_SOLARIS)
+ set(install_dir ${CMAKE_INSTALL_LIBDIR})
+ else()
+ set(install_dir lib)
+ endif()
endif()
install(TARGETS ${name}
@@ -590,13 +638,26 @@
# DLL platform
set(dlldir "bin")
else()
+ if (CMAKE_HOST_SOLARIS)
+ set(dlldir ${CMAKE_INSTALL_LIBDIR})
+ else()
set(dlldir "lib${LLVM_LIBDIR_SUFFIX}")
endif()
+ endif()
+
+ if (CMAKE_HOST_SOLARIS)
+ install(TARGETS ${name}
+ EXPORT LLVMExports
+ LIBRARY DESTINATION ${dlldir}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ else()
install(TARGETS ${name}
EXPORT LLVMExports
LIBRARY DESTINATION ${dlldir}
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
endif()
+ endif()
+
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
endif()
endif()
@@ -700,10 +761,17 @@
list(FIND LLVM_TOOLCHAIN_TOOLS ${name} LLVM_IS_${name}_TOOLCHAIN_TOOL)
if (LLVM_IS_${name}_TOOLCHAIN_TOOL GREATER -1 OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
if( LLVM_BUILD_TOOLS )
+ if (CMAKE_HOST_SOLARIS)
install(TARGETS ${name}
EXPORT LLVMExports
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT ${name})
+ else()
+ install(TARGETS ${name}
+ EXPORT LLVMExports
+ RUNTIME DESTINATION bin/${LLVM_BINDIR_SUFFIX}
COMPONENT ${name})
+ endif()
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
@@ -737,9 +805,16 @@
add_llvm_executable(${name} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARGN})
set_target_properties(${name} PROPERTIES FOLDER "Utils")
if( LLVM_INSTALL_UTILS )
+ if (CMAKE_HOST_SOLARIS)
+ install (TARGETS ${name}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ COMPONENT ${name})
+ else()
install (TARGETS ${name}
RUNTIME DESTINATION bin
COMPONENT ${name})
+ endif()
+
if (NOT CMAKE_CONFIGURATION_TYPES)
add_custom_target(install-${name}
DEPENDS ${name}
###
--- cmake/modules/TableGen.cmake 2015-10-23 12:48:17.000000000 -0700
+++ cmake/modules/TableGen.cmake 2016-05-21 10:57:12.766140197 -0700
@@ -2,6 +2,10 @@
# Extra parameters for `tblgen' may come after `ofn' parameter.
# Adds the name of the generated file to TABLEGEN_OUTPUT.
+if (CMAKE_HOST_SOLARIS)
+ include(GNUInstallDirs)
+endif()
+
function(tablegen project ofn)
# Validate calling context.
foreach(v
@@ -138,10 +142,18 @@
set_target_properties(${target} PROPERTIES LINK_FLAGS -Wl,--stack,16777216)
endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
endif( MINGW )
+
if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ if (CMAKE_HOST_SOLARIS)
+ install(TARGETS ${target}
+ EXPORT LLVMExports
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ else()
install(TARGETS ${target}
EXPORT LLVMExports
RUNTIME DESTINATION bin)
endif()
+ endif()
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target})
endmacro()
+
###