-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCOMPILING
77 lines (57 loc) · 2.77 KB
/
COMPILING
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
Test Engineering Suite Build Instructions
Written by Alexander Nicholi
Copyright © 2019-2020 ARQADIUM LLC
Released under BSD-2-Clause.
§1. PREREQUISITES
------------------
1. Arch Linux: base-devel, clang-format
2. Debian: gcc, g++, make, clang-format
3. macOS: XCode tools (note 1), clang-format
§2. BUILD COMMAND
------------------
Use a POSIX-compliant shell, and run ‘make’ to build the default target
(debug). The ‘-j’ option is fully supported for job control, and can be given
an argument for the number of parallel jobs with the form ‘-j$(nproc)’ (on
Linux) or ‘-j$(sysctl -n hw.ncpu)’ (on macOS). The ‘-j$(nproc)’ form works on
macOS too if GNU coreutils is installed.
Several targets are available: debug, release, check, cov, and asan. The
default target is debug. Run ‘make clean’ to delete all of the project’s
ofiles and other build outputs.
§3. TARGET PLATFORMS
---------------------
Development only happens on one of two platforms: macOS and Linux. All other
platforms are target-only, and macOS and Linux may be targets as well, of
course. The steps for each target will be described below.
Before compiling this repository, be sure to address each subfolder of the
3rdparty/ directory and compile them first.
§3.1. APPLE macOS
------------------
Targeting macOS is only supported natively. The process uses XCode command
line utilities. Valgrind, LLDB, and normal debug/release/check builds are
supported. On recent versions of macOS (esp. Mojave and Catalina) you may need
to dig around for a patched Valgrind that runs on those versions.
§3.2. GNU/LINUX
----------------
Targeting Linux is only supported natively. The process can use GCC or LLVM
based tools, and both GCC and Clang are actively used in development. As with
macOS, Valgrind, LLDB, and the usual debug/release/check builds are supported.
GDB is not actively used, so if you wish to do debugging, compile the program
and its dependencies with Clang instead of GCC to use LLDB.
§3.3. MICROSOFT WINDOWS
------------------------
Windows may be targeted for cross-compilation from either macOS or Linux.
MinGW-W64 is used to achieve this (provided by the system’s package manager),
and runtime testing is done in WINE. 32-bit Windows builds are not supported.
For now, this target is still very much a work-in-progress.
§3.4. NINTENDO SWITCH
----------------------
Not public. See additional company-provided documentation for details.
§3.5. ANDROID (AOSP)
---------------------
Currently unevaluated. Pending support checks for a Google-free
cross-compilation with future support for Vulkan from the development
platforms specified above.
§3.6. APPLE iOS
----------------
Currently unevaluated. Pending examination of Apple toolchains and C-friendly
APIs, along with support systems for Vulkan use.