mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +01:00
lo.mk: Use liblocal.a to reduce plugin size
Fix missing symbols from .cpp files via introducing liblocal.a. This is the only way I found to make ld ignore object-files unnecessary for resolving symbols.
This commit is contained in:
parent
66b5289897
commit
b9f453a207
1 changed files with 14 additions and 10 deletions
24
make/lo.mk
24
make/lo.mk
|
|
@ -1,22 +1,20 @@
|
|||
# === change this >
|
||||
TOOLS_DIR ?= $(TOPDIR)/tools
|
||||
|
||||
CPP_PREFIX ?= YLo
|
||||
SO_PREFIX ?= lo_
|
||||
#SO_PREFIX ?= \
|
||||
# $(shell sed '/const char \*YAbstractLoadableObject::_soPrefix/ !d; s/[^"]*"//; s/".*//' \
|
||||
# $(YTOOLS_DIR)/YLoadableObject/YAbstractLoadableObject.cpp)
|
||||
LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK
|
||||
# === change this <
|
||||
|
||||
include $(MODDIR)/make/defs.mk
|
||||
include $(MODDIR)/make/rules.mk
|
||||
include $(MODDIR)/make/depend.mk
|
||||
|
||||
.PRECIOUS: %.cpp
|
||||
LOADABLE_OBJS_BASE = $(patsubst $(CPP_PREFIX)%,%,$(basename $(notdir $(wildcard $(TOOLS_DIR)/$(CPP_PREFIX)*.h))))
|
||||
LOADABLE_OBJS = $(filter-out $(LOADABLE_OBJ_IGNORE),$(LOADABLE_OBJS_BASE))
|
||||
LOADABLE_OBJS_O = $(patsubst %.cpp,%.o,$(foreach f,$(LOADABLE_OBJS),$(wildcard $(CPP_PREFIX)$(f).cpp)))
|
||||
LOADABLE_OBJS_CPP = $(patsubst %,%.cpp,$(LOADABLE_OBJS))
|
||||
LOADABLE_OBJS_O = $(patsubst %,%.o,$(LOADABLE_OBJS))
|
||||
OTHER_CPP = $(filter-out $(LOADABLE_OBJS_CPP),$(wildcard *.cpp))
|
||||
OTHER_O = $(patsubst %.cpp,%.o,$(OTHER_CPP))
|
||||
OTHER_MEMBERS_O = liblocal.a($(OTHER_O))
|
||||
ifneq ($(TARGET),mingw)
|
||||
LOADABLE_OBJ_LIBS = $(addprefix $(SO_PREFIX), $(addsuffix .so, $(LOADABLE_OBJS)))
|
||||
else
|
||||
|
|
@ -30,10 +28,10 @@ install: $(INSTALLED_LOADABLE_OBJ_LIBS)
|
|||
clean: clean.lo
|
||||
|
||||
clean.lo: profclean
|
||||
rm -f $(filter-out $(CPP_PREFIX)%.cpp,$(wildcard *.o *.cpp *.so *.done *.dll))
|
||||
rm -f $(filter-out $(CPP_PREFIX)%.cpp,$(wildcard *.o *.cpp *.so *.done *.dll liblocal.a))
|
||||
|
||||
$(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o $(LOADABLE_OBJS_O)
|
||||
$(CPP) $< $(filter $(CPP_PREFIX)$*%, $(LOADABLE_OBJS_O)) -shared $(LDFLAGS) -o $@
|
||||
$(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o liblocal.a
|
||||
$(CPP) $< -L. -llocal -shared $(LDFLAGS) -o $@
|
||||
|
||||
%.cpp: $(TOOLS_DIR)/$(CPP_PREFIX)%.h
|
||||
echo "#include \"$<\"" > $@.tmp
|
||||
|
|
@ -41,8 +39,14 @@ $(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o $(LOADABLE_OBJS_O)
|
|||
echo "$(LOADABLE_OBJ_HOOK)($(CPP_PREFIX)$*);" >> $@.tmp
|
||||
mv $@.tmp $@
|
||||
|
||||
liblocal.a(%.o): %.o
|
||||
ar cr liblocal.a $<
|
||||
liblocal.a: $(OTHER_MEMBERS_O)
|
||||
|
||||
$(BUILD_LIBDIR)/%.so: %.so
|
||||
install -m 755 $< $@
|
||||
$(BUILD_LIBDIR)/%.dll: %.dll
|
||||
install -m 755 $< $@
|
||||
|
||||
include $(MODDIR)/make/rules.mk
|
||||
include $(MODDIR)/make/depend.mk
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue