summaryrefslogtreecommitdiff
path: root/Tests/RunCMake/XcodeProject/XcodeBundles.cmake
blob: a9fafd22b7bb3d4bdb8c112872db0206d1e01775 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# check if Xcode and CMake have the same understanding of Bundle layout

enable_language(C)

if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")
  set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "tvOS" OR CMAKE_SYSTEM_NAME STREQUAL "watchOS")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
  set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")
  set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES")
endif()

# App Bundle

add_executable(AppBundle MACOSX_BUNDLE main.m)

add_custom_target(AppBundleTest ALL
  COMMAND ${CMAKE_COMMAND} -E copy
    "$<TARGET_FILE:AppBundle>" "$<TARGET_FILE:AppBundle>.old")

add_dependencies(AppBundleTest AppBundle)

# with custom extension

if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  add_executable(AppBundleExt MACOSX_BUNDLE main.m)
  set_target_properties(AppBundleExt PROPERTIES BUNDLE_EXTENSION "foo")
  install(TARGETS AppBundleExt BUNDLE DESTINATION FooExtension)

  add_custom_target(AppBundleExtTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:AppBundleExt>" "$<TARGET_FILE:AppBundleExt>.old")

  add_dependencies(AppBundleExtTest AppBundleExt)
endif()

# Shared Framework (not supported for iOS on Xcode < 6)

if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS" OR NOT XCODE_VERSION VERSION_LESS 6)
  add_library(SharedFramework SHARED main.c)
  set_target_properties(SharedFramework PROPERTIES FRAMEWORK TRUE)

  add_custom_target(SharedFrameworkTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:SharedFramework>" "$<TARGET_BUNDLE_DIR:SharedFramework>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:SharedFramework>" "$<TARGET_BUNDLE_CONTENT_DIR:SharedFramework>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:SharedFramework>" "$<TARGET_FILE:SharedFramework>.old")

  add_dependencies(SharedFrameworkTest SharedFramework)

  # with custom extension

  add_library(SharedFrameworkExt SHARED main.c)
  set_target_properties(SharedFrameworkExt PROPERTIES FRAMEWORK TRUE)
  set_target_properties(SharedFrameworkExt PROPERTIES BUNDLE_EXTENSION "foo")
  install(TARGETS SharedFrameworkExt FRAMEWORK DESTINATION FooExtension)

  add_custom_target(SharedFrameworkExtTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:SharedFrameworkExt>" "$<TARGET_BUNDLE_DIR:SharedFrameworkExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:SharedFrameworkExt>" "$<TARGET_BUNDLE_CONTENT_DIR:SharedFrameworkExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:SharedFrameworkExt>" "$<TARGET_FILE:SharedFrameworkExt>.old")

  add_dependencies(SharedFrameworkExtTest SharedFrameworkExt)
endif()

# Static Framework (not supported for Xcode < 6)

if(NOT XCODE_VERSION VERSION_LESS 6)
  add_library(StaticFramework STATIC main.c)
  set_target_properties(StaticFramework PROPERTIES FRAMEWORK TRUE)

  add_custom_target(StaticFrameworkTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:StaticFramework>" "$<TARGET_BUNDLE_DIR:StaticFramework>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:StaticFramework>" "$<TARGET_BUNDLE_CONTENT_DIR:StaticFramework>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:StaticFramework>" "$<TARGET_FILE:StaticFramework>.old")

  add_dependencies(StaticFrameworkTest StaticFramework)

  # with custom extension

  add_library(StaticFrameworkExt STATIC main.c)
  set_target_properties(StaticFrameworkExt PROPERTIES FRAMEWORK TRUE)
  set_target_properties(StaticFrameworkExt PROPERTIES BUNDLE_EXTENSION "foo")
  install(TARGETS StaticFrameworkExt FRAMEWORK DESTINATION StaticFooExtension)

  add_custom_target(StaticFrameworkExtTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:StaticFrameworkExt>" "$<TARGET_BUNDLE_DIR:StaticFrameworkExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:StaticFrameworkExt>" "$<TARGET_BUNDLE_CONTENT_DIR:StaticFrameworkExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:StaticFrameworkExt>" "$<TARGET_FILE:StaticFrameworkExt>.old")

  add_dependencies(StaticFrameworkExtTest StaticFrameworkExt)
endif()

# Bundle

if(NOT CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE)
  add_library(Bundle MODULE main.c)
  set_target_properties(Bundle PROPERTIES BUNDLE TRUE)

  add_custom_target(BundleTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:Bundle>" "$<TARGET_BUNDLE_DIR:Bundle>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:Bundle>" "$<TARGET_BUNDLE_CONTENT_DIR:Bundle>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:Bundle>" "$<TARGET_FILE:Bundle>.old")

  add_dependencies(BundleTest Bundle)

  # with custom extension

  add_library(BundleExt MODULE main.c)
  set_target_properties(BundleExt PROPERTIES BUNDLE TRUE)
  set_target_properties(BundleExt PROPERTIES BUNDLE_EXTENSION "foo")
  install(TARGETS BundleExt LIBRARY DESTINATION FooExtension)

  add_custom_target(BundleExtTest ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_DIR:BundleExt>" "$<TARGET_BUNDLE_DIR:BundleExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_BUNDLE_CONTENT_DIR:BundleExt>" "$<TARGET_BUNDLE_CONTENT_DIR:BundleExt>.old"
    COMMAND ${CMAKE_COMMAND} -E copy
      "$<TARGET_FILE:BundleExt>" "$<TARGET_FILE:BundleExt>.old")

  add_dependencies(BundleExtTest BundleExt)
endif()