Ravenports generated: 24 Feb 2024 23:39
[ravenports.git] / Mk / Uses / ruby.mk
1 # Handle dependency requirements on ruby
2 #
3 # Feature:      ruby
4 # Usage:        USES=ruby
5 # Valid ARGS:   (v31, v32, v33), build, interp
6 #
7 # --------------------------------------
8 # Variables which can be set by the port
9 # --------------------------------------
10 #
11 # RUBY_SETUP            - Set to the alternative name of setup.rb
12 #                         (default: setup.rb).
13 # RUBY_EXTCONF          - Set to the alternative name of extconf.rb
14 #                         (default: extconf.rb)
15 # RUBY_FLAGS            - flags passed to ruby (default : blank)
16 #
17 # --------------------------------------
18 # Readonly variables
19 # --------------------------------------
20 # RUBY                  - Set to full path of ruby
21 # RUBY_VER              - Set to the alternative short version of ruby in the
22 #                         form of `x.y' (see below for current value).
23 # RUBY_SUFFIX           - Suffix for ruby binaries and directories
24 # RUBY_ARCH             - Set to target architecture name.
25 # RUBY_SHLIBVER         - Major version of libruby (see below for current value)
26 # RUBY_LIBDIR           - Installation path for architecture independent libraries.
27 # RUBY_ARCHLIBDIR       - Installation path for architecture dependent libraries.
28 # RUBY_SITELIBDIR       - Installation path for site arch. independent libraries.
29 # RUBY_SITEARCHLIBDIR   - Installation path for site arch. dependent libraries.
30 # RUBY_DOCDIR           - Installation path for documents.
31 # RUBY_EXAMPLESDIR      - Installation path for examples.
32 # RUBY_RIDIR            - Installation path for site arch. independent ri documents.
33 # RUBY_SITERIDIR        - Installation path for site arch. dependent ri documents.
34 #
35
36 .if !defined(_INCLUDE_USES_RUBY_MK)
37 _INCLUDE_USES_RUBY_MK=  yes
38
39 # ------------------------------------------------------
40 # Incorporated in ravenadm
41 # ------------------------------------------------------
42 # BUILD/RUN_DEPENDS+=   rubyXX:single:standard
43 # ------------------------------------------------------
44
45
46 .  if !empty(ruby_ARGS:Mv31)
47 _RUBY_VERSION=  3.1
48 .  elif !empty(ruby_ARGS:Mv32)
49 _RUBY_VERSION=  3.2
50 .  elif !empty(ruby_ARGS:Mv33)
51 _RUBY_VERSION=  3.3
52 .  else
53 _RUBY_VERSION=  ${RUBY_DEFAULT}
54 .  endif
55
56 RUBY_VER=               ${_RUBY_VERSION}
57 RUBY_VERSION=           ${RUBY_${_RUBY_VERSION}_VERSION}
58 RUBY_SUFFIX=            ${_RUBY_VERSION:S/.//g}
59 RUBY_SHLIBVER?=         ${RUBY_VER:S/.//}
60 RUBY_SETUP?=            setup.rb
61 RUBY_EXTCONF?=          extconf.rb
62
63 RUBY_NAME=              ruby${RUBY_SUFFIX}
64 RUBY_SYSLIBDIR=         ${PREFIX}/lib
65 RUBY_SITEDIR=           ${RUBY_SYSLIBDIR}/ruby/site_ruby
66 RUBY_VENDORDIR=         ${RUBY_SYSLIBDIR}/ruby/vendor_ruby
67 RUBY_OPSYSMAJ=          ${OPSYS:tl}${MAJOR}
68 RUBY_ARCH=              ${ARCH_STANDARD}-${RUBY_OPSYSMAJ:S/sunos5/solaris2/}
69 RUBY=                   ${LOCALBASE}/bin/${RUBY_NAME}
70
71 # Directories
72 RUBY_LIBDIR?=           ${RUBY_SYSLIBDIR}/ruby/${RUBY_VER}
73 RUBY_ARCHLIBDIR?=       ${RUBY_LIBDIR}/${RUBY_ARCH}
74 RUBY_SITELIBDIR?=       ${RUBY_SITEDIR}/${RUBY_VER}
75 RUBY_SITEARCHLIBDIR?=   ${RUBY_SITELIBDIR}/${RUBY_ARCH}
76 RUBY_VENDORLIBDIR?=     ${RUBY_VENDORDIR}/${RUBY_VER}
77 RUBY_VENDORARCHLIBDIR?= ${RUBY_VENDORLIBDIR}/${RUBY_ARCH}
78 RUBY_DOCDIR?=           ${PREFIX}/share/doc/${RUBY_NAME}
79 RUBY_EXAMPLESDIR?=      ${PREFIX}/share/examples/${RUBY_NAME}
80 RUBY_RIDIR?=            ${PREFIX}/share/ri/${RUBY_VER}/system
81 RUBY_SITERIDIR?=        ${PREFIX}/share/ri/${RUBY_VER}/site
82
83 # PLIST
84 PLIST_RUBY_DIRS=        RUBY_LIBDIR="${RUBY_LIBDIR}" \
85                         RUBY_ARCHLIBDIR="${RUBY_ARCHLIBDIR}" \
86                         RUBY_SITELIBDIR="${RUBY_SITELIBDIR}" \
87                         RUBY_SITEARCHLIBDIR="${RUBY_SITEARCHLIBDIR}" \
88                         RUBY_VENDORLIBDIR="${RUBY_VENDORLIBDIR}" \
89                         RUBY_VENDORARCHLIBDIR="${RUBY_VENDORARCHLIBDIR}" \
90                         RUBY_DOCDIR="${RUBY_DOCDIR}" \
91                         RUBY_EXAMPLESDIR="${RUBY_EXAMPLESDIR}" \
92                         RUBY_RIDIR="${RUBY_RIDIR}" \
93                         RUBY_SITERIDIR="${RUBY_SITERIDIR}"
94
95 PLIST_SUB+=             ${PLIST_RUBY_DIRS:C,DIR="(${LOCALBASE}|${PREFIX})/,DIR=",} \
96                         RUBY_VERSION="${RUBY_VERSION}" \
97                         RUBY_VER="${RUBY_VER}" \
98                         RUBY_SHLIBVER="${RUBY_SHLIBVER}" \
99                         RUBY_ARCH="${RUBY_ARCH}" \
100                         RUBY_SUFFIX="${RUBY_SUFFIX}" \
101                         RUBY_NAME="${RUBY_NAME}" \
102
103 RUBY_CONFIGURE_ARGS+=   --with-rubyhdrdir="${PREFIX}/include/ruby-${RUBY_VER}/" \
104                         --with-rubylibprefix="${PREFIX}/lib/ruby" \
105                         --docdir="${RUBY_DOCDIR}" \
106                         --with-soname=ruby${RUBY_SUFFIX} \
107                         --program-prefix="" \
108                         --program-suffix="${RUBY_SUFFIX}"
109
110 # Disable auto-use of setup.rb (It's never been used)
111 # .  if empty(ruby_ARGS:Minterp)
112 . if 0
113 _USES_configure+=       490:ruby-setup-configure \
114                         492:ruby-extconf-configure
115 _USES_build+=           490:ruby-setup-build \
116                         859:ruby-setup-install  # RUBY always sets INSTALL_REQ_TOOLCHAIN
117 .  endif
118
119 ruby-setup-configure:
120         @if [ -f "${CONFIGURE_WRKSRC}/${RUBY_SETUP}" ]; then \
121         ${ECHO_MSG} "===>  Configure arguments:";\
122         for myarg in ${CONFIGURE_ARGS}; do\
123         ${ECHO_MSG} "      $$myarg";\
124         done;\
125         ${ECHO_MSG} "===>  Running ${RUBY_SETUP} to configure";\
126         (cd ${CONFIGURE_WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
127           ${RUBY} ${RUBY_FLAGS} ${RUBY_SETUP} config ${CONFIGURE_ARGS});\
128         fi
129
130 ruby-extconf-configure:
131 .  if defined(RUBY_EXTCONF_SUBDIRS)
132 .    for d in ${RUBY_EXTCONF_SUBDIRS}
133         @if [ -f "${CONFIGURE_WRKSRC}/${RUBY_EXTCONF}" ]; then \
134         ${ECHO_MSG} "===>  Running ${RUBY_EXTCONF} in ${d} to configure";\
135         (cd ${CONFIGURE_WRKSRC}/${d} && \
136                 ${SETENV} ${CONFIGURE_ENV} RB_USER_INSTALL=yes \
137                 ${RUBY} ${RUBY_FLAGS} ${RUBY_EXTCONF} \
138                 --with-opt-dir="${LOCALBASE}" ${CONFIGURE_ARGS});\
139         fi
140 .    endfor
141 .  else
142         @if [ -f "${CONFIGURE_WRKSRC}/${RUBY_EXTCONF}" ]; then \
143         ${ECHO_MSG} "===>  Running ${RUBY_EXTCONF} to configure";\
144         (cd ${CONFIGURE_WRKSRC} && \
145                 ${SETENV} ${CONFIGURE_ENV} RB_USER_INSTALL=yes \
146                 ${RUBY} ${RUBY_FLAGS} ${RUBY_EXTCONF} \
147                 --with-opt-dir="${LOCALBASE}" ${CONFIGURE_ARGS});\
148         fi
149 .  endif
150
151 ruby-setup-build:
152         @if [ -f "${BUILD_WRKSRC}/${RUBY_SETUP}" ]; then \
153         ${ECHO_MSG} "===>  Running ${RUBY_SETUP} to build";\
154         (cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
155           ${RUBY} ${RUBY_FLAGS} ${RUBY_SETUP} setup);\
156         fi
157
158 ruby-setup-install:
159         @if [ -f "${INSTALL_WRKSRC}/${RUBY_SETUP}" ]; then \
160         ${ECHO_MSG} "===>  Running ${RUBY_SETUP} to install";\
161         (cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} \
162           ${RUBY} ${RUBY_FLAGS} ${RUBY_SETUP} install --prefix=${STAGEDIR});\
163         fi
164
165 .endif  # _INCLUDE_USES_RUBY_MK