92 lines
3.0 KiB
CMake
92 lines
3.0 KiB
CMake
# Copyright (c) 2020-2024, Arm Limited and Contributors
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 the "License";
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(apps)
|
|
|
|
# Generate apps.cpp
|
|
|
|
set(APP_INFO_LIST)
|
|
|
|
set(SAMPLE_INCLUDE_FILES)
|
|
set(SAMPLE_INFO_LIST)
|
|
|
|
foreach(SAMPLE_ID ${TOTAL_SAMPLE_ID_LIST})
|
|
if ("${VKB_${SAMPLE_ID}}" AND TARGET ${SAMPLE_ID})
|
|
get_target_property(SAMPLE_CATEGORY ${SAMPLE_ID} SAMPLE_CATEGORY)
|
|
get_target_property(SAMPLE_AUTHOR ${SAMPLE_ID} SAMPLE_AUTHOR)
|
|
get_target_property(SAMPLE_NAME ${SAMPLE_ID} SAMPLE_NAME)
|
|
get_target_property(SAMPLE_DESCRIPTION ${SAMPLE_ID} SAMPLE_DESCRIPTION)
|
|
get_target_property(SAMPLE_TAGS ${SAMPLE_ID} SAMPLE_TAGS)
|
|
|
|
# Ensure we send in an empty C++ string as the vendor category, rather than a string with a space
|
|
set(INCLUDE_DIR ${SAMPLE_CATEGORY}/${SAMPLE_ID})
|
|
|
|
set(SAMPLE_TAGS_VECTOR)
|
|
|
|
list(JOIN SAMPLE_TAGS "\", \"" SAMPLE_TAGS_VECTOR)
|
|
|
|
list(APPEND SAMPLE_INCLUDE_FILES "#include \"${INCLUDE_DIR}/${SAMPLE_ID}.h\"")
|
|
list(APPEND SAMPLE_INFO_LIST "\tSampleInfo{\"${SAMPLE_ID}\", create_${SAMPLE_ID}, \"${SAMPLE_CATEGORY}\"\, \"${SAMPLE_AUTHOR}\"\, \"${SAMPLE_NAME}\"\, \"${SAMPLE_DESCRIPTION}\", {\"${SAMPLE_TAGS_VECTOR}\"}},")
|
|
list(APPEND APP_INFO_LIST "\tAppInfo{\"${SAMPLE_ID}\", create_${SAMPLE_ID}},")
|
|
endif()
|
|
endforeach()
|
|
|
|
list(JOIN SAMPLE_INCLUDE_FILES "\n" SAMPLE_INCLUDE_FILES)
|
|
list(JOIN SAMPLE_INFO_LIST "\n" SAMPLE_INFO_LIST)
|
|
list(JOIN APP_INFO_LIST "\n" APP_INFO_LIST)
|
|
|
|
configure_file(apps.cpp.in apps.cpp)
|
|
|
|
# Create apps library
|
|
|
|
set(SRC
|
|
apps.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/apps.cpp
|
|
)
|
|
|
|
add_library(${PROJECT_NAME} STATIC ${SRC})
|
|
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC framework)
|
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_SOURCE_DIR}/samples)
|
|
|
|
# Link all samples
|
|
set(PROJECT_ID_LIST ${TOTAL_SAMPLE_ID_LIST})
|
|
foreach(ID ${PROJECT_ID_LIST})
|
|
if(TARGET ${ID})
|
|
get_target_property(TARGET_TYPE ${ID} TYPE)
|
|
|
|
if(TARGET_TYPE STREQUAL "OBJECT_LIBRARY" OR TARGET_TYPE STREQUAL "STATIC_LIBRARY")
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC ${ID})
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
|
|
if (IOS)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
"-framework UIKit"
|
|
"-framework Foundation"
|
|
"-framework CoreGraphics"
|
|
"-framework Metal"
|
|
"-framework QuartzCore"
|
|
"-framework IOKit"
|
|
"-framework IOSurface"
|
|
)
|
|
endif ()
|