mirror of
https://github.com/Unidata/netcdf-cxx4.git
synced 2025-03-07 19:16:42 +08:00
Adapting the findplugin script from the C library.
This commit is contained in:
parent
b8b48eb9d4
commit
1832b18c98
107
cxx4/findplugin.in
Normal file
107
cxx4/findplugin.in
Normal file
@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define a function that attempts to locate a
|
||||
# plugin with a given canonical name.
|
||||
# Assumptions:
|
||||
# 1. plugins is a top-level directory
|
||||
# Inputs:
|
||||
# $1 is the canonical name
|
||||
# $2 is 1 if we are running under cmake
|
||||
# $3 is 1 if we are running using Visual Studio, blank otherwise
|
||||
# $4 is the build type; only used if $3 is 1
|
||||
# Outputs:
|
||||
# return code is 0 is success, 1 if failed
|
||||
# Variable HDF5_PLUGIN_LIB is set to the library file name
|
||||
# Variable HDF5_PLUGIN_PATH is setthe absolute path to the
|
||||
# directory containing the plugin library file
|
||||
# Local variables are prefixed with FP_
|
||||
#
|
||||
# Note: we assume that the use of the CMAKE_BUILD_TYPE
|
||||
# is obviated by setting the LIBRARY_OUTPUT_DIRECTORY
|
||||
# variables: see hdf5plugins/CMakeLists.txt
|
||||
|
||||
findplugin() {
|
||||
|
||||
FP_NAME="$1"
|
||||
|
||||
# Figure out the compiler (some values from ./configure)
|
||||
FP_ISCMAKE=@ISCMAKE@
|
||||
FP_ISMSVC=@MSVC@
|
||||
|
||||
# And topsrcdir
|
||||
topbuilddir='@abs_top_builddir@'
|
||||
|
||||
# Are we operating under OS-X? (test using uname)
|
||||
FP_OS=`uname | cut -d '_' -f 1`
|
||||
if test "x$FP_OS" = xDarwin ; then FP_ISOSX=1; fi
|
||||
|
||||
# Are we operating under CYGWIN? (test using uname)
|
||||
FP_OS=`uname | cut -d '_' -f 1`
|
||||
if test "x$FP_OS" = xCYGWIN ; then FP_ISCYGWIN=1; fi
|
||||
|
||||
FP_PLUGINS="$topbuilddir/plugins"
|
||||
|
||||
FP_PLUGIN_LIB=
|
||||
FP_PLUGIN_PATH=
|
||||
|
||||
# Figure out the plugin file name
|
||||
# Test for visual studio before cygwin since both might be true
|
||||
if test "x$FP_ISMSVC" != x ; then
|
||||
FP_PLUGIN_LIB="${FP_NAME}.dll"
|
||||
elif test "x$FP_ISCYGWIN" != x ; then
|
||||
FP_PLUGIN_LIB="cyg${FP_NAME}.dll"
|
||||
elif test "x$FP_ISOSX" != x ; then
|
||||
FP_PLUGIN_LIB="lib${FP_NAME}.so" # Should this include the version number in the name?
|
||||
else # Presumably some form on *nix"
|
||||
FP_PLUGIN_LIB="lib${FP_NAME}.so"
|
||||
fi
|
||||
|
||||
# Figure out the path to where the lib is stored
|
||||
# This can probably be simplified
|
||||
# Case 1: Cmake with Visual Studio
|
||||
# Do not know where to look for a dylib
|
||||
# Case 1: Cmake with Visual Studio
|
||||
if test "x$FP_ISCMAKE" != x -a "x${FP_ISMSVC}" != x ; then
|
||||
# Case 1a: ignore the build type directory
|
||||
if test -f "${FP_PLUGINS}/${FP_PLUGIN_LIB}" ; then
|
||||
FP_PLUGIN_PATH="${FP_PLUGINS}"
|
||||
fi
|
||||
else # Case 2: automake
|
||||
# Case 2a: look in .libs
|
||||
if test -f "${FP_PLUGINS}/.libs/${FP_PLUGIN_LIB}" ; then
|
||||
FP_PLUGIN_PATH="${FP_PLUGINS}/.libs"
|
||||
else # Case 2: look in FP_PLUGINS directly
|
||||
if test -f "${FP_PLUGINS}/${FP_PLUGIN_LIB}" ; then
|
||||
FP_PLUGIN_PATH="${FP_PLUGINS}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Verify
|
||||
if test "x$FP_PLUGIN_PATH" = x ; then
|
||||
echo "***Fail: Could not locate a usable HDF5_PLUGIN_PATH"
|
||||
return 1
|
||||
fi
|
||||
if ! test -f "$FP_PLUGIN_PATH/$FP_PLUGIN_LIB" ; then
|
||||
echo "***Fail: Could not locate a usable HDF5_PLUGIN_LIB"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# If we are operating using both Visual Studio and Cygwin,
|
||||
# then we need to convert the FP_PLUGIN_PATH to windows format
|
||||
if test "x$FP_ISMSVC" != x -a "x$FP_ISCYGWIN" != x ; then
|
||||
FP_PLUGIN_PATH=`cygpath -wl $FP_PLUGIN_PATH`
|
||||
fi
|
||||
|
||||
# Set the final output variables
|
||||
HDF5_PLUGIN_LIB="$FP_PLUGIN_LIB"
|
||||
HDF5_PLUGIN_PATH="$FP_PLUGIN_PATH"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# debug
|
||||
if test "x$1" != x ; then
|
||||
findplugin
|
||||
echo "HDF5_PLUGIN_PATH=|$FP_PLUGIN_PATH|"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user