From: Chow Loong Jin <hyperair@debian.org>
Date: Thu, 24 May 2012 02:20:09 +0800
Subject: Build system fixes

This patch brings some build system fixes from hasufell's git branch:
 - Add pcfile
 - Allow building of shared library

Origin: https://github.com/leethomason/tinyxml2/pull/21
---
 CMakeLists.txt |   41 +++++++++++++++++++++++++++++++++++++++--
 tinyxml2.pc.in |   10 ++++++++++
 2 files changed, 49 insertions(+), 2 deletions(-)
 create mode 100644 tinyxml2.pc.in

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 67bfb9b..eaf3873 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,11 +2,19 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
 cmake_policy(VERSION 2.6)
 
 project(tinyxml2)
+include(GNUInstallDirs)
 #enable_testing()
 
 #CMAKE_BUILD_TOOL
 
 ################################
+# set lib version here
+
+set(GENERIC_LIB_VERSION "0.0.0")
+set(GENERIC_LIB_SOVERSION ${GENERIC_LIB_VERSION})
+
+
+################################
 # Add common source 
 
 include_directories("${CMAKE_CURRENT_SOURCE_DIR}/.")
@@ -37,11 +45,40 @@ endif(MSVC)
 
 ################################
 # Add targets
-
-add_library(tinyxml2 STATIC tinyxml2.cpp tinyxml2.h)
+set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries")
+if(BUILD_STATIC_LIBS)
+	add_library(tinyxml2static STATIC tinyxml2.cpp tinyxml2.h)
+	set_target_properties(tinyxml2static PROPERTIES OUTPUT_NAME tinyxml2)
+endif(BUILD_STATIC_LIBS)
+add_library(tinyxml2 SHARED tinyxml2.cpp tinyxml2.h)
+set_target_properties(tinyxml2 PROPERTIES
+	VERSION "${GENERIC_LIB_VERSION}"
+	SOVERSION "${GENERIC_LIB_SOVERSION}")
 
 add_executable(test xmltest.cpp)
 add_dependencies(test tinyxml2)
 add_dependencies(test ${TARGET_DATA_COPY})
 target_link_libraries(test tinyxml2)
+
+
+if(BUILD_STATIC_LIBS)
+	install(TARGETS tinyxml2 tinyxml2static
+		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+		ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+else(BUILD_STATIC_LIBS)
+	install(TARGETS tinyxml2
+		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif(BUILD_STATIC_LIBS)
+install(FILES tinyxml2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+foreach(p LIB INCLUDE)
+	set(var CMAKE_INSTALL_${p}DIR)
+	if(NOT IS_ABSOLUTE "${${var}}")
+		set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+	endif()
+endforeach()
+
+configure_file(tinyxml2.pc.in tinyxml2.pc @ONLY)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tinyxml2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
 #add_test(test ${SAMPLE_NAME} COMMAND $<TARGET_FILE:${SAMPLE_NAME}>)
diff --git a/tinyxml2.pc.in b/tinyxml2.pc.in
new file mode 100644
index 0000000..5a44e89
--- /dev/null
+++ b/tinyxml2.pc.in
@@ -0,0 +1,10 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_LIBDIR@
+includedir=@CMAKE_INSTALL_INCLUDEDIR@
+
+Name: TinyXML2
+Description: simple, small, C++ XML parser
+Version: @GENERIC_LIB_VERSION@
+Libs: -L${libdir} -ltinyxml2
+Cflags: -I${includedir}
-- 
