summaryrefslogtreecommitdiffstats
path: root/Tests/MacRuntimePath/CMakeLists.txt
blob: a3c6fd9a9c3de84ec4f8545e71c0dfffcbd05bca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
cmake_minimum_required (VERSION 3.9)
project(MacRuntimePath)
if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
  set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
endif()

# Wipe out the install tree to make sure the exporter works.
add_custom_command(
  OUTPUT ${MacRuntimePath_BINARY_DIR}/CleanupProject
  COMMAND ${CMAKE_COMMAND} -E remove_directory ${MacRuntimePath_BINARY_DIR}/Root
  )
add_custom_target(CleanupTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/CleanupProject)
set_property(
  SOURCE ${MacRuntimePath_BINARY_DIR}/CleanupProject
  PROPERTY SYMBOLIC 1
  )

configure_file(${MacRuntimePath_SOURCE_DIR}/InitialCache.cmake.in
               ${MacRuntimePath_BINARY_DIR}/InitialCache.cmake @ONLY)

get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(_isMultiConfig)
  set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
else()
  if(CMAKE_BUILD_TYPE)
    set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
  else()
    set(NESTED_CONFIG_TYPE)
  endif()
endif()

# Build and install the exporter.
add_custom_command(
  OUTPUT ${MacRuntimePath_BINARY_DIR}/ExportProject
  COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
    --build-and-test
    ${MacRuntimePath_SOURCE_DIR}/A
    ${MacRuntimePath_BINARY_DIR}/A
    --build-noclean
    --build-project MacRuntimePath_A
    --build-target install
    --build-generator ${CMAKE_GENERATOR}
    --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
    --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
    --build-options -C${MacRuntimePath_BINARY_DIR}/InitialCache.cmake
  VERBATIM
  )
add_custom_target(ExportTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/ExportProject)
add_dependencies(ExportTarget CleanupTarget)
set_property(
  SOURCE ${MacRuntimePath_BINARY_DIR}/ExportProject
  PROPERTY SYMBOLIC 1
  )

# Build the importer.
add_custom_command(
  OUTPUT ${MacRuntimePath_BINARY_DIR}/ImportProject
  COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
   --build-and-test
   ${MacRuntimePath_SOURCE_DIR}/B
   ${MacRuntimePath_BINARY_DIR}/B
   --build-noclean
   --build-project MacRuntimePath_B
   --build-generator ${CMAKE_GENERATOR}
   --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
   --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
   --build-options -C${MacRuntimePath_BINARY_DIR}/InitialCache.cmake
  VERBATIM
  )
add_custom_target(ImportTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/ImportProject)
add_dependencies(ImportTarget ExportTarget)
set_property(
  SOURCE ${MacRuntimePath_BINARY_DIR}/ImportProject
  PROPERTY SYMBOLIC 1
  )