include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk include $(MODDIR)/make/depend.mk # === 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 < .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))) 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)) $(SO_PREFIX)%.so $(SO_PREFIX)%.dll: %.o $(CPP_PREFIX)%.o $(CPP) -shared $^ $(LDFLAGS) -o $@ %.cpp: $(TOOLS_DIR)/$(CPP_PREFIX)%.h echo -e "#include \"$<\"\n$(LOADABLE_OBJ_HOOK)($(CPP_PREFIX)$*);\n" > $@ $(BUILD_LIBDIR)/%.so: %.so install -m 755 $< $@ $(BUILD_LIBDIR)/%.dll: %.dll install -m 755 $< $@