# === change this > TOOLS_DIR ?= $(TOPDIR)/tools TOOLS_INCLUDE_DIR ?= $(TOOLS_DIR) CPP_PREFIX ?= YLo CPP_SUFFIX ?= SO_PREFIX ?= lo_ LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK # === change this < include $(MODDIR)/make/defs.mk include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/profiler-defs.mk include $(MODDIR)/make/dev-utils.mk .PRECIOUS: %.cpp %.o LOADABLE_OBJS_HEADER ?= $(wildcard $(TOOLS_INCLUDE_DIR)/$(CPP_PREFIX)*$(CPP_SUFFIX).h) LOADABLE_OBJS_BASE ?= $(patsubst %$(CPP_SUFFIX),%,$(patsubst $(CPP_PREFIX)%,%,$(basename $(notdir $(LOADABLE_OBJS_HEADER))))) LOADABLE_OBJS = $(filter-out $(LOADABLE_OBJ_IGNORE),$(LOADABLE_OBJS_BASE)) LOADABLE_OBJ_CPP = $(patsubst %,%.cpp,$(LOADABLE_OBJS)) LOADABLE_OBJS_O = $(patsubst %,%.o,$(LOADABLE_OBJS)) OTHER_CPP_IGNORE = $(patsubst %,$(CPP_PREFIX)%.cpp,$(LOADABLE_OBJ_IGNORE)) OTHER_CPP ?= $(filter-out $(LOADABLE_OBJ_CPP) $(OTHER_CPP_IGNORE),$(wildcard *.cpp)) ifneq ($(OTHER_CPP),) OTHER_O = $(patsubst %.cpp,%.o,$(OTHER_CPP)) 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 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.generated: $(RM) -f $(patsubst $(CPP_PREFIX)%$(CPP_SUFFIX),%,$(notdir $(patsubst %.h,%.cpp,$(LOADABLE_OBJS_HEADER)))) clean.lo: profclean clean.generated $(RM) -f $(wildcard *.o *.so *.done *.dll $(OTHER_LIB)) $(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o $(CPP_PREFIX)%.o $(OTHER_LIB) $(CXX) $^ -L. $(OTHER_LIB_LDFLAGS) -shared $(FINAL_LDFLAGS) -o $@ %.cpp: $(TOOLS_INCLUDE_DIR)/$(CPP_PREFIX)%$(CPP_SUFFIX).h echo "#include \"$<\"" > $@.tmp if [ "$(LO_NAMESPACE)" ]; then echo "using namespace $(LO_NAMESPACE);" >> $@.tmp; fi echo "$(LOADABLE_OBJ_HOOK)($(CPP_PREFIX)$*$(CPP_SUFFIX));" >> $@.tmp mv $@.tmp $@ $(OTHER_LIB)(%.o): %.o $(AR) rU $(OTHER_LIB) $< $(RANLIB) $(OTHER_LIB) $(OTHER_LIB): $(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