From 7d130943eef9df886db389bb3ef701a545768d9d Mon Sep 17 00:00:00 2001 From: Dylan Marcus Date: Wed, 24 Aug 2022 17:16:53 +0100 Subject: [PATCH 1/4] shrinking the dylib compilation to avoid symlinks --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index a280ae4..8c33c22 100644 --- a/Makefile +++ b/Makefile @@ -38,8 +38,8 @@ else LD_FLAGS:=-flat_namespace -undefined suppress -dynamiclib $(LD_FLAGS)-install_name endif LIB_SO_NAME:=lib$(APP_NAME).$(EXTENSION) -LIB_SHORT_NAME:=$(LIB_SO_NAME).$(VERSION_MAJOR) -LIB_NAME:=$(LIB_SO_NAME).$(VERSION) +# LIB_SHORT_NAME:=$(LIB_SO_NAME).$(VERSION_MAJOR) +# LIB_NAME:=$(LIB_SO_NAME).$(VERSION) ifeq ($(MACHINE),x86) ARCH=-m32 @@ -69,7 +69,7 @@ LIBMETAWEAR_JAVASCRIPT_PATH:=$(BINDINGS_DIR)/javascript/libmetawear-path.js OBJS:=$(addprefix $(REAL_BUILD_DIR)/,$(SRCS:%.cpp=%.o)) DEPS:=$(OBJS:%.o=%.d) -APP_OUTPUT:=$(REAL_DIST_DIR)/$(LIB_NAME) +APP_OUTPUT:=$(REAL_DIST_DIR)/$(LIB_SO_NAME) build: $(APP_OUTPUT) $(LIBMETAWEAR_JAVASCRIPT_PATH) @@ -87,8 +87,8 @@ $(REAL_DIST_DIR): $(OBJS): | $(MODULES_BUILD_DIR) $(APP_OUTPUT): $(OBJS) | $(REAL_DIST_DIR) $(CXX) -o $@ $(LD_FLAGS) $^ - ln -sf $(LIB_NAME) $(REAL_DIST_DIR)/$(LIB_SHORT_NAME) - ln -sf $(LIB_SHORT_NAME) $(REAL_DIST_DIR)/$(LIB_SO_NAME) +# ln -sf $(LIB_NAME) $(REAL_DIST_DIR)/$(LIB_SHORT_NAME) +# ln -sf $(LIB_SHORT_NAME) $(REAL_DIST_DIR)/$(LIB_SO_NAME) PUBLISH_NAME:=$(APP_NAME)-$(VERSION).tar PUBLISH_NAME_ZIP:=$(PUBLISH_NAME).gz From 865da9224df51326b0c841a5aafc757c36d6b761 Mon Sep 17 00:00:00 2001 From: Dylan Marcus Date: Mon, 12 Jun 2023 19:58:42 -0400 Subject: [PATCH 2/4] changes cmake to make it easier to include as a dependency --- CMakeLists.txt | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c340134..f3f59f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ endforeach() # message(STATUS ${HEADERS}) add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) #---------------- # Compiler flags @@ -101,15 +102,35 @@ if(MSVC OR WIN32) endif() endif() -set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${VERSION}) -set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${DIST_PATH}/${CMAKE_BUILD_TYPE}) +set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${VERSION} + EXPORT_NAME ${PROJECT_NAME} + OUTPUT_NAME ${PROJECT_NAME} + ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${DIST_PATH}/${CMAKE_BUILD_TYPE}) message(STATUS "Output Dir: ${PROJECT_BINARY_DIR}/${DIST_PATH}/${CMAKE_BUILD_TYPE}") +# Configure include directories +target_include_directories(${PROJECT_NAME} INTERFACE + $ + $) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_property(TARGET ${PROJECT_NAME} PROPERTY INSTALL_RPATH $ORIGIN) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") + set_property(TARGET ${PROJECT_NAME} PROPERTY INSTALL_RPATH @loader_path) +endif() + #---------------- # Install #---------------- -message(STATUS "CMAKE_INSTALL_PREFIX='${CMAKE_INSTALL_PREFIX}'") -install(TARGETS ${PROJECT_NAME} DESTINATION ${DIST_PATH}/${CMAKE_BUILD_TYPE}) +install(TARGETS ${PROJECT_NAME} DESTINATION "${PROJECT_BINARY_DIR}/${DIST_PATH}/${CMAKE_BUILD_TYPE}") + +install( + TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) #------------------------------------------------------------------------------- \ No newline at end of file From 1e93ec307f20d66746468b2981b8c79d09b1b89f Mon Sep 17 00:00:00 2001 From: Dylan Marcus Date: Mon, 12 Jun 2023 20:02:58 -0400 Subject: [PATCH 3/4] added to the readme --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index fa117b3..6a74695 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,16 @@ dist/ ``` +### CMake +For cross-platform inclusion of this SDK via cmake just clone thie repository and include the folder as a subdirectory to the parent project and apply the appropriate target links similar to below: +``` +# Adds Metawear SDK as a dependency +message(STATUS "Device: Adding Metawear SDK Support") +add_subdirectory(MetaWear-SDK-Cpp) +target_include_directories(${PROJECT_NAME} PRIVATE MetaWear-SDK-Cpp/src) +target_link_libraries(${PROJECT_NAME} PUBLIC metawear metawear::metawear) +``` + ## Testing Unit tests for the library are written in Python (min v3.4.1) and can be invoked by calling the test target. From a6debd8ad795d65e13cce7abe01d806937c9c41d Mon Sep 17 00:00:00 2001 From: Dylan Marcus Date: Mon, 12 Jun 2023 20:10:04 -0400 Subject: [PATCH 4/4] reverse makefile to match master --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index f530eff..802cd27 100644 --- a/Makefile +++ b/Makefile @@ -38,8 +38,8 @@ else LD_FLAGS:=-flat_namespace -undefined suppress -dynamiclib $(LD_FLAGS)-install_name endif LIB_SO_NAME:=lib$(APP_NAME).$(EXTENSION) -# LIB_SHORT_NAME:=$(LIB_SO_NAME).$(VERSION_MAJOR) -# LIB_NAME:=$(LIB_SO_NAME).$(VERSION) +LIB_SHORT_NAME:=$(LIB_SO_NAME).$(VERSION_MAJOR) +LIB_NAME:=$(LIB_SO_NAME).$(VERSION) ifeq ($(MACHINE),x86) ARCH=-m32 @@ -69,7 +69,7 @@ LIBMETAWEAR_JAVASCRIPT_PATH:=$(BINDINGS_DIR)/javascript/libmetawear-path.js OBJS:=$(addprefix $(REAL_BUILD_DIR)/,$(SRCS:%.cpp=%.o)) DEPS:=$(OBJS:%.o=%.d) -APP_OUTPUT:=$(REAL_DIST_DIR)/$(LIB_SO_NAME) +APP_OUTPUT:=$(REAL_DIST_DIR)/$(LIB_NAME) build: $(APP_OUTPUT) $(LIBMETAWEAR_JAVASCRIPT_PATH) @@ -87,8 +87,8 @@ $(REAL_DIST_DIR): $(OBJS): | $(MODULES_BUILD_DIR) $(APP_OUTPUT): $(OBJS) | $(REAL_DIST_DIR) $(CXX) -o $@ $(LD_FLAGS) $^ -# ln -sf $(LIB_NAME) $(REAL_DIST_DIR)/$(LIB_SHORT_NAME) -# ln -sf $(LIB_SHORT_NAME) $(REAL_DIST_DIR)/$(LIB_SO_NAME) + ln -sf $(LIB_NAME) $(REAL_DIST_DIR)/$(LIB_SHORT_NAME) + ln -sf $(LIB_SHORT_NAME) $(REAL_DIST_DIR)/$(LIB_SO_NAME) PUBLISH_NAME:=$(APP_NAME)-$(VERSION).tar PUBLISH_NAME_ZIP:=$(PUBLISH_NAME).gz