1 # Created by: Akinori MUSHA aka knu <knu@idaemons.org>
5 PORTVERSION= ${RUBY_PORTVERSION}
6 PORTREVISION= ${RUBY_PORTREVISION}
7 PORTEPOCH= ${RUBY_PORTEPOCH}
8 CATEGORIES= lang ruby ipv6
9 MASTER_SITES= RUBY/${MASTER_SITE_SUBDIR_RUBY}
10 DISTNAME= ${RUBY_DISTNAME}
13 MAINTAINER= ruby@FreeBSD.org
14 COMMENT= Object-oriented interpreted scripting language
16 LICENSE= BSD2CLAUSE RUBY
18 LICENSE_FILE_BSD2CLAUSE=${WRKSRC}/BSDL
19 LICENSE_FILE_RUBY= ${WRKSRC}/COPYING
21 # Using LIB_DEPENDS finds the libffi from gcc which causes problems
22 BUILD_DEPENDS= libffi>=0:devel/libffi
23 LIB_DEPENDS= libyaml.so:textproc/libyaml
24 RUN_DEPENDS= libffi>=0:devel/libffi
26 CONFIGURE_ARGS= ${RUBY_CONFIGURE_ARGS} \
30 --enable-install-static-library \
31 --with-ruby-version=minor \
32 --with-sitedir="${PREFIX}/lib/ruby/site_ruby" \
33 --with-vendordir="${PREFIX}/lib/ruby/vendor_ruby"
34 CONFIGURE_ENV= debugflags=
35 CPPFLAGS+= -I${LOCALBASE}/include
37 # Keep this, else ruby will fail to load libraries dependent of libpthread.
38 LIBS+= -lpthread -L${LOCALBASE}/lib
40 USES= autoreconf cpe ssl tar:xz
41 WRKSRC= ${RUBY_WRKSRC}
45 RUBY_NO_BUILD_DEPENDS= yes
46 RUBY_NO_RUN_DEPENDS= yes
48 OPTIONS_DEFINE= CAPIDOCS DEBUG DOCS EXAMPLES GMP RDOC
49 OPTIONS_DEFAULT= RDOC LIBEDIT
51 OPTIONS_SINGLE_EDIT= LIBEDIT READLINE
53 CAPIDOCS_DESC= Build and install C API documents
54 GMP_DESC= Use GMP to accelerate Bignum operations
55 RDOC_DESC= Build and install Rdoc indexes
56 EDIT_DESC= Which line editing lib to use
57 LIBEDIT_DESC= Use libedit
58 READLINE_DESC= Use libreadline
59 CAPIDOCS_BUILD_DEPENDS= doxygen>=1.8.13,2:devel/doxygen \
61 CAPIDOCS_CONFIGURE_ENABLE= install-capi
62 GMP_CONFIGURE_WITH= gmp
63 GMP_LIB_DEPENDS= libgmp.so:math/gmp
64 LIBEDIT_CONFIGURE_ON= --enable-libedit --with-libedit-dir=${LOCALBASE}
66 RDOC_CONFIGURE_ENABLE= install-rdoc
67 READLINE_CONFIGURE_ON= --disable-libedit --with-readline-dir=${LOCALBASE}
68 READLINE_USES= readline:port
71 CPE_VERSION= ${RUBY_RELVERSION}
72 CPE_UPDATE= p${RUBY_PATCHLEVEL}
74 .include <bsd.port.pre.mk>
76 # PORTREVISION/PORTEPOCH hack
78 .if ${PORTREVISION} != 0
79 _SUF1= _${PORTREVISION}
86 .if ${OPSYS} == "FreeBSD"
87 .if exists(/usr/sbin/dtrace) && (${OSVERSION} > 1100032) && (${ARCH} == x86_64 || ${ARCH} == i386)
88 CONFIGURE_ARGS+=--enable-dtrace
90 CONFIGURE_ARGS+=--disable-dtrace
94 .if (${ARCH} == powerpc || ${ARCH} == powerpc64)
98 .if ${ARCH} == armv6 || ${ARCH} == armv7
99 CONFIGURE_ARGS+=--with-setjmp-type=_setjmp
100 CONFIGURE_ENV+= ac_cv_func__setjmp=yes
103 .if ${PORT_OPTIONS:MCAPIDOCS}
104 MAKE_JOBS_UNSAFE= yes
107 .if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
108 MLINKS= ${RUBY_NAME}.1 ruby.1
109 PLIST_SUB+= IF_DEFAULT=""
111 PKGNAMESUFFIX= ${RUBY_VER:C/\.//}
112 PLIST_SUB+= IF_DEFAULT="@comment "
115 INSTALLED_SCRIPTS= irb erb rdoc ri ruby
117 EXTSAMPLES= bigdecimal/sample/*.rb
119 EXTDOCS= readline/README \
124 # Macros to change variables in rbconfig.rb
125 RB_SET_CONF_VAR=${SH} -c '${REINPLACE_CMD} -E -e "s,(CONFIG\[\"$$0\"\][[:space:]]*=[[:space:]]*)(\(?)(.*)(\)?),\1\2$$1\4," ${WRKSRC}/rbconfig.rb' --
128 @${FIND} ${WRKSRC}/ -name "*.orig" -delete
129 # We get these from other ports
130 .for d in bin/rake doc/rake lib/rake test/rake man/rake.1 lib/rake.rb ext/win32ole bin/gem
131 @${RM} -r ${BUILD_WRKSRC}/${d}
133 # Used by databases/ruby-gdbm port
134 @${MV} ${BUILD_WRKSRC}/ext/gdbm ${WRKDIR}/
138 # Hack to allow modules to be installed into separate PREFIX and/or under user
141 @${RB_SET_CONF_VAR} "prefix" "ENV['PREFIX'] || \3"
142 @${RB_SET_CONF_VAR} "INSTALL" "'/usr/bin/install -c'"
143 @${RB_SET_CONF_VAR} "INSTALL_PROGRAM" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} ${STRIP} -m ${BINMODE}' : '${INSTALL_PROGRAM}'"
144 @${RB_SET_CONF_VAR} "INSTALL_SCRIPT" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${BINMODE}' : '${INSTALL_SCRIPT}'"
145 @${RB_SET_CONF_VAR} "INSTALL_DATA" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${SHAREMODE}' : '${INSTALL_DATA}'"
147 post-build-CAPIDOCS-on:
148 @${FIND} ${WRKSRC}/doc -type d -empty -delete
151 ${MKDIR} ${STAGEDIR}${RUBY_SITEARCHLIBDIR}
152 ${MKDIR} ${STAGEDIR}${RUBY_VENDORARCHLIBDIR}
155 ${MKDIR} ${STAGEDIR}${RUBY_DOCDIR}
157 pre-install-EXAMPLES-on:
158 ${MKDIR} ${STAGEDIR}${RUBY_EXAMPLESDIR}
161 ${MKDIR} ${STAGEDIR}${RUBY_RIDIR}
162 ${MKDIR} ${STAGEDIR}${RUBY_SITERIDIR}
166 # Link just installed "ruby" to "ruby24", etc.
168 .if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
169 . for FILE in ${INSTALLED_SCRIPTS}
170 ${LN} -fs ${FILE}${RUBY_SUFFIX} ${STAGEDIR}${PREFIX}/bin/${FILE}
174 post-install-DEBUG-off:
176 # XXX: hack to strip ruby binary. Ruby uses its own install script that seems
179 .if defined(STRIP) && ${STRIP} == -s
180 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${RUBY_NAME}
181 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libruby${RUBY_SHLIBVER}.so.${RUBY_SHLIBVER}
182 ${FIND} ${STAGEDIR}${RUBY_ARCHLIBDIR} -type f -name '*\.so' -exec ${STRIP_CMD} {} \;
185 post-install-DOCS-on:
186 # Create all dirs required (":u" isn't avaiable in STABLE yet :-()
187 ${MKDIR} ${EXTDOCS:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_DOCDIR}/|}
188 .for FILE in ${EXTDOCS}
189 ${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
190 ${STAGEDIR}${RUBY_DOCDIR}/${FILE:C|^([^/]+)/.*|\1|}/
192 @(cd ${WRKSRC}/doc/ && ${COPYTREE_SHARE} \* ${STAGEDIR}${RUBY_DOCDIR}/)
193 ${INSTALL_DATA} ${WRKSRC}/COPYING* \
194 ${WRKSRC}/ChangeLog \
197 ${STAGEDIR}${RUBY_DOCDIR}/
199 post-install-EXAMPLES-on:
200 # Create all dirs required (":u" isn't avaiable in STABLE yet :-()
201 ${MKDIR} ${EXTSAMPLES:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_EXAMPLESDIR}/|}
202 .for FILE in ${EXTSAMPLES}
203 ${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
204 ${STAGEDIR}${RUBY_EXAMPLESDIR}/${FILE:C|^([^/]+)/.*|\1|}/
206 (cd ${WRKSRC}/sample/ && ${COPYTREE_SHARE} . ${STAGEDIR}${RUBY_EXAMPLESDIR}/)
209 cd ${WRKSRC} && ${MAKE_CMD} test
211 .include <bsd.port.post.mk>