Skip to content

Commit b5a8e51

Browse files
Add os supplied cmake wrapper (#3117)
* Adding checks for expected files. These files should be named with an expected format for OSAL * Adding wrapper * using wrapper function call in OS files
1 parent dd979c2 commit b5a8e51

File tree

7 files changed

+60
-25
lines changed

7 files changed

+60
-25
lines changed

Os/CMakeLists.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,22 @@ endfunction()
4848
function(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)

Os/Darwin/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
restrict_platforms(Darwin)
99
add_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

Os/Linux/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
restrict_platforms(Linux)
99
add_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

Os/Posix/CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ set(MOD_DEPS config)
2222
register_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

Os/Stub/CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
####
88
add_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
2020
if (NOT BUILD_TESTING)

Os/Stub/test/CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ if (NOT BUILD_TESTING)
1010
endif ()
1111
add_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 ####
2323
set(UT_SOURCE_FILES

cmake/API.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,25 @@ function(register_fprime_implementation IMPLEMENTATION IMPLEMENTOR)
644644
append_list_property("${ARGN}" TARGET "${IMPLEMENTOR}" PROPERTY "REQUIRED_SOURCE_FILES")
645645
endfunction()
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
#

0 commit comments

Comments
 (0)