You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Overhaul FindOpenShotAudio.cmake
* Version checking!
- Supports EXACT
(but only for M.N.B, e.g. 0.1.8-dev1 matches 0.1.8 EXACT)
- REQUIRED will now cause CMake to abort if version is not
sufficient (lower than requested)
- Outputs the following:
- Version requested, if set
- Version found, if successfully parsed from header
- Compatibility status, if version set on both ends
* Accept `LIBOPENSHOT_AUDIO_DIR` cache variable, in addition to
the environment variable (for `cmake -DLIBOPENSHOT_AUDIO_DIR=...`)
* Do two-stage search for both headers and libs
(Avoids this situation...)
LIBOPENSHOT_AUDIO_INCLUDE_DIRS=/usr/include/libopenshot-audio
LIBOPENSHOT_AUDIO_LIBRARY=/home/ferd/build/
(Largely inspired by CMake's `FindPythonLibs.cmake`)
This commit is contained in:
@@ -5,34 +5,114 @@
|
||||
# LIBOPENSHOT_AUDIO_INCLUDE_DIRS - The juce.h include directories
|
||||
# LIBOPENSHOT_AUDIO_LIBRARIES - The libraries needed to use juce
|
||||
|
||||
message("$ENV{LIBOPENSHOT_AUDIO_DIR}")
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Find the libopenshot-audio header files
|
||||
find_path(LIBOPENSHOT_AUDIO_INCLUDE_DIR JuceHeader.h
|
||||
PATHS $ENV{LIBOPENSHOT_AUDIO_DIR}/include/libopenshot-audio/
|
||||
/usr/include/libopenshot-audio/
|
||||
/usr/local/include/libopenshot-audio/ )
|
||||
if("$ENV{LIBOPENSHOT_AUDIO_DIR}" AND NOT "${OpenShotAudio_FIND_QUIETLY}")
|
||||
message(STATUS "Looking for OpenShotAudio in: $ENV{LIBOPENSHOT_AUDIO_DIR}")
|
||||
endif()
|
||||
|
||||
# Find the libopenshot-audio.so (check env var first)
|
||||
find_library(LIBOPENSHOT_AUDIO_LIBRARY
|
||||
NAMES libopenshot-audio openshot-audio
|
||||
PATHS $ENV{LIBOPENSHOT_AUDIO_DIR}/lib/ NO_DEFAULT_PATH)
|
||||
# Find the libopenshot-audio header files (check env/cache vars first)
|
||||
find_path(
|
||||
LIBOPENSHOT_AUDIO_INCLUDE_DIR
|
||||
JuceHeader.h
|
||||
HINTS
|
||||
ENV LIBOPENSHOT_AUDIO_DIR
|
||||
PATHS
|
||||
${LIBOPENSHOT_AUDIO_DIR}
|
||||
PATH_SUFFIXES
|
||||
include/libopenshot-audio
|
||||
libopenshot-audio
|
||||
include
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
# Find the libopenshot-audio.so / libopenshot-audio.dll library (fallback)
|
||||
find_library(LIBOPENSHOT_AUDIO_LIBRARY
|
||||
NAMES libopenshot-audio openshot-audio
|
||||
HINTS $ENV{LIBOPENSHOT_AUDIO_DIR}/lib/
|
||||
/usr/lib/
|
||||
/usr/lib/libopenshot-audio/
|
||||
/usr/local/lib/ )
|
||||
# Find the libopenshot-audio header files (fallback to std. paths)
|
||||
find_path(
|
||||
LIBOPENSHOT_AUDIO_INCLUDE_DIR
|
||||
JuceHeader.h
|
||||
HINTS
|
||||
ENV LIBOPENSHOT_AUDIO_DIR
|
||||
PATHS
|
||||
${LIBOPENSHOT_AUDIO_DIR}
|
||||
PATH_SUFFIXES
|
||||
include/libopenshot-audio
|
||||
libopenshot-audio
|
||||
include
|
||||
)
|
||||
|
||||
set(LIBOPENSHOT_AUDIO_LIBRARIES ${LIBOPENSHOT_AUDIO_LIBRARY})
|
||||
set(LIBOPENSHOT_AUDIO_LIBRARY ${LIBOPENSHOT_AUDIO_LIBRARIES})
|
||||
# Find libopenshot-audio.so / libopenshot-audio.dll (check env/cache vars first)
|
||||
find_library(
|
||||
LIBOPENSHOT_AUDIO_LIBRARY
|
||||
NAMES
|
||||
libopenshot-audio
|
||||
openshot-audio
|
||||
HINTS
|
||||
ENV LIBOPENSHOT_AUDIO_DIR
|
||||
PATHS
|
||||
${LIBOPENSHOT_AUDIO_DIR}
|
||||
PATH_SUFFIXES
|
||||
lib/libopenshot-audio
|
||||
libopenshot-audio
|
||||
lib
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
set(LIBOPENSHOT_AUDIO_INCLUDE_DIRS ${LIBOPENSHOT_AUDIO_INCLUDE_DIR} )
|
||||
# Find libopenshot-audio.so / libopenshot-audio.dll (fallback)
|
||||
find_library(
|
||||
LIBOPENSHOT_AUDIO_LIBRARY
|
||||
NAMES
|
||||
libopenshot-audio
|
||||
openshot-audio
|
||||
HINTS
|
||||
ENV LIBOPENSHOT_AUDIO_DIR
|
||||
PATHS
|
||||
${LIBOPENSHOT_AUDIO_DIR}
|
||||
PATH_SUFFIXES
|
||||
lib/libopenshot-audio
|
||||
libopenshot-audio
|
||||
lib
|
||||
)
|
||||
|
||||
set(LIBOPENSHOT_AUDIO_LIBRARIES "${LIBOPENSHOT_AUDIO_LIBRARY}")
|
||||
set(LIBOPENSHOT_AUDIO_LIBRARY "${LIBOPENSHOT_AUDIO_LIBRARIES}")
|
||||
set(LIBOPENSHOT_AUDIO_INCLUDE_DIRS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}")
|
||||
|
||||
if(LIBOPENSHOT_AUDIO_INCLUDE_DIR AND EXISTS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}/JuceHeader.h")
|
||||
file(STRINGS "${LIBOPENSHOT_AUDIO_INCLUDE_DIR}/JuceHeader.h" libosa_version_str
|
||||
REGEX "versionString.*=.*\"[^\"]+\"")
|
||||
if(libosa_version_str MATCHES "versionString.*=.*\"([^\"]+)\"")
|
||||
set(LIBOPENSHOT_AUDIO_VERSION_STRING ${CMAKE_MATCH_1})
|
||||
endif()
|
||||
unset(libosa_version_str)
|
||||
string(REGEX REPLACE "^([0-9]+\.[0-9]+\.[0-9]+).*$" "\\1"
|
||||
LIBOPENSHOT_AUDIO_VERSION "${LIBOPENSHOT_AUDIO_VERSION_STRING}")
|
||||
endif()
|
||||
|
||||
# If we couldn't parse M.N.B version, don't keep any of it
|
||||
if(NOT LIBOPENSHOT_AUDIO_VERSION)
|
||||
unset(LIBOPENSHOT_AUDIO_VERSION)
|
||||
unset(LIBOPENSHOT_AUDIO_VERSION_STRING)
|
||||
endif()
|
||||
|
||||
# Determine compatibility with requested version in find_package()
|
||||
if(OpenShotAudio_FIND_VERSION AND LIBOPENSHOT_AUDIO_VERSION)
|
||||
if("${OpenShotAudio_FIND_VERSION}" STREQUAL "${LIBOPENSHOT_AUDIO_VERSION}")
|
||||
set(OpenShotAudio_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
if("${OpenShotAudio_FIND_VERSION}" VERSION_GREATER "${LIBOPENSHOT_AUDIO_VERSION}")
|
||||
set(OpenShotAudio_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
set(OpenShotAudio_VERSION_COMPATIBLE TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
# handle the QUIETLY and REQUIRED arguments and set LIBOPENSHOT_AUDIO_FOUND to TRUE
|
||||
# if all listed variables are TRUE
|
||||
find_package_handle_standard_args(LIBOPENSHOT_AUDIO DEFAULT_MSG
|
||||
LIBOPENSHOT_AUDIO_LIBRARY LIBOPENSHOT_AUDIO_INCLUDE_DIR)
|
||||
find_package_handle_standard_args(OpenShotAudio
|
||||
REQUIRED_VARS
|
||||
LIBOPENSHOT_AUDIO_LIBRARY
|
||||
LIBOPENSHOT_AUDIO_INCLUDE_DIRS
|
||||
VERSION_VAR
|
||||
LIBOPENSHOT_AUDIO_VERSION_STRING
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user