1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# **********************************************************************
#
# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
#
# This copy of Ice is licensed to you under the terms described in the
# ICE_LICENSE file included in this distribution.
#
# **********************************************************************
#
# Override to use another ruby version
#
RUBY ?= ruby
# ----------------------------------------------------------------------
# Don't change anything below this line!
# ----------------------------------------------------------------------
ruby-call = $(shell $(RUBY) -e 'require "rbconfig"; puts RbConfig::expand("$1")')
# Ruby compiler flags
ruby_cppflags := -I$(call ruby-call,$$(rubyhdrdir))
ruby_config_dir := $(call ruby-call,$$(includedir)/$$(arch)/ruby-$$(ruby_version))
ruby_arch := $(call ruby-call,$$(arch))
ifeq ($(wildcard $(ruby_config_dir)/ruby/config.h),)
ruby_config_dir := $(call ruby-call,$$(rubyhdrdir)/$$(arch))
endif
ifneq ($(wildcard $(ruby_config_dir)/ruby/config.h),)
ruby_cppflags += -I$(ruby_config_dir)
endif
# OS X & macOS with LLVM-Clang > 7.3 and the system version of Ruby require '-Wno-shift-negative-value'. This issue
# has been patched in more recent 2.x Ruby versions.
ifeq ($(shell uname),Darwin)
ifeq ($(shell which $(RUBY)),/usr/bin/ruby)
ifeq ($(shell expr $$($(CXX) -v 2>&1 | head -1 | sed -E 's/.*clang-([0-9][0-9][0-9]).*/\1/') \>= 703),1)
ruby_cppflags += -Wno-shift-negative-value $(RUBY_FLAGS)
endif
endif
endif
# Ruby linker flags
ruby_ldflags := $(call ruby-call,$$(LIBRUBYARG))
ruby_libdir := $(call ruby-call,$(if $(findstring MINGW,$(shell uname)),$$(bindir),$$(libdir)))
ifneq ($(ruby_libdir),)
ruby_ldflags := -L$(call ruby-call,$$(libdir)) $(ruby_ldflags)
endif
#
# Ruby installation directory
#
install_rubydir = $(if $(usr_dir_install),$(ruby_libdir),$(prefix)/ruby)
install_rubylibdir = $(if $(usr_dir_install),$(ruby_libdir)/$(ruby_arch),$(prefix)/ruby)
#
# Rules to build a ruby module. We just compute the name of the ruby module
# and delegate to make-shared-module.
#
mkrbmodulename ?= $(patsubst lib%,%,$(call mkshlibname,$(1)))
make-shared-ruby-module = $(call make-shared-module,$(call mkrbmodulename,$1),$2,$3,$4,$5,$6,$7,$8,$9)
get-shared-ruby-module-targets = $(call get-shared-module-targets,$(call mkrbmodulename,$1),$2,$3,$4)
install-shared-ruby-module = $(call install-shared-module,$(call mkrbmodulename,$1),$2,$3,$4,$5)
$(DESTDIR)$(install_rubydir):
$(Q)$(MKDIR) -p $@
installdirs += $(install_rubydir)
#
# $(call make-ruby-package,$1=slicedir,$2=generateddir,$3=package,$4=sliceflags)
#
# Compile slice files from $(slicedir)/<package> to ruby/<package>.
#
define make-ruby-package
$2/$3/.depend/%.ice.d: | $2/$3/.depend ;
$2/$3/.depend:
$(Q)$(MKDIR) -p $$@
.PRECIOUS: $2/$3/.depend/%.ice.d
ifeq ($(filter %clean,$(MAKECMDGOALS)),)
# Include the dependencies
-include $(addprefix $2/$3/.depend/,$(call source-to-dependency,$(wildcard $1/$3/*.ice)))
endif
$2/$3/%.rb: $1/$3/%.ice $2/$3/.depend/%.ice.d $(slice2rb_path)
$(E) "Compiling $$<"
$(Q)$(slice2rb_path) -I$1 --output-dir $2/$3 $4 --depend $$< | \
sed 's/\(.*: \\\)/$(subst /,\/,$2)\/$3\/\1/' > $2/$3/.depend/$$(*F).ice.d
$(Q)$(slice2rb_path) -I$1 --output-dir $2/$3 $4 $$<
distclean clean::
$(E) "Cleaning package $3"
$(Q)$(RM) -r $2/$3/.depend
$(Q)$(RM) $(patsubst $1/$3/%.ice,$2/$3/%.rb,$(wildcard $1/$3/*.ice))
generate-srcs srcs all:: $(patsubst $1/$3/%.ice,$2/$3/%.rb,$(wildcard $1/$3/*.ice))
$$(eval $$(call install-data-files,$(patsubst $1/$3/%.ice,$2/$3/%.rb,$(wildcard $1/$3/*.ice)),$2,$(install_rubydir),install))
endef
|