https://github.com/apple/swift
Raw File
Tip revision: b878d3b9cbc71f14295c9eb4428480ab344ef431 authored by Ted Kremenek on 10 October 2017, 10:26:50 UTC
Merge pull request #12343 from aschwaighofer/swift-4.0-branch-fix_hash_value_leak
Tip revision: b878d3b
CMakeLists.txt
# -*- mode: cmake -*-
################################################################################
# WARNING: This file is automatically generated from templates and should not
# be directly modified. Instead, make changes to CMakeLists.text.gyb and run
# scripts/generate_harness/generate_harness.py to regenerate this file.
################################################################################

cmake_minimum_required(VERSION 2.8.12)

# Add path for custom CMake modules.
list(APPEND CMAKE_MODULE_PATH
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")

include(AddSwiftBenchmarkSuite)

set(SWIFT_BENCH_MODULES
    single-source/Ackermann
    single-source/AngryPhonebook
    single-source/AnyHashableWithAClass
    single-source/Array2D
    single-source/ArrayAppend
    single-source/ArrayInClass
    single-source/ArrayLiteral
    single-source/ArrayOfGenericPOD
    single-source/ArrayOfGenericRef
    single-source/ArrayOfPOD
    single-source/ArrayOfRef
    single-source/ArraySubscript
    single-source/BitCount
    single-source/ByteSwap
    single-source/CString
    single-source/Calculator
    single-source/CaptureProp
    single-source/CharacterLiteralsLarge
    single-source/CharacterLiteralsSmall
    single-source/Chars
    single-source/ClassArrayGetter
    single-source/DeadArray
    single-source/DictTest
    single-source/DictTest2
    single-source/DictTest3
    single-source/DictionaryBridge
    single-source/DictionaryGroup
    single-source/DictionaryLiteral
    single-source/DictionaryRemove
    single-source/DictionarySwap
    single-source/DropFirst
    single-source/DropLast
    single-source/DropWhile
    single-source/ErrorHandling
    single-source/ExistentialPerformance
    single-source/Fibonacci
    single-source/GlobalClass
    single-source/Hanoi
    single-source/Hash
    single-source/HashQuadratic
    single-source/Histogram
    single-source/Integrate
    single-source/IterateData
    single-source/Join
    single-source/LazyFilter
    single-source/LinkedList
    single-source/MapReduce
    single-source/Memset
    single-source/MonteCarloE
    single-source/MonteCarloPi
    single-source/NSDictionaryCastToSwift
    single-source/NSError
    single-source/NSStringConversion
    single-source/NopDeinit
    single-source/ObjectAllocation
    single-source/ObjectiveCBridging
    single-source/ObjectiveCBridgingStubs
    single-source/ObjectiveCNoBridgingStubs
    single-source/ObserverClosure
    single-source/ObserverForwarderStruct
    single-source/ObserverPartiallyAppliedMethod
    single-source/ObserverUnappliedMethod
    single-source/OpenClose
    single-source/Phonebook
    single-source/PolymorphicCalls
    single-source/PopFront
    single-source/PopFrontGeneric
    single-source/Prefix
    single-source/PrefixWhile
    single-source/Prims
    single-source/ProtocolDispatch
    single-source/ProtocolDispatch2
    single-source/RC4
    single-source/RGBHistogram
    single-source/RangeAssignment
    single-source/RecursiveOwnedParameter
    single-source/ReduceInto
    single-source/ReversedCollections
    single-source/SetTests
    single-source/SevenBoom
    single-source/Sim2DArray
    single-source/SortLargeExistentials
    single-source/SortLettersInPlace
    single-source/SortStrings
    single-source/StackPromo
    single-source/StaticArray
    single-source/StrComplexWalk
    single-source/StrToInt
    single-source/StringBuilder
    single-source/StringEdits
    single-source/StringInterpolation
    single-source/StringMatch
    single-source/StringTests
    single-source/StringWalk
    single-source/Substring
    single-source/Suffix
    single-source/SuperChars
    single-source/TwoSum
    single-source/TypeFlood
    single-source/UTF8Decode
    single-source/Walsh
    single-source/XorLoop
)

set(SWIFT_MULTISOURCE_BENCHES
)


set(BENCH_DRIVER_LIBRARY_MODULES
    utils/DriverUtils
    utils/TestsUtils
)

set(BENCH_DRIVER_LIBRARY_FLAGS)
if (SWIFT_RUNTIME_ENABLE_LEAK_CHECKER)
  set(BENCH_DRIVER_LIBRARY_FLAGS -DSWIFT_RUNTIME_ENABLE_LEAK_CHECKER)
endif()

set(BENCH_LIBRARY_MODULES
)

add_definitions(-DSWIFT_EXEC -DSWIFT_LIBRARY_PATH -DONLY_PLATFORMS
                -DSWIFT_OPTIMIZATION_LEVELS -DSWIFT_BENCHMARK_EMIT_SIB)

if(NOT ONLY_PLATFORMS)
  set(ONLY_PLATFORMS "macosx" "iphoneos" "appletvos" "watchos")
endif()

if(NOT SWIFT_EXEC)
  runcmd(COMMAND "xcrun" "-f" "swiftc"
         VARIABLE SWIFT_EXEC
         ERROR "Unable to find Swift driver")
endif()

if(NOT SWIFT_LIBRARY_PATH)
  get_filename_component(tmp_dir "${SWIFT_EXEC}" DIRECTORY)
  get_filename_component(tmp_dir "${tmp_dir}" DIRECTORY)
  set(SWIFT_LIBRARY_PATH "${tmp_dir}/lib/swift")
endif()

# If the CMAKE_C_COMPILER is already clang, don't find it again,
# thus allowing the --host-cc build-script argument to work here.
get_filename_component(c_compiler ${CMAKE_C_COMPILER} NAME)

if(${c_compiler} STREQUAL "clang")
  set(CLANG_EXEC ${CMAKE_C_COMPILER})
else()
  runcmd(COMMAND "xcrun" "-toolchain" "${SWIFT_DARWIN_XCRUN_TOOLCHAIN}" "-f" "clang"
         VARIABLE CLANG_EXEC
         ERROR "Unable to find Clang driver")
endif()


# You have to delete CMakeCache.txt in the swift build to force a
# reconfiguration.
set(SWIFT_EXTRA_BENCH_CONFIGS CACHE STRING
    "A semicolon separated list of benchmark configurations. \
Available configurations: <Optlevel>_SINGLEFILE, <Optlevel>_MULTITHREADED")

# Syntax for an optset:  <optimization-level>_<configuration>
#    where "_<configuration>" is optional.
if(NOT SWIFT_OPTIMIZATION_LEVELS)
  set(SWIFT_OPTIMIZATION_LEVELS "Onone" "O" "Ounchecked"
                                ${SWIFT_EXTRA_BENCH_CONFIGS})
endif()

set(SWIFT_BENCHMARK_NUM_O_ITERATIONS "" CACHE STRING
    "Number of iterations to perform when running -O benchmarks via cmake")
set(SWIFT_BENCHMARK_NUM_ONONE_ITERATIONS "" CACHE STRING
    "Number of iterations to perform when running -Onone benchmarks via cmake")

# Options for the default (= empty) configuration
set(BENCHOPTS "-whole-module-optimization")

# Options for other configurations
set(BENCHOPTS_MULTITHREADED
    "-whole-module-optimization" "-num-threads" "4")
set(BENCHOPTS_SINGLEFILE "")

set(macosx_arch "x86_64")
set(iphoneos_arch "arm64" "armv7")
set(appletvos_arch "arm64")
set(watchos_arch "armv7k")

set(macosx_ver "10.9")
set(iphoneos_ver "8.0")
set(appletvos_ver "9.1")
set(watchos_ver "2.0")

set(macosx_triple_platform "macosx")
set(iphoneos_triple_platform "ios")
set(appletvos_triple_platform "tvos")
set(watchos_triple_platform "watchos")

set(sdks)
set(platforms)
foreach(platform ${ONLY_PLATFORMS})
  execute_process(
      COMMAND "xcrun" "--sdk" "${platform}" "--show-sdk-path"
      OUTPUT_VARIABLE ${platform}_sdk
      RESULT_VARIABLE result
      ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
  if("${result}" MATCHES "0")
    list(APPEND sdks "${${platform}_sdk}")
    list(APPEND platforms ${platform})
  endif()
endforeach()

message("--")
message("-- Swift Benchmark Suite:")
message("--   SWIFT_EXEC = ${SWIFT_EXEC}")
message("--   SWIFT_LIBRARY_PATH = ${SWIFT_LIBRARY_PATH}")
message("--   CLANG_EXEC = ${CLANG_EXEC}")
message("--   SWIFT_OPTIMIZATION_LEVELS = ${SWIFT_OPTIMIZATION_LEVELS}")
message("--   ONLY_PLATFORMS = ${ONLY_PLATFORMS}")

message("--   found platforms: ${platforms}")
message("--   found sdks:")
foreach(sdk ${sdks})
  message("--     ${sdk}")
endforeach()

set(executable_targets)

if(SWIFT_SDKS)
  set(IS_SWIFT_BUILD true)
endif()

set(srcdir "${CMAKE_CURRENT_SOURCE_DIR}")

if(IS_SWIFT_BUILD)
  get_filename_component(swift-bin-dir "${SWIFT_EXEC}" DIRECTORY)
else()
  set(swift-bin-dir "${CMAKE_BINARY_DIR}/bin")
endif()

set(benchmark-bin-dir "${CMAKE_CURRENT_BINARY_DIR}/bin")
set(benchmark-lib-dir "${CMAKE_CURRENT_BINARY_DIR}/lib")
set(benchmark-lib-swift-dir "${CMAKE_CURRENT_BINARY_DIR}/lib/swift")

file(MAKE_DIRECTORY "${swift-bin-dir}")
file(MAKE_DIRECTORY "${benchmark-bin-dir}")
file(MAKE_DIRECTORY "${benchmark-lib-dir}")
file(MAKE_DIRECTORY "${benchmark-lib-swift-dir}")

# Compile the perf test suite for each platform
foreach(platform ${platforms})
  swift_benchmark_compile(PLATFORM ${platform})
endforeach()

add_subdirectory(scripts)
back to top