From 28a41dc4eb04da5576dd9ef411df05d0cc679d3b Mon Sep 17 00:00:00 2001
From: Jaret Cantu <jaret.cantu@timesys.com>
Date: Sat, 8 Feb 2014 23:23:58 -0500
Subject: [PATCH 1/3] Fix Makefile for cross-compiling and installation.

---
 Makefile | 52 +++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/Makefile b/Makefile
index 5ffb952..c45951f 100644
--- a/Makefile
+++ b/Makefile
@@ -19,22 +19,22 @@ TINYXML_USE_STL := NO
 
 #****************************************************************************
 
-CC     := gcc
-CXX    := g++
-LD     := g++
-AR     := ar rc
-RANLIB := ranlib
+CC     ?= gcc
+CXX    ?= g++
+LD     ?= g++
+AR     ?= ar
+RANLIB ?= ranlib
 
-DEBUG_CFLAGS     := -Wall -Wno-format -g -DDEBUG
-RELEASE_CFLAGS   := -Wall -Wno-unknown-pragmas -Wno-format -O3
+DEBUG_CFLAGS     := -Wall -Wno-format -g -DDEBUG ${CFLAGS}
+RELEASE_CFLAGS   := -Wall -Wno-unknown-pragmas -Wno-format -O3 ${CFLAGS}
 
-LIBS		 :=
+LIBS		 ?=
 
-DEBUG_CXXFLAGS   := ${DEBUG_CFLAGS} 
+DEBUG_CXXFLAGS   := ${DEBUG_CFLAGS}
 RELEASE_CXXFLAGS := ${RELEASE_CFLAGS}
 
-DEBUG_LDFLAGS    := -g
-RELEASE_LDFLAGS  :=
+DEBUG_LDFLAGS    := ${LDFLAGS} -g
+RELEASE_LDFLAGS  := ${LDFLAGS}
 
 ifeq (YES, ${DEBUG})
    CFLAGS       := ${DEBUG_CFLAGS}
@@ -67,7 +67,7 @@ endif
 #****************************************************************************
 
 #INCS := -I/usr/include/g++-2 -I/usr/local/include
-INCS :=
+INCS ?=
 
 
 #****************************************************************************
@@ -82,9 +82,9 @@ CXXFLAGS := ${CXXFLAGS} ${DEFS}
 #****************************************************************************
 
 OUTPUT := xmltest
+OUT_LIBS := libtinyxml.a libtinyxml.so
 
-all: ${OUTPUT}
-
+all: ${OUTPUT} ${OUT_LIBS}
 
 #****************************************************************************
 # Source files
@@ -97,12 +97,19 @@ SRCS := ${SRCS}
 
 OBJS := $(addsuffix .o,$(basename ${SRCS}))
 
+libtinyxml_OBJS := $(filter-out xmltest%,${OBJS})
+
 #****************************************************************************
 # Output
 #****************************************************************************
 
-${OUTPUT}: ${OBJS}
-	${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
+xmltest: ${OBJS}
+	${CXX} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
+
+libtinyxml.a: ${libtinyxml_OBJS}
+	${AR} rc $@ $<
+libtinyxml.so: ${libtinyxml_OBJS}
+	${CXX} -shared -o $@ ${LDFLAGS} $^
 
 #****************************************************************************
 # common rules
@@ -119,11 +126,22 @@ dist:
 	bash makedistlinux
 
 clean:
-	-rm -f core ${OBJS} ${OUTPUT}
+	-rm -f core ${OBJS} ${OUTPUT} ${OUT_LIBS}
 
 depend:
 	#makedepend ${INCS} ${SRCS}
 
+install:
+	@install -d ${DESTDIR}/usr/include
+	@install -d ${DESTDIR}/usr/lib
+	@install -d ${DESTDIR}/usr/bin
+	install -m 644 tinyxml.h tinystr.h ${DESTDIR}/usr/include/
+	install -m 644 libtinyxml.a ${DESTDIR}/usr/lib/
+	install -m 755 libtinyxml.so ${DESTDIR}/usr/lib/libtinyxml.so.2.6.2
+	install -m 755 xmltest ${DESTDIR}/usr/bin/
+	ln -sf libtinyxml.so.2.6.2 ${DESTDIR}/usr/lib/libtinyxml.so.2
+	ln -sf libtinyxml.so.2.6.2 ${DESTDIR}/usr/lib/libtinyxml.so
+
 tinyxml.o: tinyxml.h tinystr.h
 tinyxmlparser.o: tinyxml.h tinystr.h
 xmltest.o: tinyxml.h tinystr.h
-- 
2.0.0

