star-3dut

Generate meshes of simple geometric shapes
git clone git://git.meso-star.fr/star-3dut.git
Log | Files | Refs | README | LICENSE

commit 2673d91e9cff6877579b5f0a1552d5b9ed8fbb02
parent 17042201e367e65f96b3561cac215a8a92f3214c
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 27 Oct 2023 14:22:14 +0200

Partially link static library object files

Make hidden symbols local to the relocatable object to avoid conflicts
with internal symbols in another static library. In release mode, delete
all symbols not required for relocation processing, but keep them in
debug mode for... debugging purposes.

Diffstat:
MMakefile | 9+++++++--
Mconfig.mk | 6++++++
2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile @@ -47,10 +47,14 @@ $(DEP) $(OBJ): config.mk $(LIBNAME_SHARED): $(OBJ) $(CC) $(CFLAGS) $(RSYS_CFLAGS) -o $@ $(OBJ) $(LDFLAGS) $(SOFLAGS) $(RSYS_LIBS) -lm -$(LIBNAME_STATIC): $(OBJ) +$(LIBNAME_STATIC): libs3dut.o $(AR) -rc $@ $? $(RANLIB) $@ +libs3dut.o: $(OBJ) + $(LD) -r $(OBJ) -o $@ + $(OBJCOPY) $(OCPFLAGS) $@ + .config: config.mk @if ! $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys; then\ echo "rsys $(RSYS_VERSION) not found" >&2; exit 1; fi @@ -100,7 +104,8 @@ uninstall: all: build_library build_tests clean: clean_test - rm -f $(OBJ) $(TEST_OBJ) $(LIBNAME) .config .test s3dut.pc s3dut-local.pc + rm -f $(OBJ) $(TEST_OBJ) $(LIBNAME) + rm -f .config .test libs3dut.o s3dut.pc s3dut-local.pc distclean: clean rm -f $(DEP) $(TEST_DEP) diff --git a/config.mk b/config.mk @@ -12,6 +12,8 @@ BUILD_TYPE = RELEASE ################################################################################ AR = ar CC = cc +LD = ld +OBJCOPY = objcopy PKG_CONFIG = pkg-config RANLIB = ranlib @@ -58,3 +60,7 @@ SOFLAGS = -shared -Wl,--no-undefined LDFLAGS_DEBUG = LDFLAGS_RELEASE = -s LDFLAGS = $(LDFLAGS_$(BUILD_TYPE)) + +OCPFLAGS_DEBUG = --localize-hidden +OCPFLAGS_RELEASE = --localize-hidden --strip-unneeded +OCPFLAGS = $(OCPFLAGS_$(BUILD_TYPE))