ext: libmetal: Change build integration so its not recursive

With recent changes to libmetal we can now include and build it directly
as a zephyr library rather than doing a recursive make.  We remove
ext/hal/libmetal.cmake as part of this change and introduce a Kconfig
option for libmetal.

This is a partial fix for issue #7673.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2018-05-22 10:52:12 -05:00 committed by Kumar Gala
commit f6fb8b8aee
10 changed files with 33 additions and 21 deletions

View file

@ -1,5 +1,6 @@
add_subdirectory(atmel)
add_subdirectory(cmsis)
add_subdirectory_if_kconfig(libmetal)
add_subdirectory(nordic)
add_subdirectory(nxp)
add_subdirectory_if_kconfig(qmsi)

View file

@ -16,6 +16,8 @@ source "ext/hal/altera/Kconfig"
source "ext/hal/cmsis/Kconfig"
source "ext/hal/libmetal/Kconfig"
source "ext/hal/nordic/Kconfig"
source "ext/hal/nxp/mcux/Kconfig"

View file

@ -0,0 +1,12 @@
#
# Copyright (c) 2018 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#
set(WITH_ZEPHYR 1)
set(WITH_ZEPHYR_LIB 1)
set(WITH_DOC OFF CACHE BOOL "" FORCE)
set(WITH_DEFAULT_LOGGER OFF CACHE BOOL "" FORCE)
add_subdirectory(libmetal)

12
ext/hal/libmetal/Kconfig Normal file
View file

@ -0,0 +1,12 @@
#
# Copyright (c) 2018 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#
config LIBMETAL
bool
prompt "libmetal Support"
default n
help
This option enables the libmetal HAL abstraction layer

View file

@ -1,12 +0,0 @@
include(ExternalProject)
ExternalProject_Add(
libmetal # Name for custom target
SOURCE_DIR $ENV{ZEPHYR_BASE}/ext/hal/libmetal/libmetal/
INSTALL_COMMAND "" # This particular build system has no install command
CMAKE_ARGS -DWITH_ZEPHYR=ON -DBOARD=${BOARD} -DWITH_DEFAULT_LOGGER=OFF -DWITH_DOC=OFF
)
ExternalProject_Get_property(libmetal BINARY_DIR)
set(LIBMETAL_INCLUDE_DIR ${BINARY_DIR}/lib/include)
set(LIBMETAL_LIBRARY ${BINARY_DIR}/lib/libmetal.a)

View file

@ -1,13 +1,11 @@
include(ExternalProject)
include($ENV{ZEPHYR_BASE}/ext/hal/libmetal/libmetal.cmake)
ExternalProject_Add(
open-amp
SOURCE_DIR $ENV{ZEPHYR_BASE}/ext/lib/ipc/open-amp/
DEPENDS libmetal
DEPENDS metal
INSTALL_COMMAND "" # This particular build system has no install command
CMAKE_ARGS -DWITH_ZEPHYR=ON -DWITH_PROXY=OFF -DBOARD=${BOARD} -DLIBMETAL_INCLUDE_DIR=${LIBMETAL_INCLUDE_DIR} -DLIBMETAL_LIB=${LIBMETAL_LIBRARY}
CMAKE_ARGS -DWITH_ZEPHYR=ON -DWITH_PROXY=OFF -DBOARD=${BOARD} -DLIBMETAL_INCLUDE_DIR=${ZEPHYR_BINARY_DIR}/ext/hal/libmetal/libmetal/lib/include -DLIBMETAL_LIB=${ZEPHYR_BINARY_DIR}/ext/hal/libmetal/libmetal/lib
)
ExternalProject_Get_property(open-amp SOURCE_DIR)

View file

@ -29,11 +29,9 @@ ExternalProject_Add(
)
add_dependencies(core_m0_inc_target openamp_remote)
target_include_directories(app PRIVATE ${LIBMETAL_INCLUDE_DIR}
${OPENAMP_INCLUDE_DIR} ${PLATFORM_DIR})
target_include_directories(app PRIVATE ${OPENAMP_INCLUDE_DIR} ${PLATFORM_DIR})
target_link_libraries(app
${OPENAMP_LIBRARY}
${LIBMETAL_LIBRARY}
${ZEPHYR_KERNEL_LIBRARY})

View file

@ -6,3 +6,4 @@ CONFIG_SLAVE_IMAGE_MCUX="${ZEPHYR_BINARY_DIR}/../openamp_remote-prefix/src/opena
CONFIG_TIMESLICE_SIZE=1
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_HEAP_MEM_POOL_SIZE=4096
CONFIG_LIBMETAL=y

View file

@ -14,12 +14,11 @@ target_sources(app PRIVATE src/main_remote.c ${PLATFORM_DIR}/platform.c ${PLATFO
include($ENV{ZEPHYR_BASE}/ext/lib/ipc/open-amp.cmake)
target_include_directories(app PRIVATE ${LIBMETAL_INCLUDE_DIR} ${OPENAMP_INCLUDE_DIR} ${PLATFORM_DIR})
target_include_directories(app PRIVATE ${OPENAMP_INCLUDE_DIR} ${PLATFORM_DIR})
add_dependencies(app open-amp)
target_link_libraries(app
${OPENAMP_LIBRARY}
${LIBMETAL_LIBRARY}
${ZEPHYR_KERNEL_LIBRARY})

View file

@ -4,3 +4,4 @@ CONFIG_IPM=y
CONFIG_IPM_MCUX=y
CONFIG_PLATFORM_SPECIFIC_INIT=n
CONFIG_HEAP_MEM_POOL_SIZE=4096
CONFIG_LIBMETAL=y