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