mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 20:13:32 +01:00
68 lines
2.6 KiB
Makefile
68 lines
2.6 KiB
Makefile
# === 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
|
|
|
|
.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)
|
|
$(CPP) $^ -L. $(OTHER_LIB_LDFLAGS) -shared $(BUILD_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) r $(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
|
|
|