Skip to content

Commit 9cf892f

Browse files
authored
Merge pull request #277 from ferdnyc/lib-audio-version-checks
FindOpenShotAudio version reporting/validation, other fixes
2 parents 2f3c7bc + 935a740 commit 9cf892f

File tree

3 files changed

+102
-24
lines changed

3 files changed

+102
-24
lines changed

cmake/Modules/FindOpenShotAudio.cmake

Lines changed: 100 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,112 @@
55
# LIBOPENSHOT_AUDIO_INCLUDE_DIRS - The juce.h include directories
66
# LIBOPENSHOT_AUDIO_LIBRARIES - The libraries needed to use juce
77

8-
message("$ENV{LIBOPENSHOT_AUDIO_DIR}")
8+
if("$ENV{LIBOPENSHOT_AUDIO_DIR}" AND NOT "${OpenShotAudio_FIND_QUIETLY}")
9+
message(STATUS "Looking for OpenShotAudio in: $ENV{LIBOPENSHOT_AUDIO_DIR}")
10+
endif()
911

10-
# Find the libopenshot-audio header files
11-
find_path(LIBOPENSHOT_AUDIO_INCLUDE_DIR JuceHeader.h
12-
PATHS $ENV{LIBOPENSHOT_AUDIO_DIR}/include/libopenshot-audio/
13-
/usr/include/libopenshot-audio/
14-
/usr/local/include/libopenshot-audio/ )
12+
# Find the libopenshot-audio header files (check env/cache vars first)
13+
find_path(
14+
LIBOPENSHOT_AUDIO_INCLUDE_DIR
15+
JuceHeader.h
16+
HINTS
17+
ENV LIBOPENSHOT_AUDIO_DIR
18+
PATHS
19+
${LIBOPENSHOT_AUDIO_DIR}
20+
PATH_SUFFIXES
21+
include/libopenshot-audio
22+
libopenshot-audio
23+
include
24+
NO_DEFAULT_PATH
25+
)
1526

16-
# Find the libopenshot-audio.so (check env var first)
17-
find_library(LIBOPENSHOT_AUDIO_LIBRARY
18-
NAMES libopenshot-audio openshot-audio
19-
PATHS $ENV{LIBOPENSHOT_AUDIO_DIR}/lib/ NO_DEFAULT_PATH)
27+
# Find the libopenshot-audio header files (fallback to std. paths)
28+
find_path(
29+
LIBOPENSHOT_AUDIO_INCLUDE_DIR
30+
JuceHeader.h
31+
HINTS
32+
ENV LIBOPENSHOT_AUDIO_DIR
33+
PATHS
34+
${LIBOPENSHOT_AUDIO_DIR}
35+
PATH_SUFFIXES
36+
include/libopenshot-audio
37+
libopenshot-audio
38+
include
39+
)
2040

21-
# Find the libopenshot-audio.so / libopenshot-audio.dll library (fallback)
22-
find_library(LIBOPENSHOT_AUDIO_LIBRARY
23-
NAMES libopenshot-audio openshot-audio
24-
HINTS $ENV{LIBOPENSHOT_AUDIO_DIR}/lib/
25-
/usr/lib/
26-
/usr/lib/libopenshot-audio/
27-
/usr/local/lib/ )
41+
# Find libopenshot-audio.so / libopenshot-audio.dll (check env/cache vars first)
42+
find_library(
43+
LIBOPENSHOT_AUDIO_LIBRARY
44+
NAMES
45+
libopenshot-audio
46+
openshot-audio
47+
HINTS
48+
ENV LIBOPENSHOT_AUDIO_DIR
49+
PATHS
50+
${LIBOPENSHOT_AUDIO_DIR}
51+
PATH_SUFFIXES
52+
lib/libopenshot-audio
53+
libopenshot-audio
54+
lib
55+
NO_DEFAULT_PATH
56+
)
2857

29-
set(LIBOPENSHOT_AUDIO_LIBRARIES ${LIBOPENSHOT_AUDIO_LIBRARY})
30-
set(LIBOPENSHOT_AUDIO_LIBRARY ${LIBOPENSHOT_AUDIO_LIBRARIES})
58+
# Find libopenshot-audio.so / libopenshot-audio.dll (fallback)
59+
find_library(
60+
LIBOPENSHOT_AUDIO_LIBRARY
61+
NAMES
62+
libopenshot-audio
63+
openshot-audio
64+
HINTS
65+
ENV LIBOPENSHOT_AUDIO_DIR
66+
PATHS
67+
${LIBOPENSHOT_AUDIO_DIR}
68+
PATH_SUFFIXES
69+
lib/libopenshot-audio
70+
libopenshot-audio
71+
lib
72+
)
3173

32-
set(LIBOPENSHOT_AUDIO_INCLUDE_DIRS ${LIBOPENSHOT_AUDIO_INCLUDE_DIR} )
74+
set(LIBOPENSHOT_AUDIO_LIBRARIES "${LIBOPENSHOT_AUDIO_LIBRARY}")
75+
set(LIBOPENSHOT_AUDIO_LIBRARY "${LIBOPENSHOT_AUDIO_LIBRARIES}")
76+
set(LIBOPENSHOT_AUDIO_INCLUDE_DIRS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}")
77+
78+
if(LIBOPENSHOT_AUDIO_INCLUDE_DIR AND EXISTS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}/JuceHeader.h")
79+
file(STRINGS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}/JuceHeader.h" libosa_version_str
80+
REGEX "versionString.*=.*\"[^\"]+\"")
81+
if(libosa_version_str MATCHES "versionString.*=.*\"([^\"]+)\"")
82+
set(LIBOPENSHOT_AUDIO_VERSION_STRING ${CMAKE_MATCH_1})
83+
endif()
84+
unset(libosa_version_str)
85+
string(REGEX REPLACE "^([0-9]+\.[0-9]+\.[0-9]+).*$" "\\1"
86+
LIBOPENSHOT_AUDIO_VERSION "${LIBOPENSHOT_AUDIO_VERSION_STRING}")
87+
endif()
88+
89+
# If we couldn't parse M.N.B version, don't keep any of it
90+
if(NOT LIBOPENSHOT_AUDIO_VERSION)
91+
unset(LIBOPENSHOT_AUDIO_VERSION)
92+
unset(LIBOPENSHOT_AUDIO_VERSION_STRING)
93+
endif()
94+
95+
# Determine compatibility with requested version in find_package()
96+
if(OpenShotAudio_FIND_VERSION AND LIBOPENSHOT_AUDIO_VERSION)
97+
if("${OpenShotAudio_FIND_VERSION}" STREQUAL "${LIBOPENSHOT_AUDIO_VERSION}")
98+
set(OpenShotAudio_VERSION_EXACT TRUE)
99+
endif()
100+
if("${OpenShotAudio_FIND_VERSION}" VERSION_GREATER "${LIBOPENSHOT_AUDIO_VERSION}")
101+
set(OpenShotAudio_VERSION_COMPATIBLE FALSE)
102+
else()
103+
set(OpenShotAudio_VERSION_COMPATIBLE TRUE)
104+
endif()
105+
endif()
33106

34107
include(FindPackageHandleStandardArgs)
35108
# handle the QUIETLY and REQUIRED arguments and set LIBOPENSHOT_AUDIO_FOUND to TRUE
36109
# if all listed variables are TRUE
37-
find_package_handle_standard_args(LIBOPENSHOT_AUDIO DEFAULT_MSG
38-
LIBOPENSHOT_AUDIO_LIBRARY LIBOPENSHOT_AUDIO_INCLUDE_DIR)
110+
find_package_handle_standard_args(OpenShotAudio
111+
REQUIRED_VARS
112+
LIBOPENSHOT_AUDIO_LIBRARY
113+
LIBOPENSHOT_AUDIO_INCLUDE_DIRS
114+
VERSION_VAR
115+
LIBOPENSHOT_AUDIO_VERSION_STRING
116+
)

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ ENDIF (AVRESAMPLE_FOUND)
112112

113113
################# LIBOPENSHOT-AUDIO ###################
114114
# Find JUCE-based openshot Audio libraries
115-
FIND_PACKAGE(OpenShotAudio REQUIRED)
115+
FIND_PACKAGE(OpenShotAudio 0.1.8 REQUIRED)
116116

117117
# Include Juce headers (needed for compile)
118118
include_directories(${LIBOPENSHOT_AUDIO_INCLUDE_DIRS})

tests/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ ENDIF (AVRESAMPLE_FOUND)
112112

113113
################# LIBOPENSHOT-AUDIO ###################
114114
# Find JUCE-based openshot Audio libraries
115-
FIND_PACKAGE(OpenShotAudio REQUIRED)
115+
FIND_PACKAGE(OpenShotAudio 0.1.8 REQUIRED)
116116

117117
# Include Juce headers (needed for compile)
118118
include_directories(${LIBOPENSHOT_AUDIO_INCLUDE_DIRS})

0 commit comments

Comments
 (0)