diff options
| -rw-r--r-- | .github/workflows/build.yml | 108 | ||||
| -rw-r--r-- | lib/mruby/build.rb | 8 | ||||
| -rw-r--r-- | lib/mruby/source.rb | 4 | ||||
| -rw-r--r-- | travis_config.rb | 18 |
4 files changed, 137 insertions, 1 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..d743d4ffb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,108 @@ +name: Build & Test + +on: [push, pull_request] + +jobs: + Ubuntu-1604: + runs-on: ubuntu-16.04 + steps: + - uses: actions/checkout@v1 + - name: apt + run: sudo apt install ruby gperf bison + - name: build and test + run: rake -m -j4 all test + env: + MRUBY_CONFIG: travis_config.rb + + Ubuntu-1804-gcc: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v1 + - name: apt + run: sudo apt install ruby gperf bison gcc g++ + - name: build and test + run: rake -m -j4 all test + env: + MRUBY_CONFIG: travis_config.rb + CC: gcc + CXX: g++ + + Ubuntu-1804-clang: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v1 + - name: apt + run: sudo apt install ruby gperf bison + - name: build and test + run: rake -m -j4 all test + env: + MRUBY_CONFIG: travis_config.rb + CC: clang + CXX: clang++ + + macOS: + runs-on: macos-latest + steps: + - uses: actions/checkout@v1 + - name: brew + run: brew install ruby gperf bison + - name: build and test + run: rake -m -j4 all test + env: + MRUBY_CONFIG: travis_config.rb + + Windows-MinGW: + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - name: chocolatey + run: choco install -y ruby winflexbison gperf + - name: build and test + run: rake -E '$stdout.sync=true' -j4 test + env: + MRUBY_CONFIG: travis_config.rb + YACC: win_bison + CFLAGS: -g -O1 -Wall -Wundef + + Windows-Cygwin: + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/cache@v1 + with: + path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey + key: ${{ runner.os }}-cygwin-chocolatey-${{ matrix.os }}-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-cygwin-chocolatey-${{ matrix.os }}- + ${{ runner.os }}-cygwin-chocolatey- + - name: chocolatey + run: choco install -y cygwin + - name: Install cygwin packages + shell: cmd + run: C:\tools\cygwin\cygwinsetup.exe -qgnNdO -R C:/tools/cygwin -l C:/tools/cygwin/package -s http://mirrors.kernel.org/sourceware/cygwin/ -P gcc-core,gcc-g++,bison,make,gperf,ruby + - name: Set ENV + run: | + echo '::set-env name=PATH::C:\tools\cygwin\bin;C:\tools\cygwin\usr\bin' + - name: build and test + shell: cmd + run: C:\tools\cygwin\bin\ruby.exe /usr/bin/rake -m -j4 -v -E 'STDOUT.sync=true' test + env: + MRUBY_CONFIG: travis_config.rb + + Windows-VC: + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - name: chocolatey + run: choco install -y ruby winflexbison gperf + - name: build and test + shell: cmd + run: | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + rake -E "STDOUT.sync=true" -m -j4 -v test + env: + MRUBY_CONFIG: appveyor_config.rb + YACC: win_bison + # TODO(take-cheeze): Re-enable /O2 + CFLAGS: "/c /nologo /W3 /we4013 /Zi /MD /D_CRT_SECURE_NO_WARNINGS" + CXXFLAGS: "/c /nologo /W3 /Zi /MD /EHs /D_CRT_SECURE_NO_WARNINGS" diff --git a/lib/mruby/build.rb b/lib/mruby/build.rb index 8154b2b19..763334cf5 100644 --- a/lib/mruby/build.rb +++ b/lib/mruby/build.rb @@ -276,6 +276,14 @@ EOS end end + def cygwin_filename(name) + if name.is_a?(Array) + name.flatten.map { |n| cygwin_filename(n) } + else + `cygpath -w "#{filename(name)}"`.strip + end + end + def exefile(name) if name.is_a?(Array) name.flatten.map { |n| exefile(n) } diff --git a/lib/mruby/source.rb b/lib/mruby/source.rb index 5819a322b..a305c7b04 100644 --- a/lib/mruby/source.rb +++ b/lib/mruby/source.rb @@ -6,7 +6,9 @@ module MRuby ROOT = Pathname.new(File.expand_path('../../../',__FILE__)) # Reads a constant defined at version.h - MRUBY_READ_VERSION_CONSTANT = Proc.new { |name| ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?$/)[1] } + MRUBY_READ_VERSION_CONSTANT = Proc.new do |name| + ROOT.join('include','mruby','version.h').read.match(/^#define #{name} +"?([\w\. ]+)"?\r?$/)[1] + end MRUBY_RUBY_VERSION = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_VERSION'] MRUBY_RUBY_ENGINE = MRUBY_READ_VERSION_CONSTANT['MRUBY_RUBY_ENGINE'] diff --git a/travis_config.rb b/travis_config.rb index f4bef0a52..6af9c98d2 100644 --- a/travis_config.rb +++ b/travis_config.rb @@ -1,5 +1,21 @@ +MRuby::Build.new('debug') do |conf| + toolchain :gcc + yacc.command = ENV['YACC'] || 'bison' + enable_debug + + # include all core GEMs + conf.gembox 'full-core' + conf.cc.flags += %w(-Werror=declaration-after-statement) + conf.compilers.each do |c| + c.defines += %w(MRB_GC_STRESS MRB_GC_FIXED_ARENA MRB_METHOD_CACHE) + end + + build_mrbc_exec +end + MRuby::Build.new('full-debug') do |conf| toolchain :gcc + yacc.command = ENV['YACC'] || 'bison' enable_debug # include all core GEMs @@ -12,6 +28,7 @@ end MRuby::Build.new do |conf| toolchain :gcc + yacc.command = ENV['YACC'] || 'bison' # include all core GEMs conf.gembox 'full-core' @@ -25,6 +42,7 @@ end MRuby::Build.new('cxx_abi') do |conf| toolchain :gcc + yacc.command = ENV['YACC'] || 'bison' conf.gembox 'full-core' conf.cc.flags += %w(-fpermissive) |
