From 96455d5881718d96fd51362e969c9637ed423076 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Tue, 4 Sep 2018 14:34:06 -0500 Subject: [PATCH] build: support out of tree SoC definition Add the glue to make this work with SoC code outside of the tree. Signed-off-by: Anas Nashif --- CMakeLists.txt | 12 ++++++------ Kconfig.zephyr | 4 ++-- cmake/app/boilerplate.cmake | 5 ++++- cmake/dts.cmake | 2 +- cmake/kconfig.cmake | 1 + doc/CMakeLists.txt | 1 + soc/Kconfig | 4 ++-- 7 files changed, 17 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 17b272d4c94..226d834181b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,9 +50,9 @@ zephyr_library_named(zephyr) zephyr_include_directories( kernel/include arch/${ARCH}/include - soc/${ARCH}/${SOC_PATH} - soc/${ARCH}/${SOC_PATH}/include - soc/${ARCH}/${SOC_FAMILY}/include + ${SOC_DIR}/${ARCH}/${SOC_PATH} + ${SOC_DIR}/${ARCH}/${SOC_PATH}/include + ${SOC_DIR}/${ARCH}/${SOC_FAMILY}/include ${BOARD_DIR} include include/drivers @@ -295,7 +295,7 @@ else() set(LINKER_SCRIPT ${BOARD_DIR}/linker.ld) if(NOT EXISTS ${LINKER_SCRIPT}) # If not available, try an SoC specific linker file - set(LINKER_SCRIPT ${ZEPHYR_BASE}/soc/${ARCH}/${SOC_PATH}/linker.ld) + set(LINKER_SCRIPT ${SOC_DIR}/${ARCH}/${SOC_PATH}/linker.ld) endif() endif() @@ -337,9 +337,9 @@ add_subdirectory(misc) include(misc/generated/CMakeLists.txt) if(EXISTS soc/${ARCH}/CMakeLists.txt) - add_subdirectory(soc/${ARCH}) + add_subdirectory(${SOC_DIR}/${ARCH} soc/${ARCH}) else() - add_subdirectory(soc/${ARCH}/${SOC_PATH}) + add_subdirectory(${SOC_DIR}/${ARCH}/${SOC_PATH} soc/${ARCH}/${SOC_PATH}) endif() add_subdirectory(boards) diff --git a/Kconfig.zephyr b/Kconfig.zephyr index c9f1f79c469..7b01c9b3cfa 100644 --- a/Kconfig.zephyr +++ b/Kconfig.zephyr @@ -18,11 +18,11 @@ # Note: $ARCH and $BOARD_DIR might be glob patterns. source "$(BOARD_DIR)/Kconfig.defconfig" -source "soc/$(ARCH)/*/Kconfig.defconfig" +source "$(SOC_DIR)/$(ARCH)/*/Kconfig.defconfig" source "boards/Kconfig" -source "soc/Kconfig" +source "$(SOC_DIR)/Kconfig" source "arch/Kconfig" diff --git a/cmake/app/boilerplate.cmake b/cmake/app/boilerplate.cmake index 58e3ab7e366..aa8420458bb 100644 --- a/cmake/app/boilerplate.cmake +++ b/cmake/app/boilerplate.cmake @@ -195,8 +195,11 @@ set(CACHED_BOARD ${BOARD} CACHE STRING "Selected board") if(NOT BOARD_ROOT) set(BOARD_ROOT ${ZEPHYR_BASE}) endif() + if(NOT SOC_ROOT) - set(SOC_ROOT ${ZEPHYR_BASE}) + set(SOC_DIR ${ZEPHYR_BASE}/soc) +else() + set(SOC_DIR ${SOC_ROOT}/soc) endif() find_path(BOARD_DIR NAMES "${BOARD}_defconfig" PATHS ${BOARD_ROOT}/boards/*/* NO_DEFAULT_PATH) diff --git a/cmake/dts.cmake b/cmake/dts.cmake index bf556cbc854..f4cf4710053 100644 --- a/cmake/dts.cmake +++ b/cmake/dts.cmake @@ -90,7 +90,7 @@ if(CONFIG_HAS_DTS) if(EXISTS ${DTS_BOARD_FIXUP_FILE}) set(DTS_BOARD_FIXUP ${DTS_BOARD_FIXUP_FILE}) endif() - set_ifndef(DTS_SOC_FIXUP_FILE ${ZEPHYR_BASE}/soc/${ARCH}/${SOC_PATH}/dts.fixup) + set_ifndef(DTS_SOC_FIXUP_FILE ${SOC_DIR}/${ARCH}/${SOC_PATH}/dts.fixup) if(EXISTS ${DTS_SOC_FIXUP_FILE}) set(DTS_SOC_FIXUP ${DTS_SOC_FIXUP_FILE}) endif() diff --git a/cmake/kconfig.cmake b/cmake/kconfig.cmake index ea7a0698269..df8b9632ba6 100644 --- a/cmake/kconfig.cmake +++ b/cmake/kconfig.cmake @@ -22,6 +22,7 @@ set(ENV{KCONFIG_AUTOHEADER} ${AUTOCONF_H}) # files for other architectures set(ENV{ARCH} ${ARCH}) set(ENV{BOARD_DIR} ${BOARD_DIR}) +set(ENV{SOC_DIR} ${SOC_DIR}) add_custom_target( menuconfig diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f56b7dfda63..47b15e0979e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -117,6 +117,7 @@ add_custom_target( srctree=${ZEPHYR_BASE} BOARD_DIR=boards/*/*/ ARCH=* + SOC_DIR=soc/ KERNELVERSION=${PROJECT_VERSION} SRCARCH=x86 ${PYTHON_EXECUTABLE} scripts/genrest.py Kconfig ${RST_OUT}/doc/reference/kconfig/ diff --git a/soc/Kconfig b/soc/Kconfig index 6e167f10c7b..22b3d7c7ddd 100644 --- a/soc/Kconfig +++ b/soc/Kconfig @@ -2,11 +2,11 @@ choice prompt "SoC/CPU/Configuration Selection" -source "soc/$ENV_VAR_ARCH/*/Kconfig.soc" +source "$(SOC_DIR)/$(ARCH)/*/Kconfig.soc" endchoice menu "Hardware Configuration" -osource "soc/$ENV_VAR_ARCH/*/Kconfig" +osource "$(SOC_DIR)/$(ARCH)/*/Kconfig" endmenu