Module: MilkTea::VendoredCJSON

Defined in:
lib/milk_tea/bindings/vendored_cjson.rb

Constant Summary collapse

Error =
VendoredCLibrary::Error
SOURCES =
%w[
  cJSON.c
].freeze
%w[
  -lm
].freeze

Class Method Summary collapse

Class Method Details

.archive_path(root: MilkTea.root) ⇒ Object



40
41
42
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 40

def archive_path(root: MilkTea.root)
  build_root(root:).join("libcjson.a")
end

.build_root(root: MilkTea.root) ⇒ Object



36
37
38
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 36

def build_root(root: MilkTea.root)
  MilkTea.writable_root_for(root).join("tmp/vendored-cjson")
end

.library(root: MilkTea.root) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 17

def library(root: MilkTea.root)
  resolved_root = Pathname.new(File.expand_path(root.to_s))
  @libraries ||= {}
  @libraries[resolved_root.to_s] ||= VendoredCLibrary::Archive.new(
    name: "cjson",
    source_root: source_root(root: resolved_root),
    build_root: build_root(root: resolved_root),
    archive_name: "libcjson.a",
    sources: SOURCES,
    include_roots: [source_root(root: resolved_root)],
    system_link_flags: SYSTEM_LINK_FLAGS,
    cc_env_var: "CJSON_CC",
  )
end


44
45
46
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 44

def link_flags(root: MilkTea.root)
  library(root:).link_flags
end

.prepare!(root: MilkTea.root, **kwargs) ⇒ Object



48
49
50
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 48

def prepare!(root: MilkTea.root, **kwargs)
  library(root:).prepare!(**kwargs)
end

.source_root(root: MilkTea.root) ⇒ Object



32
33
34
# File 'lib/milk_tea/bindings/vendored_cjson.rb', line 32

def source_root(root: MilkTea.root)
  MilkTea.writable_root_for(root).join("third_party/cjson-upstream")
end