@@ -400,6 +400,72 @@ elseif(PLATFORM_TVOS)
400400 add_tvos_app ("${TARGET_NAME} " "${SOURCE} " "${INCLUDE} " "${ASSETS} " )
401401 endfunction ()
402402
403+ elseif (PLATFORM_VISIONOS)
404+
405+ set (SOURCE
406+ src/VisionOS/VisionOSAppBase.cpp
407+ )
408+ set (INCLUDE
409+ include/VisionOS/VisionOSAppBase.hpp
410+ )
411+
412+ function (add_visionos_app TARGET_NAME SOURCE INCLUDE ASSETS )
413+ get_target_property (NATIVE_APP_SOURCE_DIR Diligent-NativeAppBase SOURCE_DIR )
414+
415+ set (APPLE_SOURCE
416+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/main.m
417+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/visionOS/AppDelegate.mm
418+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/visionOS/SceneDelegate.mm
419+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /BaseView.mm
420+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /AppViewBase.mm
421+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /MetalView.mm
422+ )
423+
424+ set (APPLE_INCLUDE
425+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/visionOS/AppDelegate.h
426+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/visionOS/SceneDelegate.h
427+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /BaseView.h
428+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /AppViewBase.h
429+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS /MetalView.h
430+ )
431+
432+ set (APPLE_INFO_PLIST
433+ ${NATIVE_APP_SOURCE_DIR} /Apple /Data/visionOS/Info.plist
434+ )
435+
436+ set (APPLE_INCLUDE_DIRS
437+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/visionOS
438+ ${NATIVE_APP_SOURCE_DIR} /Apple /Source/Classes/iOS
439+ )
440+
441+ add_executable (${TARGET_NAME} MACOSX_BUNDLE ${SOURCE} ${APPLE_SOURCE} ${INCLUDE} ${APPLE_INCLUDE} ${ASSETS} )
442+ string (REPLACE "_" "-" BUNDLE_NAME ${TARGET_NAME} )
443+ set_target_properties (${TARGET_NAME} PROPERTIES
444+ XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.diligentengine.samples.${BUNDLE_NAME} "
445+ MACOSX_BUNDLE_INFO_PLIST "${APPLE_INFO_PLIST} "
446+ BUILD_RPATH "@executable_path"
447+ )
448+ source_group ("visionOS" FILES ${APPLE_SOURCE} )
449+ source_group ("visionOS" FILES ${APPLE_INCLUDE} )
450+ target_include_directories (${TARGET_NAME} PRIVATE ${APPLE_INCLUDE_DIRS} )
451+
452+ find_library (UIKIT UIKit )
453+ if (NOT UIKIT)
454+ message (FATAL_ERROR "UIKit is not found" )
455+ endif ()
456+
457+ find_library (CORE_ANIMATION QuartzCore )
458+ if (NOT CORE_ANIMATION)
459+ message (FATAL_ERROR "QuartzCore (CoreAnimation) is not found" )
460+ endif ()
461+
462+ target_link_libraries (${TARGET_NAME} PRIVATE ${UIKIT} ${CORE_ANIMATION} )
463+ endfunction ()
464+
465+ function (add_target_platform_app TARGET_NAME SOURCE INCLUDE ASSETS )
466+ add_visionos_app ("${TARGET_NAME} " "${SOURCE} " "${INCLUDE} " "${ASSETS} " )
467+ endfunction ()
468+
403469elseif (PLATFORM_WEB)
404470 set (SOURCE
405471 src/Emscripten/EmscriptenAppBase.cpp
@@ -530,6 +596,10 @@ elseif(PLATFORM_TVOS)
530596 target_include_directories (Diligent-NativeAppBase PUBLIC
531597 include /TVOS
532598 )
599+ elseif (PLATFORM_VISIONOS)
600+ target_include_directories (Diligent-NativeAppBase PUBLIC
601+ include /VisionOS
602+ )
533603elseif (PLATFORM_WEB)
534604 target_include_directories (Diligent-NativeAppBase PUBLIC
535605 include /Emscripten
0 commit comments