-
Notifications
You must be signed in to change notification settings - Fork 0
/
build-oorexx.txt
420 lines (346 loc) · 18.5 KB
/
build-oorexx.txt
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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
Compiler prerequisite for Executor:
Your compiler supports C++17.
Tested with Apple clang version 14.0.0 (clang-1400.0.29.202)
Tested with clang+llvm-15.0.3-x86_64-apple-darwin
Tested with clang+llvm-15.0.6-arm64-apple-darwin21.0
Tested under WSL with gcc/g++ GNU 11.4.0
Tested with Microsoft Visual Studio Community 2022 (64-bit) - Version 17.3.6
Shell prerequisite for MacOS:
Works only with bash.
If your shell is zsh, then launch bash from your shell session and follow the instructions.
At the end, you can launch zsh from the bash session, but some libraries (like bsf)
may not work because of SIP. The workaround for bash works only for bash.
The zsh session will inherit the environment variables but NOT the aliases.
Shell prerequisite for Linux:
Works only with bash.
If your shell is not bash, then launch bash from your shell session and follow the instructions.
At the end, you can launch your shell from the bash session, it will inherit the environment
variables but NOT the aliases.
Shell prerequisite for Windows:
Works only with cmd.
--------------------------------------------------------------------------------
ooRexx directory hierarchy
--------------------------------------------------------------------------------
One MacOs host.
One Linux virtual machine.
One Windows virtual machine.
Only one occurence of the git & svn sources, stored on the MacOs host.
Any change made to the sources under MacOs is immediatly available from the VMs.
Under MacOs, which is the main machine (host of the virtual machines):
/local1 SMB share (exported, will be mounted as Y: under Windows VM)
local@ symbolic link to /local (the goal is to have Y:\local)
/local NFS share (exported, will be mounted as /host/local under Linux VM)
rexx/
builder/ Scripts to support builds for several branches, configurations, bitness
oorexx/ $builder_shared_dir
----------------------------
executor/ git sources (fork of official/sandbox/jlf)
sandbox/
jlf/
trunk/
executor5/ git sources (fork of official/main/trunk)
main/
trunk/
official/ svn sources of ooRexx
main/
branches/
4.2 next minor release to deliver
releases/
5.0.0/ last delivered version (older : 4.2.0, 4.1.1, 4.1.0, 4.0.1, 4.0.0, 3.2.0, 3.1.2)
trunk/
trunk/ next version to deliver
----------------------------
build/ where all the builds and deliveries for MacOs are done.
executor.master/ other branches : block_closure | merge_svn_main | operators | pipeline
sandbox/
jlf/
trunk/ macos-[x86_64|arm64]/clang/[debug|reldbg|release]
executor5.master/ other branches : none for the moment
main/
trunk/ macos-[x86_64|arm64]/clang/[debug|reldbg|release]
official/
main/
branches
4.2/
trunk/ macos-x86_64/clang/[debug|reldbg|release]
releases/
4.2.0/
trunk/ macos-x86_64/clang/[debug|reldbg|release]
5.0.0/
trunk/ macos-[x86_64|arm64]/clang/[debug|reldbg|release]
trunk/ macos-[x86_64|arm64]/clang/[debug|reldbg|release]
Linux virtual machine:
The build directory is put inside the VM because of bad performances when accessing $builder_shared_dir.
See notes.txt for "WSL: Creation of the build environment".
/host/local NFS mount MacOs /local
/local
rexx@ symbolic link to /host/local/rexx
builder/
oorexx/ $builder_shared_dir
build/ not used for Linux
----------------------------
executor/ git sources (fork of official/sandbox/jlf)
executor5/ git sources (fork of official/main/trunk)
official/ svn sources of ooRexx
rexxlocal/ Local directory
oorexx/ $builder_local_dir
----------------------------
build/ where all the builds and deliveries for Linux are done.
executor.master/ other branches : block_closure | merge_svn_main | operators | pipeline
sandbox/
jlf/
trunk/ ubuntu-[x86_64|aarch64]/gcc/[debug|profiling|reldbg|release]
executor5.master/ other branches : none for the moment
main/
trunk/ ubuntu-[x86_64|aarch64]/gcc/[debug|profiling|reldbg|release]
official/
main/
branches
4.2/
trunk/ ubuntu-x86_64/gcc/[debug|profiling|reldbg|release]
releases/
4.2.0/
trunk/ ubuntu-x86_64/gcc/[debug|profiling|reldbg|release]
5.0.0/
trunk/ ubuntu-[x86_64|aarch64]/gcc/[debug|profiling|reldbg|release]
trunk/ ubuntu-[x86_64|aarch64]/gcc/[debug|profiling|reldbg|release]
Windows virtual machine:
The build directory is put inside the VM because of bad performances when accessing $builder_shared_dir.
C:\jlf\local\rexxlocal root directory of the local files for rexx
E: subst E: C:\jlf
Y: SMB mount MacOs /local1 which contains local@ -> /local
Y:\local
rexx\
builder\
oorexx\ $builder_shared_dir
build\ not used
----------------------------
executor\ git sources (fork of official/sandbox/jlf)
executor5\ git sources (fork of official/main/trunk)
official\ svn sources of ooRexx
E:\local\
rexxlocal/ Local directory
oorexx/ $builder_local_dir
----------------------------
build/ where all the builds and deliveries for Windows are done.
executor.master/ other branches : block_closure | merge_svn_main | operators | pipeline
sandbox/
jlf/
trunk/ windows-[x86_64|arm64]/cl/[debug|reldbg|release]
executor5.master/ other branches : none for the moment
main/
trunk/ windows-[x86_64|arm64]/cl/[debug|reldbg|release]
official/
main/
branches
4.2/
trunk/ windows-x86_64/cl/[debug|reldbg|release]
releases/
4.2.0/
trunk/ windows-x86_64/cl/[debug|reldbg|release]
5.0.0/
trunk/ windows-[x86_64|arm64]/cl/[debug|reldbg|release]
trunk/ windows-[x86_64|arm64]/cl/[debug|reldbg|release]
--------------------------------------------------------------------------------
Getting the git sources of Builder
--------------------------------------------------------------------------------
cd /local/rexx
git clone https://github.com/jlfaucher/builder.git
--------------------------------------------------------------------------------
Getting the svn sources of ooRexx
--------------------------------------------------------------------------------
# To get everything (1,3Gb: trunk, all releases, doc, test, sandbox):
cd /local/rexx/oorexx
svn checkout svn://svn.code.sf.net/p/oorexx/code-0 official
# You can checkout only subsets.
# In this case each subset will have its own .svn repository to manage separately.
# To get only the main trunk of the interpreter sources (25Mb):
cd /local/rexx/oorexx
svn checkout svn://svn.code.sf.net/p/oorexx/code-0/main/trunk official/main/trunk
svn checkout svn://svn.code.sf.net/p/oorexx/code-0/build-utilities official/build-utilities
# To get only the main trunk of the documentation (24Mb):
cd /local/rexx/oorexx
svn checkout svn://svn.code.sf.net/p/oorexx/code-0/docs/trunk official/docs/trunk
# To get only the test framework (7Mb):
cd /local/rexx/oorexx
svn checkout svn://svn.code.sf.net/p/oorexx/code-0/test/trunk official/test/trunk
# To get only the regex package (loaded by ooRexxShell if available)
cd /local/rexx/oorexx
svn checkout svn://svn.code.sf.net/p/oorexx/code-0/incubator/regex official/incubator/regex
--------------------------------------------------------------------------------
Getting the git sources of executor
--------------------------------------------------------------------------------
cd /local/rexx/oorexx
# --depth 1 needed because of error "fetch-pack: invalid index-pack output"
git clone --depth 1 https://github.com/jlfaucher/executor.git
--------------------------------------------------------------------------------
Cross references between ooRexx and executor
--------------------------------------------------------------------------------
# [MacOs & Linux]
# From the directory official/incubator, reference some subdirectories in executor :
ln -s ../../executor/incubator/ooRexxShell ooRexxShell-executor
ln -s ../../executor/incubator/DocMusings DocMusings-executor
# From the directory official/sandbox, reference some subdirectories in executor :
ln -s ../../executor/sandbox/jlf jlf-executor
# From the directory executor/incubator, reference some subdirectories in official :
ln -s ../../official/incubator/regex regex
:: [Windows]
:: From the directory official\incubator, reference some subdirectories in executor :
mklink /d ooRexxShell-executor ..\..\executor\incubator\ooRexxShell
mklink /d DocMusings-executor ..\..\executor\incubator\DocMusings
:: From the directory official/sandbox, reference some subdirectories in executor :
mklink /d jlf-executor ..\..\executor\sandbox\jlf
:: From the directory executor\incubator, reference some subdirectories in official :
mklink /d regex ..\..\official\incubator\regex
--------------------------------------------------------------------------------
Getting the git sources of executor5
--------------------------------------------------------------------------------
cd /local/rexx/oorexx
git clone https://github.com/jlfaucher/executor5.git executor5/main/trunk
# [MacOs & Linux]
# From the directory executor5, reference some subdirectories in executor :
ln -s ../executor/incubator incubator
ln -s ../executor/sandbox sandbox
:: [Windows]
:: From the directory executor5, reference some subdirectories in executor :
mklink /d incubator ..\executor\incubator
mklink /d sandbox ..\executor\sandbox
--------------------------------------------------------------------------------
FOR OLD BUILD SYSTEMS ONLY (those not using cmake)
Changes that must be applied before the first build
--------------------------------------------------------------------------------
See the directory builder/adaptations.
The files in the subdirectories are either new files or existing files that have
been adaptated for some reasons.
You can copy manually these files or you can execute the script create_links
which will create hard links
--------------------------------------------------------------------------------
MacOs & Linux build
NEW BUILD SYSTEM (cmake)
Build the 64-bit release configuration of official ooRexx trunk, executor master branch
--------------------------------------------------------------------------------
# Remember: the instructions in this section work only with bash.
# If you use another shell (like zsh), then type bash -l
# See the folder setenv/bash for examples of configuration files for bash.
cd /local/rexx/oorexx
# Initialize the build environment (only one of them):
# MacOs
# system-arch is macos-arm64 or macos-x86_64.
# MacOs ooRexx
. ../builder/scripts/setenv build/official/main/trunk/macos-arm64/clang/release
# MacOs executor
. ../builder/scripts/setenv build/executor.master/sandbox/jlf/trunk/macos-arm64/clang/release
# MacOs executor5
. ../builder/scripts/setenv build/executor5.master/main/trunk/macos-arm64/clang/release
# Linux
# system-arch is ubuntu-aarch64 or ubuntu-x86_64.
# WSL ARM ooRexx
. ../builder/scripts/setenv /local/rexxlocal/oorexx/build/official/main/trunk/ubuntu-aarch64/gcc/release
# Linux ooRexx
. ../builder/scripts/setenv /local/rexxlocal/oorexx/build/official/main/trunk/ubuntu-x86_64/gcc/release
# Linux executor
. ../builder/scripts/setenv /local/rexxlocal/oorexx/build/executor.master/sandbox/jlf/trunk/ubuntu-x86_64/gcc/release
# Linux executor5
. ../builder/scripts/setenv /local/rexxlocal/oorexx/build/executor5.master/main/trunk/ubuntu-x86_64/clang/release
# Now build...
cdbuild
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$builder_delivery_dir $builder_src_dir
make install
# To build a rpm (Linux):
# OS_DIST is optional on the following command. It is used to modify the install package name.
# Note JLF : Under Linux, `uname` could be replaced by `lsb_release -i -s`-`lsb_release -r -s`
cdbuild
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$builder_delivery_dir $builder_src_dir -DBUILD_RPM=1 -DOS_DIST=`uname`
make install
cpack -G RPM
# To build a deb (Linux):
# OS_DIST is optional on the following command. It is used to modify the install package name.
cdbuild
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$builder_delivery_dir $builder_src_dir -DBUILD_DEB=1 -DOS_DIST=`uname`
make install
cpack -G DEB
# To build a dmg (Macos):
# OS_DIST is optional on the following command. It is used to modify the install package name.
cdbuild
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DCMAKE_INSTALL_PREFIX=$builder_delivery_dir $builder_src_dir -DBUILD_DMG=1 -DOS_DIST=`uname`
make install
. ./build_macOS_dmg.sh
--------------------------------------------------------------------------------
MacOs & Linux build
OLD BUILD SYSTEM (configure) + adaptations
Build the 64-bit release configuration of official ooRexx release 4.2.0
--------------------------------------------------------------------------------
# Remember: the instructions in this section work only with bash.
# If you use another shell (like zsh), then type bash -l
# See the folder setenv/bash for examples of configuration files for bash.
# MacOs
cd /local/rexx/oorexx
. ../builder/scripts/setenv build/official/main/releases/4.2.0/trunk/macos-x86_64/clang/release
# Linux
cd /local/rexx/oorexx
. ../builder/scripts/setenv /local/rexxlocal/oorexx/build/official/main/releases/4.2.0/trunk/ubuntu-x86_64/gcc/release
# MacOs & Linux
cdtrunk
./bootstrap
cdbuild
ln -s $builder_src_dir/oorexx.ver # must do that otherwise not found
$builder_src_dir/configure --prefix=$builder_delivery_dir --disable-static
make install
--------------------------------------------------------------------------------
Windows build
NEW BUILD SYSTEM (cmake)
Build the 64-bit release configuration of official ooRexx trunk, executor master branch
--------------------------------------------------------------------------------
:: Prerequisite
:: - No space in the path to the current directory.
:: - ooRexx: Visual Studio 2022 or 2019 or 2017 or 2015 or 2013 or 2012 is installed. See scripts\setenv-cl.bat
:: - Executor: Visual Studio 2022
:: - Not sure it's needed: An SDK is installed: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
:: - Install the latest version of https://sourceforge.net/projects/oorexx/files/oorexx-buildutils/
:: - Install xalan-c: https://xalan.apache.org/xalan-c/
:: Local directory in the virtual machine for Windows
e:
cd \local\rexxlocal\oorexx
:: Shared directory
y:
cd \local\rexx\oorexx
:: system-arch is windows-arm64 or windows-x86_64 or windows-x86_32.
:: ooRexx
call ..\builder\scripts\setenv e:build\official\main\trunk\windows-x86_64\cl\release\
:: executor
call ..\builder\scripts\setenv e:build\executor.master\sandbox\jlf\trunk\windows-x86_64\cl\release
:: executor5
call ..\builder\scripts\setenv e:build\executor5.master\main\trunk\windows-x86_64\cl\release
:: Now build...
cdbuild
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% -DCMAKE_INSTALL_PREFIX=%builder_delivery_dir% -DDOC_SOURCE_DIR=%oorexx_doc_dir%\build\trunk %builder_src_dir%
nmake install
:: Optional
nmake nsis_template_installer
--------------------------------------------------------------------------------
Windows build
OLD BUILD SYSTEM (makeorx) + adaptations
Build the 64-bit release configuration of official ooRexx release 4.2.0
--------------------------------------------------------------------------------
:: Prerequisite
:: - No space in the path to the current directory.
:: - Visual Studio 2022 or 2019 or 2017 or 2015 or 2013 or 2012 is installed. See scripts\setenv-cl.bat
:: - An SDK is installed: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
:: - Install the latest version of https://sourceforge.net/projects/oorexx/files/oorexx-buildutils/
:: - Install xalan-c: https://xalan.apache.org/xalan-c/
:: - Adapt scripts.private\other_dependencies-oorexx.bat to your COMPUTERNAME:
:: - add killer.exe in PATH.
:: - add NSIS in PATH.
:: - add xalan-c in PATH.
:: Local directory in the virtual machine for Windows
e:
cd \local\rexxlocal\oorexx
:: Shared directory
y:
cd \local\rexx\oorexx
:: system-arch is windows-arm64 or windows-x86_64 or windows-x86_32.
call ..\builder\scripts\setenv e:build\official\main\releases\4.2.0\trunk\windows-x86_64\cl\release
cdtrunk
makeorx_verbose %BUILD_TYPE%
:: oodialog is not built by default.
makeorx_verbose %BUILD_TYPE% oodialog_unicode