-
-
Notifications
You must be signed in to change notification settings - Fork 984
/
Copy pathCMakeLists.txt
66 lines (61 loc) · 3.56 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if(DEFINED ENABLE_USERAPPS)
set(USERAPP_TYPES ${ENABLE_USERAPPS} CACHE STRING "List of user apps to build into the firmware")
else ()
set(DEFAULT_USER_APP_TYPES "Apps::StopWatch")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Alarm")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Timer")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Steps")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::HeartRate")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Music")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Paint")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Paddle")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Twos")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Dice")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Metronome")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Navigation")
set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Weather")
#set(DEFAULT_USER_APP_TYPES "${DEFAULT_USER_APP_TYPES}, Apps::Motion")
set(USERAPP_TYPES "${DEFAULT_USER_APP_TYPES}" CACHE STRING "List of user apps to build into the firmware")
endif ()
if(NOT DEFINED DEFAULT_WATCHFACE_NAMES )
set(DEFAULT_WATCHFACE_NAMES "digital;analog;pinetimestyle;terminal;infineat;casioStyleG7710")
endif()
message("WATCH FACES\n-----------")
foreach(item ${DEFAULT_WATCHFACE_NAMES})
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/watchfaces/${item})
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/watchfaces/${item})
message(" * Watch face ${INFINITIME_WATCHFACE_NAME} enabled!")
list(APPEND DEFAULT_WATCHFACE_TYPES "${INFINITIME_WATCHFACE_NAMESPACE}")
list(APPEND WATCHFACE_SOURCES_LIST "${INFINITIME_WATCHFACE_SOURCES}")
string(APPEND WATCHFACE_INCLUDE "#include \"${INFINITIME_WATCHFACE_INCLUDES}\"\n")
endif()
endforeach()
set(WATCHFACE_SOURCES ${WATCHFACE_SOURCES_LIST} PARENT_SCOPE)
# Generate the list of watchface types necessary to instantiate WatchFaceTypeList<> needed in WatchFace.h
set(FIRST_ITERATION TRUE)
foreach (watchface IN LISTS DEFAULT_WATCHFACE_TYPES)
if (${FIRST_ITERATION})
string(APPEND WATCHFACE_TYPES "${watchface}")
set(FIRST_ITERATION FALSE)
else ()
string(APPEND WATCHFACE_TYPES ", ${watchface}")
endif ()
endforeach ()
# Generate the forward declarations needed in WatchFace.h
foreach (w IN LISTS DEFAULT_WATCHFACE_TYPES)
string(FIND ${w} "::" classIndex REVERSE)
string(LENGTH ${w} watchfaceFullLength)
math(EXPR watchfaceLength "${watchfaceFullLength} - (${classIndex} + 2)")
math(EXPR beginIndex "${classIndex}+2")
string(SUBSTRING ${w} ${beginIndex} ${watchfaceLength} className)
string(SUBSTRING ${w} 0 ${classIndex} namespaceName)
string(APPEND WATCHFACE_NAMESPACE "namespace ${namespaceName} { class ${className}; }\n")
endforeach ()
add_library(infinitime_apps INTERFACE)
target_sources(infinitime_apps INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/Apps.h")
target_include_directories(infinitime_apps INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/")
target_include_directories(infinitime_apps INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/../")
# Generate the list of user apps to be compiled into the firmware
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Apps.h.in ${CMAKE_CURRENT_BINARY_DIR}/Apps.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/WatchFaces.h.in ${CMAKE_CURRENT_BINARY_DIR}/WatchFaces.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/UserApps.h.in ${CMAKE_CURRENT_BINARY_DIR}/UserApps.h)