diff --git a/make/lo.mk b/make/lo.mk new file mode 100644 index 00000000..7f734123 --- /dev/null +++ b/make/lo.mk @@ -0,0 +1,32 @@ +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 ?= \ + $(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 = $(patsubst $(CPP_PREFIX)%,%,$(basename $(notdir $(wildcard $(TOOLS_DIR)/$(CPP_PREFIX)*.h)))) +LOADABLE_OBJ_LIBS = $(addprefix $(SO_PREFIX), $(addsuffix .so, $(LOADABLE_OBJS))) +BUILD_LOADABLE_OBJ_LIBS = $(addprefix $(LIBDIR)/, $(LOADABLE_OBJ_LIBS)) + +all: $(LOADABLE_OBJ_LIBS) $(BUILD_LOADABLE_OBJ_LIBS) +clean: + rm -f *.o *.cpp *.so *.done + +$(SO_PREFIX)%.so: %.o + $(CC) -shared $(LDFLAGS) $^ -o $@ + +%.cpp: $(TOOLS_DIR)/$(CPP_PREFIX)%.h + echo -e "#include \"$<\"\n$(LOADABLE_OBJ_HOOK)($(CPP_PREFIX)$*);\n" > $@ + +$(LIBDIR)/%.so: %.so + install -m 755 $< $@