aboutsummaryrefslogtreecommitdiffstats
path: root/Mk/bsd.ruby.mk
blob: 3908f7759fc8754d1cb8d13770ee1e0859e65b49 (plain) (blame)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#
# bsd.ruby.mk - Utility definitions for Ruby related ports.
#
# Created by: Akinori MUSHA <knu@FreeBSD.org>
#
# $FreeBSD$
#

.if !defined(Ruby_Include)

Ruby_Include=           bsd.ruby.mk
Ruby_Include_MAINTAINER=    knu@FreeBSD.org

#
# [variables that each port can define]
#
# RUBY_VER      - Set to the alternative short version of ruby (see below for current value).
# USE_RUBY      - Says that the port uses ruby for building and running.
# RUBY_NO_BUILD_DEPENDS - Says that the port should not build-depend on ruby.
# RUBY_NO_RUN_DEPENDS   - Says that the port should not run-depend on ruby.
# USE_LIBRUBY       - Says that the port uses libruby.
# USE_RUBY_EXTCONF  - Says that the port uses extconf.rb to configure.  Implies USE_RUBY.
# RUBY_EXTCONF      - Set to the alternative name of extconf.rb (default: extconf.rb).
# RUBY_EXTCONF_SUBDIRS  - Set to list of subdirectories, if multiple modules are included.
# USE_RUBY_SETUP    - Says that the port uses setup.rb to configure and build.  Implies USE_RUBY_AMSTD.
# RUBY_SETUP        - Set to the alternative name of setup.rb (default: setup.rb).
# USE_RUBY_AMSTD    - Says that the port uses amstd for building and running.
# USE_RUBY_RD       - Says that the port uses rd to generate documents.
# RUBY_SHEBANG_FILES    - Specify the files which shebang lines you want to fix.
#
# [variables that each port should not define]
#
# RUBY_PKGNAMEPREFIX    - Common PKGNAMEPREFIX for ruby ports (default: ruby${RUBY_SUFFIX}-)
# RUBY_VERSION      - Full version of ruby (see below for current value).
# RUBY_SHLIBVER     - Major version of libruby (see below for current value).
# RUBY_ARCH     - Directory name of architecture dependent libraries.
# RUBY_SUFFIX       - Suffix for ruby binaries and directories.
# _RUBY_SUFFIX      - String to be used as RUBY_SUFFIX.  Always ${RUBY_VER:S/.//}.
# RUBY_NAME     - Ruby's name with trailing suffix.
#
# RUBY          - Set to full path of ruby.
# RUBY_RD       - Set to full path of rd.
#
# RUBY_PORT     - Set to port path of ruby without PORTSDIR.
# RUBY_AMSTD_PORT   - Set to port path of ruby-amstd without PORTSDIR.
# RUBY_RD_PORT      - Set to port path of rd without PORTSDIR.
#
# RUBY_LIB_DEPENDS  - Set to LIB_DEPENDS entry for libruby.
# RUBY_DEPENDS      - Set to BUILD_DEPENDS/RUN_DEPENDS entry for ruby.
# RUBY_AMSTD_DEPENDS    - Set to BUILD_DEPENDS/RUN_DEPENDS entry for ruby-amstd.
# RUBY_RD2_DEPENDS  - Set to BUILD_DEPENDS entry for rd.
#
# RUBY_LIBDIR       - Installation path for architecture independent libraries.
# RUBY_ARCHLIBDIR   - Installation path for architecture dependent libraries.
# RUBY_SITELIBDIR   - Installation path for site architecture independent libraries.
# RUBY_SITEARCHLIBDIR   - Installation path for site architecture dependent libraries.
# RUBY_DOCDIR       - Installation path for documents.
# RUBY_EXAMPLESDIR  - Installation path for examples.
#

RUBY_VER?=      1.6
_RUBY_SUFFIX=       ${RUBY_VER:S/.//}

.if ${RUBY_VER} == 1.4
RUBY_VERSION?=      1.4.6
RUBY_SUFFIX?=       ${_RUBY_SUFFIX}
.else
RUBY_VERSION?=      1.6.1
RUBY_SUFFIX?=       # empty
.endif

RUBY_PKGNAMEPREFIX?=    ruby${RUBY_SUFFIX}- # could be rb${RUBY_SUFFIX}-
RUBY_VER=       ${RUBY_VERSION:R}
RUBY_SHLIBVER?=     ${_RUBY_SUFFIX}
RUBY_ARCH?=         ${ARCH}-freebsd${OSREL}
RUBY_NAME?=     ruby${RUBY_SUFFIX}

# Commands
RUBY?=              ${LOCALBASE}/bin/${RUBY_NAME}
RUBY_RD?=       ${LOCALBASE}/bin/rd2

# Ports
RUBY_PORT?=     lang/ruby${RUBY_SUFFIX}
RUBY_AMSTD_PORT?=   devel/ruby-amstd
RUBY_RD_PORT?=      textproc/ruby-rdtool

# Depends
RUBY_LIB_DEPENDS?=  ${RUBY_NAME}.${RUBY_SHLIBVER}:${PORTSDIR}/${RUBY_PORT}
RUBY_DEPENDS?=      ${RUBY}:${PORTSDIR}/${RUBY_PORT}
RUBY_AMSTD_DEPENDS?=    ${RUBY_SITELIBDIR}/amstd/info.rb:${PORTSDIR}/${RUBY_AMSTD_PORT}
RUBY_RD2_DEPENDS?=  ${RUBY_RD}:${PORTSDIR}/${RUBY_RD_PORT}

# Directories
RUBY_LIBDIR?=       ${LOCALBASE}/lib/ruby/${RUBY_VER}
RUBY_ARCHLIBDIR?=   ${RUBY_LIBDIR}/${RUBY_ARCH}
RUBY_SITELIBDIR?=   ${LOCALBASE}/lib/ruby/site_ruby/${RUBY_VER}
RUBY_SITEARCHLIBDIR?=   ${RUBY_SITELIBDIR}/${RUBY_ARCH}
RUBY_DOCDIR?=       ${LOCALBASE}/share/doc/${RUBY_NAME}
RUBY_EXAMPLESDIR?=  ${LOCALBASE}/share/examples/${RUBY_NAME}

# PLIST
PLIST_RUBY_DIRS=    RUBY_LIBDIR="${RUBY_LIBDIR}" \
            RUBY_ARCHLIBDIR="${RUBY_ARCHLIBDIR}" \
            RUBY_SITELIBDIR="${RUBY_SITELIBDIR}" \
            RUBY_SITEARCHLIBDIR="${RUBY_SITEARCHLIBDIR}" \
            RUBY_DOCDIR="${RUBY_DOCDIR}" \
            RUBY_EXAMPLESDIR="${RUBY_EXAMPLESDIR}"

PLIST_SUB+=     RUBY_VERSION="${RUBY_VERSION}" \
            RUBY_VER="${RUBY_VER}" \
            RUBY_SHLIBVER="${RUBY_SHLIBVER}" \
            RUBY_ARCH="${RUBY_ARCH}" \
            _RUBY_SUFFIX="${_RUBY_SUFFIX}" \
            RUBY_SUFFIX="${RUBY_SUFFIX}" \
            RUBY_NAME="${RUBY_NAME}" \
            ${PLIST_RUBY_DIRS:S,DIR="${LOCALBASE}/,DIR=",}

# fix shebang lines
.if defined(RUBY_SHEBANG_FILES) && !empty(RUBY_SHEBANG_FILES)
USE_RUBY=       yes

post-patch: ruby-shebang-patch

ruby-shebang-patch:
    @for f in ${RUBY_SHEBANG_FILES}; do \
    ${ECHO_MSG} "===>  Fixing the #! line of $$f"; \
    ${RUBY} -i -pe '$$. == 1 and sub /^#!\s*\S*(\benv\s+)?\bruby/, "#!${RUBY}"' $$f; \
    done
.endif

# extconf.rb
.if defined(USE_RUBY_EXTCONF)
USE_RUBY=       yes

RUBY_EXTCONF?=      extconf.rb
CONFIGURE_ARGS+=    --with-opt-dir="${LOCALBASE}"

do-configure:   ruby-extconf-configure

ruby-extconf-configure:
.if defined(RUBY_EXTCONF_SUBDIRS)
.for d in ${RUBY_EXTCONF_SUBDIRS}
    @${ECHO_MSG} "===>  Running ${RUBY_EXTCONF} in ${d} to configure"
    @cd ${WRKSRC}/${d}; \
    ${SETENV} ${CONFIGURE_ENV} ${RUBY} ${RUBY_EXTCONF} ${CONFIGURE_ARGS}
.endfor
.else
    @${ECHO_MSG} "===>  Running ${RUBY_EXTCONF} to configure"
    @cd ${WRKSRC}; \
    ${SETENV} ${CONFIGURE_ENV} ${RUBY} ${RUBY_EXTCONF} ${CONFIGURE_ARGS}
.endif
.endif

# setup.rb
.if defined(USE_RUBY_SETUP)
USE_RUBY_AMSTD=     yes

RUBY_SETUP?=        setup.rb

do-configure:   ruby-setup-configure

ruby-setup-configure:
    @${ECHO_MSG} "===>  Running ${RUBY_SETUP} to configure"
    @cd ${WRKSRC}; \
    ${SETENV} ${CONFIGURE_ENV} ${RUBY} ${RUBY_SETUP} config ${CONFIGURE_ARGS}

do-build:   ruby-setup-build

ruby-setup-build:
    @${ECHO_MSG} "===>  Running ${RUBY_SETUP} to build"
    @cd ${WRKSRC}; \
    ${SETENV} ${MAKE_ENV} ${RUBY} ${RUBY_SETUP} setup

do-install: ruby-setup-install

ruby-setup-install:
    @${ECHO_MSG} "===>  Running ${RUBY_SETUP} to install"
    cd ${WRKSRC}; \
    ${SETENV} ${MAKE_ENV} ${RUBY} ${RUBY_SETUP} install
.endif

.if defined(USE_LIBRUBY)
LIB_DEPENDS+=       ${RUBY_LIB_DEPENDS}
.endif

.if defined(USE_RUBY)
.if !defined(RUBY_NO_BUILD_DEPENDS)
BUILD_DEPENDS+=     ${RUBY_DEPENDS}
.endif
.if !defined(RUBY_NO_RUN_DEPENDS)
RUN_DEPENDS+=       ${RUBY_DEPENDS}
.endif
.endif

.if defined(USE_RUBY_AMSTD)
BUILD_DEPENDS+=     ${RUBY_AMSTD_DEPENDS}
RUN_DEPENDS+=       ${RUBY_AMSTD_DEPENDS}
.endif

.if defined(USE_RUBY_RD) && !defined(NOPORTDOCS)
BUILD_DEPENDS+=     ${RUBY_RD2_DEPENDS}
.endif

.endif