Watch face selection at build time

Replace the options that allowed to select the user apps independently by a single string variable that contains the ordered list of apps to build.
This commit is contained in:
Jean-François Milants 2023-12-19 16:37:04 +01:00 committed by JF
parent f2996f54a8
commit 1ad7840072
2 changed files with 8 additions and 48 deletions

View file

@ -34,18 +34,11 @@ endif()
set(TARGET_DEVICE "PINETIME" CACHE STRING "Target device") set(TARGET_DEVICE "PINETIME" CACHE STRING "Target device")
set_property(CACHE TARGET_DEVICE PROPERTY STRINGS PINETIME MOY_TFK5 MOY_TIN5 MOY_TON5 MOY_UNK) set_property(CACHE TARGET_DEVICE PROPERTY STRINGS PINETIME MOY_TFK5 MOY_TIN5 MOY_TON5 MOY_UNK)
option(ENABLE_APP_STOPWATCH "Enable the Stopwatch application" True) if(ENABLE_USERAPPS)
option(ENABLE_APP_ALARM "Enable the Alarm application" True) set(USERAPP_TYPES ${ENABLE_USERAPPS})
option(ENABLE_APP_TIMER "Enable the Timer application" True) else ()
option(ENABLE_APP_STEPS "Enable the Steps application" True) set(USERAPP_TYPES "Apps::Navigation, Apps::StopWatch, Apps::Alarm, Apps::Timer, Apps::Steps, Apps::HeartRate, Apps::Music, Apps::Paint, Apps::Paddle, Apps::Twos, Apps::Metronome")
option(ENABLE_APP_HEARTRATE "Enable the HeartRate application" True) endif ()
option(ENABLE_APP_MUSIC "Enable the Music application" True)
option(ENABLE_APP_PAINT "Enable the Paint application" True)
option(ENABLE_APP_PADDLE "Enable the Paddle game" True)
option(ENABLE_APP_TWOS "Enable the Twos game" True)
option(ENABLE_APP_METRONOME "Enable the Metronome application" True)
option(ENABLE_APP_NAVIGATION "Enable the Navigation application" True)
option(ENABLE_APP_MOTION "Enable the Motion application" False)
set(PROJECT_GIT_COMMIT_HASH "") set(PROJECT_GIT_COMMIT_HASH "")
@ -77,34 +70,13 @@ if(BUILD_RESOURCES)
else() else()
message(" * Build resources : Disabled") message(" * Build resources : Disabled")
endif() endif()
message(" * User apps : " ${USERAPP_TYPES})
set(VERSION_EDIT_WARNING "// Do not edit this file, it is automatically generated by CMAKE!") set(VERSION_EDIT_WARNING "// Do not edit this file, it is automatically generated by CMAKE!")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/Version.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Version.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/Version.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docker/post_build.sh.in ${CMAKE_CURRENT_BINARY_DIR}/post_build.sh) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docker/post_build.sh.in ${CMAKE_CURRENT_BINARY_DIR}/post_build.sh)
function(AddToListIfEnabled list enabled type)
if(${enabled})
list(APPEND ${list} ${type})
endif ()
#return(PROPAGATE ${list})
set(${list} "${${list}}" PARENT_SCOPE)
endfunction()
# Generate the list of user apps to be compiled into the firmware # Generate the list of user apps to be compiled into the firmware
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_STOPWATCH} "Apps::StopWatch")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_ALARM} "Apps::Alarm")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_TIMER} "Apps::Timer")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_STEPS} "Apps::Steps")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_HEARTRATE} "Apps::HeartRate")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_MUSIC} "Apps::Music")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_PAINT} "Apps::Paint")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_PADDLE} "Apps::Paddle")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_TWOS} "Apps::Twos")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_METRONOME} "Apps::Metronome")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_NAVIGATION} "Apps::Navigation")
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_MOTION} "Apps::Motion")
list(JOIN USERAPP_TYPES_LIST "," USERAPP_TYPES)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/displayapp/Apps.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/displayapp/Apps.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/displayapp/Apps.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/displayapp/Apps.h)
add_subdirectory(src) add_subdirectory(src)

View file

@ -159,22 +159,10 @@ If your application is a **user** application, you don't need to add anything in
everything will be automatically generated for you. everything will be automatically generated for you.
The user application will also be automatically be added to the app launcher menu. The user application will also be automatically be added to the app launcher menu.
Since the list of **user** application is generated by CMake, add a new `option` in the main [CMakeLists.txt file](../../CMakeLists.txt). The application will be built by default if the value is set to `True`. : Since the list of **user** application is generated by CMake, you need to add the variable `ENABLE_USERAPPS` to the command line of CMake. This variable must be set with a string composed of an ordered list of the **user** applications that must be built into the firmware. The items of the list are fields from the enumeration `Apps`. Ex : build the firmware with 3 user application : Alarm, Timer and MyApp (the application will be listed in this specific order in the application menu).
```cmake ```cmake
option(ENABLE_APP_MYAPP "Enable the MyApp application" True) $ cmake ... -DENABLE_USERAPPS="Apps::Alarm, Apps::Timer, Apps::MyApp" ...
```
The default value can be overridden by passing an additional parameter to the command line of CMake :
```cmake
$ cmake ... -DENABLE_APP_MYAPP=True ...
```
Then add your **user app** to the list of apps by calling `AddToListIfEnabled()` :
```cmake
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_MYAPP} "Apps::MyApp")
``` ```
You should now be able to [build](../buildAndProgram.md) the firmware You should now be able to [build](../buildAndProgram.md) the firmware