From cf996e6a3b427f06da28af400de6f81a8673afff Mon Sep 17 00:00:00 2001 From: Junichi Kajiwara Date: Fri, 2 Sep 2016 10:30:25 +0900 Subject: [PATCH 1/3] Update mrbgem.rake --- mrbgem.rake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mrbgem.rake b/mrbgem.rake index f36a8fa..ba97ab2 100644 --- a/mrbgem.rake +++ b/mrbgem.rake @@ -2,6 +2,8 @@ MRuby::Gem::Specification.new('mruby-webcam') do |spec| spec.license = 'MIT' spec.authors = 'Junichi Kajiwara' if build.kind_of?(MRuby::CrossBuild) + puts build.host_target + if %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target) spec.cxx.flags << "-I/usr/#{build.host_target}/include" spec.linker.flags_before_libraries << "/usr/#{build.host_target}/lib/libopencv_highgui310.a" From 261be4f1b4f34b1e6597756edae7f9fb36ab4d77 Mon Sep 17 00:00:00 2001 From: Junichi Kajiwara Date: Fri, 2 Sep 2016 14:36:35 +0900 Subject: [PATCH 2/3] Add support for android --- mrbgem.rake | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/mrbgem.rake b/mrbgem.rake index ba97ab2..82b1c95 100644 --- a/mrbgem.rake +++ b/mrbgem.rake @@ -1,9 +1,36 @@ MRuby::Gem::Specification.new('mruby-webcam') do |spec| spec.license = 'MIT' spec.authors = 'Junichi Kajiwara' + if build.kind_of?(MRuby::CrossBuild) - puts build.host_target - + if !build.host_target + arch = spec.build.cc.command.split('/')[-1].split('-')[0] + arch.gsub!("arm","armeabi") + if !ENV['ANDROID_OPENCV_HOME'] + raise("Set ANDROID_OPENCV_HOME") + end + opencv_home=ENV['ANDROID_OPENCV_HOME'] + + spec.cxx.flags << "-I#{opencv_home}/sdk/native/jni/include" + + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_objdetect.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_highgui.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_videoio.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_imgcodecs.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_imgproc.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/libs/#{arch}/libopencv_core.a" + + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/libIlmImf.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/liblibjasper.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/liblibjpeg.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/liblibtiff.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/liblibwebp.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/liblibpng.a" + spec.linker.flags_before_libraries << "#{opencv_home}/sdk/native/3rdparty/libs/armeabi/libtbb.a" + + spec.linker.flags_before_libraries << "-L#{ENV['ANDROID_NDK_HOME']}/sources/cxx-stl/gnu-libstdc++/4.9/libs/#{arch}/" + spec.linker.flags_before_libraries << "-lz -llog -lgnustl_shared" + end if %w(x86_64-w64-mingw32 i686-w64-mingw32).include?(build.host_target) spec.cxx.flags << "-I/usr/#{build.host_target}/include" spec.linker.flags_before_libraries << "/usr/#{build.host_target}/lib/libopencv_highgui310.a" From 7ba9f5f2920d771e8301532df07693683c8e8926 Mon Sep 17 00:00:00 2001 From: Junichi Kajiwara Date: Tue, 27 Sep 2016 12:46:41 +0900 Subject: [PATCH 3/3] Add support for iOS --- mrbgem.rake | 7 +++++++ src/opencv.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/mrbgem.rake b/mrbgem.rake index 82b1c95..0fbadad 100644 --- a/mrbgem.rake +++ b/mrbgem.rake @@ -3,6 +3,13 @@ MRuby::Gem::Specification.new('mruby-webcam') do |spec| spec.authors = 'Junichi Kajiwara' if build.kind_of?(MRuby::CrossBuild) + if spec.build.cc.command.start_with?("xcrun") + OPENCV_DIR="#{ENV["HOME"]}/Downloads/opencv2.framework" + puts "iOS! #{spec.build.cxx.command}" + puts "flags = #{spec.build.cxx.flags}" + spec.cxx.flags << "-I#{OPENCV_DIR}/Headers" + next + end if !build.host_target arch = spec.build.cc.command.split('/')[-1].split('-')[0] arch.gsub!("arm","armeabi") diff --git a/src/opencv.cpp b/src/opencv.cpp index 8f26962..87c9ce1 100644 --- a/src/opencv.cpp +++ b/src/opencv.cpp @@ -3,7 +3,14 @@ #include "mruby/string.h" #include "mruby/variable.h" +#ifdef __APPLE__ +#include "TargetConditionals.h" +#ifdef TARGET_OS_IPHONE +#include +#endif +#else #include +#endif using namespace std;