summaryrefslogtreecommitdiffhomepage
path: root/tasks/mruby_build.rake
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-02-28 23:27:13 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-02-28 23:27:13 +0900
commit1a1f834adeb243c5938604eb826c65d1f0efede0 (patch)
tree280fc60eea3abb4ab6604b2be2c097de7e5a1245 /tasks/mruby_build.rake
parentdc56bbecc81b5d04d3bf9ab337f4ebf7024f654f (diff)
downloadmruby-1a1f834adeb243c5938604eb826c65d1f0efede0.tar.gz
mruby-1a1f834adeb243c5938604eb826c65d1f0efede0.zip
Compile C files by C compiler when C++ files mixed.
ref #3267 #3470 By this commit, mruby do not use C++ ABI mode unless you specify explicitly. It compiles C files by C compilers, with C++ exception enabled when it sees C++ files in your configured mrbgems. I haven't tried visualcpp, so please submit an issue if you see any problem with C++ gems on Windows.
Diffstat (limited to 'tasks/mruby_build.rake')
-rw-r--r--tasks/mruby_build.rake14
1 files changed, 12 insertions, 2 deletions
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index bd911493d..46459cf6c 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -113,13 +113,23 @@ module MRuby
@cxx_exception_disabled = true
end
+ def enable_cxx_exception
+ @cxx_exception_disabled = false
+ compilers.each { |c|
+ c.defines += %w(MRB_ENABLE_CXX_EXCEPTION)
+ c.flags << c.cxx_exception_flag
+ }
+ end
+
def cxx_abi_enabled?
@cxx_abi_enabled
end
def enable_cxx_abi
- return if @cxx_exception_disabled or @cxx_abi_enabled
- compilers.each { |c| c.defines += %w(MRB_ENABLE_CXX_EXCEPTION) }
+ return if @cxx_abi_enabled
+ unless @cxx_exception_disabled
+ enable_cxx_exception
+ end
compilers.each { |c| c.flags << c.cxx_compile_flag }
linker.command = cxx.command if toolchains.find { |v| v == 'gcc' }
@cxx_abi_enabled = true