diff options
author | Jeffrey Walton <noloader@gmail.com> | 2018-02-05 14:19:36 +0300 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2018-02-05 14:19:36 +0300 |
commit | 5dd529236b34e17611cfb6c2756a649ba48c47aa (patch) | |
tree | 468bff6674a76b956914b57124b8303b52c4deb2 /Makefile | |
parent | cc1745b552dd12bb1297a99f82044f83b06729e0 (diff) |
Add install and uninstall target to Makefile
This PR closes some gaps in the makefile. It follows GNU coding standards and conventions at https://www.gnu.org/prep/standards/standards.html. It is not specific to GNU, and most of the world follows it.
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 52 |
1 files changed, 50 insertions, 2 deletions
@@ -1,3 +1,25 @@ +# For GNU conventions and targets see https://www.gnu.org/prep/standards/standards.html +# Using GNU standards makes it easier for some users to keep doing what they are used to. + +# 'mkdir -p' is non-portable, but it is widely supported. A portable solution +# is elusive due to race conditions on testing the directory and creating it. +# Anemic toolchain users can sidestep the problem using MKDIR="mkdir". + +AR = ar +ARFLAGS = cr +RM = rm -f +RANLIB = ranlib +MKDIR = mkdir -p + +INSTALL = install +INSTALL_PROGRAM = $(INSTALL) +INSTALL_DATA = $(INSTALL) -m 044 + +prefix = /usr/local +bindir = $(prefix)/bin +libdir = $(prefix)/lib +includedir = $(prefix)/include + all: xmltest staticlib rebuild: clean all @@ -12,15 +34,41 @@ effc: -Wno-unused-parameter -Weffc++ xmltest.cpp tinyxml2.cpp -o xmltest clean: - $(RM) *.o xmltest libtinyxml2.a + -$(RM) *.o xmltest libtinyxml2.a + +# Standard GNU target +distclean: + -$(RM) *.o xmltest libtinyxml2.a test: clean xmltest ./xmltest +# Standard GNU target +check: clean xmltest + ./xmltest + staticlib: libtinyxml2.a libtinyxml2.a: tinyxml2.o - $(AR) $(ARFLAGS)s $@ $^ + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ tinyxml2.o: tinyxml2.cpp tinyxml2.h +directories: + $(MKDIR) $(DESTDIR)$(prefix) + $(MKDIR) $(DESTDIR)$(bindir) + $(MKDIR) $(DESTDIR)$(libdir) + $(MKDIR) $(DESTDIR)$(includedir) + +# Standard GNU target. +install: xmltest staticlib directories + $(INSTALL_PROGRAM) xmltest $(DESTDIR)$(bindir)/xmltest + $(INSTALL_DATA) tinyxml2.h $(DESTDIR)$(includedir)/tinyxml2.h + $(INSTALL_DATA) libtinyxml2.a $(DESTDIR)$(libdir)/libtinyxml2.a + +# Standard GNU target +uninstall: + $(RM) $(DESTDIR)$(bindir)/xmltest + $(RM) $(DESTDIR)$(includedir)/tinyxml2.h + $(RM) $(DESTDIR)$(libdir)/libtinyxml2.a |