Makefile changes
authorMartin Read <mpread@chiark.greenend.org.uk>
Wed, 6 Apr 2011 18:19:51 +0000 (19:19 +0100)
committerMartin Read <mpread@chiark.greenend.org.uk>
Wed, 6 Apr 2011 18:19:51 +0000 (19:19 +0100)
Makefile

index 0439a29..21ef6b0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,16 +6,33 @@ include version.mk
 
 OBJ_BUILDDIR=obj
 LIB_BUILDDIR=lib
-# LIB_REALNAME = exact name of the library
-# LIB_SONAME = name of the library from the linker's point of view
-# LIB_SHORTNAME = unversioned name of the library
+# By default, install as current user and group.
+LIBMORMEGIL_OWNERSHIP=
+LIBMORMEGIL_DATA_OWNERSHIP=
+# For direct system-wide installation, comment previous line and uncomment this:
+# LIBMORMEGIL_OWNERSHIP=-o root -g bin
+# LIBMORMEGIL_DATA_OWNERSHIP=-o root -g bin
+
+# LIB_REALNAME is exact name of the library
+# LIB_SONAME is majorversioned name of the library
+# LIB_SHORTNAME is unversioned name of the library
 LIB_REALNAME=libmormegil.so.$(MAJOR_VER).$(MINOR_VER).$(COMPAT_DEPTH)
 LIB_SONAME=libmormegil.so.$(MAJOR_VER)
 LIB_SHORTNAME=libmormegil.so
 LIBMORMEGIL_BUILT=$(LIB_BUILDDIR)/$(LIB_REALNAME)
-LIBOBJS=$(OBJ_BUILDDIR)/dice.o $(OBJ_BUILDDIR)/stlprintf.o $(OBJ_BUILDDIR)/stlfgets.o $(OBJ_BUILDDIR)/points.o
-LIBS=$(LIB_BUILDDIR)/$(LIB_REALNAME)
-MANPAGES=man/dice.3
+LIBOBJS=$(OBJ_BUILDDIR)/stlprintf.o $(OBJ_BUILDDIR)/stlfgets.o $(OBJ_BUILDDIR)/points.o $(OBJ_BUILDDIR)/Appcfg.o
+
+LIB_REALNAME_C=libmormegil_c.so.$(MAJOR_VER).$(MINOR_VER).$(COMPAT_DEPTH)
+LIB_SONAME_C=libmormegil_c.so.$(MAJOR_VER)
+LIB_SHORTNAME_C=libmormegil_c.so
+LIBMORMEGIL_BUILT_C=$(LIB_BUILDDIR)/$(LIB_REALNAME_C)
+LIBOBJS_C=$(OBJ_BUILDDIR)/dice.o
+
+LIBS=$(LIB_BUILDDIR)/$(LIB_REALNAME) $(LIB_BUILDDIR)/$(LIB_REALNAME_C)
+ALL_LIBOBJS=$(LIBOBJS) $(LIBOBJS_C)
+
+MANPAGES=man/dice.3 man/libmormegil.3 man/libmormegil::Appcfg.3 man/libmormegil::Coord.3 man/libmormegil::S20prng.3 man/libmormegil::abs.3 man/libmormegil::divup.3 man/libmormegil::isotime.3 man/libmormegil::serialize.3 man/libmormegil::stlfgets.3 man/libmormegil::stlprintf.3
+
 SRCARCH_NAME=libmormegil-$(MAJOR_VER).$(MINOR_VER).$(COMPAT_DEPTH)
 
 # GCC flags
@@ -43,20 +60,29 @@ $(OBJ_BUILDDIR)/%.o: src/%.cc
 $(LIBMORMEGIL_BUILT): $(LIBOBJS)
        gcc $(LINKSTEP_FLAGS) $^ -o $@
 
+$(LIBMORMEGIL_BUILT_C): $(LIBOBJS_C)
+       gcc $(LINKSTEP_FLAGS) $^ -o $@
+
 clean:
-       -rm -f $(LIBS) $(LIBOBJS)
+       -rm -f $(LIBS) $(ALL_LIBOBJS)
        -rm -rf $(SRCARCH_NAME) $(SRCARCH_NAME).tar.gz
 
-install: install-headers install-libs
+install: install-headers install-libs install-docs
 
-install-libs:
-       cp $(LIBMORMEGIL_BUILT) $(DESTDIR)$(libdir)/$(LIB_REALNAME)
+install-libs: $(LIBMORMEGIL_BUILT) $(LIBMORMEGIL_BUILT_C)
+       install -m 0755 $(LIBMORMEGIL_BUILT) $(DESTDIR)$(libdir)/$(LIB_REALNAME)
        (cd $(DESTDIR)$(libdir) && ln -sf $(LIB_REALNAME) $(LIB_SONAME) && ln -sf $(LIB_SONAME) $(LIB_SHORTNAME) )
+       install -m 0755 $(LIBMORMEGIL_BUILT_C) $(DESTDIR)$(libdir)/$(LIB_REALNAME_C)
+       (cd $(DESTDIR)$(libdir) && ln -sf $(LIB_REALNAME_C) $(LIB_SONAME_C) && ln -sf $(LIB_SONAME_C) $(LIB_SHORTNAME_C) )
+
+install-docs:
+       install -t $(DESTDIR)$(man3dir) -m 0644 $(LIBMORMEGIL_DATA_OWNERSHIP) $(MANPAGES)
 
 srcarchive: clean
        mkdir $(SRCARCH_NAME)
        cp -R include lib man obj src Makefile version.mk configure $(SRCARCH_NAME)
        tar cvf $(SRCARCH_NAME).tar.gz $(SRCARCH_NAME)
+       rm -rf $(SRCARCH_NAME)
 
 ifeq ($(oldincludedir),"")
 install-headers: