mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #13455 - Wafflespeanut:bindgen, r=emilio
Cleanup the bindgen tools and update their README <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Either: --> - [x] These changes do not require tests because it's just a cleanup <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> r? @emilio <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13455) <!-- Reviewable:end -->
This commit is contained in:
commit
495fbef129
3 changed files with 15 additions and 34 deletions
|
@ -1,26 +1,12 @@
|
||||||
# GeckoLib tools
|
# Geckolib tools
|
||||||
|
|
||||||
This directory contains mostly simple tools for working with
|
This directory contains simple tools for generating the Rust bindings for [stylo](https://public.etherpad-mozilla.org/p/stylo).
|
||||||
[stylo](https://public.etherpad-mozilla.org/p/stylo).
|
|
||||||
|
|
||||||
Some scripts require [multirust](https://github.com/brson/multirust) in order to
|
|
||||||
work.
|
|
||||||
|
|
||||||
You can see a description of them below.
|
|
||||||
|
|
||||||
## `setup_bindgen.sh`
|
## `setup_bindgen.sh`
|
||||||
|
|
||||||
This uses downloads a custom version of bindgen, up to date to generate the
|
This clones Servo's version of bindgen, and uses `llvm-3.8` library to build it. It will then be used to generate the Rust bindings.
|
||||||
bindings, and uses the required `llvm38` to build it.
|
|
||||||
|
|
||||||
It will also rebuild it if it's already downloaded.
|
## `regen.sh`
|
||||||
|
|
||||||
## `regen_bindings.sh`
|
|
||||||
|
|
||||||
This will regenerate the bindings for the `ServoBindings.h` file in your gecko
|
This will regenerate the bindings for the `ServoBindings.h` file in your gecko
|
||||||
build (which are in `ports/geckolib/bindings.rs`).
|
build. The generated bindings live in `components/style/gecko_bindings/bindings.rs`. For structs, the bindings are in `components/style/gecko_bindings/structs_*`
|
||||||
|
|
||||||
## `regen_style_structs.sh`
|
|
||||||
|
|
||||||
This will generate the bindings for Gecko's style structs. Current bindings are
|
|
||||||
actually in `ports/geckolib/structs.rs`.
|
|
||||||
|
|
|
@ -8,13 +8,15 @@ set -o errexit
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
|
TOOLS_DIR="$(dirname ${0})"
|
||||||
|
|
||||||
if [[ ${#} -eq 0 ]]; then
|
if [[ ${#} -eq 0 ]]; then
|
||||||
echo "Usage: ${0} /path/to/gecko/objdir [other-regen.py-flags]"
|
echo "Usage: ${0} /path/to/gecko/objdir [other-regen.py-flags]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for rust-bindgen
|
# Check for rust-bindgen
|
||||||
if [[ ! -d rust-bindgen ]]; then
|
if [[ ! -d "${TOOLS_DIR}/rust-bindgen" ]]; then
|
||||||
echo "rust-bindgen not found. Run setup_bindgen.sh first."
|
echo "rust-bindgen not found. Run setup_bindgen.sh first."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -22,7 +24,7 @@ fi
|
||||||
# Check for /usr/include
|
# Check for /usr/include
|
||||||
if [[ ! -d /usr/include ]]; then
|
if [[ ! -d /usr/include ]]; then
|
||||||
echo "/usr/include doesn't exist." \
|
echo "/usr/include doesn't exist." \
|
||||||
"Mac users may need to run xcode-select --install."
|
"Mac users may need to run 'xcode-select --install.'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -32,4 +34,4 @@ else
|
||||||
LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
|
LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
./regen.py --target all "${@}"
|
"./${TOOLS_DIR}/regen.py" --target all "${@}"
|
||||||
|
|
|
@ -18,28 +18,21 @@ else
|
||||||
export LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
|
export LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Make sure we have llvm38.
|
# Make sure we have llvm-3.8.
|
||||||
if [[ ! -x "$(command -v clang-3.8)" ]]; then
|
if [[ ! -x "$(command -v clang-3.8)" ]]; then
|
||||||
echo "llmv38 must be installed." \
|
echo "llvm-3.8 is required." \
|
||||||
"Mac users should |brew install llvm38|, Linux varies by distro."
|
"Mac users should |brew install llvm38|," \
|
||||||
exit 1
|
"Linux users can find it in clang-3.8."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LD_LIBRARY_PATH="${LIBCLANG_PATH}"
|
export LD_LIBRARY_PATH="${LIBCLANG_PATH}"
|
||||||
export DYLD_LIBRARY_PATH="${LIBCLANG_PATH}"
|
export DYLD_LIBRARY_PATH="${LIBCLANG_PATH}"
|
||||||
|
|
||||||
# Check for multirust
|
|
||||||
if [[ ! -x "$(command -v multirust)" ]]; then
|
|
||||||
echo "multirust must be installed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Don't try to clone twice.
|
# Don't try to clone twice.
|
||||||
if [[ ! -d rust-bindgen ]]; then
|
if [[ ! -d rust-bindgen ]]; then
|
||||||
git clone https://github.com/servo/rust-bindgen.git
|
git clone https://github.com/servo/rust-bindgen.git
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd rust-bindgen
|
cd rust-bindgen
|
||||||
|
|
||||||
multirust override nightly
|
|
||||||
cargo build --features llvm_stable
|
cargo build --features llvm_stable
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue