From a8b63c0d3217c52acd0d173ef761aeefed986cbd Mon Sep 17 00:00:00 2001 From: Scott Date: Fri, 17 Jun 2016 18:32:24 -0700 Subject: [PATCH] Added function to init lens distortion from parameters --- src/vw/Camera/LensDistortion.cc | 21 +++ src/vw/Camera/LensDistortion.h | 89 ++++++------ .../Cartography/tests/TestGeoReferenceUtils | 136 ++++++++++++++---- 3 files changed, 177 insertions(+), 69 deletions(-) diff --git a/src/vw/Camera/LensDistortion.cc b/src/vw/Camera/LensDistortion.cc index c76e54a06..7e0b778b4 100644 --- a/src/vw/Camera/LensDistortion.cc +++ b/src/vw/Camera/LensDistortion.cc @@ -60,6 +60,8 @@ struct DistortOptimizeFunctor : public math::LeastSquaresModelBase LensDistortion::distortion_parameters() const { return Vector(); } +void LensDistortion::set_distortion_parameters(Vector const& params) {} + Vector2 LensDistortion::undistorted_coordinates(const camera::PinholeModel& cam, Vector2 const& v) const { UndistortOptimizeFunctor model(cam, *this); @@ -111,6 +113,10 @@ TsaiLensDistortion::TsaiLensDistortion(Vector4 const& params) : m_distortion(par Vector TsaiLensDistortion::distortion_parameters() const { return m_distortion; } +void TsaiLensDistortion::set_distortion_parameters(Vector const& params) { + m_distortion = params; +} + boost::shared_ptr TsaiLensDistortion::copy() const { return boost::shared_ptr(new TsaiLensDistortion(*this)); @@ -213,6 +219,13 @@ Vector BrownConradyDistortion::distortion_parameters() const { return output; } +void BrownConradyDistortion::set_distortion_parameters(Vector const& params) { + m_principal_point = subvector(params,0,2); + m_radial_distortion = subvector(params,2,3); + m_centering_distortion = subvector(params,5,2); + m_centering_angle = params[7]; +} + Vector2 BrownConradyDistortion::undistorted_coordinates(const camera::PinholeModel& cam, Vector2 const& p) const { Vector2 offset = cam.point_offset(); @@ -282,6 +295,10 @@ AdjustableTsaiLensDistortion::distortion_parameters() const { return m_distortion; } +void AdjustableTsaiLensDistortion::set_distortion_parameters(Vector const& params) { + m_distortion = params; +} + boost::shared_ptr AdjustableTsaiLensDistortion::copy() const { return boost::shared_ptr(new AdjustableTsaiLensDistortion(*this)); @@ -370,6 +387,10 @@ PhotometrixLensDistortion::distortion_parameters() const { return m_distortion; } +void PhotometrixLensDistortion::set_distortion_parameters(Vector const& params) { + m_distortion = params; +} + boost::shared_ptr PhotometrixLensDistortion::copy() const { return boost::shared_ptr(new PhotometrixLensDistortion(*this)); diff --git a/src/vw/Camera/LensDistortion.h b/src/vw/Camera/LensDistortion.h index 6db890645..e9c3d2c4b 100644 --- a/src/vw/Camera/LensDistortion.h +++ b/src/vw/Camera/LensDistortion.h @@ -69,6 +69,9 @@ namespace camera { /// Return a vector containing all the distortion parameters. virtual Vector distortion_parameters() const; + /// Initialize the object from a set of distortion parameters. + virtual void set_distortion_parameters(Vector const& params); + /// Each derived model needs to have a string name. virtual std::string name() const = 0; @@ -86,15 +89,15 @@ namespace camera { /// A NULL lens distortion model. struct NullLensDistortion : public LensDistortion { - inline Vector2 distorted_coordinates (const PinholeModel&, Vector2 const& v) const { return v; } - inline Vector2 undistorted_coordinates(const PinholeModel&, Vector2 const& v) const { return v; } - - boost::shared_ptr copy() const; - void write(std::ostream& os) const; - void read (std::istream& os); - static std::string class_name() { return "NULL"; } - std::string name () const { return class_name(); } - void scale(float /*scale*/); + virtual Vector2 distorted_coordinates (const PinholeModel&, Vector2 const& v) const { return v; } + virtual Vector2 undistorted_coordinates(const PinholeModel&, Vector2 const& v) const { return v; } + + virtual boost::shared_ptr copy() const; + virtual void write(std::ostream& os) const; + virtual void read (std::istream& os); + static std::string class_name() { return "NULL"; } + virtual std::string name () const { return class_name(); } + virtual void scale(float /*scale*/); }; /// TSAI Lens Distortion Model @@ -127,17 +130,18 @@ namespace camera { public: TsaiLensDistortion() {} TsaiLensDistortion(Vector4 const& params); - Vector distortion_parameters() const; - boost::shared_ptr copy() const; + virtual Vector distortion_parameters() const; + virtual void set_distortion_parameters(Vector const& params); + virtual boost::shared_ptr copy() const; - Vector2 distorted_coordinates(const PinholeModel& cam, Vector2 const& p) const; + virtual Vector2 distorted_coordinates(const PinholeModel& cam, Vector2 const& p) const; - void write(std::ostream& os) const; - void read (std::istream& os); + virtual void write(std::ostream& os) const; + virtual void read (std::istream& os); - static std::string class_name() { return "TSAI"; } - std::string name () const { return class_name(); } - void scale( float scale ); + static std::string class_name() { return "TSAI"; } + virtual std::string name () const { return class_name(); } + virtual void scale( float scale ); }; /// Brown Conrady Distortion @@ -163,16 +167,17 @@ namespace camera { Vector const& centering, double const& angle ); - Vector distortion_parameters() const; - boost::shared_ptr copy() const; + virtual Vector distortion_parameters() const; + virtual void set_distortion_parameters(Vector const& params); + virtual boost::shared_ptr copy() const; - Vector2 undistorted_coordinates(const PinholeModel&, Vector2 const&) const; + virtual Vector2 undistorted_coordinates(const PinholeModel&, Vector2 const&) const; - void write(std::ostream& os) const; - void read (std::istream& os); - static std::string class_name() { return "BrownConrady"; } - std::string name () const { return class_name(); } - void scale( float /*scale*/ ); + virtual void write(std::ostream& os) const; + virtual void read (std::istream& os); + static std::string class_name() { return "BrownConrady"; } + virtual std::string name () const { return class_name(); } + virtual void scale( float /*scale*/ ); }; /// Adjustable Tsai Distortion @@ -192,17 +197,18 @@ namespace camera { public: AdjustableTsaiLensDistortion() {} AdjustableTsaiLensDistortion(Vector params); - Vector distortion_parameters() const; - boost::shared_ptr copy() const; + virtual Vector distortion_parameters() const; + virtual void set_distortion_parameters(Vector const& params); + virtual boost::shared_ptr copy() const; - Vector2 distorted_coordinates(PinholeModel const&, Vector2 const&) const; + virtual Vector2 distorted_coordinates(PinholeModel const&, Vector2 const&) const; - void write(std::ostream& os) const; - void read (std::istream& os); + virtual void write(std::ostream& os) const; + virtual void read (std::istream& os); - static std::string class_name() { return "AdjustableTSAI"; } - std::string name () const { return class_name(); } - void scale( float /*scale*/ ); + static std::string class_name() { return "AdjustableTSAI"; } + virtual std::string name () const { return class_name(); } + virtual void scale( float /*scale*/ ); }; @@ -237,18 +243,19 @@ namespace camera { public: PhotometrixLensDistortion() {} PhotometrixLensDistortion(Vector const& params); - Vector distortion_parameters() const; - boost::shared_ptr copy() const; + virtual Vector distortion_parameters() const; + virtual void set_distortion_parameters(Vector const& params); + virtual boost::shared_ptr copy() const; - Vector2 undistorted_coordinates(const PinholeModel& cam, Vector2 const& p) const; + virtual Vector2 undistorted_coordinates(const PinholeModel& cam, Vector2 const& p) const; - void write(std::ostream& os) const; - void read (std::istream& os); + virtual void write(std::ostream& os) const; + virtual void read (std::istream& os); - static std::string class_name() { return "Photometrix"; } - std::string name () const { return class_name(); } + static std::string class_name() { return "Photometrix"; } + virtual std::string name () const { return class_name(); } - void scale( float scale ); + virtual void scale( float scale ); }; diff --git a/src/vw/Cartography/tests/TestGeoReferenceUtils b/src/vw/Cartography/tests/TestGeoReferenceUtils index f62e94794..effc8edb5 100755 --- a/src/vw/Cartography/tests/TestGeoReferenceUtils +++ b/src/vw/Cartography/tests/TestGeoReferenceUtils @@ -1,7 +1,7 @@ #! /bin/sh # TestGeoReferenceUtils - temporary wrapper script for .libs/TestGeoReferenceUtils -# Generated by ltmain.sh (GNU libtool) 2.2.6b +# Generated by libtool (GNU libtool) 2.4.2 # # The TestGeoReferenceUtils program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -11,7 +11,6 @@ # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='/bin/sed -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Be Bourne compatible @@ -32,39 +31,125 @@ DUALCASE=1; export DUALCASE # for MKS sh # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -relink_command="(cd /home/smcmich1/repo/visionworkbench/src/vw/Cartography/tests; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/home/smcmich1/programs/gcc_4_9_3_install/lib:/home/smcmich1/programs/gcc_4_9_3_install/lib64; export LD_LIBRARY_PATH; PATH=/byss/packages/isis-3.4.9-x86_64_linux_RHEL6/isis/bin:/home/smcmich1/repo/StereoPipeline/build/bin:/home/smcmich1/repo/visionworkbench/build/bin:/home/smcmich1/repo/BinaryBuilder/build_root/install/bin:/home/smcmich1/programs/latexmk/bin:/home/smcmich1/programs/gcc_4_9_3_install/bin/:/byss/smcmich1/programs/tkdiff-unix/:/byss/smcmich1/venv/bin:/home/smcmich1/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/smcmich1/bin; export PATH; g++ -Wall -Wextra -Wno-unused-parameter -g -DDEBUG -O3 -Wno-missing-field-initializers -fno-strict-aliasing -Wl,-no-undefined -Wl,-as-needed -o \$progdir/\$file TestGeoReferenceUtils.o -L/home/smcmich1/repo/BaseSystem/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/proj/proj-4.8.0/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/tiff/tiff-4.0.3/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/jpeg/jpeg-8d/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/png/libpng-1.6.7/lib ../../../../src/vw/Cartography/.libs/libvwCartography.so -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/superlu/SuperLU_4.3/lib -L/usr/lib64 -L/usr/local/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/openexr/openexr-1.7.0/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/ilmbase/ilmbase-1.0.2/lib -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/gdal/gdal-1.10.1/lib -L/home/smcmich1/repo/BaseSystem ../../../../src/vw/Camera/.libs/libvwCamera.so -L/home/smcmich1/repo/BinaryBuilder/build_root_gcc493/build/protobuf/protobuf-2.4.1/lib /home/smcmich1/repo/visionworkbench/src/vw/FileIO/.libs/libvwFileIO.so ../../../../src/vw/FileIO/.libs/libvwFileIO.so /home/smcmich1/repo/visionworkbench/src/vw/Image/.libs/libvwImage.so ../../../../src/vw/Image/.libs/libvwImage.so /home/smcmich1/repo/visionworkbench/src/vw/Math/.libs/libvwMath.so ../../../../src/vw/Math/.libs/libvwMath.so ../../../../src/vw/Core/.libs/libvwCore.so -llapack /home/smcmich1/repo/BaseSystem/lib/libblas.so /home/smcmich1/repo/BaseSystem/lib/libsuperlu.so /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libgfortran.so /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libquadmath.so -lflann_cpp -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_flann -lopencv_nonfree /home/smcmich1/repo/BaseSystem/lib/libIlmImf.so /home/smcmich1/repo/BaseSystem/lib/libImath.so /home/smcmich1/repo/BaseSystem/lib/libHalf.so /home/smcmich1/repo/BaseSystem/lib/libIlmThread.so /home/smcmich1/repo/BaseSystem/lib/libIex.so /home/smcmich1/repo/BaseSystem/lib/libgdal.so -lrt -ldl -lboost_iostreams-mt-1_58 /home/smcmich1/repo/BaseSystem/lib/libprotobuf.so ./.libs/libgtest.a /home/smcmich1/repo/visionworkbench/src/vw/Core/.libs/libvwCore.so -lgeotiff /home/smcmich1/repo/BaseSystem/lib/libproj.so /home/smcmich1/repo/BaseSystem/lib/libtiff.so /home/smcmich1/repo/BaseSystem/lib/libjpeg.so /home/smcmich1/repo/BaseSystem/lib/libpng16.so -lz -lopenjp2 -lboost_program_options-mt-1_58 -lboost_thread-mt-1_58 -lboost_date_time-mt-1_58 -lpthread -lboost_filesystem-mt-1_58 -lboost_system-mt-1_58 /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libstdc++.so -lm -pthread -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Cartography/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Camera/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/FileIO/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Image/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Math/.libs -Wl,-rpath -Wl,/home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64 -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Core/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/BaseSystem/lib -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/build/lib -Wl,-rpath -Wl,/home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64 -Wl,-rpath -Wl,/home/smcmich1/repo/BaseSystem/lib)" +relink_command="(cd /home/smcmich1/repo/visionworkbench/src/vw/Cartography/tests; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=/home/smcmich1/programs/gcc_4_9_3_install/lib:/home/smcmich1/programs/gcc_4_9_3_install/lib64; export LD_LIBRARY_PATH; PATH=/byss/packages/isis-3.4.12-x86_64_linux_RHEL6/isis/bin:/home/smcmich1/repo/StereoPipeline/build/bin:/home/smcmich1/repo/visionworkbench/build/bin:/home/smcmich1/repo/BinaryBuilder/build_root/install/bin:/home/smcmich1/programs/latexmk/bin:/home/smcmich1/programs/gcc_4_9_3_install/bin/:/byss/smcmich1/programs/tkdiff-unix/:/byss/smcmich1/venv/bin:/home/smcmich1/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/smcmich1/bin; export PATH; g++ -Wall -Wextra -Wno-unused-parameter -g -DDEBUG -O3 -Wno-missing-field-initializers -fno-strict-aliasing -Wl,-no-undefined -Wl,-as-needed -o \$progdir/\$file TestGeoReferenceUtils.o -L/home/smcmich1/repo/BinaryBuilder/build_root/install/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/proj/proj-4.8.0/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/tiff/tiff-4.0.3/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/jpeg/jpeg-8d/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/png/libpng-1.6.7/lib ../../../../src/vw/Cartography/.libs/libvwCartography.so -L/usr/lib64 -L/usr/local/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/openexr/openexr-1.7.0/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/ilmbase/ilmbase-1.0.2/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/build/gdal/gdal-2.0.2/lib -L/home/smcmich1/repo/BinaryBuilder/build_root/install ../../../../src/vw/Camera/.libs/libvwCamera.so -L/home/smcmich1/repo/BinaryBuilder/build_root/build/protobuf/protobuf-2.4.1/lib /home/smcmich1/repo/visionworkbench/src/vw/FileIO/.libs/libvwFileIO.so ../../../../src/vw/FileIO/.libs/libvwFileIO.so /home/smcmich1/repo/visionworkbench/src/vw/Image/.libs/libvwImage.so ../../../../src/vw/Image/.libs/libvwImage.so /home/smcmich1/repo/visionworkbench/src/vw/Math/.libs/libvwMath.so ../../../../src/vw/Math/.libs/libvwMath.so ../../../../src/vw/Core/.libs/libvwCore.so -llapack -lblas /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libgfortran.so /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libquadmath.so -lflann_cpp -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_flann -lopencv_nonfree /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libIlmImf.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libImath.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libHalf.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libIlmThread.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libIex.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libgdal.so -lrt -ldl -lboost_iostreams-mt-1_60 /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libprotobuf.so ./.libs/libgtest.a /home/smcmich1/repo/visionworkbench/src/vw/Core/.libs/libvwCore.so -lgeotiff /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libproj.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libtiff.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libjpeg.so /home/smcmich1/repo/BinaryBuilder/build_root/install/lib/libpng16.so -lz -lopenjp2 -lboost_program_options-mt-1_60 -lboost_thread-mt-1_60 -lboost_date_time-mt-1_60 -lpthread -lboost_filesystem-mt-1_60 -lboost_system-mt-1_60 /home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64/libstdc++.so -lm -pthread -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Cartography/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Camera/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/FileIO/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Image/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Math/.libs -Wl,-rpath -Wl,/home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64 -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/src/vw/Core/.libs -Wl,-rpath -Wl,/home/smcmich1/repo/BinaryBuilder/build_root/install/lib -Wl,-rpath -Wl,/home/smcmich1/repo/visionworkbench/build/lib -Wl,-rpath -Wl,/home/smcmich1/programs/gcc_4_9_3_install/lib/../lib64 -Wl,-rpath -Wl,/home/smcmich1/repo/BinaryBuilder/build_root/install/lib)" # This environment variable determines our operation mode. if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then # install mode needs the following variables: - generated_by_libtool_version='2.2.6b' + generated_by_libtool_version='2.4.2' notinst_deplibs=' ../../../../src/vw/Cartography/libvwCartography.la ../../../../src/vw/Camera/libvwCamera.la /home/smcmich1/repo/visionworkbench/src/vw/FileIO/libvwFileIO.la ../../../../src/vw/FileIO/libvwFileIO.la /home/smcmich1/repo/visionworkbench/src/vw/Image/libvwImage.la ../../../../src/vw/Image/libvwImage.la /home/smcmich1/repo/visionworkbench/src/vw/Math/libvwMath.la ../../../../src/vw/Math/libvwMath.la ../../../../src/vw/Core/libvwCore.la /home/smcmich1/repo/visionworkbench/src/vw/Core/libvwCore.la' else # When we are sourced in execute mode, $file and $ECHO are already set. if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then - ECHO="echo" file="$0" - # Make sure echo works. - if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then - # Yippee, $ECHO works! - : - else - # Restart under the correct shell, and then maybe $ECHO will work. - exec /bin/sh "$0" --no-reexec ${1+"$@"} - fi + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../../../../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "TestGeoReferenceUtils:TestGeoReferenceUtils:${LINENO}: libtool wrapper (GNU libtool) 2.4.2" 1>&2 fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "TestGeoReferenceUtils:TestGeoReferenceUtils:${LINENO}: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "TestGeoReferenceUtils:TestGeoReferenceUtils:${LINENO}: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} # Find the directory that this script lives in. - thisdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'` + thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'` test "x$thisdir" = "x$file" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'` while test -n "$file"; do - destdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'` + destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'` # If there was a directory component, then change thisdir. if test "x$destdir" != "x$file"; then @@ -74,11 +159,10 @@ else esac fi - file=`$ECHO "X$file" | $Xsed -e 's%^.*/%%'` + file=`$ECHO "$file" | /bin/sed 's%^.*/%%'` file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'` done - # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no @@ -89,7 +173,7 @@ else fi # remove .libs from thisdir case "$thisdir" in - *[\\/].libs ) thisdir=`$ECHO "X$thisdir" | $Xsed -e 's%[\\/][^\\/]*$%%'` ;; + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;; .libs ) thisdir=. ;; esac fi @@ -117,7 +201,7 @@ else if test -n "$relink_command"; then if relink_command_output=`eval $relink_command 2>&1`; then : else - echo "$relink_command_output" >&2 + printf %s\n "$relink_command_output" >&2 rm -f "$progdir/$file" exit 1 fi @@ -132,17 +216,13 @@ else if test -f "$progdir/$program"; then if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then # Run the actual program with our arguments. - - exec "$progdir/$program" ${1+"$@"} - - $ECHO "$0: cannot exec $program $*" 1>&2 - exit 1 + func_exec_program ${1+"$@"} fi else # The program doesn't exist. $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2 $ECHO "This script is just a wrapper for $program." 1>&2 - echo "See the libtool documentation for more information." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 exit 1 fi fi