forked from ROMEO/obsw
Added Findcommon.cmake and collect.cmake; common-config.cmake still missing
This commit is contained in:
parent
563e6f64c9
commit
d2d5e5b1ec
@ -8,7 +8,8 @@ project(romeo-obsw C CXX ASM)
|
||||
# Pre-Sources preparation
|
||||
# ##############################################################################
|
||||
|
||||
|
||||
include(collect.cmake)
|
||||
include(Findcommon.cmake)
|
||||
|
||||
# Specify the C++ standard
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
@ -22,6 +23,7 @@ set(FreeRTOS_PATH FreeRTOS-Kernel/)
|
||||
set(MISSION_PATH mission/)
|
||||
set(FreeRTOS_CONFIG_PATH bsp_z7/freeRTOS)
|
||||
set(BSP_PATH bsp_z7)
|
||||
set(CMAKE_MODULE_PATH Findcommon.cmake)
|
||||
|
||||
set (LWIP_DIR contrib/lwip)
|
||||
|
||||
@ -110,4 +112,4 @@ if(CMAKE_VERBOSE)
|
||||
endif()
|
||||
|
||||
# Compile options for all sources.
|
||||
target_compile_options(${TARGET_NAME} PRIVATE ${WARNING_FLAGS})
|
||||
target_compile_options(${TARGET_NAME} PRIVATE ${WARNING_FLAGS})
|
||||
|
219
Findcommon.cmake
Normal file
219
Findcommon.cmake
Normal file
@ -0,0 +1,219 @@
|
||||
# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
option(NON_YOCTO "Non Yocto embeddedsw FLOW" OFF)
|
||||
set(CMAKE_POLICY_DEFAULT_CMP0140 OLD)
|
||||
|
||||
set (CMAKE_INSTALL_LIBDIR "lib")
|
||||
function (collector_create name base)
|
||||
set_property (GLOBAL PROPERTY "COLLECT_${name}_LIST")
|
||||
set_property (GLOBAL PROPERTY "COLLECT_${name}_BASE" "${base}")
|
||||
endfunction (collector_create)
|
||||
|
||||
function (collector_list var name)
|
||||
get_property (_list GLOBAL PROPERTY "COLLECT_${name}_LIST")
|
||||
set (${var} "${_list}" PARENT_SCOPE)
|
||||
endfunction (collector_list)
|
||||
|
||||
function (collector_base var name)
|
||||
get_property (_base GLOBAL PROPERTY "COLLECT_${name}_BASE")
|
||||
set (${var} "${_base}" PARENT_SCOPE)
|
||||
endfunction (collector_base)
|
||||
|
||||
function (collect name)
|
||||
collector_base (_base ${name})
|
||||
string(COMPARE NOTEQUAL "${_base}" "" _is_rel)
|
||||
set (_list)
|
||||
foreach (s IN LISTS ARGN)
|
||||
if (_is_rel)
|
||||
get_filename_component (s "${s}" ABSOLUTE)
|
||||
file (RELATIVE_PATH s "${_base}" "${s}")
|
||||
endif (_is_rel)
|
||||
list (APPEND _list "${s}")
|
||||
endforeach ()
|
||||
set_property (GLOBAL APPEND PROPERTY "COLLECT_${name}_LIST" "${_list}")
|
||||
endfunction (collect)
|
||||
|
||||
function(LIST_INDEX index match PROP)
|
||||
foreach (prop ${PROP})
|
||||
if ("${prop}" STREQUAL "${match}")
|
||||
set(index ${index} PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
MATH(EXPR index "${index}+1")
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
function(get_headers headers)
|
||||
foreach(header ${_headers})
|
||||
string(REPLACE "/" ";" PATH_LIST ${header})
|
||||
list(GET PATH_LIST -1 header)
|
||||
list(APPEND clean_headers ${CMAKE_INCLUDE_PATH}/${header})
|
||||
set(clean_headers ${clean_headers} PARENT_SCOPE)
|
||||
endforeach()
|
||||
return(${clean_headers})
|
||||
endfunction()
|
||||
|
||||
macro(subdirlist result curdir)
|
||||
file(GLOB subdirs RELATIVE ${curdir} ${curdir}/*)
|
||||
set(dirlist "")
|
||||
foreach(subdir ${subdirs})
|
||||
if(IS_DIRECTORY ${curdir}/${subdir})
|
||||
list(APPEND dirlist ${subdir})
|
||||
endif()
|
||||
endforeach()
|
||||
set(${result} ${dirlist})
|
||||
endmacro()
|
||||
|
||||
function (linker_gen path)
|
||||
if (NOT EXISTS "${CMAKE_SOURCE_DIR}/lscript.ld")
|
||||
if (NOT DEFINED STACK_SIZE)
|
||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "microblaze")
|
||||
set(STACK_SIZE 0x400)
|
||||
else()
|
||||
set(STACK_SIZE 0x2000)
|
||||
endif()
|
||||
endif()
|
||||
if (NOT DEFINED HEAP_SIZE)
|
||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "microblaze")
|
||||
set(HEAP_SIZE 0x400)
|
||||
else()
|
||||
set(HEAP_SIZE 0x2000)
|
||||
endif()
|
||||
endif()
|
||||
SET(MEM_NODE_INSTANCES "${TOTAL_MEM_CONTROLLERS}" CACHE STRING "Memory Controller")
|
||||
SET_PROPERTY(CACHE MEM_NODE_INSTANCES PROPERTY STRINGS "${TOTAL_MEM_CONTROLLERS}")
|
||||
set(CUSTOM_LINKER_FILE "None" CACHE STRING "Custom Linker Script")
|
||||
list(LENGTH MEM_NODE_INSTANCES _len)
|
||||
if (${_len} EQUAL 1)
|
||||
set(DDR ${MEM_NODE_INSTANCES})
|
||||
endif()
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexa72")
|
||||
OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexa78")
|
||||
OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexa53")
|
||||
OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexa53-32")
|
||||
OR ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64"))
|
||||
configure_file(${path}/lscript_a53.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_a53.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_a53.ld.in)
|
||||
endif()
|
||||
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "microblaze") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "microblazeel") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "plm_microblaze") OR
|
||||
("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "pmu_microblaze"))
|
||||
configure_file(${path}/lscript_mb.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_mb.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_mb.ld.in)
|
||||
endif()
|
||||
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexr5"))
|
||||
if("${CMAKE_MACHINE}" STREQUAL "Versal")
|
||||
configure_file(${path}/lscript_versal_r5.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_versal_r5.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_versal_r5.ld.in)
|
||||
else()
|
||||
configure_file(${path}/lscript_r5.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_r5.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_r5.ld.in)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexr52"))
|
||||
configure_file(${path}/lscript_versal_net_r5.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_versal_net_r5.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_versal_net_r5.ld.in)
|
||||
endif()
|
||||
|
||||
if(("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortexa9"))
|
||||
configure_file(${path}/lscript_a9.ld.in ${CMAKE_SOURCE_DIR}/lscript.ld)
|
||||
list(APPEND LINKER_FILE_PATH ${path}/lscript_a9.ld.in)
|
||||
list(APPEND LINKER_FILE lscript_a9.ld.in)
|
||||
endif()
|
||||
|
||||
if (NOT "${CUSTOM_LINKER_FILE}" STREQUAL "None")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CUSTOM_LINKER_FILE} ${CMAKE_SOURCE_DIR}/)
|
||||
endif()
|
||||
if (${NON_YOCTO})
|
||||
file (REMOVE_RECURSE ${path})
|
||||
endif()
|
||||
endif()
|
||||
endfunction(linker_gen)
|
||||
|
||||
function(gen_exheader path drvname addr prefix)
|
||||
string(TOUPPER ${drvname} DRVNAME)
|
||||
set(ADDR_DEFINE "#define X${DRVNAME}_BASEADDRESS ${addr}U")
|
||||
|
||||
if (NOT ${prefix})
|
||||
set(DRVNAME X${DRVNAME})
|
||||
configure_file(${path}/example.h.in ${CMAKE_SOURCE_DIR}/${prefix}${drvname}_example.h)
|
||||
else()
|
||||
configure_file(${path}/example.h.in ${CMAKE_SOURCE_DIR}/${drvname}_example.h)
|
||||
endif()
|
||||
endfunction(gen_exheader)
|
||||
|
||||
function(gen_bspconfig)
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetal_bspconfig_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/common
|
||||
RESULT_VARIABLE output)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/common/MemConfig.cmake ${CMAKE_SOURCE_DIR}/MemConfig.cmake)
|
||||
endfunction(gen_bspconfig)
|
||||
|
||||
function(get_drvlist)
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetaldrvlist_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/../../
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE output)
|
||||
endfunction(get_drvlist)
|
||||
|
||||
function(gen_drvconfig drvname)
|
||||
if ("${drvname}" STREQUAL "uartps" OR
|
||||
"${drvname}" STREQUAL "uartlite" OR
|
||||
"${drvname}" STREQUAL "uartpsv")
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetalconfig_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/${drvname}/src/ stdin
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${drvname}/src/
|
||||
RESULT_VARIABLE output)
|
||||
else()
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetalconfig_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/${drvname}/src/
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${drvname}/src/
|
||||
RESULT_VARIABLE output)
|
||||
endif()
|
||||
endfunction(gen_drvconfig)
|
||||
|
||||
function(gen_xparams)
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetal_xparameters_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/../../
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE output)
|
||||
endfunction(gen_xparams)
|
||||
|
||||
function(gen_linker)
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- baremetallinker_xlnx ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE output)
|
||||
endfunction(gen_linker)
|
||||
|
||||
function(gen_libconfig)
|
||||
execute_process(COMMAND lopper $ENV{SYSTEM_DTFILE} -- bmcmake_metadata_xlnx.py ${ESW_MACHINE} ${CMAKE_SOURCE_DIR}/ hwcmake_metadata ${CMAKE_SOURCE_DIR}/../../../../
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE output)
|
||||
endfunction(gen_libconfig)
|
||||
|
||||
macro(print_elf_size size_command app_name)
|
||||
if(DEFINED ${size_command})
|
||||
add_custom_command(
|
||||
TARGET ${app_name}.elf POST_BUILD
|
||||
COMMAND ${${size_command}} --format=berkeley ${app_name}.elf
|
||||
COMMAND ${${size_command}} --format=berkeley ${app_name}.elf > ${CMAKE_BINARY_DIR}/${app_name}.elf.size
|
||||
VERBATIM)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
function(find_project_type src_ext PROJECT_TYPE)
|
||||
set(cpp_extensions ".cpp;.cc;.CPP;.c++;.cxx")
|
||||
foreach(extension ${cpp_extensions})
|
||||
if (${extension} IN_LIST src_ext)
|
||||
set(PROJECT_TYPE "c++" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
set(PROJECT_TYPE "c" PARENT_SCOPE)
|
||||
endfunction()
|
@ -1,2 +1,5 @@
|
||||
add_subdirectory(freeRTOS)
|
||||
add_subdirectory(ps7_cortexa9_0)
|
||||
|
||||
|
||||
add_subdirectory(ps7_cortexa9_0)
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
|
||||
|
||||
add_subdirectory(libsrc/common/src)
|
||||
|
||||
|
||||
add_subdirectory(libsrc/gpiops)
|
||||
add_subdirectory(libsrc/scugic)
|
||||
add_subdirectory(libsrc/scutimer)
|
||||
@ -5,10 +10,6 @@ add_subdirectory(libsrc/scuwdt)
|
||||
add_subdirectory(libsrc/standalone)
|
||||
|
||||
|
||||
|
||||
add_subdirectory(libsrc/common/src)
|
||||
|
||||
add_subdirectory(libsrc/board_common/rfclk/src)
|
||||
add_subdirectory(libsrc/uartps)
|
||||
|
||||
add_subdirectory(libsrc/can/src)
|
||||
|
36
collect.cmake
Normal file
36
collect.cmake
Normal file
@ -0,0 +1,36 @@
|
||||
function (collector_create name base)
|
||||
set_property (GLOBAL PROPERTY "COLLECT_${name}_LIST")
|
||||
set_property (GLOBAL PROPERTY "COLLECT_${name}_BASE" "${base}")
|
||||
endfunction (collector_create)
|
||||
|
||||
function (collector_list var name)
|
||||
get_property (_list GLOBAL PROPERTY "COLLECT_${name}_LIST")
|
||||
set (${var} "${_list}" PARENT_SCOPE)
|
||||
endfunction (collector_list)
|
||||
|
||||
function (collector_base var name)
|
||||
get_property (_base GLOBAL PROPERTY "COLLECT_${name}_BASE")
|
||||
set (${var} "${_base}" PARENT_SCOPE)
|
||||
endfunction (collector_base)
|
||||
|
||||
function (collect name)
|
||||
collector_base (_base ${name})
|
||||
string(COMPARE NOTEQUAL "${_base}" "" _is_rel)
|
||||
set (_list)
|
||||
foreach (s IN LISTS ARGN)
|
||||
if (_is_rel)
|
||||
get_filename_component (s "${s}" ABSOLUTE)
|
||||
file (RELATIVE_PATH s "${_base}" "${s}")
|
||||
endif (_is_rel)
|
||||
list (APPEND _list "${s}")
|
||||
endforeach ()
|
||||
set_property (GLOBAL APPEND PROPERTY "COLLECT_${name}_LIST" "${_list}")
|
||||
endfunction (collect)
|
||||
|
||||
# Create global collectors
|
||||
collector_create (PROJECT_INC_DIRS "")
|
||||
collector_create (PROJECT_LIB_DIRS "")
|
||||
collector_create (PROJECT_LIB_DEPS "")
|
||||
collector_create (PROJECT_HDR_TESTS "")
|
||||
|
||||
# vim: expandtab:ts=2:sw=2:smartindent
|
Loading…
x
Reference in New Issue
Block a user