xref: /aosp_15_r20/external/angle/tools/flex-bison/README.md (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# flex and bison binaries
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard WorkerThis folder contains the flex and bison binaries. We use these binaries to
4*8975f5c5SAndroid Build Coastguard Workergenerate the ANGLE translator's lexer and parser.
5*8975f5c5SAndroid Build Coastguard Worker
6*8975f5c5SAndroid Build Coastguard WorkerUse the script [`update_flex_bison_binaries.py`](update_flex_bison_binaries.py)
7*8975f5c5SAndroid Build Coastguard Workerto update the versions of these binaries in cloud storage. It must be run on
8*8975f5c5SAndroid Build Coastguard WorkerLinux or Windows. It will update the SHAs for your platform. After running the
9*8975f5c5SAndroid Build Coastguard Workerscript run `git commit` and then `git cl upload` to code review using the normal
10*8975f5c5SAndroid Build Coastguard Workerreview process. You will also want to run
11*8975f5c5SAndroid Build Coastguard Worker[`scripts/run_code_generation.py`](../../scripts/run_code_generation.py) to
12*8975f5c5SAndroid Build Coastguard Workerupdate the generated files.
13*8975f5c5SAndroid Build Coastguard Worker
14*8975f5c5SAndroid Build Coastguard WorkerPlease update Windows, Linux and Mac binaries at the same time. Start with
15*8975f5c5SAndroid Build Coastguard WorkerWindows, then merge your work into a single CL that updates all binaries
16*8975f5c5SAndroid Build Coastguard Workersimultaneously.
17*8975f5c5SAndroid Build Coastguard Worker
18*8975f5c5SAndroid Build Coastguard WorkerIf you get authentication errors while uploading, try running:
19*8975f5c5SAndroid Build Coastguard Worker```
20*8975f5c5SAndroid Build Coastguard Worker$ download_from_google_storage --config
21*8975f5c5SAndroid Build Coastguard Worker```
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard WorkerContact syoussefi for any help with updating the binaries.
24*8975f5c5SAndroid Build Coastguard Worker
25*8975f5c5SAndroid Build Coastguard Worker## Updating flex and bison binaries
26*8975f5c5SAndroid Build Coastguard Worker
27*8975f5c5SAndroid Build Coastguard WorkerThis is expected to be a rare operation, and is currently done based on the
28*8975f5c5SAndroid Build Coastguard Workerfollowing instructions.  Note: get the binaries first on windows, as only a
29*8975f5c5SAndroid Build Coastguard Workersingle option is available, then build the binaries for the same version on
30*8975f5c5SAndroid Build Coastguard WorkerLinux/Mac.
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker### On Windows
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard WorkerInstall MSys2 (x86_64) from http://www.msys2.org/ on Windows.  `flex` should
35*8975f5c5SAndroid Build Coastguard Workeralready be installed.  Install bison:
36*8975f5c5SAndroid Build Coastguard Worker
37*8975f5c5SAndroid Build Coastguard Worker```
38*8975f5c5SAndroid Build Coastguard Worker$ pacman -S bison
39*8975f5c5SAndroid Build Coastguard Worker```
40*8975f5c5SAndroid Build Coastguard Worker
41*8975f5c5SAndroid Build Coastguard WorkerNote the versions of flex and bison, so you can build the exact same versions on Linux.
42*8975f5c5SAndroid Build Coastguard WorkerFor example:
43*8975f5c5SAndroid Build Coastguard Worker
44*8975f5c5SAndroid Build Coastguard Worker```
45*8975f5c5SAndroid Build Coastguard Worker$ flex --version
46*8975f5c5SAndroid Build Coastguard Workerflex 2.6.4
47*8975f5c5SAndroid Build Coastguard Worker
48*8975f5c5SAndroid Build Coastguard Worker$ bison --version
49*8975f5c5SAndroid Build Coastguard Workerbison (GNU Bison) 3.8.2
50*8975f5c5SAndroid Build Coastguard Worker```
51*8975f5c5SAndroid Build Coastguard Worker
52*8975f5c5SAndroid Build Coastguard WorkerThe only dependencies outside /Windows/ from MSys2 should be the following:
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard Worker```
55*8975f5c5SAndroid Build Coastguard Workermsys-intl-8.dll
56*8975f5c5SAndroid Build Coastguard Workermsys-iconv-2.dll
57*8975f5c5SAndroid Build Coastguard Workermsys-2.0.dll
58*8975f5c5SAndroid Build Coastguard Worker```
59*8975f5c5SAndroid Build Coastguard Worker
60*8975f5c5SAndroid Build Coastguard WorkerThis can be verified with:
61*8975f5c5SAndroid Build Coastguard Worker
62*8975f5c5SAndroid Build Coastguard Worker```
63*8975f5c5SAndroid Build Coastguard Worker$ ldd /usr/bin/flex
64*8975f5c5SAndroid Build Coastguard Worker$ ldd /usr/bin/bison
65*8975f5c5SAndroid Build Coastguard Worker```
66*8975f5c5SAndroid Build Coastguard Worker
67*8975f5c5SAndroid Build Coastguard WorkerAdditionally, we need the binary for m4 at `/usr/bin/m4`.
68*8975f5c5SAndroid Build Coastguard Worker
69*8975f5c5SAndroid Build Coastguard WorkerCopy all these 5 files to this directory:
70*8975f5c5SAndroid Build Coastguard Worker
71*8975f5c5SAndroid Build Coastguard Worker```
72*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
73*8975f5c5SAndroid Build Coastguard Worker$ cp /usr/bin/flex.exe \
74*8975f5c5SAndroid Build Coastguard Worker     /usr/bin/bison.exe \
75*8975f5c5SAndroid Build Coastguard Worker     /usr/bin/m4.exe \
76*8975f5c5SAndroid Build Coastguard Worker     /usr/bin/msys-intl-8.dll \
77*8975f5c5SAndroid Build Coastguard Worker     /usr/bin/msys-iconv-2.dll \
78*8975f5c5SAndroid Build Coastguard Worker     /usr/bin/msys-2.0.dll \
79*8975f5c5SAndroid Build Coastguard Worker     tools/flex-bison/windows/
80*8975f5c5SAndroid Build Coastguard Worker```
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard WorkerUpload the binaries:
83*8975f5c5SAndroid Build Coastguard Worker
84*8975f5c5SAndroid Build Coastguard Worker```
85*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
86*8975f5c5SAndroid Build Coastguard Worker$ py tools/flex-bison/update_flex_bison_binaries.py
87*8975f5c5SAndroid Build Coastguard Worker```
88*8975f5c5SAndroid Build Coastguard Worker
89*8975f5c5SAndroid Build Coastguard Worker### On Linux
90*8975f5c5SAndroid Build Coastguard Worker
91*8975f5c5SAndroid Build Coastguard Worker```
92*8975f5c5SAndroid Build Coastguard Worker# Get the source of flex
93*8975f5c5SAndroid Build Coastguard Worker$ git clone https://github.com/westes/flex.git
94*8975f5c5SAndroid Build Coastguard Worker$ cd flex/
95*8975f5c5SAndroid Build Coastguard Worker# Checkout the same version as msys2 on windows
96*8975f5c5SAndroid Build Coastguard Worker$ git checkout v2.6.4
97*8975f5c5SAndroid Build Coastguard Worker# Build
98*8975f5c5SAndroid Build Coastguard Worker$ autoreconf -i
99*8975f5c5SAndroid Build Coastguard Worker$ mkdir build && cd build
100*8975f5c5SAndroid Build Coastguard Worker$ ../configure CFLAGS="-O2 -D_GNU_SOURCE"
101*8975f5c5SAndroid Build Coastguard Worker$ make -j
102*8975f5c5SAndroid Build Coastguard Worker```
103*8975f5c5SAndroid Build Coastguard Worker
104*8975f5c5SAndroid Build Coastguard Worker```
105*8975f5c5SAndroid Build Coastguard Worker# Get the source of bison
106*8975f5c5SAndroid Build Coastguard Worker$ curl http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz | tar -xJ
107*8975f5c5SAndroid Build Coastguard Worker$ cd bison-3.8.2
108*8975f5c5SAndroid Build Coastguard Worker# Build
109*8975f5c5SAndroid Build Coastguard Worker$ mkdir build && cd build
110*8975f5c5SAndroid Build Coastguard Worker$ ../configure CFLAGS="-O2"
111*8975f5c5SAndroid Build Coastguard Worker$ make -j
112*8975f5c5SAndroid Build Coastguard Worker```
113*8975f5c5SAndroid Build Coastguard Worker
114*8975f5c5SAndroid Build Coastguard WorkerNote: Bison's [home page][Bison] lists ftp server and other mirrors.  If the
115*8975f5c5SAndroid Build Coastguard Workerabove link is broken, replace with a mirror.
116*8975f5c5SAndroid Build Coastguard Worker
117*8975f5c5SAndroid Build Coastguard WorkerCopy the 2 executables to this directory:
118*8975f5c5SAndroid Build Coastguard Worker
119*8975f5c5SAndroid Build Coastguard Worker```
120*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
121*8975f5c5SAndroid Build Coastguard Worker$ cp /path/to/flex/build/src/flex \
122*8975f5c5SAndroid Build Coastguard Worker     /path/to/bison/build/src/bison \
123*8975f5c5SAndroid Build Coastguard Worker     tools/flex-bison/linux/
124*8975f5c5SAndroid Build Coastguard Worker```
125*8975f5c5SAndroid Build Coastguard Worker
126*8975f5c5SAndroid Build Coastguard WorkerUpload the binaries:
127*8975f5c5SAndroid Build Coastguard Worker
128*8975f5c5SAndroid Build Coastguard Worker```
129*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
130*8975f5c5SAndroid Build Coastguard Worker$ ./tools/flex-bison/update_flex_bison_binaries.py
131*8975f5c5SAndroid Build Coastguard Worker```
132*8975f5c5SAndroid Build Coastguard Worker
133*8975f5c5SAndroid Build Coastguard Worker### On Mac
134*8975f5c5SAndroid Build Coastguard Worker
135*8975f5c5SAndroid Build Coastguard WorkerUse homebrew to install flex and bison:
136*8975f5c5SAndroid Build Coastguard Worker```
137*8975f5c5SAndroid Build Coastguard Worker$ brew install flex bison
138*8975f5c5SAndroid Build Coastguard Worker```
139*8975f5c5SAndroid Build Coastguard Worker
140*8975f5c5SAndroid Build Coastguard WorkerFind the install locations using `brew info`:
141*8975f5c5SAndroid Build Coastguard Worker```
142*8975f5c5SAndroid Build Coastguard Worker$ brew info bison
143*8975f5c5SAndroid Build Coastguard Worker...
144*8975f5c5SAndroid Build Coastguard Worker/opt/homebrew/Cellar/bison/3.8.2 (100 files, 3.7MB)
145*8975f5c5SAndroid Build Coastguard Worker...
146*8975f5c5SAndroid Build Coastguard Worker```
147*8975f5c5SAndroid Build Coastguard Worker
148*8975f5c5SAndroid Build Coastguard WorkerCopy the 2 executables to this directory:
149*8975f5c5SAndroid Build Coastguard Worker
150*8975f5c5SAndroid Build Coastguard Worker```
151*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
152*8975f5c5SAndroid Build Coastguard Worker$ cp -r \
153*8975f5c5SAndroid Build Coastguard Worker     /path/to/bison/install/bin \
154*8975f5c5SAndroid Build Coastguard Worker     /path/to/flex/install/bin \
155*8975f5c5SAndroid Build Coastguard Worker     tools/flex-bison/mac/
156*8975f5c5SAndroid Build Coastguard Worker```
157*8975f5c5SAndroid Build Coastguard Worker
158*8975f5c5SAndroid Build Coastguard WorkerUpload the binaries:
159*8975f5c5SAndroid Build Coastguard Worker
160*8975f5c5SAndroid Build Coastguard Worker```
161*8975f5c5SAndroid Build Coastguard Worker$ cd angle/
162*8975f5c5SAndroid Build Coastguard Worker$ ./tools/flex-bison/update_flex_bison_binaries.py
163*8975f5c5SAndroid Build Coastguard Worker```
164*8975f5c5SAndroid Build Coastguard Worker
165*8975f5c5SAndroid Build Coastguard Worker[Bison]: https://www.gnu.org/software/bison/
166