Edit

kc3-lang/angle/tools/flex-bison/README.md

Branch :

  • Show log

    Commit

  • Author : Shahbaz Youssefi
    Date : 2019-11-25 15:19:52
    Hash : 7012250a
    Message : Infrastructure for uploading flex/bison binaries The binaries are retrieved from MSys2 on windows and built from source on Linux. Updates to these binaries should be infrequent enough to not warrant a completely automated system. Bug: angleproject:3419 Change-Id: I282f9ca14059d1fe0d88f2ffd31d02df0ea6b88f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940571 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>

  • tools/flex-bison/README.md
  • # flex and bison binaries
    
    This folder contains the flex and bison binaries. We use these binaries to
    generate the ANGLE translator's lexer and parser.
    
    Use the script [`update_flex_bison_binaries.py`](update_flex_bison_binaries.py)
    to update the versions of these binaries in cloud storage. It must be run on
    Linux or Windows. It will update the SHAs for your platform. After running the
    script run `git commit` and then `git cl upload` to code review using the normal
    review process. You will also want to run
    [`scripts/run_code_generation.py`](../../scripts/run_code_generation.py) to
    update the generated files.
    
    Please update both Windows and Linux binaries at the same time. Use two CLs. One
    for each platform. Note that we don't currently support Mac for generating the
    lexer and parser files. If we do we should add a flex/bison download for Mac as
    well.
    
    Contact jmadill or syoussefi for any help with updating the binaries.
    
    ## Updating flex and bison binaries
    
    This is expected to be a rare operation, and is currently done based on the
    following instructions.  Note: get the binaries first on windows, as only a
    single option is available, then build the binaries for the same version on
    Linux.
    
    ### On Windows
    
    Install MSys2 (x86_64) from http://www.msys2.org/ on Windows.  `flex` should
    already be installed.  Install bison:
    
    ```
    $ pacman -S bison
    ```
    
    Note the versions of flex and bison so the same versions can be build on Linux.
    For example:
    
    ```
    $ flex --version
    flex 2.6.4
    
    $ bison --version
    bison (GNU Bison) 3.3.2
    ```
    
    The only dependencies from MSys2 should be the following:
    
    ```
    msys-intl-8.dll
    msys-iconv-2.dll
    msys-2.0.dll
    ```
    
    This can be verified with:
    
    ```
    $ ldd /usr/bin/flex
    $ ldd /usr/bin/bison
    ```
    
    Additionally, we need the binary for m4 at `/usr/bin/m4`.
    
    Copy all these 5 files to this directory:
    
    ```
    $ cd angle/
    $ cp /usr/bin/flex.exe \
         /usr/bin/bison.exe \
         /usr/bin/m4.exe \
         /usr/bin/msys-intl-8.dll \
         /usr/bin/msys-iconv-2.dll \
         /usr/bin/msys-2.0.dll \
         tools/flex-bison/windows/
    ```
    
    Upload the binaries:
    
    ```
    $ cd angle/
    $ python tools/flex-bison/update_flex_bison_binaries.py
    ```
    
    ### On Linux
    
    ```
    # Get the source of flex
    $ git clone https://github.com/westes/flex.git
    $ cd flex/
    # Checkout the same version as msys2 on windows
    $ git checkout v2.6.4
    # Build
    $ autoreconf -i
    $ mkdir build && cd build
    $ ../configure CFLAGS="-O2 -D_GNU_SOURCE"
    $ make -j
    ```
    
    ```
    # Get the source of bison
    $ curl http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz | tar -xJ
    $ cd bison-3.3.2
    # Build
    $ mkdir build && cd build
    $ ../configure CFLAGS="-O2"
    $ make -j
    ```
    
    Note: Bison's [home page][Bison] lists ftp server and other mirrors.  If the
    above link is broken, replace with a mirror.
    
    Copy the 2 executables to this directory:
    
    ```
    $ cd angle/
    $ cp /path/to/flex/build/src/flex \
         /path/to/bison/build/src/bison \
         tools/flex-bison/linux/
    ```
    
    Upload the binaries:
    
    ```
    $ cd angle/
    $ python tools/flex-bison/update_flex_bison_binaries.py
    ```
    
    [Bison]: https://www.gnu.org/software/bison/