# Define minimal required version of CMake.
cmake_minimum_required(VERSION "3.25")

# Project definition
project({{SOLUTION_NAME}})

include(ExternalProject)
{% for project in SUB_PROJECT_LIST %}
ExternalProject_Add({{project.projectName}}
  SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../{{project.location}}/{{project.projectName}}_cmake
  BINARY_DIR ${CMAKE_CURRENT_LIST_DIR}/../{{project.location}}/{{project.projectName}}_cmake/build
  CMAKE_ARGS --preset project
  BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
  INSTALL_COMMAND ""
  BUILD_ALWAYS true
  WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../{{project.location}}/{{project.projectName}}_cmake
)
{%- endfor %}
{% for project in SUB_PROJECT_LIST %}
{%- if loop.nextitem %}
ExternalProject_Add_StepDependencies({{loop.nextitem.projectName}} build {{project.projectName}})
{% endif%}
{%- endfor %}

set(post_build_command {{ POST_BUILD_ARGS | replace('@"$(POST_BUILD_EXE)"',"${POST_BUILD_EXE}") | replace("$(POST_BUILD_EXE)","${POST_BUILD_EXE}") | replace("$(OUTPUT_DIR)","$<TARGET_FILE_DIR:" + SOLUTION_NAME + ">") }})

{{SOLUTION_SLPB_PATH}}
add_custom_target(postbuild ALL
    WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/..
    COMMAND ${post_build_command}
)

add_dependencies(postbuild {{ PROJECT_NAME_LIST|join(" ") }})

# BEGIN_SIMPLICITY_STUDIO_METADATA={{SIMPLICITY_STUDIO_METADATA}}=END_SIMPLICITY_STUDIO_METADATA