blob: ed2d54bb3989205933d79f1f3763ed519e8d2d69 [file] [edit]
#
# Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
#
# SPDX-License-Identifier: BSD-2-Clause
#
cmake_minimum_required(VERSION 3.7.2)
set(configure_string "")
config_choice(
CapDLLoaderCallingConvention
CAPDL_LOADER_CALLING_CONVENTION
"Select the calling convention that loaded processes are expecting. If
you select the register convention you will be limited to passing four
arguments to processes and their stack frames will not need to be
mapped in during thread configuration."
"standard;CapDLLoaderCallingConventionStandard;CAPDL_LOADER_CC_STANDARD"
"registers;CapDLLoaderCallingConventionRegisters;CAPDL_LOADER_CC_REGISTERS"
)
config_string(
CapDLLoaderMaxObjects
CAPDL_LOADER_MAX_OBJECTS
"Maximum number of objects that can be handled by the loader. Note that
there is an upper limit on this based on the size of the initialiser's
CNode."
DEFAULT
4096
UNQUOTE
)
config_string(
CapDLLoaderFillsPerFrame
CAPDL_LOADER_FILLS_PER_FRAME
"Maximum number of fill commands per frame."
DEFAULT
1
UNQUOTE
)
config_option(
CapDLLoaderWriteablePages
CAPDL_LOADER_WRITEABLE_PAGES
"CapDL Loader will map all pages as writeable if the cap has grant permissions.
This is currently used to enable instruction and data rewriting by an external debugger such as GDB."
DEFAULT
OFF
)
config_option(
CapDLLoaderPrintDeviceInfo
CAPDL_LOADER_PRINT_DEVICE_INFO
"Dump device frame information on startup for the purposes of debugging."
DEFAULT
OFF
DEPENDS
"NOT CapDLLoaderVerified"
)
config_option(
CapDLLoaderPrintUntypeds
CAPDL_LOADER_PRINT_UNTYPEDS
"Dump untyped object information on startup for the purposes of debugging."
DEFAULT
OFF
DEPENDS
"NOT CapDLLoaderVerified"
)
config_option(
CapDLLoaderPrintCapDLObjects
CAPDL_LOAD_PRINT_CAPDL_OBJECTS
"Display verbose capDL objects as they are created. Could help with debugging,
but for large specs with lots of objects, this could slow things down significantly."
DEFAULT
OFF
DEPENDS
"NOT CapDLLoaderVerified"
)
config_option(
CapDLLoaderStaticAlloc
CAPDL_LOADER_STATIC_ALLOC
"Build the loader to expect a statically allocated capDL spec."
DEFAULT
OFF
)
add_config_library(capdl_loader_app "${configure_string}")
# The capdl-loader-app requires outside configuration in order to build. To achieve this
# we just declare a target here with custom properties for describing the source and headers.
# This is done here as at this point we know the source directory and can construct these things.
# Later on the user will construct a rule for actually generating the capdl executable from a
# different project directory
add_custom_target(capdl_app_properties)
set_property(TARGET capdl_app_properties PROPERTY C_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/main.c")
set_property(
TARGET capdl_app_properties
PROPERTY INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include"
)
RequireFile(CAPDL_LOADER_BUILD_HELPERS helpers.cmake)