Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/bsd/llvm/dist/llvm Import LLVM 3.5svn r198450.



details:   https://anonhg.NetBSD.org/src/rev/9651e8850904
branches:  trunk
changeset: 325761:9651e8850904
user:      joerg <joerg%NetBSD.org@localhost>
date:      Sun Jan 05 16:02:49 2014 +0000

description:
Import LLVM 3.5svn r198450.

diffstat:

 external/bsd/llvm/dist/llvm/CMakeLists.txt                                       |   31 +-
 external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT                                      |    4 +-
 external/bsd/llvm/dist/llvm/CREDITS.TXT                                          |    2 +-
 external/bsd/llvm/dist/llvm/LICENSE.TXT                                          |    2 +-
 external/bsd/llvm/dist/llvm/Makefile                                             |    1 +
 external/bsd/llvm/dist/llvm/Makefile.rules                                       |   16 +
 external/bsd/llvm/dist/llvm/cmake/modules/AddLLVM.cmake                          |  164 +-
 external/bsd/llvm/dist/llvm/cmake/modules/HandleLLVMOptions.cmake                |   21 +-
 external/bsd/llvm/dist/llvm/cmake/modules/LLVMConfig.cmake.in                    |    2 -
 external/bsd/llvm/dist/llvm/cmake/modules/TableGen.cmake                         |   19 +-
 external/bsd/llvm/dist/llvm/configure                                            |   32 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/APInt.h                             |   13 +
 external/bsd/llvm/dist/llvm/include/llvm/ADT/ArrayRef.h                          |    5 +
 external/bsd/llvm/dist/llvm/include/llvm/ADT/BitVector.h                         |    6 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/SCCIterator.h                       |  141 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/SmallPtrSet.h                       |   37 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/SmallSet.h                          |   11 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/SparseBitVector.h                   |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/SparseSet.h                         |    7 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/StringMap.h                         |   19 +-
 external/bsd/llvm/dist/llvm/include/llvm/ADT/Triple.h                            |    9 +-
 external/bsd/llvm/dist/llvm/include/llvm/AutoUpgrade.h                           |    4 +
 external/bsd/llvm/dist/llvm/include/llvm/DIBuilder.h                             |   15 +-
 external/bsd/llvm/dist/llvm/include/llvm/DebugInfo.h                             |   57 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/Argument.h                           |    5 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/Attributes.h                         |    1 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/CMakeLists.txt                       |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/Constants.h                          |   10 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/DataLayout.h                         |   72 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/DerivedTypes.h                       |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/DiagnosticInfo.h                     |  165 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/DiagnosticPrinter.h                  |   84 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/IRBuilder.h                          |   13 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/Intrinsics.td                        |    6 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td                 |  168 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsMips.td                    |   20 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsX86.td                     |  150 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/LLVMContext.h                        |   33 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/LegacyPassManagers.h                 |   14 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/Metadata.h                           |    4 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/Module.h                             |    4 +-
 external/bsd/llvm/dist/llvm/include/llvm/IR/PassManager.h                        |  845 +++++++--
 external/bsd/llvm/dist/llvm/include/llvm/IR/Type.h                               |   32 +-
 external/bsd/llvm/dist/llvm/include/llvm/InitializePasses.h                      |    5 +-
 external/bsd/llvm/dist/llvm/include/llvm/LinkAllPasses.h                         |    1 +
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCAsmInfo.h                          |   64 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h                          |    1 +
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCELFSymbolFlags.h                   |   10 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCExpr.h                             |   19 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCObjectFileInfo.h                   |    8 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCParser/AsmLexer.h                  |    1 +
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCSchedule.h                         |    5 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionELF.h                       |    8 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCStreamer.h                         |   11 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCSymbol.h                           |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCTargetAsmParser.h                  |    5 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/BlockFrequency.h                |   11 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/CFG.h                           |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/COFF.h                          |    7 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/CallSite.h                      |   16 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/Compiler.h                      |   69 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/Dwarf.h                         |   29 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/ELF.h                           |    2 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/FileSystem.h                    |    5 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/GCOV.h                          |  231 ++-
 external/bsd/llvm/dist/llvm/include/llvm/Support/Host.h                          |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/LineIterator.h                  |   73 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/Program.h                       |   21 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/Regex.h                         |   17 +
 external/bsd/llvm/dist/llvm/include/llvm/Support/TargetRegistry.h                |   22 +-
 external/bsd/llvm/dist/llvm/include/llvm/Support/YAMLTraits.h                    |   66 +-
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h     |    1 -
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Scalar.h                     |    6 +
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/ASanStackFrameLayout.h |   64 +
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h      |   35 +-
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/BuildLibCalls.h        |    8 +
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/CmpInstAnalysis.h      |    2 +-
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/IntegerDivision.h      |   39 +-
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/SimplifyIndVar.h       |   17 +
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Utils/SpecialCaseList.h      |    6 +-
 external/bsd/llvm/dist/llvm/include/llvm/Transforms/Vectorize.h                  |    3 +-
 81 files changed, 2361 insertions(+), 783 deletions(-)

diffs (truncated from 5407 to 300 lines):

diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/CMakeLists.txt
--- a/external/bsd/llvm/dist/llvm/CMakeLists.txt        Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/CMakeLists.txt        Sun Jan 05 16:02:49 2014 +0000
@@ -11,7 +11,7 @@
   )
 
 set(LLVM_VERSION_MAJOR 3)
-set(LLVM_VERSION_MINOR 4)
+set(LLVM_VERSION_MINOR 5)
 
 if (NOT PACKAGE_VERSION)
   set(PACKAGE_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}svn")
@@ -94,8 +94,12 @@
 set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 set(LLVM_TOOLS_BINARY_DIR ${LLVM_BINARY_DIR}/bin)
 set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
+set(LLVM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
 set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
 
+set(LLVM_RUNTIME_OUTPUT_INTDIR ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
+set(LLVM_LIBRARY_OUTPUT_INTDIR ${LLVM_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib)
+
 set(LLVM_ALL_TARGETS
   AArch64
   ARM
@@ -166,8 +170,6 @@
    ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD})
 list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)
 
-set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
-
 include(AddLLVMDefinitions)
 
 option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)
@@ -179,6 +181,7 @@
   option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
 endif()
 
+option(LLVM_ENABLE_CXX11 "Compile with C++11 enabled." OFF)
 option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
 option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
 
@@ -378,39 +381,43 @@
 # include various classes of targets.
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in
-  ${LLVM_BINARY_DIR}/include/llvm/Config/AsmPrinters.def
+  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmPrinters.def
   )
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in
-  ${LLVM_BINARY_DIR}/include/llvm/Config/AsmParsers.def
+  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmParsers.def
   )
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in
-  ${LLVM_BINARY_DIR}/include/llvm/Config/Disassemblers.def
+  ${LLVM_INCLUDE_DIR}/llvm/Config/Disassemblers.def
   )
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Targets.def.in
-  ${LLVM_BINARY_DIR}/include/llvm/Config/Targets.def
+  ${LLVM_INCLUDE_DIR}/llvm/Config/Targets.def
   )
 
 # Configure the three LLVM configuration header files.
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake
-  ${LLVM_BINARY_DIR}/include/llvm/Config/config.h)
+  ${LLVM_INCLUDE_DIR}/llvm/Config/config.h)
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake
-  ${LLVM_BINARY_DIR}/include/llvm/Config/llvm-config.h)
+  ${LLVM_INCLUDE_DIR}/llvm/Config/llvm-config.h)
 configure_file(
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/DataTypes.h.cmake
-  ${LLVM_BINARY_DIR}/include/llvm/Support/DataTypes.h)
+  ${LLVM_INCLUDE_DIR}/llvm/Support/DataTypes.h)
 
 set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} )
 set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
 set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
 
+if( NOT DEFINED CMAKE_INSTALL_RPATH )
+  set( CMAKE_INSTALL_RPATH "\$ORIGIN/../lib")
+endif( NOT DEFINED CMAKE_INSTALL_RPATH )
+
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
-include_directories( ${LLVM_BINARY_DIR}/include ${LLVM_MAIN_INCLUDE_DIR})
+include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
 
 if( ${CMAKE_SYSTEM_NAME} MATCHES FreeBSD )
   # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM
@@ -506,7 +513,7 @@
     PATTERN ".svn" EXCLUDE
     )
 
-  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
+  install(DIRECTORY ${LLVM_INCLUDE_DIR}/
     DESTINATION include
     FILES_MATCHING
     PATTERN "*.def"
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT
--- a/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT       Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT       Sun Jan 05 16:02:49 2014 +0000
@@ -45,7 +45,7 @@
 
 N: Hal Finkel
 E: hfinkel%anl.gov@localhost
-D: BBVectorize and the PowerPC target
+D: BBVectorize, the loop reroller and the PowerPC target
 
 N: Venkatraman Govindaraju
 E: venkatra%cs.wisc.edu@localhost
@@ -143,7 +143,7 @@
 D: IndVar Simplify, Loop Strength Reduction, Instruction Scheduling
 
 N: Bill Wendling
-E: wendling%apple.com@localhost
+E: isanbard%gmail.com@localhost
 D: libLTO, IR Linker
 
 N: Peter Zotov
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/CREDITS.TXT
--- a/external/bsd/llvm/dist/llvm/CREDITS.TXT   Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/CREDITS.TXT   Sun Jan 05 16:02:49 2014 +0000
@@ -256,7 +256,7 @@
 W: http://sylvestre.ledru.info/
 W: http://llvm.org/apt/
 D: Debian and Ubuntu packaging
-D: Continous integration with jenkins
+D: Continuous integration with jenkins
 
 N: Andrew Lenharth
 E: alenhar2%cs.uiuc.edu@localhost
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/LICENSE.TXT
--- a/external/bsd/llvm/dist/llvm/LICENSE.TXT   Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/LICENSE.TXT   Sun Jan 05 16:02:49 2014 +0000
@@ -4,7 +4,7 @@
 University of Illinois/NCSA
 Open Source License
 
-Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign.
+Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign.
 All rights reserved.
 
 Developed by:
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/Makefile
--- a/external/bsd/llvm/dist/llvm/Makefile      Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/Makefile      Sun Jan 05 16:02:49 2014 +0000
@@ -126,6 +126,7 @@
          SDKROOT= \
          TARGET_NATIVE_ARCH="$(TARGET_NATIVE_ARCH)" \
          TARGETS_TO_BUILD="$(TARGETS_TO_BUILD)" \
+         TARGET_LIBS="$(LIBS)" \
          ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \
          ENABLE_PROFILING=$(ENABLE_PROFILING) \
          ENABLE_COVERAGE=$(ENABLE_COVERAGE) \
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/Makefile.rules
--- a/external/bsd/llvm/dist/llvm/Makefile.rules        Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/Makefile.rules        Sun Jan 05 16:02:49 2014 +0000
@@ -608,6 +608,22 @@
   Install.StripFlag += -s
 endif
 
+# By default, strip dead symbols at link time
+ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+ifneq ($(HOST_OS),Darwin)
+  CXX.Flags += -ffunction-sections -fdata-sections
+endif
+endif
+ifndef NO_DEAD_STRIP
+  ifeq ($(HOST_OS),Darwin)
+    LD.Flags += -Wl,-dead_strip
+  else
+    ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+      LD.Flags += -Wl,--gc-sections
+    endif
+  endif
+endif
+
 # Adjust linker flags for building an executable
 ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
   ifndef TOOL_NO_EXPORTS
diff -r 52da5f796194 -r 9651e8850904 external/bsd/llvm/dist/llvm/cmake/modules/AddLLVM.cmake
--- a/external/bsd/llvm/dist/llvm/cmake/modules/AddLLVM.cmake   Sun Jan 05 15:47:23 2014 +0000
+++ b/external/bsd/llvm/dist/llvm/cmake/modules/AddLLVM.cmake   Sun Jan 05 16:02:49 2014 +0000
@@ -2,10 +2,125 @@
 include(LLVMProcessSources)
 include(LLVM-Config)
 
+function(add_llvm_symbol_exports target_name export_file)
+  if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    set(native_export_file "${target_name}.exports")
+    add_custom_command(OUTPUT ${native_export_file}
+      COMMAND sed -e "s/^/_/" < ${export_file} > ${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,-exported_symbols_list,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+  elseif(LLVM_HAVE_LINK_VERSION_SCRIPT)
+    # 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.
+    add_custom_command(OUTPUT ${native_export_file}
+      COMMAND echo "{" > ${native_export_file}
+      COMMAND grep -q "[[:alnum:]]" ${export_file} && echo "  global:" >> ${native_export_file} || :
+      COMMAND sed -e "s/$/;/" -e "s/^/    /" < ${export_file} >> ${native_export_file}
+      COMMAND echo "  local: *;" >> ${native_export_file}
+      COMMAND echo "};" >> ${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,--version-script,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+  else()
+    set(native_export_file "${target_name}.def")
+
+    set(CAT "type")
+    if(CYGWIN)
+      set(CAT "cat")
+    endif()
+
+    # Using ${export_file} in add_custom_command directly confuses cmd.exe.
+    file(TO_NATIVE_PATH ${export_file} export_file_backslashes)
+
+    add_custom_command(OUTPUT ${native_export_file}
+      COMMAND ${CMAKE_COMMAND} -E echo "EXPORTS" > ${native_export_file}
+      COMMAND ${CAT} ${export_file_backslashes} >> ${native_export_file}
+      DEPENDS ${export_file}
+      VERBATIM
+      COMMENT "Creating export file for ${target_name}")
+    if(CYGWIN OR MINGW)
+      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+                   LINK_FLAGS " ${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+    else()
+      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+                   LINK_FLAGS " /DEF:${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}")
+    endif()
+  endif()
+
+  add_custom_target(${target_name}_exports DEPENDS ${native_export_file})
+
+  get_property(srcs TARGET ${target_name} PROPERTY SOURCES)
+  foreach(src ${srcs})
+    get_filename_component(extension ${src} EXT)
+    if(extension STREQUAL ".cpp")
+      set(first_source_file ${src})
+      break()
+    endif()
+  endforeach()
+
+  # Force re-linking when the exports file changes. Actually, it
+  # forces recompilation of the source file. The LINK_DEPENDS target
+  # property only works for makefile-based generators.
+  set_property(SOURCE ${first_source_file} APPEND PROPERTY
+    OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${native_export_file})
+
+  set_property(DIRECTORY APPEND
+    PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${native_export_file})
+
+  add_dependencies(${target_name} ${target_name}_exports)
+endfunction(add_llvm_symbol_exports)
+
+function(add_dead_strip target_name)
+  if(NOT CYGWIN AND NOT MINGW AND NOT MSVC)
+    if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+       SET(CMAKE_CXX_FLAGS
+           "${CMAKE_CXX_FLAGS}  -ffunction-sections -fdata-sections"
+           PARENT_SCOPE)
+    endif()
+  endif()
+  if(NOT LLVM_NO_DEAD_STRIP)
+    if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+                   LINK_FLAGS " -Wl,-dead_strip")
+    elseif(NOT WIN32)
+      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
+                   LINK_FLAGS " -Wl,--gc-sections")
+    endif()
+  endif()
+endfunction(add_dead_strip)
+
+# Set each output directory according to ${CMAKE_CONFIGURATION_TYPES}.
+# Note: Don't set variables CMAKE_*_OUTPUT_DIRECTORY any more,
+# or a certain builder, for eaxample, msbuild.exe, would be confused.
+function(set_output_directory target bindir libdir)
+  if(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
+    foreach(build_mode ${CMAKE_CONFIGURATION_TYPES})
+      string(TOUPPER "${build_mode}" CONFIG_SUFFIX)
+      string(REPLACE ${CMAKE_CFG_INTDIR} ${build_mode} bi ${bindir})
+      string(REPLACE ${CMAKE_CFG_INTDIR} ${build_mode} li ${libdir})
+      set_target_properties(${target} PROPERTIES "RUNTIME_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${bi})
+      set_target_properties(${target} PROPERTIES "ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${li})
+      set_target_properties(${target} PROPERTIES "LIBRARY_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${li})
+    endforeach()
+  else()
+    set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${bindir})



Home | Main Index | Thread Index | Old Index