File tree Expand file tree Collapse file tree 7 files changed +60
-25
lines changed
Expand file tree Collapse file tree 7 files changed +60
-25
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,22 @@ endfunction()
4848function (add_fprime_supplied_os_module NAMES SUFFIX )
4949 # Get first element of list
5050 list (GET NAMES 0 FIRST_ITEM)
51+
52+ # Ensure expected files with expected filenames exist
53+ if (NOT EXISTS "${CMAKE_CURRENT_LIST_DIR} /Default${FIRST_ITEM} .cpp" )
54+ message (FATAL_ERROR "${CMAKE_CURRENT_LIST_DIR} /Default${FIRST_ITEM} .cpp does not exist." )
55+ endif ()
56+
57+ foreach (NAME IN LISTS NAMES )
58+ if (NOT EXISTS "${CMAKE_CURRENT_LIST_DIR} /${NAME} .cpp" )
59+ message (FATAL_ERROR "${CMAKE_CURRENT_LIST_DIR} /${NAME} .cpp does not exist." )
60+ endif ()
61+ if (NOT EXISTS "${CMAKE_CURRENT_LIST_DIR} /${NAME} .hpp" )
62+ message (FATAL_ERROR "${CMAKE_CURRENT_LIST_DIR} /${NAME} .hpp does not exist." )
63+ endif ()
64+ endforeach ()
65+
66+ # Setup variables
5167 set (OS_MODULE_NAME "Os_${FIRST_ITEM} _${SUFFIX} " )
5268 # Clear variables
5369 set (SOURCE_FILES )
Original file line number Diff line number Diff line change 88restrict_platforms(Darwin)
99add_custom_target ("${FPRIME_CURRENT_MODULE} " )
1010
11- add_fprime_supplied_os_module (Cpu Darwin)
12- add_fprime_supplied_os_module (Memory Darwin)
11+ register_os_implementation (Cpu Darwin)
12+ register_os_implementation (Memory Darwin)
1313
1414# -----------------------------------------
1515### Os/Darwin/Cpu Section
Original file line number Diff line number Diff line change 88restrict_platforms(Linux)
99add_custom_target ("${FPRIME_CURRENT_MODULE} " )
1010
11- add_fprime_supplied_os_module (Cpu Linux)
12- add_fprime_supplied_os_module (Memory Linux)
11+ register_os_implementation (Cpu Linux)
12+ register_os_implementation (Memory Linux)
1313
1414# -----------------------------------------
1515### Os/Linux/Cpu Section
Original file line number Diff line number Diff line change @@ -22,11 +22,11 @@ set(MOD_DEPS config)
2222register_fprime_module(Os_Posix_Shared)
2323
2424# Set up Posix implementations
25- add_fprime_supplied_os_module ("File;FileSystem;Directory" Posix Os_Posix_Shared)
26- add_fprime_supplied_os_module ("Console" Posix)
27- add_fprime_supplied_os_module ("Task" Posix Os_Posix_Shared Fw_Time)
28- add_fprime_supplied_os_module ("Mutex;ConditionVariable" Posix Os_Posix_Shared)
29- add_fprime_supplied_os_module ("RawTime" Posix Os_Posix_Shared)
25+ register_os_implementation ("File;FileSystem;Directory" Posix Os_Posix_Shared)
26+ register_os_implementation ("Console" Posix)
27+ register_os_implementation ("Task" Posix Os_Posix_Shared Fw_Time)
28+ register_os_implementation ("Mutex;ConditionVariable" Posix Os_Posix_Shared)
29+ register_os_implementation ("RawTime" Posix Os_Posix_Shared)
3030
3131# -----------------------------------------
3232### Os/File/Posix Test Section
Original file line number Diff line number Diff line change 77####
88add_custom_target ("${FPRIME_CURRENT_MODULE} " )
99
10- add_fprime_supplied_os_module ("File;FileSystem;Directory" Stub)
11- add_fprime_supplied_os_module (Console Stub)
12- add_fprime_supplied_os_module (Task Stub)
13- add_fprime_supplied_os_module ("Mutex;ConditionVariable" Stub)
14- add_fprime_supplied_os_module (Cpu Stub)
15- add_fprime_supplied_os_module (Memory Stub)
16- add_fprime_supplied_os_module (Queue Stub)
17- add_fprime_supplied_os_module (RawTime Stub)
10+ register_os_implementation ("File;FileSystem;Directory" Stub)
11+ register_os_implementation (Console Stub)
12+ register_os_implementation (Task Stub)
13+ register_os_implementation ("Mutex;ConditionVariable" Stub)
14+ register_os_implementation (Cpu Stub)
15+ register_os_implementation (Memory Stub)
16+ register_os_implementation (Queue Stub)
17+ register_os_implementation (RawTime Stub)
1818
1919# Remainder of file is specific to UTs
2020if (NOT BUILD_TESTING)
Original file line number Diff line number Diff line change @@ -10,14 +10,14 @@ if (NOT BUILD_TESTING)
1010endif ()
1111add_custom_target ("${FPRIME_CURRENT_MODULE} " )
1212
13- add_fprime_supplied_os_module ("File;FileSystem;Directory" Test_Stub)
14- add_fprime_supplied_os_module (Console Test_Stub)
15- add_fprime_supplied_os_module (Task Test_Stub)
16- add_fprime_supplied_os_module ("Mutex;ConditionVariable" Test_Stub)
17- add_fprime_supplied_os_module (Cpu Test_Stub)
18- add_fprime_supplied_os_module (Memory Test_Stub)
19- add_fprime_supplied_os_module (Queue Test_Stub)
20- add_fprime_supplied_os_module (RawTime Test_Stub) # add Fw_Buffer here?
13+ register_os_implementation ("File;FileSystem;Directory" Test_Stub)
14+ register_os_implementation (Console Test_Stub)
15+ register_os_implementation (Task Test_Stub)
16+ register_os_implementation ("Mutex;ConditionVariable" Test_Stub)
17+ register_os_implementation (Cpu Test_Stub)
18+ register_os_implementation (Memory Test_Stub)
19+ register_os_implementation (Queue Test_Stub)
20+ register_os_implementation (RawTime Test_Stub) # add Fw_Buffer here?
2121
2222#### File Stub Testing ####
2323set (UT_SOURCE_FILES
Original file line number Diff line number Diff line change @@ -644,6 +644,25 @@ function(register_fprime_implementation IMPLEMENTATION IMPLEMENTOR)
644644 append_list_property("${ARGN} " TARGET "${IMPLEMENTOR} " PROPERTY "REQUIRED_SOURCE_FILES" )
645645endfunction ()
646646
647+ ####
648+ # Adds a named os implementation.
649+ #
650+ # Assumptions:
651+ # 1. NAMES is a list of 1 or more named files separated by ;
652+ # 2. There exists a file named Default${FIRST_ITEM}, where FIRST_ITEM is the first element in NAME, in the same
653+ # directory where this cmake function was called
654+ # 3. For each item e listed in NAMES, there exists a file called ${e}.hpp and ${e}.cpp in the same directory
655+ # where this cmake function was called
656+ #
657+ # NAMES: list of named files to add to this module. The first will be treated as the name of the module.
658+ # i.e. File;Directory;FileSystem will contain the file, directory, and filesystem files in a module called File.
659+ # SUFFIX: suffix to implementation (e.g. Posix)
660+ # ARGN: extra MOD_DEPS to add (e.g. Fw_Time)
661+ ####
662+ function (register_os_implementation NAMES SUFFIX )
663+ add_fprime_supplied_os_module("${NAMES} " "${SUFFIX} " "${ARGN} " )
664+ endfunction ()
665+
647666####
648667# Function `choose_fprime_implementation`:
649668#
You can’t perform that action at this time.
0 commit comments