deps_create = $(foreach f,$(AUTO_DEPENDS),$(call $f,$1,$2))
+install-LIBRARIES/%::
+ mkdir -p $($*dir)
+ cp $($*_LIBRARIES:=.so) $($*dir)
+
+uninstall-LIBRARIES/%::
+ rm -f $(patsubst %,$($*dir)/%.so,$($*_LIBRARIES))
+ rmdir -p $($*dir) || true 2> /dev/null
+
define CLASS_LIBRARIES_tpl
all:: $1.so
+install-LIBRARIES/$2:: $1.so
+
+install:: install-LIBRARIES/$2
+uninstall:: uninstall-LIBRARIES/$2
$1.so: $(_cobjs)/$1/.exists $$(call deps_create,$$($1_SOURCES),$(_cobjs)/$1)
$(CC) $$(CFLAGS) $$($1_CPPFLAGS) -fPIC -shared -o $$@ \
$$(filter %.o,$$^) $$(LDFLAGS) $$($1_LDFLAGS) $$($1_LIBADD)
-$$(eval $$(call RULE_C_tpl,$1,-fPIC $2))
+$$(eval $$(call RULE_C_tpl,$1,-fPIC))
clean::
$(RM) $1.so
endef
-$(foreach l, \
- $(foreach l,$(filter %_LIBRARIES,$(.VARIABLES)),$($l)), \
- $(eval $(call CLASS_LIBRARIES_tpl,$l,)))
+$(foreach v,$(filter %_LIBRARIES,$(.VARIABLES)), \
+ $(foreach x,$($v),$(eval $(call CLASS_LIBRARIES_tpl,$x,$(v:_LIBRARIES=)))))
+
+
+install-DATA/%::
+ mkdir -p $($*dir)
+ cp $($*_DATA) $($*dir)
+
+uninstall-DATA/%::
+ rm -f $(patsubst %,$($*dir)/%,$($*_DATA))
+ rmdir -p $($*dir) || true 2> /dev/null
+
+define CLASS_DATA_tpl
+install:: install-DATA/$2
+uninstall:: uninstall-DATA/$2
+endef
+$(foreach v,$(filter %_DATA,$(.VARIABLES)), \
+ $(foreach x,$($v),$(eval $(call CLASS_DATA_tpl,$x,$(v:_DATA=)))))
#define CLASS_EXE_tpl
#all:: $1
CLEAN_RECURSE=1
clean::
- $(RM) -r $(_cobjs)
+ $(RM) -r $(_cobjs) $(CLEANFILES)
@$(if $(CLEAN_RECURSE),$(patsubst %,$(MAKE) -rC % $@;,$(SUBDIRS)))
clobber distclean:: CLEAN_RECURSE=
clobber distclean:: clean
- $(RM) -r .objs* $(patsubst %.in,%,$(wildcard *.in))
+ $(RM) -r .objs* $(DISTCLEANFILES)
ifeq (".","$(DEPTH)")
clobber distclean::
$(RM) $(patsubst %.in,%,$(wildcard $(CONFDIR)/*.in))
endif
-.PHONY: all check clean clobber distclean FORCE
+.PHONY: all check clean clobber distclean install FORCE
DEPTH=..
include $(DEPTH)/am/header.mk
+DISTCLEANFILES = madtty.pc
+
+pkgconfigdir=$(libdir)/pkgconfig
+pkgconfig_DATA = madtty.pc
+
lib_LIBRARIES = libmadtty
libmadtty_SOURCES = inject.c inject_csi.c inject_csi.h madtty.h rote.c rote_keymap.c roteprivate.h
libmadtty_CPPFLAGS = -Wno-error
-libmadtty_LDFLAGS =
+libmadtty_LDFLAGS = -Wl,-soname=libmadtty.so.0
libmadtty_LIBADD =
+libmadtty_SONAME = libmad
include $(DEPTH)/am/footer.mk