M .github/workflows/releases.yaml => .github/workflows/releases.yaml +1 -1
@@ 40,7 40,7 @@ jobs:
run: |
export JOBS=${JOBS:-$(nproc)} && \
echo "JOBS=${JOBS}" && \
- ./configure.sh pure rt1051 RelWithDebInfo -DPURE_HW_TARGET=T6 -G Ninja && \
+ ./configure.sh pure rt1051 RelWithDebInfo -DWITH_BOARD_REVISION=6 -G Ninja && \
pushd build-purephone-rt1051-RelWithDebInfo && \
ninja -j ${JOBS} Pure&& \
ninja -j ${JOBS} PurePhone-UpdatePackage && \
M CMakeLists.txt => CMakeLists.txt +10 -6
@@ 7,6 7,12 @@ project(PureOS)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
+include(Product)
+include(Board)
+
+validate_product_selection()
+select_board()
+
include(Colours)
include(CCacheConfig)
include(ProjectConfig)
@@ 20,12 26,11 @@ include(FetchBootloader)
include(AddPureUpdater)
include(DiskImage)
include(AddPackage)
-include(Product)
-
-validate_product_selection()
message("Selected product: ${PRODUCT}")
-message("PROJECT_TARGET: ${PROJECT_TARGET}")
+message("Selected board: ${BOARD}")
+message("Board revision: ${BOARD_REVISION}")
+message("PROJECT_TARGET: ${PROJECT_TARGET}")
message("TARGET_COMPILE_DEFINITIONS: ${TARGET_COMPILE_OPTIONS}")
message("TARGET_LIBRARIES: ${TARGET_LIBRARIES}")
message("TARGET_LINKER_FLAGS: ${TARGET_LINKER_FLAGS}")
@@ 156,9 161,8 @@ add_custom_target(
"Generating version info"
)
-
copy_updater_bin()
copy_updater_ver()
fetch_ecoboot()
-add_subdirectory(products)
+add_subdirectory(products)
M board/CMakeLists.txt => board/CMakeLists.txt +2 -1
@@ 1,2 1,3 @@
add_library(board STATIC)
-add_subdirectory(${PROJECT_TARGET_NAME})
+
+add_board_subdirectory()
A cmake/modules/Board.cmake => cmake/modules/Board.cmake +53 -0
@@ 0,0 1,53 @@
+include(Utils)
+
+set(WITH_BOARD_REVISION CACHE STRING "Board revision" )
+
+function(add_board_subdirectory)
+ if(NOT ${ARGV0} STREQUAL "")
+ set(ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/${ARGV0})
+ else()
+ set(ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})
+ endif()
+
+ if(NOT DEFINED BOARD)
+ message(FATAL_ERROR "Board is not defined")
+ endif()
+
+ if (${BOARD} STREQUAL "bellpx" OR ${BOARD} STREQUAL "puretx")
+ add_subdirectory_if_exists(${ROOT_DIR}/rt1051)
+ endif ()
+
+ add_subdirectory_if_exists(${ROOT_DIR}/${BOARD})
+endfunction()
+
+macro(select_board)
+ if(NOT DEFINED PRODUCT)
+ message(FATAL_ERROR "Cannot determine board without knowing the product")
+ endif()
+
+ set(BOARD_REVISION 1)
+
+ if(${PROJECT_TARGET} STREQUAL "TARGET_Linux")
+ set(BOARD linux)
+ elseif(${PROJECT_TARGET} STREQUAL "TARGET_RT1051")
+ if(${PRODUCT} STREQUAL "PurePhone")
+ set(BOARD puretx)
+ set(BOARD_REVISION 7)
+ elseif(${PRODUCT} STREQUAL "BellHybrid")
+ set(BOARD bellpx)
+ else()
+ message(FATAL_ERROR "Unknown product: ${PRODUCT}")
+ endif()
+ else()
+ message(FATAL_ERROR "Unsupported target: ${PROJECT_TARGET}")
+ endif()
+
+ # overwrite board revision with user selection
+ if(NOT "${WITH_BOARD_REVISION}" STREQUAL "")
+ set(BOARD_REVISION ${WITH_BOARD_REVISION})
+ endif()
+
+ if("${BOARD}" STREQUAL "")
+ message(FATAL_ERROR "Cannot determine board selection.")
+ endif()
+endmacro()
M cmake/modules/FetchBootloader.cmake => cmake/modules/FetchBootloader.cmake +1 -1
@@ 1,6 1,6 @@
function(fetch_ecoboot)
set(ECOBOOT_ASSET_NAME ecoboot.bin)
- if(${PURE_HW_TARGET} STREQUAL "T6")
+ if(${BOARD} STREQUAL "puretx" AND ${BOARD_REVISION} LESS_EQUAL 6)
set(ECOBOOT_ASSET_NAME ecoboot_T6.bin)
endif()
M cmake/modules/ProjectConfig.cmake => cmake/modules/ProjectConfig.cmake +6 -8
@@ 49,17 49,15 @@ else()
set (USB_DEVICE_PRODUCT_ID 0x0622 CACHE INTERNAL "Sets USB_DEVICE_PRODUCT_ID to Windows MTP Simulator Product ID")
endif()
-option(PURE_HW_TARGET "PURE_HW_TARGET" T7)
-if (${PURE_HW_TARGET} STREQUAL "T6")
- message("Building for T6")
- set (MEMORY_LINKER_FILE "memory_T6.ld")
- set (PROJECT_CONFIG_USER_DYNMEM_SIZE 9*1024*1024 CACHE INTERNAL "")
- set (PURE_SDRAM_64_MB 0 CACHE INTERNAL "")
-else()
- message("Building for T7 - 64MB SDRAM !")
+if(${BOARD} STREQUAL "puretx" AND ${BOARD_REVISION} EQUAL 7)
+ message("Building for T7 - 64MB SDRAM")
set (MEMORY_LINKER_FILE "memory_T7.ld")
set (PROJECT_CONFIG_USER_DYNMEM_SIZE 28*1024*1024 CACHE INTERNAL "")
set (PURE_SDRAM_64_MB 1 CACHE INTERNAL "")
+else()
+ set (MEMORY_LINKER_FILE "memory_T6.ld")
+ set (PROJECT_CONFIG_USER_DYNMEM_SIZE 9*1024*1024 CACHE INTERNAL "")
+ set (PURE_SDRAM_64_MB 0 CACHE INTERNAL "")
endif()
#Config options described in README.md
M cmake/modules/Utils.cmake => cmake/modules/Utils.cmake +7 -0
@@ 40,3 40,10 @@ function(strip_executable TARGET)
)
endif()
endfunction()
+
+function(add_subdirectory_if_exists)
+ set(_DIR ${ARGV0})
+ if(IS_DIRECTORY ${_DIR})
+ add_subdirectory(${_DIR})
+ endif()
+endfunction()