Skip to content

Commit a5c59af

Browse files
authored
Add more explicit version compatibility for OGRE2 (#297)
This patch makes downstream users have to specify at minimum a major and minor version to insure correctly compatible versions of OGRE 2 are found. Signed-off-by: Michael Carroll <michael@openrobotics.org>
1 parent 8fa4123 commit a5c59af

File tree

6 files changed

+124
-28
lines changed

6 files changed

+124
-28
lines changed

cmake/FindGzOGRE2.cmake

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,20 @@
5656
# COMPONENTS HlmsPbs HlmsUnlit Overlay)
5757

5858

59+
if(NOT (GzOGRE2_FIND_VERSION_MAJOR AND GzOGRE2_FIND_VERSION_MINOR))
60+
message(WARNING
61+
"find_package(GzOGRE2) must be called with a VERSION argument with a minimum of major and minor version")
62+
set(OGRE2_FOUND false)
63+
return()
64+
endif()
65+
5966
# Sanity check: exclude OGRE1 project releasing versions in two ways:
6067
# - Legacy in from using 1.x.y until 1.12.y series
6168
# - Modern versions using X.Y.Z starting with 13.y.z
6269
# Reduce valid versions to 2.x series
6370
if (${GzOGRE2_FIND_VERSION_MAJOR})
6471
if (${GzOGRE2_FIND_VERSION_MAJOR} VERSION_LESS "2" OR
65-
${GzOGRE2_FIND_VERSION_MAJOR} VERSION_GREATER_EQUAL "3")
72+
${GzOGRE2_FIND_VERSION_MAJOR} VERSION_GREATER_EQUAL "3")
6673
set (OGRE2_FOUND false)
6774
return()
6875
endif()
@@ -268,6 +275,29 @@ if (NOT WIN32)
268275
get_preprocessor_entry(OGRE_TEMP_VERSION_CONTENT OGRE_VERSION_NAME OGRE2_VERSION_NAME)
269276
set(OGRE2_VERSION "${OGRE2_VERSION_MAJOR}.${OGRE2_VERSION_MINOR}.${OGRE2_VERSION_PATCH}")
270277

278+
set(GzOGRE2_VERSION_EXACT FALSE)
279+
set(GzOGRE2_VERSION_COMPATIBLE FALSE)
280+
281+
if (NOT ("${OGRE2_VERSION_MAJOR}" EQUAL "${GzOGRE2_FIND_VERSION_MAJOR}"))
282+
set(OGRE2_FOUND FALSE)
283+
continue()
284+
endif()
285+
286+
if (NOT ("${OGRE2_VERSION_MINOR}" EQUAL "${GzOGRE2_FIND_VERSION_MINOR}"))
287+
message(STATUS " ! ${GZ_OGRE2_PROJECT_NAME} found with incompatible version ${OGRE2_VERSION}")
288+
set(OGRE2_FOUND FALSE)
289+
continue()
290+
endif()
291+
292+
if ("${OGRE2_VERSION}" VERSION_EQUAL "${GzOGRE2_FIND_VERSION}")
293+
set(GzOGRE2_VERSION_EXACT TRUE)
294+
set(GzOGRE2_VERSION_COMPATIBLE TRUE)
295+
endif()
296+
297+
if ("${OGRE2_VERSION}" VERSION_GREATER "${GzOGRE2_FIND_VERSION}")
298+
set(GzOGRE2_VERSION_COMPATIBLE TRUE)
299+
endif()
300+
271301
# find ogre components
272302
include(GzImportTarget)
273303
foreach(component ${GzOGRE2_FIND_COMPONENTS})
@@ -530,6 +560,14 @@ if (OGRE2_FOUND)
530560
PROPERTY INTERFACE_LINK_DIRECTORIES
531561
${OGRE2_LIBRARY_DIRS}
532562
)
563+
else()
564+
# Unset variables so that we don't leak incorrect versions
565+
set(OGRE2_VERSION "")
566+
set(OGRE2_VERSION_MAJOR "")
567+
set(OGRE2_VERSION_MINOR "")
568+
set(OGRE2_VERSION_PATCH "")
569+
set(OGRE2_LIBRARIES "")
570+
set(OGRE2_INCLUDE_DIRS "")
533571
endif()
534572

535573
set(IgnOGRE2_FOUND ${GzOGRE2_FOUND}) # TODO(CH3): Deprecated. Remove on tock.

examples/find_ogre2/ogre-2.1/CMakeLists.txt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@ find_package(gz-cmake3 REQUIRED)
55

66
message(STATUS "Finding OGRE 2.1")
77

8-
gz_find_package(GzOGRE2 VERSION 2.1.0
8+
gz_find_package(GzOGRE2 VERSION 2.1
99
COMPONENTS HlmsPbs HlmsUnlit Overlay)
1010

1111
message(STATUS "OGRE2_FOUND: " ${OGRE2_FOUND})
12-
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13-
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14-
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15-
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16-
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17-
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18-
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
12+
if(OGRE2_FOUND)
13+
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
14+
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
15+
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
16+
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
17+
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
18+
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
19+
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
20+
21+
message(STATUS "GzOGRE2_VERSION_EXACT: " ${GzOGRE2_VERSION_EXACT})
22+
message(STATUS "GzOGRE2_VERSION_COMPATIBLE: " ${GzOGRE2_VERSION_COMPATIBLE})
23+
endif()

examples/find_ogre2/ogre-2.2/CMakeLists.txt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@ project(gz-ogre-2.2 VERSION 0.1.0)
33

44
find_package(gz-cmake3 REQUIRED)
55

6-
message(STATUS "Finding OGRE 2.2")
7-
6+
message(STATUS "Finding OGRE 2.2.0")
87
gz_find_package(GzOGRE2 VERSION 2.2.0
98
COMPONENTS HlmsPbs HlmsUnlit Overlay)
109

1110
message(STATUS "OGRE2_FOUND: " ${OGRE2_FOUND})
12-
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13-
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14-
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15-
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16-
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17-
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18-
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
11+
if(OGRE2_FOUND)
12+
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13+
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14+
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15+
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16+
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17+
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18+
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
19+
20+
message(STATUS "GzOGRE2_VERSION_EXACT: " ${GzOGRE2_VERSION_EXACT})
21+
message(STATUS "GzOGRE2_VERSION_COMPATIBLE: " ${GzOGRE2_VERSION_COMPATIBLE})
22+
endif()

examples/find_ogre2/ogre-2.3/CMakeLists.txt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@ project(gz-ogre-2.3 VERSION 0.1.0)
33

44
find_package(gz-cmake3 REQUIRED)
55

6-
message(STATUS "Finding OGRE 2.3")
7-
8-
gz_find_package(IgnOGRE2 VERSION 2.3.0)
6+
message(STATUS "Finding OGRE 2.3.0")
7+
gz_find_package(GzOGRE2 VERSION 2.3.0
8+
COMPONENTS HlmsPbs HlmsUnlit Overlay)
99

1010
message(STATUS "OGRE2_FOUND: " ${OGRE2_FOUND})
11-
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
12-
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
13-
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
14-
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
15-
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
16-
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
17-
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
11+
if(OGRE2_FOUND)
12+
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13+
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14+
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15+
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16+
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17+
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18+
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
19+
20+
message(STATUS "GzOGRE2_VERSION_EXACT: " ${GzOGRE2_VERSION_EXACT})
21+
message(STATUS "GzOGRE2_VERSION_COMPATIBLE: " ${GzOGRE2_VERSION_COMPATIBLE})
22+
endif()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
2+
project(gz-ogre-2 VERSION 0.1.0)
3+
4+
find_package(gz-cmake3 REQUIRED)
5+
6+
message(STATUS "Finding OGRE 2")
7+
gz_find_package(GzOGRE2 VERSION 2
8+
COMPONENTS HlmsPbs HlmsUnlit Overlay)
9+
10+
message(STATUS "OGRE2_FOUND: " ${OGRE2_FOUND})
11+
if(OGRE2_FOUND)
12+
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13+
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14+
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15+
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16+
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17+
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18+
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
19+
20+
message(STATUS "GzOGRE2_VERSION_EXACT: " ${GzOGRE2_VERSION_EXACT})
21+
message(STATUS "GzOGRE2_VERSION_COMPATIBLE: " ${GzOGRE2_VERSION_COMPATIBLE})
22+
endif()
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR)
2+
project(gz-ogre VERSION 0.1.0)
3+
4+
find_package(gz-cmake3 REQUIRED)
5+
6+
message(STATUS "Finding OGRE 2")
7+
gz_find_package(GzOGRE2
8+
COMPONENTS HlmsPbs HlmsUnlit Overlay)
9+
10+
message(STATUS "OGRE2_FOUND: " ${OGRE2_FOUND})
11+
if(OGRE2_FOUND)
12+
message(STATUS "OGRE2_LIBRARIES: " ${OGRE2_LIBRARIES})
13+
message(STATUS "OGRE2_INCLUDE_DIRS: " ${OGRE2_INCLUDE_DIRS})
14+
message(STATUS "OGRE2_VERSION: " ${OGRE2_VERSION})
15+
message(STATUS "OGRE2_VERSION_MAJOR: " ${OGRE2_VERSION_MAJOR})
16+
message(STATUS "OGRE2_VERSION_MINOR: " ${OGRE2_VERSION_MINOR})
17+
message(STATUS "OGRE2_VERSION_PATCH: " ${OGRE2_VERSION_PATCH})
18+
message(STATUS "OGRE2_RESOURCE_PATH: " ${OGRE2_RESOURCE_PATH})
19+
20+
message(STATUS "GzOGRE2_VERSION_EXACT: " ${GzOGRE2_VERSION_EXACT})
21+
message(STATUS "GzOGRE2_VERSION_COMPATIBLE: " ${GzOGRE2_VERSION_COMPATIBLE})
22+
endif()

0 commit comments

Comments
 (0)