summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-08 22:56:16 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-08 22:56:16 +0900
commitc11157eb405718671a359e3b47d2d46ee4b7ee73 (patch)
treecfce80aa13bf8ec055551bc321bffa39f10f5f33
parentb26ca1b55b691d7b93738e6cb3e14a2a00c85080 (diff)
parent702cadae4c248334bcc0f842ace2612088000322 (diff)
downloadmruby-c11157eb405718671a359e3b47d2d46ee4b7ee73.tar.gz
mruby-c11157eb405718671a359e3b47d2d46ee4b7ee73.zip
Merge pull request #2026 from take-cheeze/disable_cxx_exception
Add MRuby::Build#disable_cxx_exception to force C++ ABI disable.
-rw-r--r--doc/compile/README.md10
-rw-r--r--tasks/mruby_build.rake7
2 files changed, 16 insertions, 1 deletions
diff --git a/doc/compile/README.md b/doc/compile/README.md
index a06a6b952..e494591f7 100644
--- a/doc/compile/README.md
+++ b/doc/compile/README.md
@@ -205,6 +205,16 @@ If you need to enable C++ ABI mode explicity add the following:
conf.enable_cxx_abi
+#### C++ exception disabling.
+
+If you need to force C++ exception disable
+(For example using a compiler option to disable C++ exception)
+add following:
+
+ conf.disable_cxx_exception
+
+Note that it must be called before ```enable_cxx_abi``` or ```gem``` method.
+
### Debugging mode
To enable debugging mode add the following:
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index 5877c11cd..1de00d496 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -82,6 +82,7 @@ module MRuby
@gems, @libmruby = MRuby::Gem::List.new, []
@build_mrbtest_lib_only = false
@cxx_abi_enabled = false
+ @cxx_exception_disabled = false
MRuby.targets[@name] = self
end
@@ -95,12 +96,16 @@ module MRuby
@mrbc.compile_options += ' -g'
end
+ def disable_cxx_exception
+ @cxx_exception_disabled = true
+ end
+
def cxx_abi_enabled?
@cxx_abi_enabled
end
def enable_cxx_abi
- return if @cxx_abi_enabled
+ return if @cxx_exception_disabled or @cxx_abi_enabled
compilers.each { |c| c.defines += %w(MRB_ENABLE_CXX_EXCEPTION) }
linker.command = cxx.command
@cxx_abi_enabled = true