Skip to content

Makefile: Copy shared library files from addons libs to exe folder #8046

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 12, 2024
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -168,13 +168,15 @@ ReleaseABI: $(TARGET)
ifneq ($(strip $(PROJECT_ADDONS_DATA)),)
@$(MAKE) $(JOBS) copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)"
endif
@$(MAKE) $(JOBS) copyaddonslibs ADDONS_SHARED_LIBS_SO="$(ADDONS_SHARED_LIBS_SO)" ADDONS_SHARED_LIBS_DLL="$(ADDONS_SHARED_LIBS_DLL)" ADDONS_SHARED_LIBS_DYLIB="$(ADDONS_SHARED_LIBS_DYLIB)"
@$(MAKE) $(JOBS) afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_RELEASE)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET)
@$(PROJECT_AFTER)

DebugABI: $(TARGET)
ifneq ($(strip $(PROJECT_ADDONS_DATA)),)
@$(MAKE) $(JOBS) copyaddonsdata PROJECT_ADDONS_DATA="$(PROJECT_ADDONS_DATA)"
endif
@$(MAKE) $(JOBS) copyaddonslibs ADDONS_SHARED_LIBS_SO="$(ADDONS_SHARED_LIBS_SO)" ADDONS_SHARED_LIBS_DLL="$(ADDONS_SHARED_LIBS_DLL)" ADDONS_SHARED_LIBS_DYLIB="$(ADDONS_SHARED_LIBS_DYLIB)"
@$(MAKE) $(JOBS) afterplatform BIN_NAME=$(BIN_NAME) ABIS_TO_COMPILE="$(ABIS_TO_COMPILE_DEBUG)" RUN_TARGET=$(RUN_TARGET) TARGET=$(TARGET)
@$(PROJECT_AFTER)

Expand Down Expand Up @@ -453,6 +455,25 @@ copyaddonsdata:
@mkdir -p bin/data
@cp -rf $(PROJECT_ADDONS_DATA) bin/data/

copyaddonslibs:
@if [ -n "$(ADDONS_SHARED_LIBS_SO)" ]; then \
echo "Copying shared libraries"; \
for lib in $(ADDONS_SHARED_LIBS_SO); do \
cp -f $$lib bin/; \
done \
fi
@if [ -n "$(ADDONS_SHARED_LIBS_DLL)" ]; then \
echo "Copying shared libraries"; \
for lib in $(ADDONS_SHARED_LIBS_DLL); do \
cp -f $$lib bin/; \
done \
fi
@if [ -n "$(ADDONS_SHARED_LIBS_DYLIB)" ]; then \
echo "Copying shared libraries"; \
for lib in $(ADDONS_SHARED_LIBS_DYLIB); do \
cp -f $$lib bin/; \
done \
fi
help:
@echo
@echo openFrameworks universal makefile
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,13 @@ define parse_addons_libraries
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIB_PATHS = $(filter-out $(ADDON_LIBS_EXCLUDE),$(addsuffix /libs/*/lib/$(ABI_LIB_SUBPATH), $1))) \
$(eval PARSED_ALL_PLATFORM_LIBS = $(shell $(FIND) $(PARSED_ADDONS_LIBS_PLATFORM_LIB_PATHS) -type d 2> /dev/null | grep -v "/\.[^\.]" )) \
$(if $(PARSED_ALL_PLATFORM_LIBS), \
$(eval ADDONS_SHARED_LIBS_SO = $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.so 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval ADDONS_SHARED_LIBS_DLL = $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.dll 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval ADDONS_SHARED_LIBS_DYLIB = $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.dylib 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_STATICS = $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.a 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED = $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.so 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED += $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.dylib 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED += $(shell $(FIND) $(PARSED_ALL_PLATFORM_LIBS) -name *.dll 2> /dev/null | grep -v "/\.[^\.]" )) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED = $(ADDONS_SHARED_LIBS_SO)) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED += $(ADDONS_SHARED_LIBS_DLL)) \
$(eval PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED += $(ADDONS_SHARED_LIBS_DYLIB)) \
$(eval PARSED_ADDONS_LIBS = $(PARSED_ADDONS_LIBS_PLATFORM_LIBS_STATICS)) \
$(eval PARSED_ADDONS_LIBS += $(PARSED_ADDONS_LIBS_PLATFORM_LIBS_SHARED)) \
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ PLATFORM_CXXFLAGS += $(PLATFORM_CXXVER)
# Note: Leave a leading space when adding list items with the += operator
################################################################################

PLATFORM_LDFLAGS = -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections
PLATFORM_LDFLAGS = -Wl,-rpath=./libs:./bin/libs:./ -Wl,--as-needed -Wl,--gc-sections

ifeq ($(OF_USING_STD_FS),1)
# gcc 8 need special file system linking with -lstdc++fs. gcc 9 onwards doesn't
Expand Down