Skip to content

Commit e83d3ec

Browse files
committed
both classic and lite work
1 parent 2627510 commit e83d3ec

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

classes/greengrass-common.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Base Greengrass directory definitions
1+
# Common Greengrass definitions
22

33
GG_BASENAME = "greengrass/v2"
44
GG_ROOT = "${D}/${GG_BASENAME}"

classes/greengrass-lite-component.bbclass

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ python __anonymous() {
103103
}
104104

105105
# Installation function for Greengrass Lite components
106-
greengrass_lite_component_do_install() {
106+
do_install() {
107107
# Create component directories
108108
install -d ${D}${GGL_RECIPES_DIR}
109109
install -d ${D}${GGL_ARTIFACTS_DIR}
@@ -174,13 +174,9 @@ do_deploy() {
174174
}
175175

176176
# Add to install task
177-
EXPORT_FUNCTIONS do_install do_deploy
178177
addtask do_install after do_compile before do_package
179178
addtask do_deploy after do_install before do_package
180179

181-
# Default do_install implementation
182-
greengrass_lite_component_do_install[dirs] = "${D}"
183-
184180
# Package the appropriate directories based on mode
185181
FILES:${PN} += "${@'${GGL_PACKAGES_DIR}/*' if d.getVar('GREENGRASS_LITE_ZERO_COPY') == '1' else '${GGL_IMAGE_COMPONENTS_ROOT}/*'}"
186182

recipes-iot/aws-iot-greengrass/greengrass-component-helloworld-sdk-lite/CMakeLists.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,31 @@ project(hello-world-sdk-lite)
55
set(CMAKE_C_STANDARD 11)
66
set(CMAKE_C_STANDARD_REQUIRED ON)
77

8+
# Option to control library linking type (default: shared)
9+
option(USE_STATIC_LIBS "Link against static libraries instead of shared" OFF)
10+
811
# Find the AWS Greengrass SDK Lite
912
find_path(GGL_INCLUDE_DIR ggl/sdk.h)
10-
find_library(GGL_LIBRARY NAMES libggl-sdk.a ggl-sdk PATHS /usr/lib)
13+
14+
if(USE_STATIC_LIBS)
15+
# Prefer static library
16+
find_library(GGL_LIBRARY NAMES libggl-sdk.a PATHS /usr/lib)
17+
if(NOT GGL_LIBRARY)
18+
message(STATUS "Static library not found, falling back to shared")
19+
find_library(GGL_LIBRARY NAMES ggl-sdk libggl-sdk.so PATHS /usr/lib)
20+
else()
21+
message(STATUS "Using static Greengrass SDK Lite library: ${GGL_LIBRARY}")
22+
endif()
23+
else()
24+
# Prefer shared library (default)
25+
find_library(GGL_LIBRARY NAMES ggl-sdk libggl-sdk.so PATHS /usr/lib)
26+
if(NOT GGL_LIBRARY)
27+
message(STATUS "Shared library not found, falling back to static")
28+
find_library(GGL_LIBRARY NAMES libggl-sdk.a PATHS /usr/lib)
29+
else()
30+
message(STATUS "Using shared Greengrass SDK Lite library: ${GGL_LIBRARY}")
31+
endif()
32+
endif()
1133

1234
if(NOT GGL_INCLUDE_DIR OR NOT GGL_LIBRARY)
1335
message(FATAL_ERROR "AWS Greengrass SDK Lite not found")

recipes-iot/aws-iot-greengrass/greengrass-component-helloworld-sdk-lite_1.0.0.bb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ DEPENDS = "aws-greengrass-sdk-lite"
2020
# Skip QA check for buildpaths in debug symbols
2121
INSANE_SKIP:${PN}-dbg += "buildpaths"
2222

23+
# Package configuration options
24+
# Default: shared library linking
25+
# Add 'static' to PACKAGECONFIG to use static linking instead
26+
PACKAGECONFIG ??= ""
27+
PACKAGECONFIG[static] = "-DUSE_STATIC_LIBS=ON,-DUSE_STATIC_LIBS=OFF"
28+
2329
# Conditionally inherit the appropriate class based on variant
2430
# greengrass-component.bbclass = Classic Greengrass only
2531
# greengrass-lite-component.bbclass = Greengrass Lite only
@@ -92,4 +98,9 @@ do_install_ptest() {
9298
# Conditional runtime dependencies based on variant
9399
# Lite depends on greengrass-lite, Classic depends on greengrass-bin
94100
RDEPENDS:${PN} += "${@'greengrass-lite' if d.getVar('GREENGRASS_VARIANT') == 'lite' else 'greengrass-bin'}"
101+
102+
# Add runtime dependency on shared library package when using shared linking (default)
103+
# Only skip this dependency when explicitly using static linking
104+
RDEPENDS:${PN} += "${@'' if bb.utils.contains('PACKAGECONFIG', 'static', True, False, d) else 'aws-greengrass-sdk-lite'}"
105+
95106
RDEPENDS:${PN}-ptest = "${PN} bash grep"

0 commit comments

Comments
 (0)