diff options
author | Gregor Jasny <gjasny@googlemail.com> | 2015-08-18 19:30:54 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-08-24 13:50:20 (GMT) |
commit | 744e6c497c01cb3a3129ca66d1cabfa83e17dbd4 (patch) | |
tree | 06c08c6e6772c19bbaaaf20f4bb460adef1d8d6e /Tests | |
parent | a712575da1a0e6117c4682100e3b9df72b964b2a (diff) | |
download | CMake-744e6c497c01cb3a3129ca66d1cabfa83e17dbd4.zip CMake-744e6c497c01cb3a3129ca66d1cabfa83e17dbd4.tar.gz CMake-744e6c497c01cb3a3129ca66d1cabfa83e17dbd4.tar.bz2 |
Fix iOS Bundle layouts (#15669)
In contrast to Mac OS X App bundle layout the iOS one lacks the
Contents/MacOSX structure. See also the Bundle Structures documentation
in Mac Developer Library:
https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html
For now detect iOS targets by checking the SDK name/path.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/RunCMake/XcodeProject/RunCMakeTest.cmake | 32 | ||||
-rw-r--r-- | Tests/RunCMake/XcodeProject/XcodeBundles.cmake | 46 | ||||
-rw-r--r-- | Tests/RunCMake/XcodeProject/main.m | 3 |
3 files changed, 81 insertions, 0 deletions
diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index b7de614..ef81739 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -7,3 +7,35 @@ run_cmake(XcodeObjectNeedsQuote) if (NOT XCODE_VERSION VERSION_LESS 6) run_cmake(XcodePlatformFrameworks) endif() + +# Use a single build tree for a few tests without cleaning. + +if(NOT XCODE_VERSION VERSION_LESS 5) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesOSX-build) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_OPTIONS "-DTEST_IOS=OFF") + + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake(XcodeBundles) + run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .) + + unset(RunCMake_TEST_BINARY_DIR) + unset(RunCMake_TEST_NO_CLEAN) + unset(RunCMake_TEST_OPTIONS) + + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeBundlesIOS-build) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_OPTIONS "-DTEST_IOS=ON") + + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake(XcodeBundles) + run_cmake_command(XcodeBundles-build ${CMAKE_COMMAND} --build .) + + unset(RunCMake_TEST_BINARY_DIR) + unset(RunCMake_TEST_NO_CLEAN) + unset(RunCMake_TEST_OPTIONS) +endif() diff --git a/Tests/RunCMake/XcodeProject/XcodeBundles.cmake b/Tests/RunCMake/XcodeProject/XcodeBundles.cmake new file mode 100644 index 0000000..d5cb51f --- /dev/null +++ b/Tests/RunCMake/XcodeProject/XcodeBundles.cmake @@ -0,0 +1,46 @@ +# check if Xcode and CMake have the same understanding of Bundle layout + +cmake_minimum_required(VERSION 3.3) +enable_language(C) + +if(TEST_IOS) + set(CMAKE_OSX_SYSROOT iphoneos) + set(CMAKE_OSX_ARCHITECTURES "armv7") + set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos;-iphonesimulator") + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") +endif(TEST_IOS) + +# 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) + +# Framework (not supported for iOS on Xcode < 6) + +if(NOT TEST_IOS OR NOT XCODE_VERSION VERSION_LESS 6) + add_library(Framework SHARED main.c) + set_target_properties(Framework PROPERTIES FRAMEWORK TRUE) + + add_custom_target(FrameworkTest ALL + COMMAND ${CMAKE_COMMAND} -E copy + "$<TARGET_FILE:Framework>" "$<TARGET_FILE:Framework>.old") + + add_dependencies(FrameworkTest Framework) +endif() + +# Bundle + +add_library(Bundle MODULE main.c) +set_target_properties(Bundle PROPERTIES BUNDLE TRUE) + +add_custom_target(BundleTest ALL + COMMAND ${CMAKE_COMMAND} -E copy + "$<TARGET_FILE:Bundle>" "$<TARGET_FILE:Bundle>.old") + +add_dependencies(BundleTest Bundle) diff --git a/Tests/RunCMake/XcodeProject/main.m b/Tests/RunCMake/XcodeProject/main.m new file mode 100644 index 0000000..6dc190a --- /dev/null +++ b/Tests/RunCMake/XcodeProject/main.m @@ -0,0 +1,3 @@ +int main(int argc, const char * argv[]) { + return 1; +} |