Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/leethomason/tinyxml2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-02-05 14:19:36 +0300
committerJeffrey Walton <noloader@gmail.com>2018-02-05 14:19:36 +0300
commit5dd529236b34e17611cfb6c2756a649ba48c47aa (patch)
tree468bff6674a76b956914b57124b8303b52c4deb2 /Makefile
parentcc1745b552dd12bb1297a99f82044f83b06729e0 (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--Makefile52
1 files changed, 50 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index f26cd92..b0428f6 100644
--- a/Makefile
+++ b/Makefile
@@ -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