From 3193825bcf4333105c26cd7687644015db788611 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Mon, 1 Apr 2019 14:19:55 +0300
Subject: [PATCH] Updates for compiling on Windows

---
 CMakeLists.txt            | 19 ++++++++++++-------
 cmake/FindURIParser.cmake | 36 ++++++++++++++++++++++++++++++++++++
 cmake/Findglog.cmake      |  4 ++--
 net/cpp/CMakeLists.txt    |  8 ++++----
 4 files changed, 54 insertions(+), 13 deletions(-)
 create mode 100644 cmake/FindURIParser.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9148b5202..bc2818910 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,13 @@ enable_testing()
 set(THREADS_PREFER_PTHREAD_FLAG ON)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
 
+find_package( glog REQUIRED )
+find_package( OpenCV REQUIRED )
+find_package( Threads REQUIRED )
+find_package( URIParser REQUIRED )
+find_package( MsgPack )
+find_package( LibSGM )
+
 check_language(CUDA)
 if (CUDA_TOOLKIT_ROOT_DIR)
 enable_language(CUDA)
@@ -22,23 +29,21 @@ add_definitions(-DHAVE_CUDA)
 include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
 endif ()
 
-find_package( glog REQUIRED )
-find_package( OpenCV REQUIRED )
-find_package( Threads REQUIRED )
-find_package( MsgPack )
-find_package( LibSGM )
-
-if (NOT MSGPACK_FOUND)
+if (NOT MsgPack_FOUND)
 	check_include_file_cxx("msgpack.hpp" MSGPACK_FOUND)
 	if (NOT MSGPACK_FOUND)
 		message(ERROR "Msgpack is required")
 	endif()
+else()
+	include_directories(${MSGPACK_INCLUDE_DIRS})
 endif()
 
+if (NOT WIN32)
 check_include_file("uuid/uuid.h" UUID_FOUND)
 if (NOT UUID_FOUND)
 	message(ERROR "UUID library is required")
 endif()
+endif()
 
 find_program(CPPCHECK_FOUND cppcheck)
 if (CPPCHECK_FOUND)
diff --git a/cmake/FindURIParser.cmake b/cmake/FindURIParser.cmake
new file mode 100644
index 000000000..70d3366eb
--- /dev/null
+++ b/cmake/FindURIParser.cmake
@@ -0,0 +1,36 @@
+###############################################################################
+# Find URI Parser
+#
+
+if(WIN32)
+find_path(URIP_DIR NAMES include/uriparser/Uri.h PATHS "C:/Program Files/uriparser" "C:/Program Files (x86)/uriparser")
+else()
+set(URIP_DIR "")
+endif()
+
+# Find lib
+set(URIPARSER_FOUND FALSE CACHE BOOL "" FORCE)
+find_library(URIPARSER_LIBRARY
+    NAMES uriparser liburiparser
+    PATHS ${URIP_DIR}
+    PATH_SUFFIXES lib/
+)
+
+# Find include
+find_path(URIPARSER_INCLUDE_DIRS
+    NAMES uriparser/Uri.h
+    PATHS ${URIP_DIR}
+    PATH_SUFFIXES include
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(URIParser DEFAULT_MSG URIPARSER_LIBRARY URIPARSER_INCLUDE_DIRS)
+
+mark_as_advanced(URIPARSER_FOUND)
+
+if(URIPARSER_FOUND)
+	include_directories(${URIPARSER_INCLUDE_DIRS})
+    set(URIPARSER_FOUND TRUE CACHE BOOL "" FORCE)
+    set(URIPARSER_LIBRARIES ${URIPARSER_LIBRARY})
+    message(STATUS "Found URIParser")
+endif()
diff --git a/cmake/Findglog.cmake b/cmake/Findglog.cmake
index dc0bf0bd3..8b5883975 100644
--- a/cmake/Findglog.cmake
+++ b/cmake/Findglog.cmake
@@ -3,8 +3,8 @@
 #
 
 if(WIN32)
-find_path(glog_DIR glog PATHS "C:/Program Files" "C:/Program Files (x86)")
-set(glog_DIR ${glog_DIR}/glog)
+find_path(glog_DIR NAMES include/glog/logging.h PATHS "C:/Program Files/glog" "C:/Program Files/google-glog" "C:/Program Files (x86)/google-glog")
+set(glog_DIR ${glog_DIR})
 else()
 set(glog_DIR "")
 endif()
diff --git a/net/cpp/CMakeLists.txt b/net/cpp/CMakeLists.txt
index 7a35df671..2eadfb088 100644
--- a/net/cpp/CMakeLists.txt
+++ b/net/cpp/CMakeLists.txt
@@ -11,10 +11,10 @@ set(NETSOURCE
 	src/protocol.cpp
 )
 
-check_include_file("uriparser/Uri.h" HAVE_URI_H)
-if(NOT HAVE_URI_H)
-	message(FATAL_ERROR "Uriparser not found")
-endif()
+#check_include_file("uriparser/Uri.h" HAVE_URI_H)
+#if(NOT HAVE_URI_H)
+#	message(FATAL_ERROR "Uriparser not found")
+#endif()
 check_function_exists(uriParseSingleUriA HAVE_URIPARSESINGLE)
 
 add_library(net ${NETSOURCE})
-- 
GitLab