# === change this > TOOLS_DIR ?= $(TOPDIR)/tools CPP_PREFIX ?= YLo SO_PREFIX ?= lo_ LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK # === change this < include $(MODDIR)/make/defs.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_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 LOADABLE_OBJ_LIBS = $(addprefix $(SO_PREFIX), $(addsuffix .dll, $(LOADABLE_OBJS))) endif BUILD_LOADABLE_OBJ_LIBS = $(addprefix $(BUILD_LIBDIR)/, $(LOADABLE_OBJ_LIBS)) INSTALLED_LOADABLE_OBJ_LIBS = $(addprefix $(INSTALL_LIBDIR)/, $(LOADABLE_OBJ_LIBS)) all: $(LOADABLE_OBJ_LIBS) $(BUILD_LOADABLE_OBJ_LIBS) 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)) $(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o liblocal.a $(CPP) $< -L. -llocal -shared $(LDFLAGS) -o $@ %.cpp: $(TOOLS_DIR)/$(CPP_PREFIX)%.h echo "#include \"$<\"" > $@.tmp if [ "$(LO_NAMESPACE)" ]; then echo "using namespace $(LO_NAMESPACE);" >> $@.tmp; fi 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