c778606c89
* Templates/Restricted upgrade/fixes: Fixed template storage format: templates now only store true relative paths and no longer save "origin" paths and "optional" has been removed, it was never used. Upgraded all templates to new standard Template system now correctly handles child objects: Child objects no longer have to specify restricted they inherit from parent Restricted now operates at the object level and makes no assumptions about parent Restricted templates can now be combined and seperated on creation ly_get_list_relative_filename has been deprecated for o3de_pal_dir All Gems/Projects/Templates updated to use new code Signed-off-by: byrcolin <byrcolin@amazon.com>
84 lines
3.5 KiB
CMake
84 lines
3.5 KiB
CMake
# {BEGIN_LICENSE}
|
|
# Copyright (c) Contributors to the Open 3D Engine Project.
|
|
# For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
#
|
|
# {END_LICENSE}
|
|
|
|
set(gem_path ${CMAKE_CURRENT_LIST_DIR})
|
|
set(gem_json ${gem_path}/gem.json)
|
|
o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
|
|
|
|
# Currently we are in the ${Name}/Code folder: ${CMAKE_CURRENT_LIST_DIR}
|
|
# Get the platform specific folder ${pal_dir} for the current folder: ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}
|
|
# Note: o3de_pal_dir will take care of the details for us, as this may be a restricted platform
|
|
# in which case it will see if that platform is present here or in the restricted folder.
|
|
# i.e. It could here : ${Name}/Code/Platform/<platform_name> or
|
|
# <restricted_folder>/<platform_name>/${Name}/Code
|
|
o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
|
|
|
|
# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
|
|
# traits for this platform. Traits for a platform are defines for things like whether or not something in this project
|
|
# is supported by this platform.
|
|
include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
|
|
|
# Now that we have loaded our project traits for this platform, see if this project is even supported on this platform.
|
|
# If its not supported we just return after including the unsupported.
|
|
if(NOT PAL_TRAIT_${NameUpper}_SUPPORTED)
|
|
return()
|
|
endif()
|
|
|
|
# We are on a supported platform, so add the ${Name} target
|
|
# Note: We include the common files and the platform specific files which are set in ${NameLower}_files.cmake and
|
|
# in ${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
|
|
ly_add_target(
|
|
NAME ${Name}.Static STATIC
|
|
NAMESPACE Gem
|
|
FILES_CMAKE
|
|
${NameLower}_files.cmake
|
|
${pal_dir}/${NameLower}_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
|
|
INCLUDE_DIRECTORIES
|
|
PUBLIC
|
|
Include
|
|
BUILD_DEPENDENCIES
|
|
PRIVATE
|
|
AZ::AzGameFramework
|
|
Gem::Atom_AtomBridge.Static
|
|
)
|
|
|
|
ly_add_target(
|
|
NAME ${Name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
|
NAMESPACE Gem
|
|
FILES_CMAKE
|
|
${NameLower}_shared_files.cmake
|
|
${pal_dir}/${NameLower}_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
|
|
INCLUDE_DIRECTORIES
|
|
PUBLIC
|
|
Include
|
|
BUILD_DEPENDENCIES
|
|
PRIVATE
|
|
Gem::${Name}.Static
|
|
AZ::AzCore
|
|
)
|
|
|
|
# if enabled, ${Name} is used by all kinds of applications
|
|
ly_create_alias(NAME ${Name}.Builders NAMESPACE Gem TARGETS Gem::${Name})
|
|
ly_create_alias(NAME ${Name}.Tools NAMESPACE Gem TARGETS Gem::${Name})
|
|
ly_create_alias(NAME ${Name}.Clients NAMESPACE Gem TARGETS Gem::${Name})
|
|
ly_create_alias(NAME ${Name}.Servers NAMESPACE Gem TARGETS Gem::${Name})
|
|
|
|
################################################################################
|
|
# Gem dependencies
|
|
################################################################################
|
|
|
|
# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
|
|
ly_enable_gems(PROJECT_NAME ${Name} GEM_FILE enabled_gems.cmake)
|
|
|
|
if(PAL_TRAIT_BUILD_SERVER_SUPPORTED)
|
|
# this property causes it to actually make a ServerLauncher.
|
|
# if you don't want a Server application, you can remove this and the
|
|
# following ly_enable_gems lines.
|
|
set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_SERVER_PROJECTS ${Name})
|
|
endif()
|