mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Refine tasks/toolchains/(gcc|clang).rake
- Make sure to specify `-std=gnu99` for C compiler flag. - Make sure to specify `-Wzero-length-array` for C/C++ compiler flag (Clang). - Extract similar codes.
This commit is contained in:
@@ -1,11 +1,7 @@
|
|||||||
MRuby::Toolchain.new(:clang) do |conf, _params|
|
MRuby::Toolchain.new(:clang) do |conf, _params|
|
||||||
toolchain :gcc
|
toolchain :gcc, default_command: 'clang'
|
||||||
|
|
||||||
[conf.cc, conf.objc, conf.asm].each do |cc|
|
[conf.cc, conf.objc, conf.asm, conf.cxx].each do |compiler|
|
||||||
cc.command = ENV['CC'] || 'clang'
|
compiler.flags.unshift('-Wzero-length-array')
|
||||||
cc.flags << '-Wzero-length-array' unless ENV['CFLAGS']
|
|
||||||
end
|
end
|
||||||
conf.cxx.command = ENV['CXX'] || 'clang++'
|
|
||||||
conf.cxx.flags << '-Wzero-length-array' unless ENV['CXXFLAGS'] || ENV['CFLAGS']
|
|
||||||
conf.linker.command = ENV['LD'] || ENV['CXX'] || ENV['CC'] || 'clang'
|
|
||||||
end
|
end
|
||||||
|
|||||||
+17
-19
@@ -1,26 +1,24 @@
|
|||||||
MRuby::Toolchain.new(:gcc) do |conf, _params|
|
MRuby::Toolchain.new(:gcc) do |conf, params|
|
||||||
[conf.cc, conf.objc, conf.asm].each do |cc|
|
default_command = params[:default_command] || 'gcc'
|
||||||
cc.command = ENV['CC'] || 'gcc'
|
compile_flags = %w(-g -O3 -Wall -Wundef -Werror-implicit-function-declaration)
|
||||||
cc.flags = [ENV['CFLAGS'] || %w(-g -std=gnu99 -O3 -Wall -Werror-implicit-function-declaration -Wdeclaration-after-statement -Wwrite-strings -Wundef)]
|
|
||||||
cc.option_include_path = '-I%s'
|
|
||||||
cc.option_define = '-D%s'
|
|
||||||
cc.compile_options = '%{flags} -MMD -o %{outfile} -c %{infile}'
|
|
||||||
cc.cxx_compile_flag = '-x c++ -std=c++03'
|
|
||||||
cc.cxx_exception_flag = '-fexceptions'
|
|
||||||
end
|
|
||||||
|
|
||||||
[conf.cxx].each do |cxx|
|
[conf.cc, conf.objc, conf.asm, conf.cxx].each do |compiler|
|
||||||
cxx.command = ENV['CXX'] || 'g++'
|
if compiler == conf.cxx
|
||||||
cxx.flags = [ENV['CXXFLAGS'] || ENV['CFLAGS'] || %w(-g -O3 -Wall -Werror-implicit-function-declaration -Wundef)]
|
compiler.command = ENV['CXX'] || default_command.sub(/cc|$/, '++')
|
||||||
cxx.option_include_path = '-I%s'
|
compiler.flags = [ENV['CXXFLAGS'] || ENV['CFLAGS'] || compile_flags]
|
||||||
cxx.option_define = '-D%s'
|
else
|
||||||
cxx.compile_options = '%{flags} -MMD -o %{outfile} -c %{infile}'
|
compiler.command = ENV['CC'] || default_command
|
||||||
cxx.cxx_compile_flag = '-x c++ -std=c++03'
|
compiler.flags = ['-std=gnu99', ENV['CFLAGS'] || [compile_flags, %w(-Wdeclaration-after-statement -Wwrite-strings)]]
|
||||||
cxx.cxx_exception_flag = '-fexceptions'
|
end
|
||||||
|
compiler.option_include_path = '-I%s'
|
||||||
|
compiler.option_define = '-D%s'
|
||||||
|
compiler.compile_options = '%{flags} -MMD -o %{outfile} -c %{infile}'
|
||||||
|
compiler.cxx_compile_flag = '-x c++ -std=c++03'
|
||||||
|
compiler.cxx_exception_flag = '-fexceptions'
|
||||||
end
|
end
|
||||||
|
|
||||||
conf.linker do |linker|
|
conf.linker do |linker|
|
||||||
linker.command = ENV['LD'] || ENV['CXX'] || ENV['CC'] || 'gcc'
|
linker.command = ENV['LD'] || ENV['CXX'] || ENV['CC'] || default_command
|
||||||
linker.flags = [ENV['LDFLAGS'] || %w()]
|
linker.flags = [ENV['LDFLAGS'] || %w()]
|
||||||
linker.libraries = %w(m)
|
linker.libraries = %w(m)
|
||||||
linker.library_paths = []
|
linker.library_paths = []
|
||||||
|
|||||||
Reference in New Issue
Block a user