-
-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathros-noetic-swri-transform-util.patch
144 lines (140 loc) · 5.9 KB
/
ros-noetic-swri-transform-util.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ac738da69..78a4c1f95 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.0.2)
project(swri_transform_util)
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
+
find_package(catkin REQUIRED COMPONENTS
diagnostic_msgs
geographic_msgs
@@ -23,15 +25,7 @@ catkin_python_setup()
find_package(OpenCV REQUIRED calib3d core highgui imgproc video)
find_package(Boost REQUIRED COMPONENTS filesystem serialization thread)
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(PROJ proj)
-if(NOT "${PROJ_FOUND}")
- set(PROJ_INCLUDE_DIRS /usr/include)
- set(PROJ_LIBRARY_DIRS /usr/lib)
- find_library(PROJ_LIBRARIES proj
- HINTS ${PROJ_LIB_DIRS}
- )
-endif()
+find_package(Proj REQUIRED)
catkin_package(
INCLUDE_DIRS include
@@ -72,7 +66,7 @@ add_library(${PROJECT_NAME}
src/wgs84_transformer.cpp)
target_link_libraries(${PROJECT_NAME}
${catkin_LIBRARIES}
- ${PROJ_LIBRARIES}
+ ${PROJ_LIBRARY}
Boost::filesystem
Boost::serialization
Boost::thread
diff --git a/cmake/FindProj.cmake b/cmake/FindProj.cmake
new file mode 100644
index 000000000..f4ab9b385
--- /dev/null
+++ b/cmake/FindProj.cmake
@@ -0,0 +1,98 @@
+# Find Proj
+# ~~~~~~~~~
+# Copyright (c) 2007, Martin Dobias <wonder.sk at gmail.com>
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+# CMake module to search for Proj library
+#
+# If it's found it sets PROJ_FOUND to TRUE
+# and following variables are set:
+# PROJ_INCLUDE_DIR
+# PROJ_LIBRARY
+
+# FIND_PATH and FIND_LIBRARY normally search standard locations
+# before the specified paths. To search non-standard paths first,
+# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
+# and then again with no specified paths to search the default
+# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
+# searching for the same item do nothing.
+
+# try to use framework on mac
+# want clean framework path, not unix compatibility path
+IF (APPLE)
+ IF (CMAKE_FIND_FRAMEWORK MATCHES "FIRST"
+ OR CMAKE_FRAMEWORK_PATH MATCHES "ONLY"
+ OR NOT CMAKE_FIND_FRAMEWORK)
+ SET (CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE)
+ SET (CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE)
+ #FIND_PATH(PROJ_INCLUDE_DIR PROJ/proj_api.h)
+ FIND_LIBRARY(PROJ_LIBRARY PROJ)
+ IF (PROJ_LIBRARY)
+ # FIND_PATH doesn't add "Headers" for a framework
+ SET (PROJ_INCLUDE_DIR ${PROJ_LIBRARY}/Headers CACHE PATH "Path to a file.")
+ ENDIF (PROJ_LIBRARY)
+ SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE)
+ ENDIF ()
+ENDIF (APPLE)
+
+FIND_PATH(PROJ_INCLUDE_DIR proj_api.h
+ "$ENV{INCLUDE}"
+ "$ENV{LIB_DIR}/include"
+ )
+IF (NOT PROJ_INCLUDE_DIR)
+ FIND_PATH(PROJ_INCLUDE_DIR proj.h
+ "$ENV{INCLUDE}"
+ "$ENV{LIB_DIR}/include"
+ )
+ENDIF (NOT PROJ_INCLUDE_DIR)
+
+FIND_LIBRARY(PROJ_LIBRARY NAMES proj_i proj PATHS
+ "$ENV{LIB}"
+ "$ENV{LIB_DIR}/lib"
+ )
+
+IF (PROJ_INCLUDE_DIR AND PROJ_LIBRARY)
+ SET(PROJ_FOUND TRUE)
+ENDIF (PROJ_INCLUDE_DIR AND PROJ_LIBRARY)
+
+IF (PROJ_FOUND)
+ IF (EXISTS ${PROJ_INCLUDE_DIR}/proj.h AND EXISTS ${PROJ_INCLUDE_DIR}/proj_experimental.h)
+ FILE(READ ${PROJ_INCLUDE_DIR}/proj.h proj_version)
+ STRING(REGEX REPLACE "^.*PROJ_VERSION_MAJOR +([0-9]+).*$" "\\1" PROJ_VERSION_MAJOR "${proj_version}")
+ STRING(REGEX REPLACE "^.*PROJ_VERSION_MINOR +([0-9]+).*$" "\\1" PROJ_VERSION_MINOR "${proj_version}")
+ STRING(REGEX REPLACE "^.*PROJ_VERSION_PATCH +([0-9]+).*$" "\\1" PROJ_VERSION_PATCH "${proj_version}")
+ STRING(CONCAT PROJ_VERSION_STR "(" ${PROJ_VERSION_MAJOR} "." ${PROJ_VERSION_MINOR} "." ${PROJ_VERSION_PATCH} ")")
+ IF ((PROJ_VERSION_MAJOR EQUAL 6) AND ((PROJ_VERSION_MINOR LESS 3) OR (PROJ_VERSION_MINOR EQUAL 3 AND PROJ_VERSION_PATCH LESS 1)))
+ MESSAGE (FATAL_ERROR "Cannot build QGIS using Proj ${PROJ_VERSION_MAJOR}.${PROJ_VERSION_MINOR}.${PROJ_VERSION_PATCH} Use 6.3.1 or higher.")
+ ENDIF ((PROJ_VERSION_MAJOR EQUAL 6) AND ((PROJ_VERSION_MINOR LESS 3) OR (PROJ_VERSION_MINOR EQUAL 3 AND PROJ_VERSION_PATCH LESS 1)))
+ ELSE(EXISTS ${PROJ_INCLUDE_DIR}/proj.h AND EXISTS ${PROJ_INCLUDE_DIR}/proj_experimental.h)
+ FILE(READ ${PROJ_INCLUDE_DIR}/proj_api.h proj_version)
+ STRING(REGEX REPLACE "^.*PJ_VERSION ([0-9]+).*$" "\\1" PJ_VERSION "${proj_version}")
+
+ # This will break if 4.10.0 ever will be released (highly unlikely)
+ STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\1" PROJ_VERSION_MAJOR "${PJ_VERSION}")
+ STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\2" PROJ_VERSION_MINOR "${PJ_VERSION}")
+ STRING(REGEX REPLACE "([0-9])([0-9])([0-9])" "\\3" PROJ_VERSION_PATCH "${PJ_VERSION}")
+ STRING(CONCAT PROJ_VERSION_STR "(" ${PROJ_VERSION_MAJOR} "." ${PROJ_VERSION_MINOR} "." ${PROJ_VERSION_PATCH} ")")
+
+ # Minimum Proj version required is 4.9.3
+ IF ((PROJ_VERSION_MAJOR EQUAL 4) AND ((PROJ_VERSION_MINOR LESS 9) OR ((PROJ_VERSION_MINOR EQUAL 9) AND (PROJ_VERSION_PATCH LESS 3))))
+ MESSAGE(FATAL_ERROR "Found Proj: ${PROJ_VERSION_MAJOR}.${PROJ_VERSION_MINOR}.${PROJ_VERSION_PATCH}. Cannot build QGIS using Proj older than 4.9.3.")
+ ENDIF((PROJ_VERSION_MAJOR EQUAL 4) AND ((PROJ_VERSION_MINOR LESS 9) OR ((PROJ_VERSION_MINOR EQUAL 9) AND (PROJ_VERSION_PATCH LESS 3))))
+ ENDIF(EXISTS ${PROJ_INCLUDE_DIR}/proj.h AND EXISTS ${PROJ_INCLUDE_DIR}/proj_experimental.h)
+ IF (NOT PROJ_FIND_QUIETLY)
+ MESSAGE(STATUS "Found Proj: ${PROJ_LIBRARY} version ${PROJ_VERSION_MAJOR} ${PROJ_VERSION_STR}")
+ ENDIF (NOT PROJ_FIND_QUIETLY)
+
+ INCLUDE_DIRECTORIES(BEFORE SYSTEM ${PROJ_INCLUDE_DIR})
+ ADD_DEFINITIONS(-DPROJ_VERSION_MAJOR=${PROJ_VERSION_MAJOR})
+
+ELSE (PROJ_FOUND)
+
+ IF (PROJ_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find Proj")
+ ENDIF (PROJ_FIND_REQUIRED)
+
+ENDIF (PROJ_FOUND)
+