summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-10-12 19:55:10 +0100
committerCarl Hetherington <cth@carlh.net>2013-10-12 19:55:10 +0100
commit6b81b3e6a8ac208c0941536d4388f19fb85efc72 (patch)
treebc4ee885e7ea185eedca0c722c98971a294a90e7 /src/lib
parenta9c598df9f78c0284f75f52bb36ff30b0bb1071c (diff)
Try to fix xmlsec startup on OS X.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/cross.cc30
-rw-r--r--src/lib/cross.h3
-rw-r--r--src/lib/util.cc9
3 files changed, 33 insertions, 9 deletions
diff --git a/src/lib/cross.cc b/src/lib/cross.cc
index 47f07cf9d..30a953bb8 100644
--- a/src/lib/cross.cc
+++ b/src/lib/cross.cc
@@ -35,6 +35,7 @@
#include <sys/sysctl.h>
#include <mach-o/dyld.h>
#endif
+#include "exceptions.h"
using std::pair;
using std::list;
@@ -114,6 +115,24 @@ cpu_info ()
return info;
}
+#ifdef DCPOMATIC_OSX
+/** @return Path of the Contents directory in the .app */
+boost::filesystem::path
+app_contents ()
+{
+ uint32_t size = 1024;
+ char buffer[size];
+ if (_NSGetExecutablePath (buffer, &size)) {
+ throw StringError ("_NSGetExecutablePath failed");
+ }
+
+ boost::filesystem::path path (buffer);
+ path.remove_filename ();
+ path.remove_filename ();
+ return path;
+}
+#endif
+
void
run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, shared_ptr<Log> log)
{
@@ -189,15 +208,8 @@ run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, share
#endif
#ifdef DCPOMATIC_OSX
- uint32_t size = 1024;
- char buffer[size];
- if (_NSGetExecutablePath (buffer, &size)) {
- log->log ("_NSGetExecutablePath failed");
- return;
- }
-
- boost::filesystem::path path (buffer);
- path.remove_filename ();
+ boost::filesystem::path path = app_contents();
+ path /= "MacOS";
path /= "ffprobe";
string ffprobe = path.string() + " \"" + content.string() + "\" 2> \"" + out.string() + "\"";
diff --git a/src/lib/cross.h b/src/lib/cross.h
index c3bb20b47..1fe34edbe 100644
--- a/src/lib/cross.h
+++ b/src/lib/cross.h
@@ -30,3 +30,6 @@ extern std::string cpu_info ();
extern void run_ffprobe (boost::filesystem::path, boost::filesystem::path, boost::shared_ptr<Log>);
extern std::list<std::pair<std::string, std::string> > mount_info ();
extern boost::filesystem::path openssl_path ();
+#ifdef DCPOMATIC_OSX
+extern boost::filesystem::path app_contents ();
+#endif
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 4b780e1b7..1d1372049 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -279,6 +279,15 @@ dcpomatic_setup ()
avfilter_register_all ();
+#ifdef DCPOMATIC_OSX
+ /* Add our lib directory to the libltdl search path so that
+ xmlsec can find xmlsec1-openssl.
+ */
+ boost::filesystem::path lib = app_contents ();
+ lib /= "lib";
+ lt_dladdsearchdir (lib.c_str ());
+#endif
+
libdcp::init ();
Ratio::setup_ratios ();