Detect CPU info on OS X.
authorCarl Hetherington <cth@carlh.net>
Mon, 10 Jun 2013 11:06:04 +0000 (12:06 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 10 Jun 2013 11:06:04 +0000 (12:06 +0100)
src/lib/cross.cc
src/lib/cross.h
src/lib/film.cc
src/lib/util.cc
src/lib/util.h
src/tools/dvdomatic.cc
src/tools/dvdomatic_batch.cc
wscript

index 2c66ab53a865725d63dbbd73d97e3ce1799ea19e..1f1be907f1bc850ccdb72ae4d552be3b7f596226 100644 (file)
 #ifdef DVDOMATIC_WINDOWS
 #include "windows.h"
 #endif
+#ifdef DVDOMATIC_OSX
+#include <sys/sysctl.h>
+#endif
+
+using std::pair;
+using std::string;
 
 void
 dvdomatic_sleep (int s)
@@ -35,3 +41,40 @@ dvdomatic_sleep (int s)
        Sleep (s * 1000);
 #endif
 }
+
+/** @return A pair containing CPU model name and the number of processors */
+pair<string, int>
+cpu_info ()
+{
+       pair<string, int> info;
+       info.second = 0;
+       
+#ifdef DVDOMATIC_LINUX
+       ifstream f (N_("/proc/cpuinfo"));
+       while (f.good ()) {
+               string l;
+               getline (f, l);
+               if (boost::algorithm::starts_with (l, N_("model name"))) {
+                       string::size_type const c = l.find (':');
+                       if (c != string::npos) {
+                               info.first = l.substr (c + 2);
+                       }
+               } else if (boost::algorithm::starts_with (l, N_("processor"))) {
+                       ++info.second;
+               }
+       }
+#endif
+
+#ifdef DVDOMATIC_OSX
+       size_t N = sizeof (info.second);
+       sysctlbyname ("hw.ncpu", &info.second, &N, 0, 0);
+       char buffer[64];
+       N = sizeof (buffer);
+       if (sysctlbyname ("machdep.cpu.brand_string", buffer, &N, 0, 0) == 0) {
+               info.first = buffer;
+        }
+#endif         
+
+       return info;
+}
+
index 110660b16ea1783fec6b625d8a6748e793974e00..970bf3e9dc00b4b60486c330d6c077322614ea9a 100644 (file)
 
 */
 
+#include <string>
+
 #ifdef DVDOMATIC_WINDOWS
 #define WEXITSTATUS(w) (w)
 #endif
 
 void dvdomatic_sleep (int);
+extern std::pair<std::string, int> cpu_info ();
index 5573ee9d2867f87ae1d4b57703df7883be687147..8aedd76399899bef18b95523e2cf2ef0a577e4a6 100644 (file)
@@ -52,6 +52,7 @@
 #include "audio_decoder.h"
 #include "sndfile_decoder.h"
 #include "analyse_audio_job.h"
+#include "cross.h"
 
 #include "i18n.h"
 
index b8b60c6f645415652e66d883ff68722219a62bb5..4cf57368a7aea6718302c21441e719cdeeb7eb96 100644 (file)
@@ -942,32 +942,6 @@ still_image_file (string f)
        return (ext == N_(".tif") || ext == N_(".tiff") || ext == N_(".jpg") || ext == N_(".jpeg") || ext == N_(".png") || ext == N_(".bmp"));
 }
 
-/** @return A pair containing CPU model name and the number of processors */
-pair<string, int>
-cpu_info ()
-{
-       pair<string, int> info;
-       info.second = 0;
-       
-#ifdef DVDOMATIC_POSIX
-       ifstream f (N_("/proc/cpuinfo"));
-       while (f.good ()) {
-               string l;
-               getline (f, l);
-               if (boost::algorithm::starts_with (l, N_("model name"))) {
-                       string::size_type const c = l.find (':');
-                       if (c != string::npos) {
-                               info.first = l.substr (c + 2);
-                       }
-               } else if (boost::algorithm::starts_with (l, N_("processor"))) {
-                       ++info.second;
-               }
-       }
-#endif 
-
-       return info;
-}
-
 string
 audio_channel_name (int c)
 {
index 3e1d7f4b407d8326adf7869c0b0e15bd8785b269..0d745e50c5f3152c3984758c2260d0acf65a7fd1 100644 (file)
@@ -299,7 +299,6 @@ private:
 
 extern int64_t video_frames_to_audio_frames (SourceFrame v, float audio_sample_rate, float frames_per_second);
 extern bool still_image_file (std::string);
-extern std::pair<std::string, int> cpu_info ();
 
 class LocaleGuard
 {
index 71207c4ae771adcd5d71220cbe4782af1aec0c29..de94d0a2fdbaab0acc9c14e64696af169aeae701 100644 (file)
@@ -457,7 +457,7 @@ class App : public wxApp
                        return false;
                }
                
-#ifdef DVDOMATIC_POSIX         
+#ifdef DVDOMATIC_LINUX 
                unsetenv ("UBUNTU_MENUPROXY");
 #endif
 
index 7a3d38d9c6d287b6f5106383c950a395ab6a3542..d9ddb9d468a2c79eb83634129cbf7a390afc0a70 100644 (file)
@@ -197,7 +197,7 @@ class App : public wxApp
                        return false;
                }
                
-#ifdef DVDOMATIC_POSIX         
+#ifdef DVDOMATIC_LINUX         
                unsetenv ("UBUNTU_MENUPROXY");
 #endif         
 
diff --git a/wscript b/wscript
index beb0080d46ca83eaea7c41884ab2ab973661dd64..542c9b6409daf2bc2b6644e53a6200985def5a1d 100644 (file)
--- a/wscript
+++ b/wscript
@@ -55,6 +55,10 @@ def configure(conf):
     if conf.env.TARGET_LINUX:
         # libxml2 seems to be linked against this on Ubuntu but it doesn't mention it in its .pc file
         conf.env.append_value('LIB', 'lzma')
+        conf.env.append_value('CXXFLAGS', '-DDVDOMATIC_LINUX')
+
+    if conf.env.TARGET_OSX:
+        conf.env.append_value('CXXFLAGS', '-DDVDOMATIC_OSX')
 
     if conf.options.enable_debug:
         conf.env.append_value('CXXFLAGS', ['-g', '-DDVDOMATIC_DEBUG'])