rcx 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: BSL-1.0
2
+ // SPDX-FileCopyrightText: Copyright 2024-2025 Kasumi Hanazuki <kasumi@rollingapple.net>
3
+ #pragma once
4
+ #include "extconf.h"
5
+ #include "rcx/internal/rcx.hpp"
6
+ #include "rcx/internal/rcx_impl.hpp"
data/lib/rcx/mkmf.rb ADDED
@@ -0,0 +1,54 @@
1
+ # SPDX-License-Identifier: BSL-1.0
2
+ # SPDX-FileCopyrightText: Copyright 2024-2025 Kasumi Hanazuki <kasumi@rollingapple.net>
3
+ require 'mkmf'
4
+ include MakeMakefile['C++']
5
+
6
+ root = File.join(__dir__, '../..')
7
+
8
+ $INCFLAGS << " -I#{File.join(root, 'include').shellescape}"
9
+
10
+ $rcx_headers = Dir[File.join(root, 'include/**/*.hpp')]
11
+
12
+ include (Module.new do
13
+ def configuration(...)
14
+ super.tap do |mk|
15
+ mk << <<MAKEFILE
16
+ rcx_headers = #{$rcx_headers.join(?\s)}
17
+ ruby_headers := $(ruby_headers) $(rcx_headers)
18
+ MAKEFILE
19
+ end
20
+ end
21
+ end)
22
+
23
+ ## libffi
24
+
25
+ dir_config('libffi').any? || pkg_config('libffi')
26
+ ffi_h = 'ffi.h'
27
+ unless have_func('ffi_prep_cif', ffi_h)
28
+ raise "libffi was not found"
29
+ end
30
+ unless have_func('ffi_closure_alloc', ffi_h) && have_func('ffi_prep_closure_loc', ffi_h)
31
+ raise "libffi does not support closures"
32
+ end
33
+
34
+ if have_header('cxxabi.h')
35
+ have_func('abi::__cxa_demangle', 'cxxabi.h')
36
+ have_func('abi::__cxa_current_exception_type', 'cxxabi.h')
37
+ end
38
+
39
+ if checking_for("std::is_layout_compatible<>") {
40
+ try_compile(<<'CXX')
41
+ #include <type_traits>
42
+ struct A { int a; };
43
+ struct B { int b; };
44
+ static_assert(std::is_layout_compatible<A, B>::value);
45
+ CXX
46
+ }
47
+ $defs.push("-DHAVE_STD_IS_LAYOUT_COMPATIBLE=1")
48
+ end
49
+
50
+ if checking_for("nullability extension") {
51
+ try_compile("void *_Nullable p, *_Nonnull q;")
52
+ }
53
+ $defs.push("-DHAVE_FEATURE_NULLABILITY=1")
54
+ end
@@ -0,0 +1,3 @@
1
+ module RCX
2
+ VERSION = -'0.1.0'
3
+ end
data/lib/rcx.rb ADDED
@@ -0,0 +1,2 @@
1
+ require_relative 'rcx/version'
2
+
data/package.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "packageManager": "yarn@4.6.0",
3
+ "dependencies": {
4
+ "@jothepro/doxygen-awesome-css": "https://github.com/jothepro/doxygen-awesome-css#v2.3.4"
5
+ }
6
+ }
data/yarn.lock ADDED
@@ -0,0 +1,21 @@
1
+ # This file is generated by running "yarn install" inside your project.
2
+ # Manual changes might be lost - proceed with caution!
3
+
4
+ __metadata:
5
+ version: 8
6
+ cacheKey: 10c0
7
+
8
+ "@jothepro/doxygen-awesome-css@https://github.com/jothepro/doxygen-awesome-css#v2.3.4":
9
+ version: 2.3.4
10
+ resolution: "@jothepro/doxygen-awesome-css@https://github.com/jothepro/doxygen-awesome-css.git#commit=568f56cde6ac78b6dfcc14acd380b2e745c301ea"
11
+ checksum: 10c0/e36b8a227b3c55542261ed83a19127400356eaa8075bea7671a3a2550a9001a2ec787365fd4b19e02dadeb7805a3506104002ed51810f5bc2da75e12a3fad60b
12
+ languageName: node
13
+ linkType: hard
14
+
15
+ "root-workspace-0b6124@workspace:.":
16
+ version: 0.0.0-use.local
17
+ resolution: "root-workspace-0b6124@workspace:."
18
+ dependencies:
19
+ "@jothepro/doxygen-awesome-css": "https://github.com/jothepro/doxygen-awesome-css#v2.3.4"
20
+ languageName: unknown
21
+ linkType: soft
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rcx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kasumi Hanazuki
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-02-05 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: shellwords
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.2'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.2'
26
+ description: Write Ruby extension in modern C++
27
+ email:
28
+ - kasumi@rollingapple.net
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".clang-format"
34
+ - ".rspec"
35
+ - ".yarnrc.yml"
36
+ - CHANGELOG.md
37
+ - Doxyfile
38
+ - LICENSE.txt
39
+ - README.md
40
+ - Rakefile
41
+ - examples/class.cpp
42
+ - include/rcx/internal/rcx.hpp
43
+ - include/rcx/internal/rcx_impl.hpp
44
+ - include/rcx/rcx.hpp
45
+ - lib/rcx.rb
46
+ - lib/rcx/mkmf.rb
47
+ - lib/rcx/version.rb
48
+ - package.json
49
+ - yarn.lock
50
+ homepage: https://github.com/hanazuki/rcx
51
+ licenses:
52
+ - BSL-1.0
53
+ metadata:
54
+ homepage_uri: https://github.com/hanazuki/rcx
55
+ source_code_uri: https://github.com/hanazuki/rcx
56
+ changelog_uri: https://github.com/hanazuki/rcx/blob/master/CHANGELOG.md
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 3.1.0
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubygems_version: 3.7.0.dev
72
+ specification_version: 4
73
+ summary: Write Ruby extension in modern C++
74
+ test_files: []