diff --git a/make/lo.mk b/make/lo.mk index 7b0938b5..3a323a1c 100644 --- a/make/lo.mk +++ b/make/lo.mk @@ -12,9 +12,16 @@ LOADABLE_OBJS_BASE = $(patsubst $(CPP_PREFIX)%,%,$(basename $(notdir LOADABLE_OBJS = $(filter-out $(LOADABLE_OBJ_IGNORE),$(LOADABLE_OBJS_BASE)) LOADABLE_OBJS_CPP = $(patsubst %,%.cpp,$(LOADABLE_OBJS)) LOADABLE_OBJS_O = $(patsubst %,%.o,$(LOADABLE_OBJS)) -OTHER_CPP = $(filter-out $(LOADABLE_OBJS_CPP),$(wildcard *.cpp)) + +OTHER_CPP_IGNORE = $(patsubst %,$(CPP_PREFIX)%.cpp,$(LOADABLE_OBJ_IGNORE)) +OTHER_CPP = $(filter-out $(LOADABLE_OBJS_CPP) $(OTHER_CPP_IGNORE),$(wildcard *.cpp)) +ifneq ($(OTHER_CPP),) OTHER_O = $(patsubst %.cpp,%.o,$(OTHER_CPP)) -OTHER_MEMBERS_O = liblocal.a($(OTHER_O)) +OTHER_LIB = liblocal.a +OTHER_LIB_LDFLAGS = -L. -llocal +OTHER_MEMBERS_O = $(OTHER_LIB)($(OTHER_O)) +endif + ifneq ($(TARGET),mingw) LOADABLE_OBJ_LIBS = $(addprefix $(SO_PREFIX), $(addsuffix .so, $(LOADABLE_OBJS))) else @@ -28,10 +35,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 liblocal.a)) + rm -f $(filter-out $(CPP_PREFIX)%.cpp,$(wildcard *.o *.cpp *.so *.done *.dll $(OTHER_LIB))) -$(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o liblocal.a - $(CPP) $< -L. -llocal -shared $(LDFLAGS) -o $@ +$(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o $(OTHER_LIB) + $(CPP) $< -L. $(OTHER_LIB_LDFLAGS) -shared $(LDFLAGS) -o $@ %.cpp: $(TOOLS_DIR)/$(CPP_PREFIX)%.h echo "#include \"$<\"" > $@.tmp @@ -39,9 +46,11 @@ $(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o liblocal.a echo "$(LOADABLE_OBJ_HOOK)($(CPP_PREFIX)$*);" >> $@.tmp mv $@.tmp $@ -liblocal.a(%.o): %.o - ar cr liblocal.a $< -liblocal.a: $(OTHER_MEMBERS_O) +$(OTHER_LIB)(%.o): %.o + $(AR) r $(OTHER_LIB) $< + $(RANLIB) $(OTHER_LIB) + +$(OTHER_LIB): $(OTHER_MEMBERS_O) $(BUILD_LIBDIR)/%.so: %.so install -m 755 $< $@