From b8403c84a0314600090de3798543101eb7a323a5 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 27 Aug 2023 09:46:27 -0700 Subject: [PATCH 1/5] OpenEXRConfig.h.in uses version extracted from openexr_version.h The logic was already in place to extract the version from `openexr_version.h`, so the `.in` file just needed to reference the proper CMake variables. This also duplicates the `OpenEXR_VERSION_*` settings to `OPENEXR_VERSION_*`. Signed-off-by: Cary Phillips --- CMakeLists.txt | 8 ++++---- cmake/OpenEXRConfig.h.in | 11 +++-------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 02453a4498..5a97330051 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,13 +21,13 @@ endif() file(READ "src/lib/OpenEXRCore/openexr_version.h" VERSION_H) string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${VERSION_H}) -set(VER_MAJ ${CMAKE_MATCH_1}) +set(OPENEXR_VERSION_MAJOR ${CMAKE_MATCH_1}) string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${VERSION_H}) -set(VER_MIN ${CMAKE_MATCH_1}) +set(OPENEXR_VERSION_MINOR ${CMAKE_MATCH_1}) string(REGEX MATCH "VERSION_PATCH ([0-9]*)" _ ${VERSION_H}) -set(VER_PCH ${CMAKE_MATCH_1}) +set(OPENEXR_VERSION_PATCH ${CMAKE_MATCH_1}) -project(OpenEXR VERSION ${VER_MAJ}.${VER_MIN}.${VER_PCH} LANGUAGES C CXX) +project(OpenEXR VERSION ${OPENEXR_VERSION_MAJOR}.${OPENEXR_VERSION_MINOR}.${OPENEXR_VERSION_PATCH} LANGUAGES C CXX) set(OPENEXR_VERSION_RELEASE_TYPE "-dev" CACHE STRING "Extra version tag string for OpenEXR build, such as -dev, -beta1, etc.") diff --git a/cmake/OpenEXRConfig.h.in b/cmake/OpenEXRConfig.h.in index 9227aebf40..496b54bc9f 100644 --- a/cmake/OpenEXRConfig.h.in +++ b/cmake/OpenEXRConfig.h.in @@ -8,14 +8,9 @@ #pragma once -/// @TODO get the version from the header files. -/// due to the structure of the cmake configuration steps, -/// it's not obvious how to structure things for this to work. -/// so for now, just hardcode the version here. -//#include -#define OPENEXR_VERSION_MAJOR 3 -#define OPENEXR_VERSION_MINOR 2 -#define OPENEXR_VERSION_PATCH 0 +#define OPENEXR_VERSION_MAJOR @OPENEXR_VERSION_MAJOR@ +#define OPENEXR_VERSION_MINOR @OPENEXR_VERSION_MINOR@ +#define OPENEXR_VERSION_PATCH @OPENEXR_VERSION_PATCH@ // // Options / configuration based on O.S. / compiler From 0145af71e2b2824e882f3e3614786523a190538d Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 27 Aug 2023 17:16:54 -0700 Subject: [PATCH 2/5] bazel Signed-off-by: Cary Phillips --- BUILD.bazel | 3 +++ cmake/OpenEXRConfig.h.in | 8 +++++--- src/lib/OpenEXRCore/base.c | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 98923b9616..b51a6abe57 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -54,6 +54,9 @@ expand_template( "@OPENEXR_PACKAGE_NAME@": "OpenEXR 3.2.0", "@OPENEXR_VERSION_EXTRA@": "", "@OPENEXR_VERSION@": "3.2.0", + "@OPENEXR_VERSION_MAJOR@": "3", + "@OPENEXR_VERSION_MINOR@": "2", + "@OPENEXR_VERSION_PATCH@": "0", "#cmakedefine OPENEXR_ENABLE_API_VISIBILITY": "#define OPENEXR_ENABLE_API_VISIBILITY", "#cmakedefine OPENEXR_HAVE_LARGE_STACK 1": "/* #undef OPENEXR_HAVE_LARGE_STACK */", }, diff --git a/cmake/OpenEXRConfig.h.in b/cmake/OpenEXRConfig.h.in index 496b54bc9f..2cb7e76f5a 100644 --- a/cmake/OpenEXRConfig.h.in +++ b/cmake/OpenEXRConfig.h.in @@ -8,9 +8,11 @@ #pragma once -#define OPENEXR_VERSION_MAJOR @OPENEXR_VERSION_MAJOR@ -#define OPENEXR_VERSION_MINOR @OPENEXR_VERSION_MINOR@ -#define OPENEXR_VERSION_PATCH @OPENEXR_VERSION_PATCH@ +#ifndef INCLUDED_OPENEXR_VERSION_H +#define OPENEXR_VERSION_MAJOR @OpenEXR_VERSION_MAJOR@ +#define OPENEXR_VERSION_MINOR @OpenEXR_VERSION_MINOR@ +#define OPENEXR_VERSION_PATCH @OpenEXR_VERSION_PATCH@ +#endif // // Options / configuration based on O.S. / compiler diff --git a/src/lib/OpenEXRCore/base.c b/src/lib/OpenEXRCore/base.c index 7d5e04233a..513e73ea2c 100644 --- a/src/lib/OpenEXRCore/base.c +++ b/src/lib/OpenEXRCore/base.c @@ -5,6 +5,7 @@ #include "openexr_base.h" #include "openexr_errors.h" +#include "openexr_version.h" /**************************************/ From 52d5522dcc2e29914290c236b91d031d67dd04a7 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Sun, 27 Aug 2023 22:00:30 -0700 Subject: [PATCH 3/5] comment Signed-off-by: Cary Phillips --- cmake/OpenEXRConfig.h.in | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake/OpenEXRConfig.h.in b/cmake/OpenEXRConfig.h.in index 2cb7e76f5a..808d241860 100644 --- a/cmake/OpenEXRConfig.h.in +++ b/cmake/OpenEXRConfig.h.in @@ -8,6 +8,14 @@ #pragma once +// +// The OpenEXR release version is defined officially in +// src/lib/OpenEXRCore/openexr_version.h, but CMake doesn't readily allow +// that to be included here, so duplicate the settings for +// backwards-compatibility with applications that may expect to get the +// defines from this include. +// + #ifndef INCLUDED_OPENEXR_VERSION_H #define OPENEXR_VERSION_MAJOR @OpenEXR_VERSION_MAJOR@ #define OPENEXR_VERSION_MINOR @OpenEXR_VERSION_MINOR@ From fa41cf72924684cf9a4e8d5b8cf5a1f3551fa5d5 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Mon, 28 Aug 2023 09:16:07 -0700 Subject: [PATCH 4/5] fix formatting of core version test error message Signed-off-by: Cary Phillips --- src/test/OpenEXRCoreTest/CMakeLists.txt | 2 +- src/test/OpenEXRCoreTest/base_units.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/OpenEXRCoreTest/CMakeLists.txt b/src/test/OpenEXRCoreTest/CMakeLists.txt index 082abde8b3..f16f2eb085 100644 --- a/src/test/OpenEXRCoreTest/CMakeLists.txt +++ b/src/test/OpenEXRCoreTest/CMakeLists.txt @@ -27,7 +27,7 @@ target_compile_definitions(OpenEXRCoreTest PRIVATE COMP_MAJ=${OpenEXR_VERSION_MAJOR} COMP_MIN=${OpenEXR_VERSION_MINOR} COMP_PATCH=${OpenEXR_VERSION_PATCH} - COMP_EXTRA="\\"${OPENEXR_VERSION_RELEASE_TYPE}\\"" + COMP_EXTRA="${OPENEXR_VERSION_RELEASE_TYPE}" ) set_target_properties(OpenEXRCoreTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" diff --git a/src/test/OpenEXRCoreTest/base_units.cpp b/src/test/OpenEXRCoreTest/base_units.cpp index dca8cc15d1..c6c86f3bb3 100644 --- a/src/test/OpenEXRCoreTest/base_units.cpp +++ b/src/test/OpenEXRCoreTest/base_units.cpp @@ -34,13 +34,13 @@ testBase (const std::string& tempdir) if (major != COMP_MAJ || minor != COMP_MIN || patch != COMP_PATCH || !strcmp (extra, compextra)) { - std::cerr << "ERROR testing library, wrong library version: " << major + std::cerr << "ERROR testing library, wrong library version: '" << major << "." << minor << "." << patch; - if (extra[0] != '\0') std::cerr << "-" << extra; - std::cerr << " vs compiled in " << COMP_MAJ << "." << COMP_MIN << "." + if (extra[0] != '\0') std::cerr << extra; + std::cerr << "' vs compiled in '" << COMP_MAJ << "." << COMP_MIN << "." << COMP_PATCH; - if (compextra[0] != '\0') std::cerr << "-" << compextra; - std::cerr << std::endl; + if (compextra[0] != '\0') std::cerr << compextra; + std::cerr << "'" << std::endl; EXRCORE_TEST (false); } std::cout << "Testing OpenEXR library version: " << major << "." << minor << "." From 086a214ee05d668ea1ac3907df1a1e6020efb715 Mon Sep 17 00:00:00 2001 From: Cary Phillips Date: Mon, 28 Aug 2023 09:51:34 -0700 Subject: [PATCH 5/5] fix extra comparison test Signed-off-by: Cary Phillips --- src/test/OpenEXRCoreTest/base_units.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/OpenEXRCoreTest/base_units.cpp b/src/test/OpenEXRCoreTest/base_units.cpp index c6c86f3bb3..394557d12e 100644 --- a/src/test/OpenEXRCoreTest/base_units.cpp +++ b/src/test/OpenEXRCoreTest/base_units.cpp @@ -32,7 +32,7 @@ testBase (const std::string& tempdir) exr_get_library_version (&major, &minor, &patch, &extra); if (major != COMP_MAJ || minor != COMP_MIN || patch != COMP_PATCH || - !strcmp (extra, compextra)) + strcmp (extra, compextra)) { std::cerr << "ERROR testing library, wrong library version: '" << major << "." << minor << "." << patch; @@ -43,10 +43,10 @@ testBase (const std::string& tempdir) std::cerr << "'" << std::endl; EXRCORE_TEST (false); } - std::cout << "Testing OpenEXR library version: " << major << "." << minor << "." + std::cout << "Testing OpenEXR library version: '" << major << "." << minor << "." << patch; - if (extra[0] != '\0') std::cout << "-" << extra; - std::cout << std::endl; + if (extra[0] != '\0') std::cout << extra; + std::cout << "'" << std::endl; exr_get_library_version (NULL, &minor, &patch, &extra); exr_get_library_version (&major, NULL, &patch, &extra);