summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/add_custom_command/RunCMakeTest.cmake
blob: ad6b2586c55d0d55773693861828a0c1ff28a318 (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
include(RunCMake)

run_cmake(AppendLiteralQuotes)
run_cmake(AppendNoOutput)
run_cmake(AppendNotOutput)
run_cmake(BadArgument)
run_cmake(BadByproduct)
run_cmake(BadOutput)
run_cmake(BadCommand)
run_cmake(GeneratedProperty)
run_cmake(LiteralQuotes)
run_cmake(NoArguments)
run_cmake(NoOutputOrTarget)
run_cmake(OutputAndTarget)
run_cmake(SourceByproducts)
run_cmake(SourceUsesTerminal)
run_cmake(TargetImported)
run_cmake(TargetLiteralQuotes)
run_cmake(TargetNotInDir)

if(${RunCMake_GENERATOR} MATCHES "Visual Studio ([^89]|[89][0-9])")
  run_cmake(RemoveEmptyCommands)
endif()

run_cmake(AssigningMultipleTargets)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AssigningMultipleTargets-build)
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(AssigningMultipleTargets-build ${CMAKE_COMMAND} --build .)
unset(RunCMake_TEST_BINARY_DIR)
unset(RunCMake_TEST_NO_CLEAN)

if(NOT RunCMake_GENERATOR STREQUAL "Ninja Multi-Config")
  run_cmake(WorkingDirectory)
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/WorkingDirectory-build)
  set(RunCMake_TEST_NO_CLEAN 1)
  if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
    set(RunCMake-stdout-file WorkingDirectory-build-multi-config-stdout.txt)
  else()
    set(RunCMake-stdout-file WorkingDirectory-build-single-config-stdout.txt)
  endif()
  run_cmake_command(WorkingDirectory-build ${CMAKE_COMMAND} --build . --config Debug)
  unset(RunCMake-stdout-file)
  unset(RunCMake_TEST_BINARY_DIR)
  unset(RunCMake_TEST_NO_CLEAN)
endif()

function(test_genex name)
  run_cmake(${name})

  set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${name}-build")
  set(RunCMake_TEST_NO_CLEAN 1)
  run_cmake_command(${name}-build ${CMAKE_COMMAND} --build .)

  if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/wdir/touched")
    message(SEND_ERROR "File not created by target-dependent add_custom_command()!")
  endif()

  unset(RunCMake_TEST_NO_CLEAN)
  unset(RunCMake_TEST_BINARY_DIR)
endfunction()

test_genex(TargetGenexEvent)