From be5ef8a15c539205938db46da16dacd10927475b Mon Sep 17 00:00:00 2001
From: Howard Butler <howard@hobu.co>
Date: Thu, 6 Oct 2016 09:18:27 -0500
Subject: [PATCH] apply fixes for GDAL 2.1.1 #106

---
 src/gt_wkt_srs.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/gt_wkt_srs.cpp b/src/gt_wkt_srs.cpp
index 4ef3c421..9c336974 100755
--- a/src/gt_wkt_srs.cpp
+++ b/src/gt_wkt_srs.cpp
@@ -30,6 +30,11 @@
  * DEALINGS IN THE SOFTWARE.
  ****************************************************************************/
 
+#ifndef NDEBUG
+// Needed by cpl_multiproc.h
+#define DEBUG 1
+#endif
+
 #include "cpl_error.h"
 #include "cpl_conv.h"
 #include "cpl_csv.h"
@@ -90,7 +95,7 @@ static const char *papszDatumEquiv[] =
 /*                       LibgeotiffOneTimeInit()                        */
 /************************************************************************/
 
-static void* hMutex = NULL;
+static CPLMutex* hMutex = NULL;
 
 void LibgeotiffOneTimeInit() 
 {
@@ -113,10 +118,10 @@ void LibgeotiffOneTimeInit()
 
 void LibgeotiffOneTimeCleanupMutex() 
 {
-    if( hMutex != NULL )
+    if( hMutex != (CPLMutex*)(NULL) )
     {
         CPLDestroyMutex(hMutex);
-        hMutex = NULL;
+        hMutex = (CPLMutex*)(NULL);
     }
 }
 
From fd6c0f0157807735456294aa73b802f8820417a9 Mon Sep 17 00:00:00 2001
From: Mateusz Loskot <mateusz@loskot.net>
Date: Tue, 11 Apr 2017 09:04:42 +0200
Subject: [PATCH] Enable pkg-config by default only on Unix and MinGW

Refines #120
---
 CMakeLists.txt | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e0ba2d6..94d43cac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,7 +57,13 @@ set(WITH_TESTS TRUE CACHE BOOL "Choose if libLAS unit tests should be built")
 set(BUILD_OSGEO4W TRUE CACHE BOOL "Should OSGeo4W package for Windows be built")
 
 # Choose to use pkg-config or not
-set(WITH_PKGCONFIG FALSE CACHE BOOL
+if (UNIX OR MINGW)
+  set(DEFAULT_WITH_PKGCONFIG TRUE)
+else()
+  set(DEFAULT_WITH_PKGCONFIG FALSE)
+endif()
+
+set(WITH_PKGCONFIG ${DEFAULT_WITH_PKGCONFIG} CACHE BOOL
   "Choose whether a pkgconfig file (libLAS.pc) should be installed")
 
 set(WITH_ENDIANAWARE FALSE CACHE BOOL "Choose whether or not libLAS should do runtime endianness switching.  Note that this can slow things down considerably if enabled by default")
From af431abce95076b59f4eb7c6ef0930ca57c8a063 Mon Sep 17 00:00:00 2001
From: Piotr Dobrowolski <dobrypd@gmail.com>
Date: Thu, 25 Apr 2019 15:33:28 +0200
Subject: [PATCH] Use LIBLAS_BIG_ENDIAN instead of BOOST_BIG_ENDIAN (#166)

Fixes #165
---
 include/liblas/detail/binary.hpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/liblas/detail/binary.hpp b/include/liblas/detail/binary.hpp
index 3dd8a6fc..8f0b3d47 100644
--- a/include/liblas/detail/binary.hpp
+++ b/include/liblas/detail/binary.hpp
@@ -17,6 +17,8 @@
 #ifndef LIBLAS_DETAIL_BINARY_HPP_INCLUDED
 #define LIBLAS_DETAIL_BINARY_HPP_INCLUDED
 
+#include <liblas/detail/endian.hpp>
+
 #include <cassert>
 #include <climits>
 #include <cstring>
@@ -25,7 +27,6 @@
 
 #include <boost/config.hpp>
 #include <boost/static_assert.hpp>
-#include <boost/detail/endian.hpp>
 #include <boost/type_traits/is_signed.hpp>
 
 #if CHAR_BIT != 8
@@ -43,7 +44,7 @@ namespace detail { namespace binary {
 struct big_endian_tag {};
 struct little_endian_tag {};
 
-#ifdef BOOST_BIG_ENDIAN
+#ifdef LIBLAS_BIG_ENDIAN
 typedef big_endian_tag native_endian_tag;
 #else
 typedef little_endian_tag native_endian_tag;
From 0d3b8d75f371a6b7c605bbe5293091cb64a7e2d3 Mon Sep 17 00:00:00 2001
From: yyunon <yonsel.yuksel@gmail.com>
Date: Tue, 5 May 2020 16:11:50 +0200
Subject: [PATCH] fix: Update use of boost::bind placeholders (#189)

Fixes #186

Co-authored-by: Yuksel Yonsel <yuksel@geosignum.com>
---
 src/c_api.cpp  | 7 +++++--
 src/header.cpp | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/c_api.cpp b/src/c_api.cpp
index 14cb71c5..eb690dcb 100644
--- a/src/c_api.cpp
+++ b/src/c_api.cpp
@@ -96,6 +96,7 @@ using namespace liblas;
 #endif
 
 #include <boost/lambda/lambda.hpp>
+#include <boost/bind/bind.hpp>
 
 bool IsReprojectionTransform(liblas::TransformPtr const& p)
 {
@@ -497,7 +498,8 @@ LAS_DLL LASHeaderH LASReader_GetHeader(const LASReaderH hReader)
 
 
 LAS_DLL LASErrorEnum LASReader_SetOutputSRS(LASReaderH hReader, const LASSRSH hSRS) {
-    
+   
+    using namespace boost::placeholders;
     VALIDATE_LAS_POINTER1(hReader, "LASReader_SetOutputSRS", LE_Failure);
     VALIDATE_LAS_POINTER1(hSRS, "LASReader_SetOutputSRS", LE_Failure);
 
@@ -1839,7 +1841,8 @@ LAS_DLL LASErrorEnum LASWriter_SetInputSRS(LASWriterH hWriter, const LASSRSH hSR
 }
 
 LAS_DLL LASErrorEnum LASWriter_SetOutputSRS(LASWriterH hWriter, const LASSRSH hSRS) {
-    
+
+    using namespace boost::placeholders;
     VALIDATE_LAS_POINTER1(hWriter, "LASWriter_SetOutputSRS", LE_Failure);
     VALIDATE_LAS_POINTER1(hSRS, "LASWriter_SetOutputSRS", LE_Failure);
 
diff --git a/src/header.cpp b/src/header.cpp
index 47345eaa..99cf279a 100644
--- a/src/header.cpp
+++ b/src/header.cpp
@@ -54,7 +54,7 @@
 // boost
 #include <boost/cstdint.hpp>
 #include <boost/lambda/lambda.hpp>
-
+#include <boost/bind/bind.hpp>
 //std
 #include <algorithm>
 #include <fstream>
@@ -607,6 +607,7 @@ bool SameVLRs(std::string const& name, uint16_t id, liblas::VariableRecord const
 
 void Header::DeleteVLRs(std::string const& name, uint16_t id)
 {
+    using namespace boost::placeholders;
 
     m_vlrs.erase( std::remove_if( m_vlrs.begin(),
                                   m_vlrs.end(),
