Skip to content

Commit

Permalink
Merge pull request #180 from brianmario/macosci
Browse files Browse the repository at this point in the history
Add CI for macos
  • Loading branch information
tenderlove authored Jul 9, 2024
2 parents 5f22c35 + b77c32c commit 466bbb1
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 7 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: CI

on: [push, pull_request]

jobs:
test:
runs-on: ${{ matrix.os }}-latest

strategy:
fail-fast: false
matrix:
os: [macos]
ruby: [ '3.2', '3.3' ]

steps:
- name: icu4c
run: brew install icu4c
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}

- name: Install dependencies
run: bundle install
- name: Run tests ${{ matrix.rubyopt }}
run: bundle exec rake RUBYOPT="${{ matrix.rubyopt }}"
15 changes: 15 additions & 0 deletions ext/charlock_holmes/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,19 @@ static inline VALUE charlock_new_str2(const char *str)
#endif
}


#ifdef __cplusplus
extern "C"
{
#endif

extern void Init_charlock_holmes();
extern void _init_charlock_encoding_detector();
extern void _init_charlock_converter();
extern void _init_charlock_transliterator();

#ifdef __cplusplus
}
#endif

#endif
2 changes: 1 addition & 1 deletion ext/charlock_holmes/converter.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ static VALUE rb_converter_convert(VALUE self, VALUE rb_txt, VALUE rb_src_enc, VA
if (status != U_BUFFER_OVERFLOW_ERROR) {
rb_raise(rb_eArgError, "%s", u_errorName(status));
}
out_buf = malloc(out_len);
out_buf = (char *) malloc(out_len);

// now do the actual conversion
status = U_ZERO_ERROR;
Expand Down
2 changes: 1 addition & 1 deletion ext/charlock_holmes/encoding_detector.c
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ static VALUE rb_encdec__alloc(VALUE klass)
UErrorCode status = U_ZERO_ERROR;
VALUE obj;

detector = calloc(1, sizeof(charlock_detector_t));
detector = (charlock_detector_t *) calloc(1, sizeof(charlock_detector_t));
obj = Data_Wrap_Struct(klass, NULL, rb_encdec__free, (void *)detector);

detector->csd = ucsdet_open(&status);
Expand Down
6 changes: 1 addition & 5 deletions ext/charlock_holmes/ext.c
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
#include "common.h"

extern void _init_charlock_encoding_detector();
extern void _init_charlock_converter();
extern void _init_charlock_transliterator();

VALUE rb_mCharlockHolmes;

void Init_charlock_holmes() {
Expand All @@ -12,4 +8,4 @@ void Init_charlock_holmes() {
_init_charlock_encoding_detector();
_init_charlock_converter();
_init_charlock_transliterator();
}
}
26 changes: 26 additions & 0 deletions ext/charlock_holmes/extconf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,30 @@
$CFLAGS << ' -Wall -funroll-loops'
$CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG']

minimal_program = <<~SRC
#include <unicode/translit.h>
int main() { return 0; }
SRC

# Pass -x c++ to force gcc to compile the test program
# as C++ (as it will end in .c by default).
compile_options = +"-x c++"

icu_requires_version_flag = checking_for("icu that requires explicit C++ version flag") do
!try_compile(minimal_program, compile_options)
end

if icu_requires_version_flag
abort "Cannot compile icu with your compiler: recent versions require C++17 support." unless %w[c++20 c++17 c++11 c++0x].any? do |std|
checking_for("icu that compiles with #{std} standard") do
flags = compile_options + " -std=#{std}"
if try_compile(minimal_program, flags)
$CPPFLAGS << flags

true
end
end
end
end

create_makefile 'charlock_holmes/charlock_holmes'

0 comments on commit 466bbb1

Please sign in to comment.