The GitHub Super Linter is a more robust and better supported tool than the current GitHub Actions we are using. Running these checks: ERROR_ON_MISSING_EXEC_BIT: true VALIDATE_BASH: true VALIDATE_BASH_EXEC: true VALIDATE_EDITORCONFIG: true VALIDATE_MARKDOWN: true VALIDATE_SHELL_SHFMT: true VALIDATE_YAML: true https://github.com/marketplace/actions/super-linter https://github.com/github/super-linter Added the GitHub Super Linter badge to the README. Also updated the pre-commit framework and added more documentation on pre-commit. Added one more pre-commit check: check-executables-have-shebangs Added one extra check for merge conflicts to our GitHub Actions. EditorConfig and Markdown linting. Minor grammar and spelling fixes. Update linter.yml
2.5 KiB
Linking libmruby to your application
You have two ways to link libmruby to your application.
- using executable gem.
- using normal compilation process
Executable Gems
If your application is relatively small, mrbgem is an easier way to
create the executable. By tradition, the gem name start with
mruby-bin-, e.g. mruby-bin-debugger.
mrbgem.rake file
The executable name is specified in mrbgem.rake file at the top of
your mrbgem directory.
MRuby::Gem::Specification.new('mruby-bin-example') do |spec|
spec.license = 'MIT'
spec.author = 'mruby developers'
spec.summary = 'Example for executable command gem'
spec.bins = %w(mruby-example) # <- this is binary name
end
Source tree structure
The source file for the gem executable should be in
<gem-name>/tools/<bin-name>. Currently, we support C or C++ source code
(.c, .cpp, .cxx, .cc) for the executable. Ruby source files are not
supported. Put the functionality in the different gem and specify dependency to
it in mrbgem.rake.
Normal compilation process
The libmruby is a normal library so that you can just link it to your
application. Specify proper compiler options (-I etc.) and linker options
(-Lmruby etc.) to compile and link your application. Specify those options in
your build script (e.g. Makefile).
Compiler options
You need to specify compiler options that are compatible to mruby configuration, for example:
-Ito specify the place for mruby header files-Dto specify mruby configuration macros
To retrieve compiler options used to build mruby, you can use mruby-config
command with following options:
--cccompiler name--cflagsoptions passed to compiler
$ mruby-config --cflags
-std=gnu99 -g -O3 -Wall -DMRB_GC_FIXED_ARENA -I/home/matz/work/mruby/include -I/home/matz/work/mruby/build/host/include
Linker options
Just like compiler options, you need to specify linker options that are compatible to mruby configuration.
To retrieve linker options, you can use mruby-config with following options:
--ldlinker name--ldflagsoptions passed to linker--ldflags-before-libsoptions passed to linker before linked libraries--libslinked libraries
$ mruby-config --ldflags
-L/home/matz/work/mruby/build/host/lib
$ mruby-config --ldflags-before-libs
# <nothing in this case>
$ mruby-config --libs
-lmruby -lm