@@ -105,6 +105,66 @@ endif()
105105# Install the Rust library for eLinux
106106set (RUST_LIB_NAME "librust_lib_mechanix_terminal.so" )
107107
108+ # --- ObjectBox Library Setup ---
109+ set (OBX_VERSION "5.3.2" )
110+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64" )
111+ set (OBX_ARCH "aarch64" )
112+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64" )
113+ set (OBX_ARCH "x64" )
114+ else ()
115+ message (FATAL_ERROR "Unsupported architecture for ObjectBox: ${CMAKE_SYSTEM_PROCESSOR } " )
116+ endif ()
117+
118+ set (OBX_NAME "objectbox-linux-${OBX_ARCH} " )
119+ set (OBX_TARBALL "${OBX_NAME} .tar.gz" )
120+ set (OBX_URL "https://github.com/objectbox/objectbox-c/releases/download/v${OBX_VERSION} /${OBX_TARBALL} " )
121+
122+ # Version-scoped cache dir so a version bump always triggers a fresh download
123+ set (OBX_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR } /objectbox-${OBX_VERSION} -${OBX_ARCH} " )
124+ set (OBX_SO_FILE "${OBX_LIB_DIR} /lib/libobjectbox.so" )
125+
126+ if (NOT EXISTS "${OBX_SO_FILE} " )
127+ message (STATUS "Downloading ObjectBox ${OBX_VERSION} for ${OBX_ARCH} ..." )
128+
129+ set (OBX_TARBALL_PATH "${CMAKE_CURRENT_BINARY_DIR } /${OBX_TARBALL} " )
130+
131+ file (DOWNLOAD "${OBX_URL} " "${OBX_TARBALL_PATH} "
132+ SHOW_PROGRESS
133+ STATUS OBX_DL_STATUS
134+ TLS_VERIFY ON
135+ TIMEOUT 120
136+ )
137+
138+ list (GET OBX_DL_STATUS 0 OBX_DL_ERR)
139+ list (GET OBX_DL_STATUS 1 OBX_DL_MSG)
140+ if (OBX_DL_ERR)
141+ file (REMOVE "${OBX_TARBALL_PATH} " )
142+ message (FATAL_ERROR "Failed to download ObjectBox from ${OBX_URL} : ${OBX_DL_MSG} " )
143+ endif ()
144+
145+ file (MAKE_DIRECTORY "${OBX_LIB_DIR} " )
146+ execute_process (
147+ COMMAND ${CMAKE_COMMAND } -E tar xzf "${OBX_TARBALL_PATH} "
148+ WORKING_DIRECTORY "${OBX_LIB_DIR} "
149+ RESULT_VARIABLE OBX_TAR_ERR
150+ )
151+ if (OBX_TAR_ERR)
152+ message (FATAL_ERROR "Failed to extract ObjectBox tarball" )
153+ endif ()
154+
155+ file (REMOVE "${OBX_TARBALL_PATH} " )
156+
157+ if (NOT EXISTS "${OBX_SO_FILE} " )
158+ message (FATAL_ERROR "ObjectBox archive extracted but ${OBX_SO_FILE} was not found" )
159+ endif ()
160+ endif ()
161+
162+ # Expose as a proper imported target instead of a raw path
163+ add_library (objectbox SHARED IMPORTED GLOBAL )
164+ set_target_properties (objectbox PROPERTIES
165+ IMPORTED_LOCATION "${OBX_SO_FILE} "
166+ INTERFACE_INCLUDE_DIRECTORIES "${OBX_LIB_DIR} /include"
167+ )
108168# Check if we are cross-compiling for ARM64
109169if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_LIBRARY_ARCHITECTURE STREQUAL "aarch64-linux-gnu" )
110170 set (RUST_TARGET "aarch64-unknown-linux-gnu" )
@@ -119,3 +179,6 @@ else()
119179endif ()
120180
121181install (FILES "${RUST_LIB_SOURCE} " DESTINATION "${INSTALL_BUNDLE_LIB_DIR} " COMPONENT Runtime )
182+
183+ # Add ObjectBox library installation
184+ install (FILES "${OBX_SO_FILE} " DESTINATION "${INSTALL_BUNDLE_LIB_DIR} " COMPONENT Runtime )
0 commit comments