Bump version to 0.36.9
[cygport.git] / cygclass / gnustep.cygclass
blobfd48be94caa7ca70c2c24a3accbbef2f1b9b1348
1 ################################################################################
3 # gnustep.cygclass - functions for building GNUstep packages
5 # Part of cygport - Cygwin packaging application
6 # Copyright (C) 2006-2020 Cygport authors
7 # Provided by the Cygwin project <https://cygwin.com/>
9 # cygport is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
14 # cygport is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with cygport.  If not, see <https://www.gnu.org/licenses/>.
22 ################################################################################
24 #****ih* Cygclasses/gnustep.cygclass
25 #  DESCRIPTION
26 #  GNUstep is an open-source implementation of the NeXT/OpenStep and Apple's
27 #  Cocoa API frameworks, written in Objective-C.  A number of additional
28 #  libraries (known as Frameworks) and programs, both console and GUI are
29 #  available, including some ported from Mac OS X.  GNUstep packages are built
30 #  with GNUmakefiles which use templates included in the gnustep-make package.
32 #  This cygclass builds packages which use the GNUstep framework and build system.
33 #  REQUIRES
34 #  gnustep-make
35 #  SEE ALSO
36 #  mirror_gnustep
37 #****
39 # cross-compiling is not (yet?) supported
40 __cross_compiling_error
42 check_prog_req gnustep-config gnustep-make
44 case ${PN} in
45         *.app|*.bundle|*.framework|*.tool)
46                 ORIG_PN=${ORIG_PN:-${PN%.*}}
47         ;;
48 esac
50 #****io* gnustep.cygclass/CATEGORY (gnustep)
51 #  DEFINITION
52 CATEGORY="GNUstep"
53 #****
54 #****io* gnustep.cygclass/SUMMARY (gnustep)
55 #  DEFINITION
56 SUMMARY="GNUstep ${ORIG_PN:-${PN#gnustep-}} component"
57 #****
58 #****io* gnustep.cygclass/HOMEPAGE (gnustep)
59 #  DEFINITION
60 HOMEPAGE="http://www.gnustep.org/"
61 #****
63 #****io* gnustep.cygclass/SVN_URI (gnustep)
64 #  NOTE
65 #  svn.cygclass must be inherit()ed last for this to have any effect.
66 #  DEFINITION
67 SVN_URI="svn://svn.gna.org/svn/gnustep"
68 #****
70 SVN_MODULE=${ORIG_PN}
72 # Returns the full path to the given GNUstep directory type.
73 __gnustep_dir() {
74         if (( $# != 1 ))
75         then
76                 error "__gnustep_dir: requires exactly one argument"
77         fi
79         local d=${1}
80         local suffix=
82         case ${d} in
83                 BUNDLES)        d="SYSTEM_LIBRARY"; suffix="/Bundles" ;;
84                 FONTS)          d="SYSTEM_LIBRARY"; suffix="/Fonts" ;;
85                 FRAMEWORKS)     d="SYSTEM_LIBRARY"; suffix="/Frameworks" ;;
86                 MAKEFILES)      ;;
87                 SERVICES)       d="SYSTEM_LIBRARY"; suffix="/Services" ;;
88                 APPS|DOC|HEADERS|LIBRARIES|TOOLS)       d="SYSTEM_${d}" ;;
89                 *)      error "__gnustep_dir: unknown directory type: ${d}"
90         esac
92         var="GNUSTEP_${d}"
93         eval $(grep "^${var}=" /etc/GNUstep/GNUstep.conf)
94         echo -n ${!var#/}${suffix}
97 #for dvar in APPS BUNDLES DOC FONTS FRAMEWORKS HEADERS LIBRARIES MAKEFILES SERVICES TOOLS
98 #do
99 #       declare GNUSTEP_${dvar}=$(__gnustep_dir ${dvar})
100 #done
101 #unset dvar
103 #****if* gnustep.cygclass/gnustep_env
104 #  DESCRIPTION
105 #  Loads the GNUstep environment variables.  This must be run before calling
106 #  gnustep_compile or gnustep_install.
107 #****
108 gnustep_env() {
109         local mf=$(gnustep-config --variable=GNUSTEP_MAKEFILES)
110         . ${mf}/GNUstep-reset.sh
111         . ${mf}/GNUstep.sh
114 #****iC* gnustep.cygclass/gnustep_compile
115 #  SYNOPSIS
116 #  cd $B
117 #  gnustep_compile [MAKEFILE_ARGUMENTS]
118 #  DESCRIPTION
119 #  Builds a GNUstep package with the following steps:
120 #  - cygconf, if a configure script is present (usually not).
121 #  - cygmake
122 #  - cygmake in the Documentation directory, if present.
123 #  Arguments to gnustep_compile are passed to both cygmake calls.
124 #  NOTE
125 #  gnustep_env must be called before gnustep_compile.
126 #****
127 gnustep_compile() {
128         if ! defined GNUSTEP_HOST
129         then
130                 error "gnustep_env must be called first"
131         fi
133         if [ -e configure ]
134         then
135                 cygconf --with-installation-domain=SYSTEM
136         fi
138         cygmake GNUSTEP_INSTALLATION_DOMAIN=SYSTEM ${@}
140         if [ -e Documentation/GNUmakefile ]
141         then
142                 cygmake -C Documentation GNUSTEP_INSTALLATION_DOMAIN=SYSTEM ${@}
143         fi
146 #****iI* gnustep.cygclass/gnustep_install
147 #  SYNOPSIS
148 #  cd $B
149 #  gnustep_install [MAKEFILE_ARGUMENTS]
150 #  DESCRIPTION
151 #  Installs a GNUstep package under $D.  Arguments to gnustep_install are
152 #  passed to cyginstall.
153 #  NOTE
154 #  gnustep_env must be called before gnustep_install.
155 #****
156 gnustep_install() {
157         if ! defined GNUSTEP_HOST
158         then
159                 error "gnustep_env must be called first"
160         fi
162         cyginstall GNUSTEP_INSTALLATION_DOMAIN=SYSTEM ${@}
164         if [ -e Documentation/GNUmakefile ]
165         then
166                 cyginstall -C Documentation GNUSTEP_INSTALLATION_DOMAIN=SYSTEM ${@}
167         fi
170 #****if* gnustep.cygclass/gnustep_pkg_apps
171 #  SYNOPSIS
172 #  gnustep_pkg_apps APP_NAME [APP_NAME] ...
173 #  DESCRIPTION
174 #  Create a binary subpackage $APP_NAME.app containing the given application(s).
175 #****
176 gnustep_pkg_apps() {
177         local a an
179         for a in ${@}
180         do
181                 an=${a%.app}
183                 PKG_NAMES+=" ${an}.app"
184                 export ${an}_app_CONTENTS="usr/bin/${an} $(__gnustep_dir APPS)/${an}.app/"
185         done
188 #****if* gnustep.cygclass/gnustep_pkg_frameworks
189 #  SYNOPSIS
190 #  gnustep_pkg_frameworks FRAMEWORK_NAME:VERSION [FRAMEWORK_NAME:VERSION] ...
191 #  DESCRIPTION
192 #  Create binary subpackages lib$FRAMEWORK_NAME$VERSION and lib$FRAMEWORK_NAME-devel
193 #  containing the runtime and development components of the given frameworks(s).
194 #****
195 gnustep_pkg_frameworks() {
196         local fd fn fv f_v _v
198         for f_v in ${@}
199         do
200                 fn=${f_v%:*}
201                 fv=${f_v#*:}
202                 _v=${fv//./_}
203                 fd=$(__gnustep_dir FRAMEWORKS)/${fn}.framework
205                 PKG_NAMES+=" lib${fn}${fv} lib${fn}-devel"
206                 export lib${fn}${_v}_CONTENTS="usr/bin/cyg${fn}-${_v}.dll \
207                                                ${fd}/Resources \
208                                                ${fd}/Versions/${fv}/Resources/ \
209                                                ${fd}/Versions/${fv}/cyg${fn}-${_v}.dll \
210                                                ${fd}/Versions/Current"
211                 export lib${fn}_devel_CONTENTS="$(__gnustep_dir HEADERS)/${fn}/ \
212                                                 ${fd}/Headers \
213                                                 ${fd}/${fn} \
214                                                 ${fd}/Versions/${fv}/Headers \
215                                                 ${fd}/Versions/${fv}/${fn} \
216                                                 ${fd}/Versions/${fv}/lib${fn}.dll.a \
217                                                 ${fd}/lib${fn}.dll.a \
218                                                 usr/lib/lib${fn}.dll.a"
219         done
222 #****io* gnustep.cygclass/src_compile (gnustep)
223 #  DEFINITION
224 src_compile() {
225         lndirs
226         cd ${B}
227         gnustep_env
228         gnustep_compile
230 #****
232 #****io* gnustep.cygclass/src_install (gnustep)
233 #  DEFINITION
234 src_install() {
235         cd ${B}
236         gnustep_env
237         gnustep_install
239 #****
241 readonly -f __gnustep_dir gnustep_env gnustep_compile gnustep_install \
242             gnustep_pkg_apps gnustep_pkg_frameworks