Everywhere: Remove GN build system
We've had some impressive efforts going into setting up and maintaining GN as an alternative to CMake, but as of today we're still using CMake and the GN files have bitrotted quite severely. We've found no convincing reason to keep maintaining two build systems in parallel - so let's remove GN and make life a bit simpler for us.
This commit is contained in:
parent
b2e0a2515a
commit
c3fb1be321
181 changed files with 0 additions and 6970 deletions
5
.gn
5
.gn
|
|
@ -1,5 +0,0 @@
|
|||
buildconfig = "//Meta/gn/build/BUILDCONFIG.gn"
|
||||
exec_script_whitelist = []
|
||||
export_compile_commands = [ ":*" ]
|
||||
script_executable = "python3"
|
||||
secondary_source = "//Meta/gn/secondary/"
|
||||
|
|
@ -354,15 +354,6 @@ open -W --stdout $(tty) --stderr $(tty) ./Build/release/bin/Ladybird.app
|
|||
open -W --stdout $(tty) --stderr $(tty) ./Build/release/bin/Ladybird.app --args https://ladybird.dev
|
||||
```
|
||||
|
||||
### Experimental GN build
|
||||
|
||||
There is an experimental GN build for Ladybird. It is not officially supported, but it is kept up to date on a best-effort
|
||||
basis by interested contributors. See the [GN build instructions](../Meta/gn/README.md) for more information.
|
||||
|
||||
In general, the GN build organizes ninja rules in a more compact way than the CMake build, and it may be faster on some systems.
|
||||
GN also allows building host and cross-targets in the same build directory, which is useful for managing dependencies on host tools when
|
||||
cross-compiling to other platforms.
|
||||
|
||||
### Debugging with CLion
|
||||
|
||||
Ladybird should be built with debug symbols first. This can be done by adding `-DCMAKE_BUILD_TYPE=Debug` to the cmake command line,
|
||||
|
|
|
|||
1
Meta/gn/.gitignore
vendored
1
Meta/gn/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
!build
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
# gn build for Ladybird
|
||||
|
||||
Warning! The GN build is experimental and best-effort. It might not work, and if you use it you're expected to feel comfortable to unbreak it if necessary. Ladybird's official build system is CMake, if in doubt use that. If you add files, you're expected to update the CMake build but you don't need to update GN build files. Reviewers should not ask authors to update GN build files. Keeping the GN build files up-to-date is on the people who use the GN build.
|
||||
|
||||
GN is a metabuild system. It always creates ninja files, but it can create some IDE projects (MSVC, Xcode, ...) which then shell out to ninja for the actual build.
|
||||
|
||||
This is a good [overview of GN](https://docs.google.com/presentation/d/15Zwb53JcncHfEwHpnG_PoIbbzQ3GQi_cpujYwbpcbZo/edit#slide=id.g119d702868_0_12).
|
||||
|
||||
For more information, motivation, philosophy, and inspiration, see the LLVM documentation on its [GN build](https://github.com/llvm/llvm-project/tree/main/llvm/utils/gn#quick-start)
|
||||
|
||||
# Creating a gn build
|
||||
|
||||
To create a GN build, you need to have GN installed. It's available in some Linux package managers, but if not, or on other OSes, see below.
|
||||
On Ubuntu 22.04, the main package repos do not have an up to date enough package for GN, so you will need to build it from source or get a binary from Google.
|
||||
|
||||
The easiest way to build GN from source is to use our [Toolchain/BuildGN.sh](../../Toolchain/BuildGN.sh) script, which will
|
||||
drop the built binary into the `Toolchain/Local/gn/bin` directory. The instructions for downloading a prebuilt binary from Google are
|
||||
[here](https://gn.googlesource.com/gn/+/refs/heads/main#getting-a-binary).
|
||||
|
||||
Once you have GN installed, you can create a build directory by running the following commands:
|
||||
|
||||
```sh
|
||||
gn gen out
|
||||
```
|
||||
|
||||
`gn gen` creates a ninja build in the `out` directory. You can then build the project with ninja:
|
||||
|
||||
```sh
|
||||
ninja -C out
|
||||
```
|
||||
|
||||
If GN or ninja report a bunch of errors, it's likely that you need to create an `args.gn` that points to all the required tools.
|
||||
`args.gn` belongs at the root of the build directory, and can be placed there before running gn gen, or modified with
|
||||
`gn args <build dir>`. See the section below for a typical `args.gn`.
|
||||
|
||||
If you modify `args.gn` outside of `gn args`, be sure to run `gn gen` again to regenerate the ninja files.
|
||||
|
||||
|
||||
# Typical gn args
|
||||
|
||||
On macOS, the default args should work out of the box. For compiling Ladybird there won't be any tailoring needed if you have Qt6 installed via homebrew and the Xcode tools installed.
|
||||
|
||||
On Ubuntu, it's likely that the default ``cc`` and ``c++`` will not be able to compile the project. For compiling Ladybird, a typical ``args.gn`` might look like the below:
|
||||
|
||||
args.gn
|
||||
```gn
|
||||
# Set build arguments here. See `gn help buildargs`.
|
||||
# Chosen clang must be >= version 15.0.0
|
||||
host_cc="clang"
|
||||
host_cxx="clang++"
|
||||
is_clang=true
|
||||
use_lld=true
|
||||
qt_install_headers="/usr/include/x86_64-linux-gnu/qt6/"
|
||||
qt_install_lib="/usr/lib/x86_64-linux-gnu"
|
||||
qt_install_libexec="/usr/lib/qt6/libexec/"
|
||||
```
|
||||
|
||||
As with any gn project, ``gn args <build dir> --list`` is your best friend.
|
||||
|
||||
# Running binaries from the GN build
|
||||
|
||||
Targets in the gn build are prefixed by the directory they are declared in. For example, to build the default target
|
||||
in the Ladybird/ directory and LibWeb, you would run:
|
||||
|
||||
```shell
|
||||
ninja -C out Ladybird
|
||||
ninja -C out Userland/Libraries/LibWeb
|
||||
```
|
||||
|
||||
Binaries are placed in the `out/bin` directory, and can be run from there.
|
||||
|
||||
```shell
|
||||
./out/bin/Ladybird
|
||||
# or on macOS
|
||||
open -W --stdout $(tty) --stderr $(tty) ./out/bin/Ladybird.app --args https://ladybird.dev
|
||||
```
|
||||
|
|
@ -1,207 +0,0 @@
|
|||
import("//Meta/gn/build/buildflags.gni")
|
||||
import("//Meta/gn/build/mac_sdk.gni")
|
||||
import("//Meta/gn/build/sysroot.gni")
|
||||
import("//Meta/gn/build/toolchain/compiler.gni")
|
||||
|
||||
declare_args() {
|
||||
# If set, puts relative paths in debug info.
|
||||
# Makes the build output independent of the build directory, but makes
|
||||
# most debuggers harder to use. See "Getting to local determinism" and
|
||||
# "Getting debuggers to work well with locally deterministic builds" in
|
||||
# http://blog.llvm.org/2019/11/deterministic-builds-with-clang-and-lld.html
|
||||
# for more information.
|
||||
use_relative_paths_in_debug_info = false
|
||||
|
||||
# The version of host gcc. Ignored if is_clang is true.
|
||||
gcc_version = 12
|
||||
}
|
||||
|
||||
config("compiler_defaults") {
|
||||
defines = []
|
||||
asmflags = []
|
||||
cflags = []
|
||||
cflags_cc = []
|
||||
ldflags = []
|
||||
|
||||
if (symbol_level == 2) {
|
||||
if (is_debug_gdb) {
|
||||
cflags += [ "-ggdb" ]
|
||||
} else if (is_clang && is_debug_lldb) {
|
||||
# GCC (as of version 13) does not support lldb-specific debug information
|
||||
cflags += [ "-glldb" ]
|
||||
} else {
|
||||
cflags += [ "-g" ]
|
||||
}
|
||||
|
||||
# For full debug-info -g builds, --gdb-index makes links ~15% slower, and
|
||||
# gdb symbol reading time 1500% faster (lld links in 4.4 instead of 3.9s,
|
||||
# and gdb loads and runs it in 2s instead of in 30s). It's likely that
|
||||
# people doing symbol_level=2 want to run a debugger (since
|
||||
# symbol_level=2 isn't the default). So this seems like the right
|
||||
# tradeoff.
|
||||
if (current_os != "mac" && use_lld) {
|
||||
cflags += [ "-ggnu-pubnames" ] # llvm PR34820
|
||||
ldflags += [ "-Wl,--gdb-index" ]
|
||||
|
||||
# Use debug fission. In this mode, detailed debug information is
|
||||
# written to a .dwo file next to each .o file instead of into the .o
|
||||
# file directly. The linker then only links the .o files, which contain
|
||||
# a pointer to each .dwo file. The debugger then reads debug info out
|
||||
# of all the .dwo files instead of from the binary.
|
||||
#
|
||||
# (The dwp tool can link all the debug info together into a single
|
||||
# "debug info binary", but that's not done as part of the build.)
|
||||
#
|
||||
# This requires `-Wl,--gdb-index` (above) to work well.
|
||||
#
|
||||
# With lld, this reduces link time:
|
||||
# - in release + symbol_level=2 builds: From 2.3s to 1.3s
|
||||
# - in debug builds: From 5.2s to 4.6s
|
||||
#
|
||||
# Time needed for gdb startup and setting a breakpoint is comparable,
|
||||
# the time from from `r` to hititng a breakpoint on main goes from 4s
|
||||
# to 2s.
|
||||
#
|
||||
# (macOS's linker always keeps debug info out of its output executables
|
||||
# and debuggers there also know to load debug info from the .o files.
|
||||
# macOS also has a debug info linker like dwp, it's called dsymutil.
|
||||
# This happens by default, so there's no need to pass a flag there.)
|
||||
cflags += [ "-gsplit-dwarf" ]
|
||||
ldflags += [ "-gsplit-dwarf" ] # Needed for ThinLTO builds.
|
||||
}
|
||||
} else if (symbol_level == 1) {
|
||||
cflags += [ "-g1" ]
|
||||
# For linetable-only -g1 builds, --gdb-index makes links ~8% slower, but
|
||||
# links are 4x faster than -g builds so it's a fairly small absolute cost.
|
||||
# On the other hand, gdb startup is well below 1s with and without the
|
||||
# index, and people using -g1 likely don't use a debugger. So don't use
|
||||
# the flag here.
|
||||
# Linetables always go in the .o file, even with -gsplit-dwarf, so there's
|
||||
# no point in passing -gsplit-dwarf here.
|
||||
}
|
||||
|
||||
if (is_optimized) {
|
||||
cflags += [ "-O2" ]
|
||||
}
|
||||
|
||||
cflags += [
|
||||
"-D_FILE_OFFSET_BITS=64",
|
||||
"-DENABLE_COMPILETIME_FORMAT_CHECK",
|
||||
]
|
||||
|
||||
cflags += [
|
||||
"-fdiagnostics-color",
|
||||
"-ffp-contract=off",
|
||||
"-fsigned-char",
|
||||
]
|
||||
|
||||
if (use_lld) {
|
||||
ldflags += [ "-Wl,--color-diagnostics" ]
|
||||
}
|
||||
|
||||
if (current_os == "mac") {
|
||||
# FIXME: Use -std=c++23 once Xcode's clang supports that.
|
||||
cflags_cc += [ "-std=c++2b" ]
|
||||
} else {
|
||||
cflags_cc += [ "-std=c++23" ]
|
||||
}
|
||||
|
||||
cflags_cc += [ "-fvisibility-inlines-hidden" ]
|
||||
|
||||
# Warning setup.
|
||||
cflags += [
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Werror",
|
||||
]
|
||||
cflags += [
|
||||
"-Wno-invalid-offsetof",
|
||||
"-Wno-unknown-warning-option",
|
||||
"-Wno-unused-parameter",
|
||||
]
|
||||
|
||||
if (is_clang) {
|
||||
cflags += [
|
||||
"-Wdelete-non-virtual-dtor",
|
||||
"-Wstring-conversion",
|
||||
"-Wno-user-defined-literals",
|
||||
"-fconstexpr-steps=16777216",
|
||||
"-Wno-implicit-const-int-float-conversion",
|
||||
"-Wno-vla-cxx-extension",
|
||||
"-Wno-unqualified-std-cast-call",
|
||||
]
|
||||
} else {
|
||||
cflags += [
|
||||
# Disable gcc's potentially uninitialized use analysis as it presents
|
||||
# lots of false positives.
|
||||
"-Wno-maybe-uninitialized",
|
||||
|
||||
# Disable -Wredundant-move on GCC>=9. GCC wants to remove std::move
|
||||
# in code like "A foo(ConvertibleToA a) { return std::move(a); }",
|
||||
# but this code does not compile (or uses the copy constructor
|
||||
# instead) on clang<=3.8. Clang also has a -Wredundant-move, but it
|
||||
# only fires when the types match exactly, so we can keep it here.
|
||||
"-Wno-redundant-move",
|
||||
|
||||
"-Wno-literal-suffix",
|
||||
]
|
||||
}
|
||||
|
||||
if (use_lld) {
|
||||
ldflags += [ "-fuse-ld=lld" ]
|
||||
}
|
||||
|
||||
# Deterministic build setup, see
|
||||
# http://blog.llvm.org/2019/11/deterministic-builds-with-clang-and-lld.html
|
||||
if (is_clang) {
|
||||
cflags += [
|
||||
"-no-canonical-prefixes",
|
||||
"-Werror=date-time",
|
||||
]
|
||||
if (use_relative_paths_in_debug_info) {
|
||||
cflags += [ "-fdebug-compilation-dir=." ]
|
||||
}
|
||||
}
|
||||
if (sysroot != "") {
|
||||
if (current_os != "mac" && current_os != "android") {
|
||||
cflags += [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ]
|
||||
ldflags += [ "--sysroot=" + rebase_path(sysroot, root_build_dir) ]
|
||||
}
|
||||
}
|
||||
|
||||
if (current_os == "mac") {
|
||||
sdk_path = mac_sdk_path
|
||||
cflags += [
|
||||
"-isysroot",
|
||||
rebase_path(sdk_path, root_build_dir),
|
||||
]
|
||||
ldflags += [
|
||||
"-isysroot",
|
||||
rebase_path(sdk_path, root_build_dir),
|
||||
]
|
||||
} else {
|
||||
cflags += [ "-fno-semantic-interposition" ]
|
||||
}
|
||||
|
||||
if (sysroot != "" && current_os != "win" && is_clang) {
|
||||
cflags += [ "-Wpoison-system-directories" ]
|
||||
}
|
||||
cflags_objcc = cflags_cc
|
||||
}
|
||||
|
||||
config("no_exceptions") {
|
||||
cflags_cc = [ "-fno-exceptions" ]
|
||||
cflags_objcc = cflags_cc
|
||||
}
|
||||
|
||||
config("zdefs") {
|
||||
if (current_os != "mac" && current_os != "android") {
|
||||
ldflags = [ "-Wl,-z,defs" ]
|
||||
}
|
||||
}
|
||||
|
||||
config("pic") {
|
||||
if (current_os != "mac") {
|
||||
cflags_cc = [ "-fPIC" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
# All targets will get this list of configs by default.
|
||||
# Targets can opt out of a config by removing it from their local configs list.
|
||||
# If you're adding global flags and don't need targets to be able to opt out,
|
||||
# add the flags to compiler_defaults, not to a new config.
|
||||
shared_binary_target_configs = [
|
||||
"//Meta/gn/build:compiler_defaults",
|
||||
"//Meta/gn/build:no_exceptions",
|
||||
"//Meta/gn/build:pic",
|
||||
]
|
||||
|
||||
# Apply that default list to the binary target types.
|
||||
set_defaults("executable") {
|
||||
configs = shared_binary_target_configs
|
||||
}
|
||||
set_defaults("loadable_module") {
|
||||
configs = shared_binary_target_configs
|
||||
}
|
||||
set_defaults("static_library") {
|
||||
configs = shared_binary_target_configs
|
||||
}
|
||||
set_defaults("shared_library") {
|
||||
configs = shared_binary_target_configs + [ "//Meta/gn/build:zdefs" ]
|
||||
}
|
||||
set_defaults("source_set") {
|
||||
configs = shared_binary_target_configs
|
||||
}
|
||||
|
||||
if (target_os == "") {
|
||||
target_os = host_os
|
||||
}
|
||||
if (current_os == "") {
|
||||
current_os = target_os
|
||||
}
|
||||
|
||||
if (target_cpu == "") {
|
||||
target_cpu = host_cpu
|
||||
}
|
||||
if (current_cpu == "") {
|
||||
current_cpu = target_cpu
|
||||
}
|
||||
|
||||
host_toolchain = "//Meta/gn/build/toolchain:unix"
|
||||
|
||||
set_default_toolchain(host_toolchain)
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
declare_args() {
|
||||
# https://clang.llvm.org/docs/UsersManual.html#controlling-debugger-tuning
|
||||
# Build with clang for debugging, tuned for a specific debugger.
|
||||
# Both imply is_debug = true.
|
||||
is_debug_lldb = false
|
||||
is_debug_gdb = false
|
||||
}
|
||||
|
||||
# args that depend on other args must live in a later declare_args() block.
|
||||
declare_args() {
|
||||
# Build for debugging. Equivalent to is_optimized=false symbol_level=2.
|
||||
is_debug = is_debug_lldb || is_debug_gdb
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Whether to build with optimizations.
|
||||
is_optimized = !is_debug
|
||||
|
||||
if (is_debug) {
|
||||
# Debug info symbol level. 0: No symbols; 1: Line numbers; 2: Full symbols.
|
||||
symbol_level = 2
|
||||
} else {
|
||||
# Debug info symbol level. 0: No symbols; 1: Line numbers; 2: Full symbols.
|
||||
symbol_level = 1
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
# Defines compiled_action().
|
||||
#
|
||||
# compiled_action() is like action(), except that it runs a built binary
|
||||
# instead of a script.
|
||||
#
|
||||
# Parameters:
|
||||
#
|
||||
# tool (required)
|
||||
# [label] Label of the tool to run. This should be an executable, and
|
||||
# this label should not include a toolchain (anything in parens). This
|
||||
# tool will be built for the host.
|
||||
#
|
||||
# outputs (required)
|
||||
# [list of files] Same meaning as for action().
|
||||
#
|
||||
# args (required)
|
||||
# [list of strings] Flags to pass to the built binary. Almost identical
|
||||
# to action()'s `args`, except that `tool` is implicitly added as first
|
||||
# element.
|
||||
#
|
||||
# depfile
|
||||
# inputs
|
||||
# public_configs
|
||||
# visibility (all optional)
|
||||
# Same meaning as for action().
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# compiled_action("run_my_tool") {
|
||||
# tool = "//tools/something:mytool"
|
||||
# inputs = [ "my_input_file.txt" ]
|
||||
# outputs = [ "$target_gen_dir/mysource.inc" ]
|
||||
# args = [
|
||||
# rebase_path(inputs[0], root_build_dir),
|
||||
# rebase_path(outputs[0], root_build_dir),
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
# You would typically declare your tool like this:
|
||||
# if (host_toolchain == current_toolchain) {
|
||||
# executable("mytool") {
|
||||
# ...
|
||||
# }
|
||||
# }
|
||||
# The if statement around the executable is optional. It means "I only care
|
||||
# about this target in the host toolchain". Usually this is what you want, and
|
||||
# saves unnecessarily compiling your tool for the target platform. If you
|
||||
# need a target build of your tool as well, omit the if statement.
|
||||
|
||||
template("compiled_action") {
|
||||
assert(defined(invoker.args), "must set 'args' in $target_name")
|
||||
assert(defined(invoker.outputs), "must set 'outputs' in $target_name")
|
||||
assert(defined(invoker.tool), "must set 'tool' in $target_name")
|
||||
assert(!defined(invoker.sources),
|
||||
"use 'inputs' instead of 'sources' in $target_name")
|
||||
|
||||
action(target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"depfile",
|
||||
"inputs",
|
||||
"outputs",
|
||||
"public_configs",
|
||||
"testonly",
|
||||
"visibility",
|
||||
])
|
||||
host_tool = invoker.tool + "($host_toolchain)"
|
||||
host_executable = get_label_info(host_tool, "root_out_dir") + "/bin/" +
|
||||
get_label_info(host_tool, "name")
|
||||
deps = [ host_tool ]
|
||||
if (defined(invoker.deps)) {
|
||||
deps += invoker.deps
|
||||
}
|
||||
script = "//Meta/gn/build/run_compiled_binary.py"
|
||||
args = [ rebase_path(host_executable, root_build_dir) ] + invoker.args
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Location of shared cache of downloaded files
|
||||
cache_path = "$root_gen_dir/Cache/"
|
||||
}
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
#
|
||||
# This file introduces a template for calling download_file.py
|
||||
#
|
||||
# download_file behaves like CMake's file(DOWNLOAD) with the addtion
|
||||
# of version checking the file against a build system defined version.
|
||||
#
|
||||
# Parameters:
|
||||
# url (required) [string]
|
||||
#
|
||||
# output (required) [string]
|
||||
#
|
||||
# version (required) [string]
|
||||
# Version of the file for caching purposes
|
||||
#
|
||||
# version_file (reqiured) [string]
|
||||
# Filename to write the version to in the filesystem
|
||||
#
|
||||
# cache [String]
|
||||
# Directory to clear on version mismatch
|
||||
#
|
||||
# sha256 [String]
|
||||
# Expected SHA-256 hash of the downloaded file
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# download_file("my_tarball") {
|
||||
# url = "http://example.com/xyz.tar.gz"
|
||||
# output = "$root_gen_dir/MyModule/xyz.tar.gz"
|
||||
# version = "1.2.3"
|
||||
# version_file = "$root_gen_dir/MyModule/xyz_version.txt"
|
||||
# }
|
||||
#
|
||||
|
||||
template("download_file") {
|
||||
assert(defined(invoker.url), "must set 'url' in $target_name")
|
||||
assert(defined(invoker.output), "must set 'output' in $target_name")
|
||||
assert(defined(invoker.version), "must set 'version' in $target_name")
|
||||
assert(defined(invoker.version_file),
|
||||
"must set 'version_file' in $target_name")
|
||||
|
||||
action(target_name) {
|
||||
script = "//Meta/gn/build/download_file.py"
|
||||
|
||||
sources = []
|
||||
if (defined(invoker.cache)) {
|
||||
outputs = [
|
||||
invoker.cache + "/" + invoker.output,
|
||||
invoker.cache + "/" + invoker.version_file,
|
||||
]
|
||||
} else {
|
||||
outputs = [
|
||||
invoker.output,
|
||||
invoker.version_file,
|
||||
]
|
||||
}
|
||||
args = [
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
"-f",
|
||||
rebase_path(outputs[1], root_build_dir),
|
||||
"-v",
|
||||
invoker.version,
|
||||
invoker.url,
|
||||
]
|
||||
if (defined(invoker.cache)) {
|
||||
args += [
|
||||
"-c",
|
||||
rebase_path(invoker.cache, root_build_dir),
|
||||
]
|
||||
}
|
||||
if (defined(invoker.sha256)) {
|
||||
args += [
|
||||
"-s",
|
||||
invoker.sha256,
|
||||
]
|
||||
}
|
||||
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"configs",
|
||||
"deps",
|
||||
"public_configs",
|
||||
"public_deps",
|
||||
"testonly",
|
||||
"visibility",
|
||||
])
|
||||
}
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
r"""Downloads a file as a build artifact.
|
||||
|
||||
The file is downloaded to the specified directory.
|
||||
|
||||
It's intended to be used for files that are cached between runs.
|
||||
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import os
|
||||
import pathlib
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import urllib.request
|
||||
|
||||
|
||||
def compute_sha256(path):
|
||||
sha256 = hashlib.sha256()
|
||||
|
||||
with open(path, "rb") as file:
|
||||
while True:
|
||||
data = file.read(256 << 10)
|
||||
if not data:
|
||||
break
|
||||
|
||||
sha256.update(data)
|
||||
|
||||
return sha256.hexdigest()
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("url", help="input url")
|
||||
parser.add_argument("-o", "--output", required=True, help="output file")
|
||||
parser.add_argument("-v", "--version", required=True, help="version of file to detect mismatches and redownload")
|
||||
parser.add_argument("-f", "--version-file", required=True, help="filesystem location to cache version")
|
||||
parser.add_argument("-c", "--cache-path", required=False, help="path for cached files to clear on version mismatch")
|
||||
parser.add_argument("-s", "--sha256", required=False, help="expected SHA-256 hash of the downloaded file")
|
||||
args = parser.parse_args()
|
||||
|
||||
version_from_file = ""
|
||||
version_file = pathlib.Path(args.version_file)
|
||||
if version_file.exists():
|
||||
with version_file.open("r") as f:
|
||||
version_from_file = f.readline().strip()
|
||||
|
||||
if version_from_file == args.version:
|
||||
return 0
|
||||
|
||||
# Fresh build or version mismatch, delete old cache
|
||||
if args.cache_path:
|
||||
cache_path = pathlib.Path(args.cache_path)
|
||||
shutil.rmtree(cache_path, ignore_errors=True)
|
||||
cache_path.mkdir(parents=True)
|
||||
|
||||
output_file = pathlib.Path(args.output)
|
||||
print(f"Downloading file {output_file} from {args.url}")
|
||||
|
||||
with urllib.request.urlopen(args.url) as f:
|
||||
try:
|
||||
with tempfile.NamedTemporaryFile(delete=False, dir=output_file.parent) as out:
|
||||
out.write(f.read())
|
||||
os.rename(out.name, output_file)
|
||||
except IOError:
|
||||
os.unlink(out.name)
|
||||
|
||||
if args.sha256:
|
||||
actual_sha256 = compute_sha256(output_file)
|
||||
|
||||
if args.sha256 != actual_sha256:
|
||||
print(f"SHA-256 mismatch for downloaded file {output_file}")
|
||||
print(f"Expected: {args.sha256}")
|
||||
print(f"Actual: {actual_sha256}")
|
||||
return 1
|
||||
|
||||
with open(version_file, "w") as f:
|
||||
f.write(args.version)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
# This file introduces a template for calling embed_as_string.py.
|
||||
#
|
||||
# embed_as_string behaves like C++23 #embed, converting an input file into
|
||||
# an AK::StringView literal rather than a C-string literal. The literal will
|
||||
# be placed into a global variable, optionally with a namespace wrapping it.
|
||||
#
|
||||
# Note that the file must not contain any tokens that need to be escaped
|
||||
# in C++, or the script will fail to produce a valid C++ translation unit.
|
||||
#
|
||||
# Parameters:
|
||||
#
|
||||
# input (required) [string]
|
||||
#
|
||||
# output (required) [string]
|
||||
#
|
||||
# variable_name (required) [string]
|
||||
#
|
||||
# namespace (optional) [string]
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# embed_as_string("embed_my_file") {
|
||||
# input = "MyFile.txt"
|
||||
# output = "$root_gen_dir/MyDirectory/MyFile.cpp"
|
||||
# variable_name = "my_file_contents"
|
||||
# namespace = "My::NS"
|
||||
# }
|
||||
|
||||
template("embed_as_string") {
|
||||
assert(defined(invoker.input), "must set 'input' in $target_name")
|
||||
assert(defined(invoker.output), "must set 'output' in $target_name")
|
||||
assert(defined(invoker.variable_name),
|
||||
"must set 'variable_name' in $target_name")
|
||||
|
||||
action(target_name) {
|
||||
script = "//Meta/embed_as_string.py"
|
||||
|
||||
sources = [ invoker.input ]
|
||||
outputs = [ invoker.output ]
|
||||
args = [
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
"-n",
|
||||
invoker.variable_name,
|
||||
]
|
||||
if (defined(invoker.namespace)) {
|
||||
args += [
|
||||
"-s",
|
||||
invoker.namespace,
|
||||
]
|
||||
}
|
||||
args += [ rebase_path(sources[0], root_build_dir) ]
|
||||
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"configs",
|
||||
"deps",
|
||||
"public_configs",
|
||||
"public_deps",
|
||||
"testonly",
|
||||
"visibility",
|
||||
])
|
||||
}
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
#
|
||||
# This file introduces templates for calling extract_archive_contents.py
|
||||
#
|
||||
# extract_archive_contents.py behaves like CMake's file(ARCHIVE_EXTRACT)
|
||||
#
|
||||
# Parameters:
|
||||
# archive (required) [string]
|
||||
#
|
||||
# files (required) [list of strings]
|
||||
# Relative paths to the root of the archive of files to extract
|
||||
#
|
||||
# directory (required) [string]
|
||||
# Output directory root for all the files
|
||||
#
|
||||
# paths (optional) [list of strings]
|
||||
# Relative paths to the root of the archive of directories to extract
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# extract_archive_contents("my_files") {
|
||||
# archive = "$root_gen_dir/MyModule/xyz.tar.gz"
|
||||
# directory = "$root_gen_dir/MyModule"
|
||||
# files = [
|
||||
# "file_one.txt",
|
||||
# "file_two"
|
||||
# ]
|
||||
# paths = [ "some_dir" ]
|
||||
# }
|
||||
#
|
||||
|
||||
template("extract_archive_contents") {
|
||||
assert(defined(invoker.archive), "must set 'archive' in $target_name")
|
||||
assert(defined(invoker.files) || defined(invoker.paths),
|
||||
"must set 'files' and/or 'paths' in $target_name")
|
||||
assert(defined(invoker.directory), "must set 'directory' in $target_name")
|
||||
|
||||
action(target_name) {
|
||||
script = "//Meta/gn/build/extract_archive_contents.py"
|
||||
|
||||
paths = []
|
||||
if (defined(invoker.paths)) {
|
||||
foreach(path, invoker.paths) {
|
||||
paths += [ path + "/" ]
|
||||
}
|
||||
}
|
||||
files = []
|
||||
if (defined(invoker.files)) {
|
||||
files = invoker.files
|
||||
}
|
||||
stamp_file = invoker.directory + "$target_name.stamp"
|
||||
|
||||
sources = invoker.archive
|
||||
outputs = []
|
||||
args = [
|
||||
"-d",
|
||||
rebase_path(invoker.directory, root_build_dir),
|
||||
"-s",
|
||||
rebase_path(stamp_file, root_build_dir),
|
||||
rebase_path(sources[0], root_build_dir),
|
||||
] + files + paths
|
||||
foreach(file, files) {
|
||||
outputs += [ invoker.directory + file ]
|
||||
}
|
||||
outputs += [ stamp_file ]
|
||||
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"configs",
|
||||
"deps",
|
||||
"public_configs",
|
||||
"public_deps",
|
||||
"testonly",
|
||||
"visibility",
|
||||
])
|
||||
}
|
||||
}
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
r"""Extracts files from an archive for use in the build
|
||||
|
||||
It's intended to be used for files that are cached between runs.
|
||||
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import pathlib
|
||||
import sys
|
||||
import tarfile
|
||||
import zipfile
|
||||
|
||||
|
||||
def extract_member(file, destination, path):
|
||||
"""
|
||||
Extract a single file from a ZipFile or TarFile
|
||||
|
||||
:param ZipFile|TarFile file: Archive object to extract from
|
||||
:param Path destination: Location to write the file
|
||||
:param str path: Filename to extract from archive.
|
||||
"""
|
||||
destination_path = destination / path
|
||||
if destination_path.exists():
|
||||
return
|
||||
destination_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
if isinstance(file, tarfile.TarFile):
|
||||
with file.extractfile(path) as member:
|
||||
destination_path.write_text(member.read().decode("utf-8"))
|
||||
else:
|
||||
assert isinstance(file, zipfile.ZipFile)
|
||||
with file.open(path) as member:
|
||||
destination_path.write_text(member.read().decode("utf-8"))
|
||||
|
||||
|
||||
def extract_directory(file, destination, path):
|
||||
"""
|
||||
Extract a directory from a ZipFile or TarFile
|
||||
|
||||
:param ZipFile|TarFile file: Archive object to extract from
|
||||
:param Path destination: Location to write the files
|
||||
:param str path: Directory name to extract from archive.
|
||||
"""
|
||||
destination_path = destination / path
|
||||
if destination_path.exists():
|
||||
return
|
||||
destination_path.mkdir(parents=True, exist_ok=True)
|
||||
if not isinstance(file, zipfile.ZipFile):
|
||||
raise NotImplementedError
|
||||
|
||||
# FIXME: This loops over the entire archive len(args.paths) times. Decrease complexity
|
||||
for entry in file.namelist():
|
||||
if entry.startswith(path):
|
||||
file.extract(entry, destination)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("archive", help="input archive")
|
||||
parser.add_argument("paths", nargs="*", help="paths to extract from the archive")
|
||||
parser.add_argument("-s", "--stamp", required=False, help="stamp file name to create after operation is done")
|
||||
parser.add_argument("-d", "--destination", required=True, help="directory to write the extracted file to")
|
||||
args = parser.parse_args()
|
||||
|
||||
archive = pathlib.Path(args.archive)
|
||||
destination = pathlib.Path(args.destination)
|
||||
|
||||
def extract_paths(file, paths):
|
||||
for path in paths:
|
||||
if path.endswith("/"):
|
||||
extract_directory(file, destination, path)
|
||||
else:
|
||||
extract_member(file, destination, path)
|
||||
|
||||
if tarfile.is_tarfile(archive):
|
||||
with tarfile.open(archive) as f:
|
||||
extract_paths(f, args.paths)
|
||||
elif zipfile.is_zipfile(archive):
|
||||
with zipfile.ZipFile(archive) as f:
|
||||
extract_paths(f, args.paths)
|
||||
else:
|
||||
print(f"Unknown file type for {archive}, unable to extract {args.path}")
|
||||
return 1
|
||||
|
||||
if args.stamp:
|
||||
pathlib.Path(args.stamp).touch()
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Install vcpkg dependencies")
|
||||
parser.add_argument("--cc", type=str, required=True, help="The C compiler to use")
|
||||
parser.add_argument("--cxx", type=str, required=True, help="The C++ compiler to use")
|
||||
parser.add_argument("--manifest", type=str, required=True, help="The vcpkg manifest to install")
|
||||
parser.add_argument("--vcpkg", type=str, required=True, help="The path to the vcpkg executable")
|
||||
parser.add_argument("--vcpkg-root", type=str, required=True, help="The path to the vcpkg root directory")
|
||||
parser.add_argument("--vcpkg-triplet", type=str, required=True, help="The vcpkg triplet to use")
|
||||
parser.add_argument("--vcpkg-overlay-triplets", type=str, help="Path to a vcpkg overlay triplets directory")
|
||||
parser.add_argument("--vcpkg-binary-cache-dir", type=str, help="Path to a vcpkg binary cache directory")
|
||||
parser.add_argument("--stamp-file", type=str, help="Path to a file to touch after installation")
|
||||
parser.add_argument("install_directory", type=str, help="The directory to install vcpkg deps into")
|
||||
args = parser.parse_args()
|
||||
|
||||
manifest_directory = pathlib.Path(args.manifest).parent
|
||||
|
||||
env = os.environ.copy()
|
||||
env["CC"] = args.cc
|
||||
env["CXX"] = args.cxx
|
||||
|
||||
vcpkg_arguments = [
|
||||
args.vcpkg,
|
||||
"install",
|
||||
"--no-print-usage",
|
||||
"--x-wait-for-lock",
|
||||
f"--triplet={args.vcpkg_triplet}",
|
||||
f"--vcpkg-root={args.vcpkg_root}",
|
||||
f"--x-manifest-root={manifest_directory}",
|
||||
f"--x-install-root={args.install_directory}",
|
||||
]
|
||||
|
||||
if args.vcpkg_overlay_triplets:
|
||||
vcpkg_arguments += [f"--overlay-triplets={args.vcpkg_overlay_triplets}"]
|
||||
if args.vcpkg_binary_cache_dir:
|
||||
binary_cache_dir = pathlib.Path(args.vcpkg_binary_cache_dir).absolute()
|
||||
vcpkg_arguments += [f"--binarysource=clear;files,{binary_cache_dir},readwrite"]
|
||||
|
||||
subprocess.run(vcpkg_arguments, env=env, check=True)
|
||||
|
||||
if args.stamp_file:
|
||||
pathlib.Path(args.stamp_file).touch()
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
sys.exit(subprocess.call(sys.argv[1:]))
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
import("//Meta/gn/build/buildflags.gni")
|
||||
import("//Meta/gn/build/toolchain/compiler.gni")
|
||||
import("//Meta/gn/build/vcpkg.gni")
|
||||
|
||||
action("install_vcpkg_manifest") {
|
||||
script = "//Meta/gn/build/install_vcpkg.py"
|
||||
|
||||
overlay_triplet_root = "//Meta/CMake/vcpkg"
|
||||
config_name = "release"
|
||||
if (is_debug) {
|
||||
config_name = "debug"
|
||||
}
|
||||
|
||||
# FIXME: if (is_sanitizer) vcpkg_config_name = "sanitizer"
|
||||
overlay_triplet_path = "${overlay_triplet_root}/${config_name}-triplets"
|
||||
|
||||
stamp_file = "${vcpkg_install_root}/.vcpkg_installed-${vcpkg_triplet}-${config_name}.stamp"
|
||||
|
||||
sources = [ vcpkg_manifest ]
|
||||
outputs = [ stamp_file ]
|
||||
|
||||
args = [
|
||||
"--cc",
|
||||
"${host_cc}",
|
||||
"--cxx",
|
||||
"${host_cxx}",
|
||||
"--manifest",
|
||||
rebase_path(vcpkg_manifest, root_build_dir),
|
||||
"--vcpkg",
|
||||
rebase_path(vcpkg_binary, root_build_dir),
|
||||
"--vcpkg-root",
|
||||
rebase_path(vcpkg_root, root_build_dir),
|
||||
"--vcpkg-triplet",
|
||||
vcpkg_triplet,
|
||||
"--vcpkg-overlay-triplets",
|
||||
rebase_path(overlay_triplet_path, root_build_dir),
|
||||
"--vcpkg-binary-cache",
|
||||
rebase_path(vcpkg_binary_cache, root_build_dir),
|
||||
"--stamp-file",
|
||||
rebase_path(stamp_file, root_build_dir),
|
||||
rebase_path(vcpkg_install_root, root_build_dir),
|
||||
]
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("avif") {
|
||||
libs = [
|
||||
"avif",
|
||||
"dav1d",
|
||||
"yuv",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
config("crypt_config") {
|
||||
visibility = [ ":crypt" ]
|
||||
libs = [ "crypt" ]
|
||||
}
|
||||
|
||||
group("crypt") {
|
||||
if (current_os == "linux") {
|
||||
public_configs = [ ":crypt_config" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("curl") {
|
||||
libs = [
|
||||
"curl",
|
||||
"z",
|
||||
"brotlidec",
|
||||
"brotlicommon",
|
||||
"nghttp2",
|
||||
]
|
||||
if (current_os == "mac") {
|
||||
frameworks = [
|
||||
"SystemConfiguration.framework",
|
||||
"Security.framework",
|
||||
"CoreFoundation.framework",
|
||||
"CoreServices.framework",
|
||||
]
|
||||
} else {
|
||||
libs += [
|
||||
"ssl",
|
||||
"crypto",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
import("//Meta/gn/build/libs/ffmpeg/enable.gni")
|
||||
|
||||
declare_args() {
|
||||
# Select whether to look for ffmpeg in the homebrew installation
|
||||
ffmpeg_homebrew = current_os == "mac"
|
||||
|
||||
# Root directory for the homebrew installation
|
||||
homebrew_prefix = "/opt/homebrew"
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Root directory for the ffmpeg installation, e.g. from brew --prefix ffmpeg
|
||||
ffmpeg_prefix = "/usr"
|
||||
if (ffmpeg_homebrew) {
|
||||
ffmpeg_prefix = "${homebrew_prefix}/opt/ffmpeg"
|
||||
}
|
||||
}
|
||||
|
||||
# FIXME: We don't build this, we pull it from the user's system
|
||||
# So it doesn't follow the usual third_party_dependency pattern
|
||||
config("ffmpeg_config") {
|
||||
visibility = [ ":ffmpeg" ]
|
||||
include_dirs = [ "${ffmpeg_prefix}/include" ]
|
||||
lib_dirs = [ "${ffmpeg_prefix}/lib" ]
|
||||
libs = [
|
||||
"avcodec",
|
||||
"avformat",
|
||||
"avutil",
|
||||
"swresample",
|
||||
]
|
||||
}
|
||||
|
||||
group("ffmpeg") {
|
||||
if (enable_ffmpeg) {
|
||||
public_configs = [ ":ffmpeg_config" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Select whether to build with ffmpeg support in LibMedia
|
||||
enable_ffmpeg = true
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("fontconfig") {
|
||||
libs = [ "fontconfig" ]
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("harfbuzz") {
|
||||
libs = [
|
||||
"harfbuzz",
|
||||
"freetype",
|
||||
"z",
|
||||
"bz2",
|
||||
"png16",
|
||||
"brotlidec",
|
||||
"brotlicommon",
|
||||
]
|
||||
if (current_os == "mac") {
|
||||
frameworks = [ "ApplicationServices.framework" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("icu") {
|
||||
libs = [
|
||||
"icui18n",
|
||||
"icuuc",
|
||||
"icudata",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("jpeg") {
|
||||
libs = [ "jpeg" ]
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("jxl") {
|
||||
libs = [
|
||||
"jxl",
|
||||
"hwy",
|
||||
"brotlienc",
|
||||
"brotlidec",
|
||||
"brotlicommon",
|
||||
"jxl_cms",
|
||||
"lcms2",
|
||||
]
|
||||
defines = [
|
||||
# FIXME: These static defines depend on whether you built jxl as static or not...
|
||||
"JXL_STATIC_DEFINE",
|
||||
"JXL_CMS_STATIC_DEFINE",
|
||||
"HWY_STATIC_DEFINE",
|
||||
"CMS_NO_REGISTER_KEYWORD",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("openssl") {
|
||||
libs = [ "openssl" ]
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("png") {
|
||||
third_party_includes = [ "libpng16" ]
|
||||
libs = [
|
||||
"png16",
|
||||
"z",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
config("pthread_config") {
|
||||
visibility = [ ":pthread" ]
|
||||
libs = [ "pthread" ]
|
||||
}
|
||||
|
||||
group("pthread") {
|
||||
# On Android, bionic has built-in support for pthreads.
|
||||
if (current_os != "android") {
|
||||
public_configs = [ ":pthread_config" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
import("//Meta/gn/build/libs/pulse/enable.gni")
|
||||
|
||||
config("pulseaudio_config") {
|
||||
visibility = [ ":pulse" ]
|
||||
libs = [ "pulse" ]
|
||||
defines = [ "HAVE_PULSEAUDIO" ]
|
||||
}
|
||||
|
||||
group("pulse") {
|
||||
if (enable_pulseaudio) {
|
||||
public_configs = [ ":pulseaudio_config" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Select whether to build with PulseAudio support in LibMedia
|
||||
enable_pulseaudio = current_os == "linux"
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("simdutf") {
|
||||
libs = [ "simdutf" ]
|
||||
extra_public_configs = [ "//Meta/gn/build:pic" ]
|
||||
}
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("skia") {
|
||||
third_party_includes = [ "skia" ]
|
||||
libs = [
|
||||
"skia",
|
||||
"fontconfig",
|
||||
"expat",
|
||||
"turbojpeg",
|
||||
"jpeg",
|
||||
"harfbuzz-subset",
|
||||
"harfbuzz",
|
||||
"freetype",
|
||||
"bz2",
|
||||
"brotlidec",
|
||||
"brotlicommon",
|
||||
"png16",
|
||||
"z",
|
||||
"webpdecoder",
|
||||
"webpdemux",
|
||||
"webpmux",
|
||||
"webp",
|
||||
"sharpyuv",
|
||||
]
|
||||
if (current_os == "mac") {
|
||||
frameworks = [
|
||||
"ApplicationServices.framework",
|
||||
"OpenGL.framework",
|
||||
"AppKit.framework",
|
||||
"Metal.framework",
|
||||
"Foundation.framework",
|
||||
]
|
||||
} else {
|
||||
libs += [ "GL" ]
|
||||
}
|
||||
|
||||
defines = [
|
||||
"SK_CODEC_DECODES_BMP",
|
||||
"SK_CODEC_DECODES_WBMP",
|
||||
"SK_ENABLE_PRECOMPILE",
|
||||
"SK_GANESH",
|
||||
"SK_DISABLE_TRACING",
|
||||
"SK_USE_PERFETTO",
|
||||
"SK_GAMMA_APPLY_TO_A8",
|
||||
"SK_ENABLE_AVX512_OPTS",
|
||||
"SK_TYPEFACE_FACTORY_FREETYPE",
|
||||
"SK_FONTMGR_ANDROID_AVAILABLE",
|
||||
"SK_FONTMGR_FREETYPE_DIRECTORY_AVAILABLE",
|
||||
"SK_FONTMGR_FREETYPE_EMBEDDED_AVAILABLE",
|
||||
"SK_FONTMGR_FREETYPE_EMPTY_AVAILABLE",
|
||||
"SK_FONTMGR_FONTCONFIG_AVAILABLE",
|
||||
"SK_GL",
|
||||
"SK_SUPPORT_PDF",
|
||||
"SK_CODEC_DECODES_JPEG",
|
||||
"SK_CODEC_DECODES_ICO",
|
||||
"SK_CODEC_DECODES_PNG",
|
||||
"SK_CODEC_DECODES_RAW",
|
||||
"SK_CODEC_DECODES_WEBP",
|
||||
"SK_HAS_WUFFS_LIBRARY",
|
||||
"SK_CODEC_DECODES_GIF",
|
||||
"SK_XML",
|
||||
]
|
||||
|
||||
if (current_os == "mac") {
|
||||
defines += [
|
||||
"SK_ASSUME_GL=1",
|
||||
"SK_ENABLE_API_AVAILABLE",
|
||||
"SK_TYPEFACE_FACTORY_CORETEX",
|
||||
"SK_FONTMGR_CORETEXT_AVAILABLE",
|
||||
"SK_METAL",
|
||||
]
|
||||
} else if (current_os == "linux") {
|
||||
defines += [
|
||||
"SK_R32_SHIFT=16",
|
||||
"SK_USE_VMA",
|
||||
"SK_VULKAN",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("sqlite3") {
|
||||
libs = [ "sqlite3" ]
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
import("//Meta/gn/build/vcpkg.gni")
|
||||
|
||||
declare_args() {
|
||||
# Whether to use vcpkg for dependency management
|
||||
use_vcpkg = true
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Location to find installed third_party headers and libraries
|
||||
third_party_prefix = "/usr"
|
||||
if (use_vcpkg) {
|
||||
third_party_prefix = "${vcpkg_install_root}/${vcpkg_triplet}"
|
||||
}
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Library directory for third_party libraries
|
||||
third_party_lib_dir = third_party_prefix + "/lib"
|
||||
|
||||
# Include directory for third_party headers
|
||||
third_party_include_dir = third_party_prefix + "/include"
|
||||
}
|
||||
|
||||
template("third_party_dependency") {
|
||||
config("${target_name}_config") {
|
||||
forward_variables_from(invoker, "*")
|
||||
visibility = [ ":${target_name}" ]
|
||||
include_dirs = [ "$third_party_include_dir" ]
|
||||
if (defined(third_party_includes)) {
|
||||
foreach(dir, third_party_includes) {
|
||||
include_dirs += [ "$third_party_include_dir/$dir" ]
|
||||
}
|
||||
}
|
||||
lib_dirs = [ "$third_party_lib_dir" ]
|
||||
not_needed([
|
||||
"enable",
|
||||
"extra_public_configs",
|
||||
])
|
||||
}
|
||||
|
||||
group(target_name) {
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"enable",
|
||||
"extra_public_configs",
|
||||
])
|
||||
if (!defined(enable) || enable) {
|
||||
public_configs = [ ":${target_name}_config" ]
|
||||
if (use_vcpkg) {
|
||||
deps = [ "//Meta/gn/build/libs:install_vcpkg_manifest" ]
|
||||
}
|
||||
}
|
||||
if (defined(extra_public_configs)) {
|
||||
public_configs += extra_public_configs
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
import("//Meta/gn/build/libs/vulkan/enable.gni")
|
||||
|
||||
third_party_dependency("vulkan") {
|
||||
libs = [ "vulkan" ]
|
||||
defines = [ "USE_VULKAN=1" ]
|
||||
enable = enable_vulkan
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Select whether to build with Vulkan support
|
||||
enable_vulkan = current_os == "linux"
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("webp") {
|
||||
third_party_includes = [ "webp" ]
|
||||
libs = [
|
||||
"webp",
|
||||
"sharpyuv",
|
||||
"webpdecoder",
|
||||
"webpdemux",
|
||||
"webpmux",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
import("//Meta/gn/build/libs/third_party.gni")
|
||||
|
||||
third_party_dependency("woff2") {
|
||||
third_party_includes = [ "woff2" ]
|
||||
libs = [
|
||||
"woff2common",
|
||||
"brotlidec",
|
||||
"brotlicommon",
|
||||
"woff2dec",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
#
|
||||
# This file introduces a template for compiling Apple platform interface
|
||||
# builder files.
|
||||
#
|
||||
# The output files will be placed in $target_gen_dir with the source name
|
||||
# suffix-replaced from "Foo.xib" to "Foo.nib"
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# compile_xib_resources("my_nibs") {
|
||||
# sources = [
|
||||
# "A.xib",
|
||||
# "B.xib",
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
|
||||
template("compile_xib_resources") {
|
||||
action_foreach(target_name) {
|
||||
forward_variables_from(invoker, [ "sources" ])
|
||||
|
||||
script = "//Meta/gn/build/invoke_process_with_args.py"
|
||||
|
||||
outputs = [ "$target_gen_dir/{{source_name_part}}.nib" ]
|
||||
args = [
|
||||
"ibtool",
|
||||
"--errors",
|
||||
"--warnings",
|
||||
"--notices",
|
||||
"--output-format",
|
||||
"human-readable-text",
|
||||
"--compile",
|
||||
rebase_path(target_gen_dir, root_build_dir) + "/{{source_name_part}}.nib",
|
||||
"{{source}}",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
import("//Meta/gn/build/sysroot.gni")
|
||||
|
||||
if (sysroot == "") {
|
||||
declare_args() {
|
||||
# Set to true if you don't have Xcode installed, but do have the commandline
|
||||
# tools.
|
||||
mac_use_commandline_tools_sdk = false
|
||||
}
|
||||
|
||||
# Location of the mac sdk.
|
||||
# The correct way to do this is to call xcrun
|
||||
# (https://reviews.llvm.org/D70835), but that makes `gn gen` take twice as
|
||||
# long and almost everyone has Xcode installed. So require that people who
|
||||
# don't have it installed set a gn arg.
|
||||
if (mac_use_commandline_tools_sdk) {
|
||||
mac_sdk_path = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
|
||||
} else {
|
||||
mac_sdk_path = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
|
||||
}
|
||||
} else {
|
||||
mac_sdk_path = sysroot + "/MacOSX.sdk"
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Runs a built binary."""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
# Prefix with ./ to run built binary, not arbitrary stuff from PATH.
|
||||
sys.exit(subprocess.call(["./" + sys.argv[1]] + sys.argv[2:]))
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Path of sysroot to use.
|
||||
sysroot = ""
|
||||
}
|
||||
|
|
@ -1,165 +0,0 @@
|
|||
import("//Meta/gn/build/toolchain/compiler.gni")
|
||||
|
||||
unix_copy_command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
|
||||
|
||||
template("unix_toolchain") {
|
||||
toolchain(target_name) {
|
||||
ar = "ar"
|
||||
cc = "cc"
|
||||
cxx = "c++"
|
||||
ld = cxx
|
||||
|
||||
forward_variables_from(invoker.toolchain_args, "*")
|
||||
forward_variables_from(invoker, "*")
|
||||
|
||||
not_needed([
|
||||
"current_cpu",
|
||||
"cc",
|
||||
"is_clang",
|
||||
"use_lld",
|
||||
])
|
||||
|
||||
tool("cc") {
|
||||
if (enable_ccache) {
|
||||
command_launcher = "ccache"
|
||||
}
|
||||
depfile = "{{output}}.d"
|
||||
command = "$cc -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}"
|
||||
depsformat = "gcc"
|
||||
description = "CC {{output}}"
|
||||
outputs = [ "{{source_out_dir}}/{{label_name}}.{{source_name_part}}.o" ]
|
||||
}
|
||||
|
||||
tool("cxx") {
|
||||
if (enable_ccache) {
|
||||
command_launcher = "ccache"
|
||||
}
|
||||
depfile = "{{output}}.d"
|
||||
command = "$cxx -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}}"
|
||||
depsformat = "gcc"
|
||||
description = "CXX {{output}}"
|
||||
outputs = [ "{{source_out_dir}}/{{label_name}}.{{source_name_part}}.o" ]
|
||||
}
|
||||
|
||||
tool("objcxx") {
|
||||
if (enable_ccache) {
|
||||
command_launcher = "ccache"
|
||||
}
|
||||
depfile = "{{output}}.d"
|
||||
command = "$cxx -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{cflags}} {{cflags_objcc}}"
|
||||
depsformat = "gcc"
|
||||
description = "OBJCXX {{output}}"
|
||||
outputs = [ "{{source_out_dir}}/{{label_name}}.{{source_name_part}}.o" ]
|
||||
}
|
||||
|
||||
tool("asm") {
|
||||
if (enable_ccache) {
|
||||
command_launcher = "ccache"
|
||||
}
|
||||
depfile = "{{output}}.d"
|
||||
command = "$cc -MMD -MF $depfile -o {{output}} -c {{source}} {{defines}} {{include_dirs}} {{asmflags}}"
|
||||
depsformat = "gcc"
|
||||
description = "ASM {{output}}"
|
||||
outputs = [ "{{source_out_dir}}/{{label_name}}.{{source_name_part}}.o" ]
|
||||
}
|
||||
|
||||
tool("alink") {
|
||||
if (current_os == "ios" || current_os == "mac") {
|
||||
command = "libtool -D -static -no_warning_for_no_symbols {{arflags}} -o {{output}} {{inputs}}"
|
||||
not_needed([ "ar" ])
|
||||
} else {
|
||||
# Remove the output file first so that ar doesn't try to modify the
|
||||
# existing file.
|
||||
command =
|
||||
"rm -f {{output}} && $ar rcsD {{arflags}} {{output}} {{inputs}}"
|
||||
}
|
||||
description = "AR {{output}}"
|
||||
outputs = [ "{{output_dir}}/{{target_output_name}}.a" ]
|
||||
output_prefix = "liblagom-"
|
||||
default_output_dir = "{{root_out_dir}}/lib"
|
||||
}
|
||||
|
||||
# Make these apply to all tools below.
|
||||
lib_switch = "-l"
|
||||
lib_dir_switch = "-L"
|
||||
|
||||
tool("solink") {
|
||||
outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
|
||||
if (current_os == "ios" || current_os == "mac") {
|
||||
command = "$ld -shared {{ldflags}} -o $outfile {{inputs}} {{libs}} {{frameworks}} -Wl,-install_name,@rpath/{{target_output_name}}{{output_extension}}"
|
||||
default_output_extension = ".dylib"
|
||||
} else {
|
||||
command = "$ld -shared {{ldflags}} -Wl,-soname,{{target_output_name}}{{output_extension}} -Wl,-rpath,\\\$ORIGIN -o $outfile {{inputs}} {{libs}}"
|
||||
default_output_extension = ".so"
|
||||
}
|
||||
description = "SOLINK $outfile"
|
||||
outputs = [ outfile ]
|
||||
output_prefix = "liblagom-"
|
||||
default_output_dir = "{{root_out_dir}}/lib"
|
||||
}
|
||||
|
||||
tool("solink_module") {
|
||||
outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
|
||||
if (current_os == "ios" || current_os == "mac") {
|
||||
command = "$ld -shared {{ldflags}} -Wl,-flat_namespace -Wl,-undefined,suppress -o $outfile {{inputs}} {{libs}} {{frameworks}} -Wl,-install_name,@rpath/{{target_output_name}}{{output_extension}}"
|
||||
default_output_extension = ".dylib"
|
||||
} else {
|
||||
command = "$ld -shared {{ldflags}} -Wl,-soname,{{target_output_name}}{{output_extension}} -Wl,-rpath,\\\$ORIGIN -o $outfile {{inputs}} {{libs}}"
|
||||
default_output_extension = ".so"
|
||||
}
|
||||
description = "SOLINK $outfile"
|
||||
outputs = [ outfile ]
|
||||
output_prefix = "lagom-"
|
||||
default_output_dir = "{{root_out_dir}}/lib"
|
||||
}
|
||||
|
||||
tool("link") {
|
||||
if (enable_ccache) {
|
||||
command_launcher = "ccache"
|
||||
}
|
||||
outfile = "{{output_dir}}/{{target_output_name}}{{output_extension}}"
|
||||
if (current_os == "ios" || current_os == "mac") {
|
||||
command = "$ld {{ldflags}} -o $outfile {{inputs}} {{libs}} {{frameworks}} -Wl,-rpath,@executable_path/../lib"
|
||||
} else {
|
||||
command = "$ld {{ldflags}} -o $outfile -Wl,--start-group {{inputs}} -Wl,--end-group -Wl,-rpath,\\\$ORIGIN/../lib {{libs}}"
|
||||
}
|
||||
description = "LINK $outfile"
|
||||
outputs = [ outfile ]
|
||||
default_output_dir = "{{root_out_dir}}/bin"
|
||||
}
|
||||
|
||||
tool("copy") {
|
||||
command = unix_copy_command
|
||||
description = "COPY {{source}} {{output}}"
|
||||
}
|
||||
|
||||
if (current_os == "ios" || current_os == "mac") {
|
||||
tool("copy_bundle_data") {
|
||||
# https://github.com/nico/hack/blob/master/notes/copydir.md
|
||||
_copydir = "cd {{source}} && " +
|
||||
"find . | cpio -pdl \"\$OLDPWD\"/{{output}} 2>/dev/null"
|
||||
command = "rm -rf {{output}} && if [[ -d {{source}} ]]; then " +
|
||||
_copydir + "; else " + unix_copy_command + "; fi"
|
||||
description = "COPY_BUNDLE_DATA {{source}} {{output}}"
|
||||
}
|
||||
tool("compile_xcassets") {
|
||||
command = "false"
|
||||
description = "The Ladybird build doesn't use any xcasset files"
|
||||
}
|
||||
}
|
||||
|
||||
tool("stamp") {
|
||||
command = "touch {{output}}"
|
||||
description = "STAMP {{output}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unix_toolchain("unix") {
|
||||
toolchain_args = {
|
||||
current_os = host_os
|
||||
cc = host_cc
|
||||
cxx = host_cxx
|
||||
ld = host_cxx
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
declare_args() {
|
||||
# Set to true when host compiler is clang so that clang flags will be passed to it
|
||||
is_clang = current_os == "mac"
|
||||
|
||||
# Enable setting -fuse-ld and other flags for using the lld linker.
|
||||
# Should not be set on macOS when using the default system compiler.
|
||||
use_lld = false
|
||||
|
||||
# Use ccache as a compiler launcher for compile and link jobs
|
||||
enable_ccache = true
|
||||
|
||||
# C compiler for native builds
|
||||
host_cc = "cc"
|
||||
|
||||
# C++ compiler for native builds
|
||||
host_cxx = "c++"
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
declare_args() {
|
||||
# Root directory for vcpkg port files. Should be a checkout of microsoft/vcpkg.
|
||||
vcpkg_root = "//Toolchain/Tarballs/vcpkg"
|
||||
|
||||
# The os name to use for the default vcpkg triplet.
|
||||
# If vcpkg_triplet is explicitly set, this is ignored.
|
||||
vcpkg_os = current_os
|
||||
if (current_os == "mac") {
|
||||
vcpkg_os = "osx"
|
||||
} else if (current_os == "win") {
|
||||
vcpkg_os = "windows"
|
||||
}
|
||||
|
||||
# Location to cache vcpkg build artifacts.
|
||||
vcpkg_binary_cache = "//Toolchain/Build/vcpkg-binary-cache"
|
||||
|
||||
# Path to the vcpkg manifest file that describes all the vcpkg dependencies of the project
|
||||
vcpkg_manifest = "//vcpkg.json"
|
||||
|
||||
# The directory to install vcpkg dependencies into.
|
||||
vcpkg_install_root = "${root_build_dir}/vcpkg_installed"
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Path to the vcpkg-tool binary, as bootstrapped in the vcpkg root directory.
|
||||
vcpkg_binary = "${vcpkg_root}/vcpkg"
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# The vcpkg triplet to use. If not set, it is derived from the current_os and current_cpu.
|
||||
vcpkg_triplet = "${current_cpu}-${vcpkg_os}"
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
# This file introduces a template for calling write_cmake_config.py.
|
||||
#
|
||||
# write_cmake_config behaves like CMake's configure_file(), but runs at build
|
||||
# time, not at generator time. See write_cmake_config.py for details.
|
||||
#
|
||||
# Parameters:
|
||||
#
|
||||
# input (required) [string]
|
||||
#
|
||||
# output (required) [string]
|
||||
#
|
||||
# values (required) [list of strings]
|
||||
# Each entry is a '='-separated key-value pair used for substitution.
|
||||
#
|
||||
# Example use:
|
||||
#
|
||||
# write_cmake_config("attributes_compat_func_gen") {
|
||||
# input = "Version.inc.in"
|
||||
# output = "$root_gen_dir/clang/include/clang/Basic/Version.inc",
|
||||
# values = [
|
||||
# "CLANG_VERSION=$llvm_version",
|
||||
# ]
|
||||
# }
|
||||
|
||||
template("write_cmake_config") {
|
||||
assert(defined(invoker.input), "must set 'input' in $target_name")
|
||||
assert(defined(invoker.output), "must set 'output' in $target_name")
|
||||
assert(defined(invoker.values), "must set 'values' in $target_name")
|
||||
|
||||
action(target_name) {
|
||||
script = "//Meta/gn/build/write_cmake_config.py"
|
||||
|
||||
sources = [ invoker.input ]
|
||||
outputs = [ invoker.output ]
|
||||
args = [
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
rebase_path(sources[0], root_build_dir),
|
||||
] + invoker.values
|
||||
|
||||
forward_variables_from(invoker,
|
||||
[
|
||||
"configs",
|
||||
"deps",
|
||||
"public_configs",
|
||||
"public_deps",
|
||||
"visibility",
|
||||
])
|
||||
}
|
||||
}
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
r"""Emulates the bits of CMake's configure_file() function needed in serenity.
|
||||
|
||||
The CMake build uses configure_file() for several things. This emulates that
|
||||
function for the GN build. In the GN build, this runs at build time instead
|
||||
of at generator time.
|
||||
|
||||
Takes a list of KEY=VALUE pairs (where VALUE can be empty).
|
||||
|
||||
The sequence `\` `n` in each VALUE is replaced by a newline character.
|
||||
|
||||
On each line, replaces '${KEY}' or '@KEY@' with VALUE.
|
||||
|
||||
Then, handles these special cases (note that FOO= sets the value of FOO to the
|
||||
empty string, which is falsy, but FOO=0 sets it to '0' which is truthy):
|
||||
|
||||
1.) #cmakedefine01 FOO
|
||||
Checks if key FOO is set to a truthy value, and depending on that prints
|
||||
one of the following two lines:
|
||||
|
||||
#define FOO 1
|
||||
#define FOO 0
|
||||
|
||||
2.) #cmakedefine FOO [...]
|
||||
Checks if key FOO is set to a truthy value, and depending on that prints
|
||||
one of the following two lines:
|
||||
|
||||
#define FOO [...]
|
||||
/* #undef FOO */
|
||||
|
||||
Fails if any of the KEY=VALUE arguments aren't needed for processing the
|
||||
input file, or if the input file references keys that weren't passed in.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("input", help="input file")
|
||||
parser.add_argument("values", nargs="*", help="several KEY=VALUE pairs")
|
||||
parser.add_argument("-o", "--output", required=True, help="output file")
|
||||
args = parser.parse_args()
|
||||
|
||||
values = {}
|
||||
for value in args.values:
|
||||
key, val = value.split("=", 1)
|
||||
if key in values:
|
||||
print('duplicate key "%s" in args' % key, file=sys.stderr)
|
||||
return 1
|
||||
values[key] = val.replace("\\n", "\n")
|
||||
unused_values = set(values.keys())
|
||||
|
||||
# Matches e.g. '${FOO}' or '@FOO@' and captures FOO in group 1 or 2.
|
||||
var_re = re.compile(r"\$\{([^}]*)\}|@([^@]*)@")
|
||||
|
||||
with open(args.input) as f:
|
||||
in_lines = f.readlines()
|
||||
out_lines = []
|
||||
for in_line in in_lines:
|
||||
|
||||
def repl(m):
|
||||
key = m.group(1) or m.group(2)
|
||||
unused_values.discard(key)
|
||||
return values[key]
|
||||
|
||||
in_line = var_re.sub(repl, in_line)
|
||||
if in_line.startswith("#cmakedefine01 ") or in_line.startswith("# cmakedefine01"):
|
||||
in_line = in_line.replace("# cmakedefine01", "#cmakedefine01")
|
||||
_, var = in_line.split()
|
||||
if values[var] == "0":
|
||||
print('error: "%s=0" used with #cmakedefine01 %s' % (var, var))
|
||||
print(" '0' evaluates as truthy with #cmakedefine01")
|
||||
print(' use "%s=" instead' % var)
|
||||
return 1
|
||||
in_line = "#define %s %d\n" % (var, 1 if values[var] else 0)
|
||||
unused_values.discard(var)
|
||||
elif in_line.startswith("#cmakedefine "):
|
||||
_, var = in_line.split(None, 1)
|
||||
try:
|
||||
var, val = var.split(None, 1)
|
||||
in_line = "#define %s %s" % (var, val) # val ends in \n.
|
||||
except ValueError:
|
||||
var = var.rstrip()
|
||||
in_line = "#define %s\n" % var
|
||||
if not values[var]:
|
||||
in_line = "/* #undef %s */\n" % var
|
||||
unused_values.discard(var)
|
||||
out_lines.append(in_line)
|
||||
|
||||
if unused_values:
|
||||
print("unused values args:", file=sys.stderr)
|
||||
print(" " + "\n ".join(unused_values), file=sys.stderr)
|
||||
return 1
|
||||
|
||||
output = "".join(out_lines)
|
||||
|
||||
leftovers = var_re.findall(output)
|
||||
if leftovers:
|
||||
print("unprocessed values:\n", "\n".join([x[0] or x[1] for x in leftovers]), file=sys.stderr)
|
||||
return 1
|
||||
|
||||
def read(filename):
|
||||
with open(filename) as f:
|
||||
return f.read()
|
||||
|
||||
if not os.path.exists(args.output) or read(args.output) != output:
|
||||
with open(args.output, "w") as f:
|
||||
f.write(output)
|
||||
os.chmod(args.output, os.stat(args.input).st_mode & 0o777)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -1,306 +0,0 @@
|
|||
import("//Meta/gn/build/write_cmake_config.gni")
|
||||
|
||||
config("ak_headers") {
|
||||
include_dirs = [
|
||||
"//",
|
||||
"$root_gen_dir",
|
||||
]
|
||||
}
|
||||
|
||||
shared_library("AK") {
|
||||
output_name = "ak"
|
||||
|
||||
public_configs = [ ":ak_headers" ]
|
||||
public_deps = [
|
||||
":ak_backtrace_gen",
|
||||
":ak_debug_gen",
|
||||
]
|
||||
|
||||
deps = [ "//Meta/gn/build/libs/simdutf" ]
|
||||
|
||||
sources = [
|
||||
"AllOf.h",
|
||||
"AnyOf.h",
|
||||
"Array.h",
|
||||
"Assertions.cpp",
|
||||
"Assertions.h",
|
||||
"Atomic.h",
|
||||
"AtomicRefCounted.h",
|
||||
"Badge.h",
|
||||
"Base64.cpp",
|
||||
"Base64.h",
|
||||
"BigIntBase.h",
|
||||
"BinaryHeap.h",
|
||||
"BinarySearch.h",
|
||||
"BitCast.h",
|
||||
"BitStream.h",
|
||||
"Bitmap.h",
|
||||
"BitmapView.h",
|
||||
"BufferedStream.h",
|
||||
"BuiltinWrappers.h",
|
||||
"BumpAllocator.h",
|
||||
"ByteBuffer.h",
|
||||
"ByteReader.h",
|
||||
"ByteString.cpp",
|
||||
"ByteString.h",
|
||||
"ByteStringImpl.cpp",
|
||||
"ByteStringImpl.h",
|
||||
"COWVector.h",
|
||||
"CharacterTypes.h",
|
||||
"Checked.h",
|
||||
"CheckedFormatString.h",
|
||||
"CircularBuffer.cpp",
|
||||
"CircularBuffer.h",
|
||||
"CircularQueue.h",
|
||||
"Concepts.h",
|
||||
"ConstrainedStream.cpp",
|
||||
"ConstrainedStream.h",
|
||||
"CopyOnWrite.h",
|
||||
"CountingStream.cpp",
|
||||
"CountingStream.h",
|
||||
"DateConstants.h",
|
||||
"DefaultDelete.h",
|
||||
"Demangle.h",
|
||||
"Diagnostics.h",
|
||||
"DisjointChunks.h",
|
||||
"DistinctNumeric.h",
|
||||
"DoublyLinkedList.h",
|
||||
"Endian.h",
|
||||
"EnumBits.h",
|
||||
"Enumerate.h",
|
||||
"Error.cpp",
|
||||
"Error.h",
|
||||
"Find.h",
|
||||
"FixedArray.h",
|
||||
"FixedPoint.h",
|
||||
"FloatingPoint.h",
|
||||
"FloatingPointStringConversions.cpp",
|
||||
"FloatingPointStringConversions.h",
|
||||
"FlyString.cpp",
|
||||
"FlyString.h",
|
||||
"Format.cpp",
|
||||
"Format.h",
|
||||
"Forward.h",
|
||||
"Function.h",
|
||||
"GenericLexer.cpp",
|
||||
"GenericLexer.h",
|
||||
"GenericShorthands.h",
|
||||
"HashFunctions.h",
|
||||
"HashMap.h",
|
||||
"HashTable.h",
|
||||
"Hex.cpp",
|
||||
"Hex.h",
|
||||
"IDAllocator.h",
|
||||
"IPv4Address.h",
|
||||
"IPv6Address.h",
|
||||
"InsertionSort.h",
|
||||
"IntegralMath.h",
|
||||
"IntrusiveDetails.h",
|
||||
"IntrusiveList.h",
|
||||
"IntrusiveListRelaxedConst.h",
|
||||
"IntrusiveRedBlackTree.h",
|
||||
"IterationDecision.h",
|
||||
"Iterator.h",
|
||||
"JsonArray.h",
|
||||
"JsonArraySerializer.h",
|
||||
"JsonObject.cpp",
|
||||
"JsonObject.h",
|
||||
"JsonObjectSerializer.h",
|
||||
"JsonParser.cpp",
|
||||
"JsonParser.h",
|
||||
"JsonValue.cpp",
|
||||
"JsonValue.h",
|
||||
"LEB128.h",
|
||||
"LexicalPath.cpp",
|
||||
"LexicalPath.h",
|
||||
"LsanSuppressions.h",
|
||||
"Math.h",
|
||||
"MaybeOwned.h",
|
||||
"MemMem.h",
|
||||
"Memory.h",
|
||||
"MemoryStream.cpp",
|
||||
"MemoryStream.h",
|
||||
"NeverDestroyed.h",
|
||||
"Noncopyable.h",
|
||||
"NonnullOwnPtr.h",
|
||||
"NonnullRefPtr.h",
|
||||
"NumberFormat.cpp",
|
||||
"NumberFormat.h",
|
||||
"NumericLimits.h",
|
||||
"OptionParser.cpp",
|
||||
"OptionParser.h",
|
||||
"Optional.h",
|
||||
"OwnPtr.h",
|
||||
"Platform.h",
|
||||
"Queue.h",
|
||||
"QuickSelect.h",
|
||||
"QuickSort.h",
|
||||
"Random.cpp",
|
||||
"Random.h",
|
||||
"RedBlackTree.h",
|
||||
"RefCounted.h",
|
||||
"RefPtr.h",
|
||||
"Result.h",
|
||||
"ReverseIterator.h",
|
||||
"SIMD.h",
|
||||
"SIMDExtras.h",
|
||||
"SIMDMath.h",
|
||||
"ScopeGuard.h",
|
||||
"ScopeLogger.h",
|
||||
"ScopedValueRollback.h",
|
||||
"SegmentedVector.h",
|
||||
"Singleton.h",
|
||||
"SinglyLinkedList.h",
|
||||
"SinglyLinkedListSizePolicy.h",
|
||||
"SourceGenerator.h",
|
||||
"SourceLocation.h",
|
||||
"Span.h",
|
||||
"Stack.h",
|
||||
"StackInfo.cpp",
|
||||
"StackInfo.h",
|
||||
"Statistics.h",
|
||||
"StdLibExtraDetails.h",
|
||||
"StdLibExtras.h",
|
||||
"Stream.cpp",
|
||||
"Stream.h",
|
||||
"String.cpp",
|
||||
"String.h",
|
||||
"StringBase.cpp",
|
||||
"StringBase.h",
|
||||
"StringBuilder.cpp",
|
||||
"StringBuilder.h",
|
||||
"StringData.h",
|
||||
"StringFloatingPointConversions.cpp",
|
||||
"StringFloatingPointConversions.h",
|
||||
"StringHash.h",
|
||||
"StringUtils.cpp",
|
||||
"StringUtils.h",
|
||||
"StringView.cpp",
|
||||
"StringView.h",
|
||||
"TemporaryChange.h",
|
||||
"Time.cpp",
|
||||
"Time.h",
|
||||
"Traits.h",
|
||||
"Trie.h",
|
||||
"Try.h",
|
||||
"Tuple.h",
|
||||
"TypeCasts.h",
|
||||
"TypeList.h",
|
||||
"TypedTransfer.h",
|
||||
"Types.h",
|
||||
"UFixedBigInt.h",
|
||||
"UFixedBigIntDivision.h",
|
||||
"UnicodeUtils.h",
|
||||
"Utf16View.cpp",
|
||||
"Utf16View.h",
|
||||
"Utf32View.cpp",
|
||||
"Utf32View.h",
|
||||
"Utf8View.cpp",
|
||||
"Utf8View.h",
|
||||
"Variant.h",
|
||||
"Vector.h",
|
||||
"WeakPtr.h",
|
||||
"Weakable.h",
|
||||
"kmalloc.cpp",
|
||||
"kmalloc.h",
|
||||
]
|
||||
}
|
||||
|
||||
write_cmake_config("ak_debug_gen") {
|
||||
input = "Debug.h.in"
|
||||
output = "$root_gen_dir/AK/Debug.h"
|
||||
values = [
|
||||
"AUDIO_DEBUG=",
|
||||
"BINDINGS_GENERATOR_DEBUG=",
|
||||
"BMP_DEBUG=",
|
||||
"CACHE_DEBUG=",
|
||||
"CALLBACK_MACHINE_DEBUG=",
|
||||
"CANVAS_RENDERING_CONTEXT_2D_DEBUG=",
|
||||
"CRYPTO_DEBUG=",
|
||||
"CSS_LOADER_DEBUG=",
|
||||
"CSS_PARSER_DEBUG=",
|
||||
"CSS_TOKENIZER_DEBUG=",
|
||||
"CSS_TRANSITIONS_DEBUG=",
|
||||
"EDITOR_DEBUG=",
|
||||
"EMOJI_DEBUG=",
|
||||
"FILE_WATCHER_DEBUG=",
|
||||
"FLAC_ENCODER_DEBUG=",
|
||||
"GENERATE_DEBUG=",
|
||||
"GHASH_PROCESS_DEBUG=",
|
||||
"GIF_DEBUG=",
|
||||
"HEAP_DEBUG=",
|
||||
"HIGHLIGHT_FOCUSED_FRAME_DEBUG=",
|
||||
"HTML_SCRIPT_DEBUG=",
|
||||
"HTTPJOB_DEBUG=",
|
||||
"HUNKS_DEBUG=",
|
||||
"ICO_DEBUG=",
|
||||
"IDL_DEBUG=",
|
||||
"IMAGE_DECODER_DEBUG=",
|
||||
"IMAGE_LOADER_DEBUG=",
|
||||
"JOB_DEBUG=",
|
||||
"JS_BYTECODE_DEBUG=",
|
||||
"JS_MODULE_DEBUG=",
|
||||
"LEXER_DEBUG=",
|
||||
"LIBWEB_CSS_ANIMATION_DEBUG=",
|
||||
"LIBWEB_CSS_DEBUG=",
|
||||
"LIBWEB_WASM_DEBUG=",
|
||||
"LINE_EDITOR_DEBUG=",
|
||||
"LZW_DEBUG=",
|
||||
"MACH_PORT_DEBUG=",
|
||||
"MATROSKA_DEBUG=",
|
||||
"MATROSKA_TRACE_DEBUG=",
|
||||
"NETWORKJOB_DEBUG=",
|
||||
"NT_DEBUG=",
|
||||
"OPENTYPE_GPOS_DEBUG=",
|
||||
"HTML_PARSER_DEBUG=",
|
||||
"PATH_DEBUG=",
|
||||
"PLAYBACK_MANAGER_DEBUG=",
|
||||
"PNG_DEBUG=",
|
||||
"PROMISE_DEBUG=",
|
||||
"REGEX_DEBUG=",
|
||||
"REQUESTSERVER_DEBUG=",
|
||||
"RESOURCE_DEBUG=",
|
||||
"RSA_PARSE_DEBUG=",
|
||||
"SHARED_QUEUE_DEBUG=",
|
||||
"SPAM_DEBUG=",
|
||||
"STYLE_INVALIDATION_DEBUG=",
|
||||
"SYNTAX_HIGHLIGHTING_DEBUG=",
|
||||
"TEXTEDITOR_DEBUG=",
|
||||
"TIFF_DEBUG=",
|
||||
"TIME_ZONE_DEBUG=",
|
||||
"TLS_DEBUG=",
|
||||
"TOKENIZER_TRACE_DEBUG=",
|
||||
"URL_PARSER_DEBUG=",
|
||||
"UTF8_DEBUG=",
|
||||
"VPX_DEBUG=",
|
||||
"WASI_DEBUG=",
|
||||
"WASI_FINE_GRAINED_DEBUG=",
|
||||
"WASM_BINPARSER_DEBUG=",
|
||||
"WASM_TRACE_DEBUG=",
|
||||
"WASM_VALIDATOR_DEBUG=",
|
||||
"WEBDRIVER_DEBUG=",
|
||||
"WEBDRIVER_ROUTE_DEBUG=",
|
||||
"WEBGL_CONTEXT_DEBUG=",
|
||||
"WEBVIEW_PROCESS_DEBUG=",
|
||||
"WEB_FETCH_DEBUG=",
|
||||
"WEB_WORKER_DEBUG=",
|
||||
"WEBP_DEBUG=",
|
||||
"XML_PARSER_DEBUG=",
|
||||
]
|
||||
}
|
||||
|
||||
write_cmake_config("ak_backtrace_gen") {
|
||||
input = "Backtrace.h.in"
|
||||
output = "$root_gen_dir/AK/Backtrace.h"
|
||||
if (current_os == "win") {
|
||||
values = [
|
||||
"Backtrace_FOUND=",
|
||||
"Backtrace_HEADER=",
|
||||
]
|
||||
} else {
|
||||
values = [
|
||||
"Backtrace_FOUND=1",
|
||||
"Backtrace_HEADER=execinfo.h",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
import("//Meta/gn/build/toolchain/compiler.gni")
|
||||
|
||||
group("default") {
|
||||
deps = [
|
||||
"//Ladybird",
|
||||
"//Meta/Lagom/Tools/CodeGenerators/IPCCompiler",
|
||||
"//Tests",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Utilities:js",
|
||||
]
|
||||
testonly = true
|
||||
}
|
||||
|
||||
# A pool called "console" in the root BUILD.gn is magic and represents ninja's
|
||||
# built-in console pool. (Requires a GN with `gn --version` >= 552353.)
|
||||
pool("console") {
|
||||
depth = 1
|
||||
}
|
||||
|
|
@ -1,552 +0,0 @@
|
|||
import("//Ladybird/compile_qt_resource_file.gni")
|
||||
import("//Ladybird/enable_appkit.gni")
|
||||
import("//Ladybird/enable_qt.gni")
|
||||
import("//Ladybird/link_qt.gni")
|
||||
import("//Ladybird/moc_qt_objects.gni")
|
||||
|
||||
group("Ladybird") {
|
||||
if (current_os == "mac") {
|
||||
deps = [ ":Ladybird.app" ]
|
||||
} else {
|
||||
deps = [ ":ladybird_executable" ]
|
||||
}
|
||||
}
|
||||
|
||||
moc_qt_objects("generate_moc") {
|
||||
sources = [
|
||||
"Qt/Application.h",
|
||||
"Qt/AutoComplete.h",
|
||||
"Qt/BrowserWindow.h",
|
||||
"Qt/EventLoopImplementationQtEventTarget.h",
|
||||
"Qt/FindInPageWidget.h",
|
||||
"Qt/InspectorWidget.h",
|
||||
"Qt/LocationEdit.h",
|
||||
"Qt/Settings.h",
|
||||
"Qt/SettingsDialog.h",
|
||||
"Qt/Tab.h",
|
||||
"Qt/TabBar.h",
|
||||
"Qt/TaskManagerWindow.h",
|
||||
"Qt/WebContentView.h",
|
||||
]
|
||||
}
|
||||
|
||||
compile_qt_resource_file("compile_resource_file") {
|
||||
sources = [ "Qt/ladybird.qrc" ]
|
||||
}
|
||||
|
||||
link_qt("ladybird_qt_components") {
|
||||
qt_components = [
|
||||
"Core",
|
||||
"Gui",
|
||||
"Widgets",
|
||||
]
|
||||
}
|
||||
|
||||
config("ladybird_config") {
|
||||
include_dirs = [
|
||||
"//Userland",
|
||||
"//Userland/Applications",
|
||||
"//Userland/Services",
|
||||
]
|
||||
}
|
||||
|
||||
ladybird_helper_processes = [
|
||||
"ImageDecoder",
|
||||
"RequestServer",
|
||||
"WebContent",
|
||||
"WebWorker",
|
||||
]
|
||||
|
||||
executable("ladybird_executable") {
|
||||
configs += [ ":ladybird_config" ]
|
||||
data_deps = ladybird_helper_processes
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibRequests",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWebView",
|
||||
]
|
||||
sources = [
|
||||
"HelperProcess.cpp",
|
||||
"Utilities.cpp",
|
||||
]
|
||||
|
||||
if (enable_qt) {
|
||||
configs += [ ":ladybird_qt_components" ]
|
||||
|
||||
sources += [
|
||||
"Qt/Application.cpp",
|
||||
"Qt/AutoComplete.cpp",
|
||||
"Qt/BrowserWindow.cpp",
|
||||
"Qt/EventLoopImplementationQt.cpp",
|
||||
"Qt/EventLoopImplementationQtEventTarget.cpp",
|
||||
"Qt/FindInPageWidget.cpp",
|
||||
"Qt/Icon.cpp",
|
||||
"Qt/InspectorWidget.cpp",
|
||||
"Qt/LocationEdit.cpp",
|
||||
"Qt/Settings.cpp",
|
||||
"Qt/SettingsDialog.cpp",
|
||||
"Qt/StringUtils.cpp",
|
||||
"Qt/TVGIconEngine.cpp",
|
||||
"Qt/Tab.cpp",
|
||||
"Qt/TabBar.cpp",
|
||||
"Qt/TaskManagerWindow.cpp",
|
||||
"Qt/WebContentView.cpp",
|
||||
"Qt/main.cpp",
|
||||
]
|
||||
|
||||
sources += get_target_outputs(":generate_moc") +
|
||||
get_target_outputs(":compile_resource_file")
|
||||
|
||||
deps += [
|
||||
":compile_resource_file",
|
||||
":generate_moc",
|
||||
]
|
||||
} else if (enable_appkit) {
|
||||
sources += [
|
||||
"AppKit/Application/Application.mm",
|
||||
"AppKit/Application/ApplicationDelegate.mm",
|
||||
"AppKit/Application/EventLoopImplementation.mm",
|
||||
"AppKit/UI/Event.mm",
|
||||
"AppKit/UI/Inspector.mm",
|
||||
"AppKit/UI/InspectorController.mm",
|
||||
"AppKit/UI/LadybirdWebView.mm",
|
||||
"AppKit/UI/LadybirdWebViewBridge.cpp",
|
||||
"AppKit/UI/Palette.mm",
|
||||
"AppKit/UI/SearchPanel.mm",
|
||||
"AppKit/UI/Tab.mm",
|
||||
"AppKit/UI/TabController.mm",
|
||||
"AppKit/UI/TaskManager.mm",
|
||||
"AppKit/UI/TaskManagerController.mm",
|
||||
"AppKit/Utilities/Conversions.mm",
|
||||
"AppKit/main.mm",
|
||||
]
|
||||
|
||||
deps += [ "//Userland/Libraries/LibUnicode" ]
|
||||
|
||||
cflags_objcc = [
|
||||
"-fobjc-arc",
|
||||
"-Wno-deprecated-anon-enum-enum-conversion", # Required for CGImageCreate
|
||||
]
|
||||
|
||||
include_dirs = [
|
||||
"AppKit",
|
||||
"//Userland",
|
||||
]
|
||||
|
||||
frameworks = [
|
||||
"Cocoa.framework",
|
||||
"UniformTypeIdentifiers.framework",
|
||||
]
|
||||
}
|
||||
|
||||
if (current_os == "mac") {
|
||||
sources += [ "MachPortServer.cpp" ]
|
||||
deps += [ "//Userland/Libraries/LibThreading" ]
|
||||
} else {
|
||||
data_deps += [
|
||||
":ladybird_copy_about_pages",
|
||||
":ladybird_copy_config_resources",
|
||||
":ladybird_copy_fonts",
|
||||
":ladybird_copy_icons_128x128",
|
||||
":ladybird_copy_icons_16x16",
|
||||
":ladybird_copy_icons_32x32",
|
||||
":ladybird_copy_icons_48x48",
|
||||
":ladybird_copy_icons_browser",
|
||||
":ladybird_copy_themes",
|
||||
":ladybird_copy_web_resources",
|
||||
":ladybird_copy_web_templates",
|
||||
]
|
||||
}
|
||||
|
||||
output_name = "Ladybird"
|
||||
}
|
||||
|
||||
executable("headless-browser") {
|
||||
include_dirs = [ "//Userland/Services" ]
|
||||
configs += [ ":ladybird_config" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibDiff",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibHTTP",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibRequests",
|
||||
"//Userland/Libraries/LibTLS",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWebSocket",
|
||||
"//Userland/Libraries/LibWebView",
|
||||
]
|
||||
data_deps = ladybird_helper_processes
|
||||
sources = [
|
||||
"//Userland/Utilities/headless-browser.cpp",
|
||||
"HelperProcess.cpp",
|
||||
"Utilities.cpp",
|
||||
]
|
||||
}
|
||||
|
||||
fonts = [
|
||||
"//Base/res/fonts/SerenitySans-Regular.ttf",
|
||||
"//Base/res/fonts/NotoEmoji.ttf",
|
||||
]
|
||||
|
||||
icons_16x16 = [
|
||||
"//Base/res/icons/16x16/app-system-monitor.png",
|
||||
"//Base/res/icons/16x16/audio-volume-high.png",
|
||||
"//Base/res/icons/16x16/audio-volume-muted.png",
|
||||
"//Base/res/icons/16x16/close-tab.png",
|
||||
"//Base/res/icons/16x16/edit-copy.png",
|
||||
"//Base/res/icons/16x16/filetype-css.png",
|
||||
"//Base/res/icons/16x16/filetype-folder-open.png",
|
||||
"//Base/res/icons/16x16/filetype-html.png",
|
||||
"//Base/res/icons/16x16/filetype-image.png",
|
||||
"//Base/res/icons/16x16/filetype-sound.png",
|
||||
"//Base/res/icons/16x16/filetype-video.png",
|
||||
"//Base/res/icons/16x16/find.png",
|
||||
"//Base/res/icons/16x16/go-forward.png",
|
||||
"//Base/res/icons/16x16/history.png",
|
||||
"//Base/res/icons/16x16/layers.png",
|
||||
"//Base/res/icons/16x16/layout.png",
|
||||
"//Base/res/icons/16x16/network.png",
|
||||
"//Base/res/icons/16x16/new-tab.png",
|
||||
"//Base/res/icons/16x16/open-parent-directory.png",
|
||||
"//Base/res/icons/16x16/paste.png",
|
||||
"//Base/res/icons/16x16/pause.png",
|
||||
"//Base/res/icons/16x16/play.png",
|
||||
"//Base/res/icons/16x16/select-all.png",
|
||||
"//Base/res/icons/16x16/settings.png",
|
||||
"//Base/res/icons/16x16/spoof.png",
|
||||
"//Base/res/icons/16x16/trash-can.png",
|
||||
"//Base/res/icons/16x16/zoom-in.png",
|
||||
"//Base/res/icons/16x16/zoom-out.png",
|
||||
"//Base/res/icons/16x16/zoom-reset.png",
|
||||
]
|
||||
|
||||
icons_32x32 = [
|
||||
"//Base/res/icons/32x32/app-system-monitor.png",
|
||||
"//Base/res/icons/32x32/filetype-folder.png",
|
||||
"//Base/res/icons/32x32/filetype-unknown.png",
|
||||
]
|
||||
|
||||
icons_48x48 = [ "//Base/res/icons/48x48/app-browser.png" ]
|
||||
|
||||
icons_128x128 = [
|
||||
"//Base/res/icons/128x128/app-browser.png",
|
||||
"//Base/res/icons/128x128/app-browser-dark.png",
|
||||
]
|
||||
|
||||
icons_browser = [
|
||||
"//Base/res/icons/browser/clear-cache.png",
|
||||
"//Base/res/icons/browser/cookie.png",
|
||||
"//Base/res/icons/browser/dom-tree.png",
|
||||
"//Base/res/icons/browser/local-storage.png",
|
||||
]
|
||||
|
||||
themes = [
|
||||
"//Base/res/themes/Default.ini",
|
||||
"//Base/res/themes/Dark.ini",
|
||||
]
|
||||
|
||||
web_resources = [
|
||||
"//Base/res/ladybird/inspector.css",
|
||||
"//Base/res/ladybird/inspector.html",
|
||||
"//Base/res/ladybird/inspector.js",
|
||||
]
|
||||
|
||||
about_pages = [
|
||||
"//Base/res/ladybird/about-pages/about.html",
|
||||
"//Base/res/ladybird/about-pages/newtab.html",
|
||||
]
|
||||
|
||||
web_templates = [
|
||||
"//Base/res/ladybird/templates/directory.html",
|
||||
"//Base/res/ladybird/templates/error.html",
|
||||
"//Base/res/ladybird/templates/version.html",
|
||||
]
|
||||
|
||||
config_resources =
|
||||
[ "//Base/res/ladybird/default-config/BrowserContentFilters.txt" ]
|
||||
|
||||
if (current_os != "mac") {
|
||||
copy("ladybird_copy_fonts") {
|
||||
sources = fonts
|
||||
outputs = [ "$root_out_dir/share/Lagom/fonts/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_icons_16x16") {
|
||||
sources = icons_16x16
|
||||
outputs = [ "$root_out_dir/share/Lagom/icons/16x16/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_icons_32x32") {
|
||||
sources = icons_32x32
|
||||
outputs = [ "$root_out_dir/share/Lagom/icons/32x32/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_icons_48x48") {
|
||||
sources = icons_48x48
|
||||
outputs = [ "$root_out_dir/share/Lagom/icons/48x48/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_icons_128x128") {
|
||||
sources = icons_128x128
|
||||
outputs = [ "$root_out_dir/share/Lagom/icons/128x128/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_icons_browser") {
|
||||
sources = icons_browser
|
||||
outputs = [ "$root_out_dir/share/Lagom/icons/browser/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_themes") {
|
||||
sources = themes
|
||||
outputs = [ "$root_out_dir/share/Lagom/themes/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_web_resources") {
|
||||
sources = web_resources
|
||||
outputs = [ "$root_out_dir/share/Lagom/ladybird/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_about_pages") {
|
||||
sources = about_pages
|
||||
outputs = [
|
||||
"$root_out_dir/share/Lagom/ladybird/about-pages/{{source_file_part}}",
|
||||
]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_web_templates") {
|
||||
sources = web_templates
|
||||
outputs =
|
||||
[ "$root_out_dir/share/Lagom/ladybird/templates/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("ladybird_copy_config_resources") {
|
||||
sources = config_resources
|
||||
outputs = [
|
||||
"$root_out_dir/share/Lagom/ladybird/default-config/{{source_file_part}}",
|
||||
]
|
||||
}
|
||||
} else {
|
||||
# macOS bundle steps
|
||||
bundle_data("ladybird_bundle_info_plist") {
|
||||
sources = [ "Info.plist" ]
|
||||
outputs = [ "{{bundle_contents_dir}}/Info.plist" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_bundle_executables") {
|
||||
public_deps = [
|
||||
":headless-browser",
|
||||
":ladybird_executable",
|
||||
"ImageDecoder",
|
||||
"RequestServer",
|
||||
"WebContent",
|
||||
"WebDriver",
|
||||
"WebWorker",
|
||||
]
|
||||
sources = [
|
||||
"$root_out_dir/bin/Ladybird",
|
||||
"$root_out_dir/bin/WebDriver",
|
||||
"$root_out_dir/bin/headless-browser",
|
||||
"$root_out_dir/libexec/ImageDecoder",
|
||||
"$root_out_dir/libexec/RequestServer",
|
||||
"$root_out_dir/libexec/WebContent",
|
||||
"$root_out_dir/libexec/WebWorker",
|
||||
]
|
||||
outputs = [ "{{bundle_executable_dir}}/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_bundle_libs") {
|
||||
public_deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCompress",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibDiff",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibHTTP",
|
||||
"//Userland/Libraries/LibIDL",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibLine",
|
||||
"//Userland/Libraries/LibMedia",
|
||||
"//Userland/Libraries/LibRegex",
|
||||
"//Userland/Libraries/LibRequests",
|
||||
"//Userland/Libraries/LibSyntax",
|
||||
"//Userland/Libraries/LibTLS",
|
||||
"//Userland/Libraries/LibTextCodec",
|
||||
"//Userland/Libraries/LibThreading",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWasm",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWebSocket",
|
||||
"//Userland/Libraries/LibWebView",
|
||||
"//Userland/Libraries/LibXML",
|
||||
]
|
||||
sources = [
|
||||
"$root_out_dir/lib/liblagom-ak.dylib",
|
||||
"$root_out_dir/lib/liblagom-compress.dylib",
|
||||
"$root_out_dir/lib/liblagom-core-minimal.dylib",
|
||||
"$root_out_dir/lib/liblagom-core.dylib",
|
||||
"$root_out_dir/lib/liblagom-crypto.dylib",
|
||||
"$root_out_dir/lib/liblagom-diff.dylib",
|
||||
"$root_out_dir/lib/liblagom-filesystem.dylib",
|
||||
"$root_out_dir/lib/liblagom-gfx.dylib",
|
||||
"$root_out_dir/lib/liblagom-http.dylib",
|
||||
"$root_out_dir/lib/liblagom-idl.dylib",
|
||||
"$root_out_dir/lib/liblagom-imagedecoderclient.dylib",
|
||||
"$root_out_dir/lib/liblagom-ipc.dylib",
|
||||
"$root_out_dir/lib/liblagom-js.dylib",
|
||||
"$root_out_dir/lib/liblagom-line.dylib",
|
||||
"$root_out_dir/lib/liblagom-media.dylib",
|
||||
"$root_out_dir/lib/liblagom-regex.dylib",
|
||||
"$root_out_dir/lib/liblagom-requests.dylib",
|
||||
"$root_out_dir/lib/liblagom-syntax.dylib",
|
||||
"$root_out_dir/lib/liblagom-textcodec.dylib",
|
||||
"$root_out_dir/lib/liblagom-threading.dylib",
|
||||
"$root_out_dir/lib/liblagom-tls.dylib",
|
||||
"$root_out_dir/lib/liblagom-url.dylib",
|
||||
"$root_out_dir/lib/liblagom-wasm.dylib",
|
||||
"$root_out_dir/lib/liblagom-web.dylib",
|
||||
"$root_out_dir/lib/liblagom-websocket.dylib",
|
||||
"$root_out_dir/lib/liblagom-webview.dylib",
|
||||
"$root_out_dir/lib/liblagom-xml.dylib",
|
||||
]
|
||||
outputs = [ "{{bundle_contents_dir}}/lib/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_fonts") {
|
||||
sources = fonts
|
||||
outputs = [ "{{bundle_resources_dir}}/fonts/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icons_16x16") {
|
||||
sources = icons_16x16
|
||||
outputs = [ "{{bundle_resources_dir}}/icons/16x16/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icons_32x32") {
|
||||
sources = icons_32x32
|
||||
outputs = [ "{{bundle_resources_dir}}/icons/32x32/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icons_48x48") {
|
||||
sources = icons_48x48
|
||||
outputs = [ "{{bundle_resources_dir}}/icons/48x48/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icons_128x128") {
|
||||
sources = icons_128x128
|
||||
outputs = [ "{{bundle_resources_dir}}/icons/128x128/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icons_browser") {
|
||||
sources = icons_browser
|
||||
outputs = [ "{{bundle_resources_dir}}/icons/browser/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_themes") {
|
||||
sources = themes
|
||||
outputs = [ "{{bundle_resources_dir}}/themes/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_web_resources") {
|
||||
sources = web_resources
|
||||
outputs = [ "{{bundle_resources_dir}}/ladybird/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_about_pages") {
|
||||
sources = about_pages
|
||||
outputs =
|
||||
[ "{{bundle_resources_dir}}/ladybird/about-pages/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_web_templates") {
|
||||
sources = web_templates
|
||||
outputs =
|
||||
[ "{{bundle_resources_dir}}/ladybird/templates/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_config_resources") {
|
||||
sources = config_resources
|
||||
outputs = [
|
||||
"{{bundle_resources_dir}}/ladybird/default-config/{{source_file_part}}",
|
||||
]
|
||||
}
|
||||
|
||||
action("ladybird_create_icon") {
|
||||
script = "//Meta/gn/build/invoke_process_with_args.py"
|
||||
icon_path = "//Ladybird/Icons/macos/app_icon.iconset"
|
||||
sources = [
|
||||
"$icon_path/icon_128x128.png",
|
||||
"$icon_path/icon_128x128@2x.png",
|
||||
"$icon_path/icon_16x16.png",
|
||||
"$icon_path/icon_16x16@2x.png",
|
||||
"$icon_path/icon_256x256.png",
|
||||
"$icon_path/icon_256x256@2x.png",
|
||||
"$icon_path/icon_32x32.png",
|
||||
"$icon_path/icon_32x32@2x.png",
|
||||
"$icon_path/icon_512x512.png",
|
||||
"$icon_path/icon_512x512@2x.png",
|
||||
]
|
||||
outputs = [ "$target_gen_dir/app_icon.icns" ]
|
||||
args = [
|
||||
"iconutil",
|
||||
"--convert",
|
||||
"icns",
|
||||
rebase_path(icon_path, root_build_dir),
|
||||
"--output",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
bundle_data("ladybird_icon") {
|
||||
public_deps = [ ":ladybird_create_icon" ]
|
||||
sources = get_target_outputs(public_deps[0])
|
||||
outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
create_bundle("Ladybird.app") {
|
||||
product_type = "com.apple.product-type.application"
|
||||
|
||||
bundle_root_dir = "$root_build_dir/$target_name"
|
||||
bundle_contents_dir = "$bundle_root_dir/Contents"
|
||||
bundle_resources_dir = "$bundle_contents_dir/Resources"
|
||||
bundle_executable_dir = "$bundle_contents_dir/MacOS"
|
||||
|
||||
deps = [
|
||||
":ladybird_about_pages",
|
||||
":ladybird_bundle_executables",
|
||||
":ladybird_bundle_info_plist",
|
||||
":ladybird_bundle_libs",
|
||||
":ladybird_config_resources",
|
||||
":ladybird_fonts",
|
||||
":ladybird_icon",
|
||||
":ladybird_icons_128x128",
|
||||
":ladybird_icons_16x16",
|
||||
":ladybird_icons_32x32",
|
||||
":ladybird_icons_48x48",
|
||||
":ladybird_icons_browser",
|
||||
":ladybird_themes",
|
||||
":ladybird_web_resources",
|
||||
":ladybird_web_templates",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
executable("ImageDecoder") {
|
||||
configs += [ "//Ladybird:ladybird_config" ]
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland/Services",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibThreading",
|
||||
]
|
||||
sources = [
|
||||
"//Userland/Services/ImageDecoder/ConnectionFromClient.cpp",
|
||||
"main.cpp",
|
||||
]
|
||||
output_dir = "$root_out_dir/libexec"
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
executable("RequestServer") {
|
||||
configs += [ "//Ladybird:ladybird_config" ]
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland/Services",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/curl",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibRequests:RequestClientEndpoint",
|
||||
"//Userland/Libraries/LibRequests:RequestServerEndpoint",
|
||||
"//Userland/Libraries/LibTLS",
|
||||
"//Userland/Libraries/LibThreading",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWebSocket",
|
||||
]
|
||||
sources = [
|
||||
"//Userland/Services/RequestServer/ConnectionFromClient.cpp",
|
||||
"main.cpp",
|
||||
]
|
||||
output_dir = "$root_out_dir/libexec"
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
import("//Ladybird/enable_qt.gni")
|
||||
import("//Ladybird/link_qt.gni")
|
||||
import("//Ladybird/moc_qt_objects.gni")
|
||||
import("//Meta/gn/build/libs/pulse/enable.gni")
|
||||
|
||||
moc_qt_objects("generate_moc") {
|
||||
sources = [ "//Ladybird/Qt/EventLoopImplementationQtEventTarget.h" ]
|
||||
}
|
||||
|
||||
link_qt("WebContent_qt") {
|
||||
qt_components = [ "Core" ]
|
||||
}
|
||||
|
||||
executable("WebContent") {
|
||||
configs += [ "//Ladybird:ladybird_config" ]
|
||||
include_dirs = [
|
||||
"//Userland/Services",
|
||||
"//Ladybird",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/fontconfig",
|
||||
"//Meta/gn/build/libs/pulse",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibRequests",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWebSocket",
|
||||
"//Userland/Libraries/LibWebView",
|
||||
"//Userland/Libraries/LibWebView:WebContentClientEndpoint",
|
||||
"//Userland/Libraries/LibWebView:WebContentServerEndpoint",
|
||||
"//Userland/Libraries/LibWebView:WebDriverClientEndpoint",
|
||||
"//Userland/Libraries/LibWebView:WebDriverServerEndpoint",
|
||||
]
|
||||
sources = [
|
||||
"//Ladybird/FontPlugin.cpp",
|
||||
"//Ladybird/HelperProcess.cpp",
|
||||
"//Ladybird/ImageCodecPlugin.cpp",
|
||||
"//Ladybird/Utilities.cpp",
|
||||
"//Userland/Services/WebContent/BackingStoreManager.cpp",
|
||||
"//Userland/Services/WebContent/ConnectionFromClient.cpp",
|
||||
"//Userland/Services/WebContent/ConsoleGlobalEnvironmentExtensions.cpp",
|
||||
"//Userland/Services/WebContent/PageClient.cpp",
|
||||
"//Userland/Services/WebContent/PageHost.cpp",
|
||||
"//Userland/Services/WebContent/WebContentConsoleClient.cpp",
|
||||
"//Userland/Services/WebContent/WebDriverConnection.cpp",
|
||||
"main.cpp",
|
||||
]
|
||||
|
||||
if (enable_qt) {
|
||||
defines = [ "HAVE_QT" ]
|
||||
configs += [ ":WebContent_qt" ]
|
||||
sources += [
|
||||
"//Ladybird/Qt/EventLoopImplementationQt.cpp",
|
||||
"//Ladybird/Qt/EventLoopImplementationQtEventTarget.cpp",
|
||||
"//Ladybird/Qt/StringUtils.cpp",
|
||||
]
|
||||
|
||||
sources += get_target_outputs(":generate_moc")
|
||||
deps += [ ":generate_moc" ]
|
||||
}
|
||||
|
||||
output_dir = "$root_out_dir/libexec"
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
import("//Ladybird/link_qt.gni")
|
||||
|
||||
executable("WebDriver") {
|
||||
configs += [ "//Ladybird:ladybird_config" ]
|
||||
include_dirs = [
|
||||
"//Userland/Services",
|
||||
"//Ladybird",
|
||||
]
|
||||
data_deps = [
|
||||
"//Ladybird:headless-browser",
|
||||
"//Ladybird:ladybird_executable",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWebSocket",
|
||||
"//Userland/Libraries/LibWebView:WebDriverClientEndpoint",
|
||||
"//Userland/Libraries/LibWebView:WebDriverServerEndpoint",
|
||||
]
|
||||
sources = [
|
||||
"//Ladybird/Utilities.cpp",
|
||||
"//Userland/Services/WebDriver/Client.cpp",
|
||||
"//Userland/Services/WebDriver/Session.cpp",
|
||||
"//Userland/Services/WebDriver/WebContentConnection.cpp",
|
||||
"main.cpp",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
executable("WebWorker") {
|
||||
configs += [ "//Ladybird:ladybird_config" ]
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland/Services",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/fontconfig",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibImageDecoderClient",
|
||||
"//Userland/Libraries/LibJS",
|
||||
"//Userland/Libraries/LibMain",
|
||||
"//Userland/Libraries/LibRequests",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
"//Userland/Libraries/LibWeb:WebWorkerClientEndpoint",
|
||||
"//Userland/Libraries/LibWeb:WebWorkerServerEndpoint",
|
||||
"//Userland/Libraries/LibWebView",
|
||||
]
|
||||
sources = [
|
||||
"//Ladybird/FontPlugin.cpp",
|
||||
"//Ladybird/HelperProcess.cpp",
|
||||
"//Ladybird/Utilities.cpp",
|
||||
"//Userland/Services/WebWorker/ConnectionFromClient.cpp",
|
||||
"//Userland/Services/WebWorker/DedicatedWorkerHost.cpp",
|
||||
"//Userland/Services/WebWorker/PageHost.cpp",
|
||||
"main.cpp",
|
||||
]
|
||||
output_dir = "$root_out_dir/libexec"
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
import("qt_install_prefix.gni")
|
||||
|
||||
template("compile_qt_resource_file") {
|
||||
action_foreach(target_name) {
|
||||
forward_variables_from(invoker, [ "sources" ])
|
||||
|
||||
script = "//Meta/gn/build/invoke_process_with_args.py"
|
||||
|
||||
outputs = [ "$target_gen_dir/rcc_{{source_name_part}}.cpp" ]
|
||||
depfile = "$target_gen_dir/rcc_{{source_name_part}}.cpp.d"
|
||||
args = [
|
||||
qt_install_libexec + "rcc",
|
||||
"-g",
|
||||
"cpp",
|
||||
"-d",
|
||||
rebase_path(target_gen_dir, root_build_dir) +
|
||||
"/rcc_{{source_name_part}}.cpp.d",
|
||||
"-o",
|
||||
rebase_path(target_gen_dir, root_build_dir) +
|
||||
"/rcc_{{source_name_part}}.cpp",
|
||||
"{{source}}",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Build the Ladybird application using the AppKit UI.
|
||||
enable_appkit = current_os == "mac"
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
declare_args() {
|
||||
# Build the Ladybird application using the Qt UI.
|
||||
enable_qt = current_os != "mac"
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
import("qt_install_prefix.gni")
|
||||
|
||||
template("link_qt") {
|
||||
assert(defined(invoker.qt_components),
|
||||
"Must define qt_component on $target_name")
|
||||
|
||||
config(target_name) {
|
||||
include_dirs = [ qt_install_headers ]
|
||||
if (current_os == "mac") {
|
||||
frameworks = []
|
||||
framework_dirs = [ qt_install_frameworks ]
|
||||
foreach(component, invoker.qt_components) {
|
||||
include_dirs += [ qt_install_headers + "Qt" + component ]
|
||||
frameworks += [ "Qt" + component + ".framework" ]
|
||||
}
|
||||
} else {
|
||||
libs = []
|
||||
lib_dirs = [ qt_install_lib ]
|
||||
foreach(component, invoker.qt_components) {
|
||||
include_dirs += [ qt_install_headers + "Qt" + component ]
|
||||
libs += [ "Qt6" + component ]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
import("qt_install_prefix.gni")
|
||||
|
||||
template("moc_qt_objects") {
|
||||
action_foreach(target_name) {
|
||||
forward_variables_from(invoker, [ "sources" ])
|
||||
|
||||
script = "//Meta/gn/build/invoke_process_with_args.py"
|
||||
|
||||
outputs = [ "$target_gen_dir/moc_{{source_name_part}}.cpp" ]
|
||||
args = [
|
||||
qt_install_libexec + "moc",
|
||||
"{{source}}",
|
||||
"-o",
|
||||
rebase_path(target_gen_dir, root_build_dir) +
|
||||
"/moc_{{source_name_part}}.cpp",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
declare_args() {
|
||||
# Location of Qt6 binaries/libraries/frameworks.
|
||||
# Likely /opt/homebrew on macOS and /usr or /usr/local on Linux
|
||||
# FIXME: We could get these by parsing `qmake -query` or `pkg-config`
|
||||
if (host_os == "mac") {
|
||||
qt_install_prefix = "/opt/homebrew/"
|
||||
} else {
|
||||
qt_install_prefix = "/usr/"
|
||||
}
|
||||
}
|
||||
|
||||
declare_args() {
|
||||
# Location of Qt6 headers, normally set based on $qt_install_prefix
|
||||
qt_install_headers = qt_install_prefix + "include/"
|
||||
if (current_os == "mac") {
|
||||
# Location of Qt6 frameworks, normally set based on $qt_install_prefix
|
||||
qt_install_frameworks = qt_install_prefix + "Frameworks/"
|
||||
} else {
|
||||
# Location of Qt6 libraries, normally set based on $qt_install_prefix
|
||||
qt_install_lib = qt_install_prefix + "lib"
|
||||
}
|
||||
|
||||
# Location of Qt6 helper programs, normally set based on $qt_install_prefix
|
||||
# Programs such as moc and rcc are expected to be in this location.
|
||||
qt_install_libexec = qt_install_prefix + "share/qt/libexec/"
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import("//Meta/Lagom/Tools/lagom_tool.gni")
|
||||
|
||||
lagom_tool("IPCCompiler") {
|
||||
sources = [ "main.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibMain" ]
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import("//Meta/Lagom/Tools/lagom_tool.gni")
|
||||
|
||||
lagom_tool("GenerateEncodingIndexes") {
|
||||
sources = [ "GenerateEncodingIndexes.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibMain" ]
|
||||
}
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
import("//Meta/Lagom/Tools/lagom_tool.gni")
|
||||
|
||||
source_set("headers") {
|
||||
sources = [ "GeneratorUtil.h" ]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateAriaRoles") {
|
||||
sources = [ "GenerateAriaRoles.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSEnums") {
|
||||
sources = [ "GenerateCSSEnums.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSMathFunctions") {
|
||||
sources = [ "GenerateCSSMathFunctions.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSMediaFeatureID") {
|
||||
sources = [ "GenerateCSSMediaFeatureID.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSPropertyID") {
|
||||
sources = [ "GenerateCSSPropertyID.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSPseudoClass") {
|
||||
sources = [ "GenerateCSSPseudoClass.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSPseudoElement") {
|
||||
sources = [ "GenerateCSSPseudoElement.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSTransformFunctions") {
|
||||
sources = [ "GenerateCSSTransformFunctions.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateCSSKeyword") {
|
||||
sources = [ "GenerateCSSKeyword.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateWindowOrWorkerInterfaces") {
|
||||
sources = [ "GenerateWindowOrWorkerInterfaces.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibIDL",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
||||
lagom_tool("GenerateNamedCharacterReferences") {
|
||||
sources = [ "GenerateNamedCharacterReferences.cpp" ]
|
||||
deps = [
|
||||
":headers",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
import("//Meta/Lagom/Tools/lagom_tool.gni")
|
||||
|
||||
lagom_tool("BindingsGenerator") {
|
||||
sources = [
|
||||
"IDLGenerators.cpp",
|
||||
"Namespaces.h",
|
||||
"main.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//Userland/Libraries/LibIDL",
|
||||
"//Userland/Libraries/LibMain",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import("//Meta/Lagom/Tools/lagom_tool.gni")
|
||||
|
||||
lagom_tool("GeneratePublicSuffixData") {
|
||||
sources = [ "GeneratePublicSuffixData.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibMain" ]
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
template("lagom_tool") {
|
||||
assert(current_toolchain == host_toolchain,
|
||||
"Must only depend on Lagom tools from the host_toolchain")
|
||||
executable(target_name) {
|
||||
forward_variables_from(invoker, "*")
|
||||
include_dirs = [
|
||||
"//",
|
||||
"$root_gen_dir",
|
||||
"//Userland/Libraries",
|
||||
]
|
||||
deps += [
|
||||
"//Userland/Libraries/LibCore:minimal",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
import("//Tests/unittest.gni")
|
||||
|
||||
tests = [
|
||||
"TestAllOf",
|
||||
"TestAnyOf",
|
||||
"TestArray",
|
||||
"TestAtomic",
|
||||
"TestBadge",
|
||||
"TestBase64",
|
||||
"TestBinaryHeap",
|
||||
"TestBinarySearch",
|
||||
"TestBitCast",
|
||||
"TestBitmap",
|
||||
"TestBitStream",
|
||||
"TestBuiltinWrappers",
|
||||
"TestByteBuffer",
|
||||
"TestCharacterTypes",
|
||||
"TestChecked",
|
||||
"TestCircularBuffer",
|
||||
"TestCircularQueue",
|
||||
"TestByteString",
|
||||
"TestDisjointChunks",
|
||||
"TestDistinctNumeric",
|
||||
"TestDoublyLinkedList",
|
||||
"TestDuration",
|
||||
"TestEndian",
|
||||
"TestEnumBits",
|
||||
"TestFind",
|
||||
"TestFixedArray",
|
||||
"TestFixedPoint",
|
||||
"TestFloatingPointParsing",
|
||||
"TestFlyString",
|
||||
"TestFormat",
|
||||
"TestGenericLexer",
|
||||
"TestGenericShorthands",
|
||||
"TestHashFunctions",
|
||||
"TestHashMap",
|
||||
"TestHashTable",
|
||||
"TestHex",
|
||||
"TestIPv4Address",
|
||||
"TestIPv6Address",
|
||||
"TestIndexSequence",
|
||||
"TestInsertionSort",
|
||||
"TestIntegerMath",
|
||||
"TestIntrusiveList",
|
||||
"TestIntrusiveRedBlackTree",
|
||||
"TestJSON",
|
||||
"TestLEB128",
|
||||
"TestLexicalPath",
|
||||
"TestMemory",
|
||||
"TestMemoryStream",
|
||||
"TestNeverDestroyed",
|
||||
"TestNonnullRefPtr",
|
||||
"TestNumberFormat",
|
||||
"TestOptional",
|
||||
"TestOwnPtr",
|
||||
"TestPrint",
|
||||
"TestQueue",
|
||||
"TestQuickSelect",
|
||||
"TestQuickSort",
|
||||
"TestRedBlackTree",
|
||||
"TestRefPtr",
|
||||
"TestSIMD",
|
||||
"TestSinglyLinkedList",
|
||||
"TestSourceGenerator",
|
||||
"TestSourceLocation",
|
||||
"TestSpan",
|
||||
"TestStack",
|
||||
"TestStatistics",
|
||||
"TestStdLibExtras",
|
||||
"TestStringFloatingPointConversions",
|
||||
"TestStringUtils",
|
||||
"TestStringView",
|
||||
"TestTrie",
|
||||
"TestTuple",
|
||||
"TestTypeTraits",
|
||||
"TestTypedTransfer",
|
||||
"TestUFixedBigInt",
|
||||
"TestUtf16",
|
||||
"TestUtf8",
|
||||
"TestVariant",
|
||||
"TestVector",
|
||||
"TestWeakPtr",
|
||||
]
|
||||
|
||||
# FIXME: "TestString", when LibUnicode is available
|
||||
|
||||
foreach(test_name, tests) {
|
||||
unittest(test_name) {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ test_name + ".cpp" ]
|
||||
}
|
||||
}
|
||||
|
||||
group("AK") {
|
||||
deps = []
|
||||
foreach(test_name, tests) {
|
||||
deps += [ ":" + test_name ]
|
||||
}
|
||||
testonly = true
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
group("Tests") {
|
||||
deps = [
|
||||
"//Tests/AK",
|
||||
"//Tests/LibJS",
|
||||
"//Tests/LibURL",
|
||||
"//Tests/LibWeb",
|
||||
]
|
||||
testonly = true
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
import("//Tests/unittest.gni")
|
||||
|
||||
unittest("test-js") {
|
||||
use_js_main = true
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "test-js.cpp" ]
|
||||
deps = [
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibJS",
|
||||
]
|
||||
}
|
||||
|
||||
executable("test262-runner") {
|
||||
sources = [ "test262-runner.cpp" ]
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibJS",
|
||||
]
|
||||
}
|
||||
|
||||
group("LibJS") {
|
||||
testonly = true
|
||||
deps = [
|
||||
":test-js",
|
||||
":test262-runner",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
import("//Tests/unittest.gni")
|
||||
|
||||
unittest("TestURL") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestURL.cpp" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibURL",
|
||||
]
|
||||
}
|
||||
|
||||
group("LibURL") {
|
||||
testonly = true
|
||||
deps = [ ":TestURL" ]
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
import("//Tests/unittest.gni")
|
||||
|
||||
unittest("TestCSSIDSpeed") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestCSSIDSpeed.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestCSSPixels") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestCSSPixels.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestFetchInfrastructure") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestFetchInfrastructure.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestFetchURL") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestFetchURL.cpp" ]
|
||||
deps = [
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibWeb",
|
||||
]
|
||||
}
|
||||
|
||||
unittest("TestHTMLTokenizer") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestHTMLTokenizer.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestMicrosyntax") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestMicrosyntax.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestMimeSniff") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestMimeSniff.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
unittest("TestNumbers") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestNumbers.cpp" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb" ]
|
||||
}
|
||||
|
||||
group("LibWeb") {
|
||||
testonly = true
|
||||
deps = [
|
||||
":TestCSSIDSpeed",
|
||||
":TestCSSPixels",
|
||||
":TestFetchInfrastructure",
|
||||
":TestFetchURL",
|
||||
":TestHTMLTokenizer",
|
||||
":TestMicrosyntax",
|
||||
":TestMimeSniff",
|
||||
":TestNumbers",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
template("unittest") {
|
||||
executable(target_name) {
|
||||
has_custom_main = false
|
||||
use_js_main = false
|
||||
|
||||
# Foward everything (has_custom_main if set; configs, sources, deps, ...).
|
||||
forward_variables_from(invoker, "*")
|
||||
assert(!defined(invoker.output_dir), "cannot set unittest output_dir")
|
||||
assert(!defined(invoker.testonly), "cannot set unittest testonly")
|
||||
|
||||
if (!defined(invoker.deps)) {
|
||||
deps = []
|
||||
}
|
||||
|
||||
deps += [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
]
|
||||
if (has_custom_main) {
|
||||
deps += [ "//Userland/Libraries/LibTest" ]
|
||||
} else if (use_js_main) {
|
||||
deps += [ "//Userland/Libraries/LibTest:test_js_main" ]
|
||||
} else {
|
||||
deps += [ "//Userland/Libraries/LibTest:test_main" ]
|
||||
}
|
||||
|
||||
testonly = true
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
shared_library("LibCompress") {
|
||||
output_name = "compress"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Deflate.cpp",
|
||||
"Gzip.cpp",
|
||||
"PackBitsDecoder.cpp",
|
||||
"Zlib.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,207 +0,0 @@
|
|||
import("//Meta/gn/build/libs/vulkan/enable.gni")
|
||||
|
||||
# These are the minimal set of sources needed to build the code generators. We separate them to allow
|
||||
# LibCore to depend on generated sources.
|
||||
shared_library("minimal") {
|
||||
output_name = "core-minimal"
|
||||
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
|
||||
sources = [
|
||||
"ArgsParser.cpp",
|
||||
"ArgsParser.h",
|
||||
"DirIterator.cpp",
|
||||
"DirIterator.h",
|
||||
"Directory.cpp",
|
||||
"Directory.h",
|
||||
"DirectoryEntry.cpp",
|
||||
"DirectoryEntry.h",
|
||||
"Environment.cpp",
|
||||
"Environment.h",
|
||||
"File.cpp",
|
||||
"File.h",
|
||||
"Forward.h",
|
||||
"StandardPaths.cpp",
|
||||
"StandardPaths.h",
|
||||
"System.cpp",
|
||||
"System.h",
|
||||
"Version.cpp",
|
||||
"Version.h",
|
||||
]
|
||||
|
||||
deps = [ "//AK" ]
|
||||
}
|
||||
|
||||
source_set("sources") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
deps = [ "//AK" ]
|
||||
sources = [
|
||||
"AnonymousBuffer.cpp",
|
||||
"AnonymousBuffer.h",
|
||||
"Command.cpp",
|
||||
"Command.h",
|
||||
"ConfigFile.cpp",
|
||||
"ConfigFile.h",
|
||||
"DateTime.cpp",
|
||||
"DateTime.h",
|
||||
"DeferredInvocationContext.h",
|
||||
"ElapsedTimer.cpp",
|
||||
"ElapsedTimer.h",
|
||||
"Event.cpp",
|
||||
"Event.h",
|
||||
"EventLoop.cpp",
|
||||
"EventLoop.h",
|
||||
"EventLoopImplementation.cpp",
|
||||
"EventLoopImplementation.h",
|
||||
"EventLoopImplementationUnix.cpp",
|
||||
"EventLoopImplementationUnix.h",
|
||||
"EventReceiver.cpp",
|
||||
"EventReceiver.h",
|
||||
"MappedFile.cpp",
|
||||
"MappedFile.h",
|
||||
"MimeData.cpp",
|
||||
"MimeData.h",
|
||||
"NetworkResponse.h",
|
||||
"Notifier.cpp",
|
||||
"Notifier.h",
|
||||
"Platform/ProcessInfo.h",
|
||||
"Platform/ProcessStatistics.h",
|
||||
"Process.cpp",
|
||||
"Process.h",
|
||||
"Promise.h",
|
||||
"Proxy.h",
|
||||
"Resource.cpp",
|
||||
"Resource.h",
|
||||
"ResourceImplementation.cpp",
|
||||
"ResourceImplementationFile.cpp",
|
||||
"SharedCircularQueue.h",
|
||||
"Socket.cpp",
|
||||
"Socket.h",
|
||||
"SocketAddress.h",
|
||||
"SystemServerTakeover.cpp",
|
||||
"SystemServerTakeover.h",
|
||||
"TCPServer.cpp",
|
||||
"TCPServer.h",
|
||||
"ThreadEventQueue.cpp",
|
||||
"ThreadEventQueue.h",
|
||||
"ThreadedPromise.h",
|
||||
"Timer.cpp",
|
||||
"Timer.h",
|
||||
"UDPServer.cpp",
|
||||
"UDPServer.h",
|
||||
]
|
||||
if (current_os != "android") {
|
||||
sources += [
|
||||
"LocalServer.cpp",
|
||||
"LocalServer.h",
|
||||
]
|
||||
}
|
||||
if (current_os == "mac") {
|
||||
sources += [ "MachPort.cpp" ]
|
||||
}
|
||||
|
||||
if (current_os == "linux") {
|
||||
sources += [ "Platform/ProcessStatisticsLinux.cpp" ]
|
||||
} else if (current_os == "mac") {
|
||||
sources += [
|
||||
"Platform/ProcessStatisticsMach.cpp",
|
||||
"Platform/ProcessStatisticsMach.h",
|
||||
]
|
||||
} else {
|
||||
sources += [ "Platform/ProcessStatisticsUnimplemented.cpp" ]
|
||||
}
|
||||
}
|
||||
|
||||
source_set("filewatcher") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "FileWatcher.h" ]
|
||||
deps = [ "//AK" ]
|
||||
frameworks = []
|
||||
if (current_os == "linux") {
|
||||
sources += [ "FileWatcherLinux.cpp" ]
|
||||
} else if (current_os == "mac") {
|
||||
sources += [ "FileWatcherMacOS.mm" ]
|
||||
frameworks += [
|
||||
"CoreFoundation.framework",
|
||||
"CoreServices.framework",
|
||||
"Foundation.framework",
|
||||
]
|
||||
} else {
|
||||
sources += [ "FileWatcherUnimplemented.cpp" ]
|
||||
}
|
||||
}
|
||||
|
||||
source_set("timezonewatcher") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TimeZoneWatcher.h" ]
|
||||
deps = [ "//AK" ]
|
||||
frameworks = []
|
||||
if (current_os == "linux") {
|
||||
sources += [ "TimeZoneWatcherLinux.cpp" ]
|
||||
} else if (current_os == "mac") {
|
||||
sources += [ "TimeZoneWatcherMacOS.mm" ]
|
||||
frameworks += [
|
||||
"CoreFoundation.framework",
|
||||
"CoreServices.framework",
|
||||
"Foundation.framework",
|
||||
]
|
||||
} else {
|
||||
sources += [ "TimeZoneWatcherUnimplemented.cpp" ]
|
||||
}
|
||||
}
|
||||
|
||||
source_set("metal") {
|
||||
if (current_os == "mac") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
deps = [ "//AK" ]
|
||||
sources = [
|
||||
"IOSurface.cpp",
|
||||
"MetalContext.mm",
|
||||
]
|
||||
frameworks = [
|
||||
"IOSurface.framework",
|
||||
"Metal.framework",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
source_set("vulkan") {
|
||||
if (enable_vulkan) {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/vulkan",
|
||||
]
|
||||
sources = [ "VulkanContext.cpp" ]
|
||||
}
|
||||
}
|
||||
|
||||
shared_library("LibCore") {
|
||||
libs = []
|
||||
|
||||
if (current_os == "linux" || current_os == "android") {
|
||||
libs += [ "dl" ]
|
||||
}
|
||||
if (current_os == "linux") {
|
||||
libs += [ "rt" ]
|
||||
}
|
||||
if (current_os == "android") {
|
||||
libs += [ "log" ]
|
||||
}
|
||||
|
||||
output_name = "core"
|
||||
|
||||
deps = [
|
||||
":filewatcher",
|
||||
":metal",
|
||||
":sources",
|
||||
":timezonewatcher",
|
||||
":vulkan",
|
||||
"//Meta/gn/build/libs/crypt",
|
||||
"//Meta/gn/build/libs/pthread",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
|
||||
public_deps = [ ":minimal" ]
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
shared_library("LibCrypto") {
|
||||
output_name = "crypto"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
cflags_cc = [ "-Wvla" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/openssl",
|
||||
"//Userland/Libraries/LibCore",
|
||||
]
|
||||
sources = [
|
||||
"ASN1/ASN1.cpp",
|
||||
"ASN1/DER.cpp",
|
||||
"ASN1/PEM.cpp",
|
||||
"Authentication/GHash.cpp",
|
||||
"Authentication/Poly1305.cpp",
|
||||
"BigFraction/BigFraction.cpp",
|
||||
"BigInt/SignedBigInteger.cpp",
|
||||
"BigInt/UnsignedBigInteger.cpp",
|
||||
"Checksum/Adler32.cpp",
|
||||
"Checksum/CRC32.cpp",
|
||||
"Checksum/cksum.cpp",
|
||||
"Cipher/AES.cpp",
|
||||
"Cipher/ChaCha20.cpp",
|
||||
"Curves/Curve25519.cpp",
|
||||
"Curves/Ed25519.cpp",
|
||||
"Curves/X25519.cpp",
|
||||
"Curves/X448.cpp",
|
||||
"Hash/BLAKE2b.cpp",
|
||||
"Hash/MD5.cpp",
|
||||
"Hash/SHA1.cpp",
|
||||
"Hash/SHA2.cpp",
|
||||
"PK/RSA.cpp",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
shared_library("LibDiff") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Applier.cpp",
|
||||
"Format.cpp",
|
||||
"Generator.cpp",
|
||||
"Hunks.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
]
|
||||
output_name = "diff"
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
shared_library("LibFileSystem") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"FileSystem.cpp",
|
||||
"FileSystem.h",
|
||||
"TempFile.cpp",
|
||||
"TempFile.h",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore:minimal",
|
||||
]
|
||||
output_name = "filesystem"
|
||||
}
|
||||
|
|
@ -1,102 +0,0 @@
|
|||
action("generate_tiff_sources") {
|
||||
script = "//Userland/Libraries/LibGfx/TIFFGenerator.py"
|
||||
|
||||
args = [
|
||||
"-o",
|
||||
rebase_path("$target_gen_dir/ImageFormats", root_build_dir),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
"$target_gen_dir/ImageFormats/TIFFMetadata.h",
|
||||
"$target_gen_dir/ImageFormats/TIFFTagHandler.cpp",
|
||||
]
|
||||
}
|
||||
|
||||
config("tiff_headers") {
|
||||
include_dirs = [ "$target_gen_dir/.." ]
|
||||
}
|
||||
|
||||
shared_library("LibGfx") {
|
||||
output_name = "gfx"
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland",
|
||||
]
|
||||
public_configs = [ ":tiff_headers" ]
|
||||
sources = [
|
||||
"AffineTransform.cpp",
|
||||
"Bitmap.cpp",
|
||||
"BitmapSequence.cpp",
|
||||
"CMYKBitmap.cpp",
|
||||
"Color.cpp",
|
||||
"Font/Font.cpp",
|
||||
"Font/FontData.cpp",
|
||||
"Font/FontDatabase.cpp",
|
||||
"Font/ScaledFont.cpp",
|
||||
"Font/ScaledFontSkia.cpp",
|
||||
"Font/Typeface.cpp",
|
||||
"Font/TypefaceSkia.cpp",
|
||||
"Font/WOFF/Loader.cpp",
|
||||
"Font/WOFF2/Loader.cpp",
|
||||
"FontCascadeList.cpp",
|
||||
"GradientPainting.cpp",
|
||||
"ImageFormats/AVIFLoader.cpp",
|
||||
"ImageFormats/AnimationWriter.cpp",
|
||||
"ImageFormats/BMPLoader.cpp",
|
||||
"ImageFormats/BMPWriter.cpp",
|
||||
"ImageFormats/BooleanDecoder.cpp",
|
||||
"ImageFormats/CCITTDecoder.cpp",
|
||||
"ImageFormats/GIFLoader.cpp",
|
||||
"ImageFormats/ICOLoader.cpp",
|
||||
"ImageFormats/ImageDecoder.cpp",
|
||||
"ImageFormats/JPEGLoader.cpp",
|
||||
"ImageFormats/JPEGWriter.cpp",
|
||||
"ImageFormats/JPEGXLLoader.cpp",
|
||||
"ImageFormats/PNGLoader.cpp",
|
||||
"ImageFormats/PNGWriter.cpp",
|
||||
"ImageFormats/TIFFLoader.cpp",
|
||||
"ImageFormats/TinyVGLoader.cpp",
|
||||
"ImageFormats/WebPLoader.cpp",
|
||||
"ImageFormats/WebPSharedLossless.cpp",
|
||||
"ImageFormats/WebPWriter.cpp",
|
||||
"ImageFormats/WebPWriterLossless.cpp",
|
||||
"ImmutableBitmap.cpp",
|
||||
"MedianCut.cpp",
|
||||
"Painter.cpp",
|
||||
"PainterSkia.cpp",
|
||||
"Palette.cpp",
|
||||
"Path.cpp",
|
||||
"PathSkia.cpp",
|
||||
"Point.cpp",
|
||||
"Rect.cpp",
|
||||
"ShareableBitmap.cpp",
|
||||
"Size.cpp",
|
||||
"SystemTheme.cpp",
|
||||
"TextLayout.cpp",
|
||||
"Triangle.cpp",
|
||||
"VectorGraphic.cpp",
|
||||
]
|
||||
|
||||
sources += get_target_outputs(":generate_tiff_sources")
|
||||
|
||||
deps = [
|
||||
":generate_tiff_sources",
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/avif",
|
||||
"//Meta/gn/build/libs/harfbuzz",
|
||||
"//Meta/gn/build/libs/jpeg",
|
||||
"//Meta/gn/build/libs/jxl",
|
||||
"//Meta/gn/build/libs/png",
|
||||
"//Meta/gn/build/libs/skia",
|
||||
"//Meta/gn/build/libs/webp",
|
||||
"//Meta/gn/build/libs/woff2",
|
||||
"//Userland/Libraries/LibCompress",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibTextCodec",
|
||||
"//Userland/Libraries/LibURL",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
shared_library("LibHTTP") {
|
||||
output_name = "http"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"HttpRequest.cpp",
|
||||
"HttpResponse.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCompress",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibTLS",
|
||||
"//Userland/Libraries/LibURL",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
shared_library("LibIDL") {
|
||||
output_name = "idl"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"IDLParser.cpp",
|
||||
"Types.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore:minimal",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
shared_library("LibIPC") {
|
||||
output_name = "ipc"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Concepts.h",
|
||||
"Connection.cpp",
|
||||
"Connection.h",
|
||||
"ConnectionFromClient.h",
|
||||
"ConnectionToServer.h",
|
||||
"Decoder.cpp",
|
||||
"Decoder.h",
|
||||
"Encoder.cpp",
|
||||
"Encoder.h",
|
||||
"File.h",
|
||||
"Forward.h",
|
||||
"Message.cpp",
|
||||
"Message.h",
|
||||
"MultiServer.h",
|
||||
"SingleServer.h",
|
||||
"Stub.h",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibThreading",
|
||||
"//Userland/Libraries/LibURL",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
import("//Meta/gn/build/compiled_action.gni")
|
||||
|
||||
compiled_action("ImageDecoderClientEndpoint") {
|
||||
tool = "//Meta/Lagom/Tools/CodeGenerators/IPCCompiler"
|
||||
inputs = [ "//Userland/Services/ImageDecoder/ImageDecoderClient.ipc" ]
|
||||
outputs = [ "$root_gen_dir/ImageDecoder/ImageDecoderClientEndpoint.h" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
compiled_action("ImageDecoderServerEndpoint") {
|
||||
tool = "//Meta/Lagom/Tools/CodeGenerators/IPCCompiler"
|
||||
inputs = [ "//Userland/Services/ImageDecoder/ImageDecoderServer.ipc" ]
|
||||
outputs = [ "$root_gen_dir/ImageDecoder/ImageDecoderServerEndpoint.h" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
shared_library("LibImageDecoderClient") {
|
||||
output_name = "imagedecoderclient"
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland/Services",
|
||||
"//Userland/",
|
||||
]
|
||||
deps = [
|
||||
":ImageDecoderClientEndpoint",
|
||||
":ImageDecoderServerEndpoint",
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
]
|
||||
sources = [ "Client.cpp" ]
|
||||
sources += get_target_outputs(":ImageDecoderClientEndpoint") +
|
||||
get_target_outputs(":ImageDecoderServerEndpoint")
|
||||
}
|
||||
|
|
@ -1,286 +0,0 @@
|
|||
shared_library("LibJS") {
|
||||
output_name = "js"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
cflags_cc = [ "-fno-omit-frame-pointer" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
"//Userland/Libraries/LibRegex",
|
||||
"//Userland/Libraries/LibSyntax",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
|
||||
sources = [
|
||||
"AST.cpp",
|
||||
"Bytecode/ASTCodegen.cpp",
|
||||
"Bytecode/BasicBlock.cpp",
|
||||
"Bytecode/Builtins.cpp",
|
||||
"Bytecode/CodeGenerationError.cpp",
|
||||
"Bytecode/Executable.cpp",
|
||||
"Bytecode/Generator.cpp",
|
||||
"Bytecode/IdentifierTable.cpp",
|
||||
"Bytecode/Instruction.cpp",
|
||||
"Bytecode/Interpreter.cpp",
|
||||
"Bytecode/Label.cpp",
|
||||
"Bytecode/RegexTable.cpp",
|
||||
"Bytecode/ScopedOperand.cpp",
|
||||
"Bytecode/StringTable.cpp",
|
||||
"Console.cpp",
|
||||
"Contrib/Test262/262Object.cpp",
|
||||
"Contrib/Test262/AgentObject.cpp",
|
||||
"Contrib/Test262/GlobalObject.cpp",
|
||||
"Contrib/Test262/IsHTMLDDA.cpp",
|
||||
"CyclicModule.cpp",
|
||||
"Heap/BlockAllocator.cpp",
|
||||
"Heap/Cell.cpp",
|
||||
"Heap/CellAllocator.cpp",
|
||||
"Heap/ConservativeVector.cpp",
|
||||
"Heap/Handle.cpp",
|
||||
"Heap/Heap.cpp",
|
||||
"Heap/HeapBlock.cpp",
|
||||
"Heap/RootVector.cpp",
|
||||
"Lexer.cpp",
|
||||
"MarkupGenerator.cpp",
|
||||
"Module.cpp",
|
||||
"Parser.cpp",
|
||||
"ParserError.cpp",
|
||||
"Print.cpp",
|
||||
"Runtime/AbstractOperations.cpp",
|
||||
"Runtime/Accessor.cpp",
|
||||
"Runtime/Agent.cpp",
|
||||
"Runtime/AggregateError.cpp",
|
||||
"Runtime/AggregateErrorConstructor.cpp",
|
||||
"Runtime/AggregateErrorPrototype.cpp",
|
||||
"Runtime/ArgumentsObject.cpp",
|
||||
"Runtime/Array.cpp",
|
||||
"Runtime/ArrayBuffer.cpp",
|
||||
"Runtime/ArrayBufferConstructor.cpp",
|
||||
"Runtime/ArrayBufferPrototype.cpp",
|
||||
"Runtime/ArrayConstructor.cpp",
|
||||
"Runtime/ArrayIterator.cpp",
|
||||
"Runtime/ArrayIteratorPrototype.cpp",
|
||||
"Runtime/ArrayPrototype.cpp",
|
||||
"Runtime/AsyncFromSyncIterator.cpp",
|
||||
"Runtime/AsyncFromSyncIteratorPrototype.cpp",
|
||||
"Runtime/AsyncFunctionConstructor.cpp",
|
||||
"Runtime/AsyncFunctionDriverWrapper.cpp",
|
||||
"Runtime/AsyncFunctionPrototype.cpp",
|
||||
"Runtime/AsyncGenerator.cpp",
|
||||
"Runtime/AsyncGeneratorFunctionConstructor.cpp",
|
||||
"Runtime/AsyncGeneratorFunctionPrototype.cpp",
|
||||
"Runtime/AsyncGeneratorPrototype.cpp",
|
||||
"Runtime/AsyncIteratorPrototype.cpp",
|
||||
"Runtime/AtomicsObject.cpp",
|
||||
"Runtime/BigInt.cpp",
|
||||
"Runtime/BigIntConstructor.cpp",
|
||||
"Runtime/BigIntObject.cpp",
|
||||
"Runtime/BigIntPrototype.cpp",
|
||||
"Runtime/BooleanConstructor.cpp",
|
||||
"Runtime/BooleanObject.cpp",
|
||||
"Runtime/BooleanPrototype.cpp",
|
||||
"Runtime/BoundFunction.cpp",
|
||||
"Runtime/Completion.cpp",
|
||||
"Runtime/ConsoleObject.cpp",
|
||||
"Runtime/ConsoleObjectPrototype.cpp",
|
||||
"Runtime/DataView.cpp",
|
||||
"Runtime/DataViewConstructor.cpp",
|
||||
"Runtime/DataViewPrototype.cpp",
|
||||
"Runtime/Date.cpp",
|
||||
"Runtime/DateConstructor.cpp",
|
||||
"Runtime/DatePrototype.cpp",
|
||||
"Runtime/DeclarativeEnvironment.cpp",
|
||||
"Runtime/DisposableStack.cpp",
|
||||
"Runtime/DisposableStackConstructor.cpp",
|
||||
"Runtime/DisposableStackPrototype.cpp",
|
||||
"Runtime/ECMAScriptFunctionObject.cpp",
|
||||
"Runtime/Environment.cpp",
|
||||
"Runtime/Error.cpp",
|
||||
"Runtime/ErrorConstructor.cpp",
|
||||
"Runtime/ErrorPrototype.cpp",
|
||||
"Runtime/ErrorTypes.cpp",
|
||||
"Runtime/ExecutionContext.cpp",
|
||||
"Runtime/FinalizationRegistry.cpp",
|
||||
"Runtime/FinalizationRegistryConstructor.cpp",
|
||||
"Runtime/FinalizationRegistryPrototype.cpp",
|
||||
"Runtime/FunctionConstructor.cpp",
|
||||
"Runtime/FunctionEnvironment.cpp",
|
||||
"Runtime/FunctionObject.cpp",
|
||||
"Runtime/FunctionPrototype.cpp",
|
||||
"Runtime/GeneratorFunctionConstructor.cpp",
|
||||
"Runtime/GeneratorFunctionPrototype.cpp",
|
||||
"Runtime/GeneratorObject.cpp",
|
||||
"Runtime/GeneratorPrototype.cpp",
|
||||
"Runtime/GlobalEnvironment.cpp",
|
||||
"Runtime/GlobalObject.cpp",
|
||||
"Runtime/IndexedProperties.cpp",
|
||||
"Runtime/Intl/AbstractOperations.cpp",
|
||||
"Runtime/Intl/Collator.cpp",
|
||||
"Runtime/Intl/CollatorCompareFunction.cpp",
|
||||
"Runtime/Intl/CollatorConstructor.cpp",
|
||||
"Runtime/Intl/CollatorPrototype.cpp",
|
||||
"Runtime/Intl/DateTimeFormat.cpp",
|
||||
"Runtime/Intl/DateTimeFormatConstructor.cpp",
|
||||
"Runtime/Intl/DateTimeFormatFunction.cpp",
|
||||
"Runtime/Intl/DateTimeFormatPrototype.cpp",
|
||||
"Runtime/Intl/DisplayNames.cpp",
|
||||
"Runtime/Intl/DisplayNamesConstructor.cpp",
|
||||
"Runtime/Intl/DisplayNamesPrototype.cpp",
|
||||
"Runtime/Intl/DurationFormat.cpp",
|
||||
"Runtime/Intl/DurationFormatConstructor.cpp",
|
||||
"Runtime/Intl/DurationFormatPrototype.cpp",
|
||||
"Runtime/Intl/Intl.cpp",
|
||||
"Runtime/Intl/ListFormat.cpp",
|
||||
"Runtime/Intl/ListFormatConstructor.cpp",
|
||||
"Runtime/Intl/ListFormatPrototype.cpp",
|
||||
"Runtime/Intl/Locale.cpp",
|
||||
"Runtime/Intl/LocaleConstructor.cpp",
|
||||
"Runtime/Intl/LocalePrototype.cpp",
|
||||
"Runtime/Intl/MathematicalValue.cpp",
|
||||
"Runtime/Intl/NumberFormat.cpp",
|
||||
"Runtime/Intl/NumberFormatConstructor.cpp",
|
||||
"Runtime/Intl/NumberFormatFunction.cpp",
|
||||
"Runtime/Intl/NumberFormatPrototype.cpp",
|
||||
"Runtime/Intl/PluralRules.cpp",
|
||||
"Runtime/Intl/PluralRulesConstructor.cpp",
|
||||
"Runtime/Intl/PluralRulesPrototype.cpp",
|
||||
"Runtime/Intl/RelativeTimeFormat.cpp",
|
||||
"Runtime/Intl/RelativeTimeFormatConstructor.cpp",
|
||||
"Runtime/Intl/RelativeTimeFormatPrototype.cpp",
|
||||
"Runtime/Intl/SegmentIterator.cpp",
|
||||
"Runtime/Intl/SegmentIteratorPrototype.cpp",
|
||||
"Runtime/Intl/Segmenter.cpp",
|
||||
"Runtime/Intl/SegmenterConstructor.cpp",
|
||||
"Runtime/Intl/SegmenterPrototype.cpp",
|
||||
"Runtime/Intl/Segments.cpp",
|
||||
"Runtime/Intl/SegmentsPrototype.cpp",
|
||||
"Runtime/Intrinsics.cpp",
|
||||
"Runtime/Iterator.cpp",
|
||||
"Runtime/IteratorConstructor.cpp",
|
||||
"Runtime/IteratorHelper.cpp",
|
||||
"Runtime/IteratorHelperPrototype.cpp",
|
||||
"Runtime/IteratorPrototype.cpp",
|
||||
"Runtime/JSONObject.cpp",
|
||||
"Runtime/JobCallback.cpp",
|
||||
"Runtime/KeyedCollections.cpp",
|
||||
"Runtime/Map.cpp",
|
||||
"Runtime/MapConstructor.cpp",
|
||||
"Runtime/MapIterator.cpp",
|
||||
"Runtime/MapIteratorPrototype.cpp",
|
||||
"Runtime/MapPrototype.cpp",
|
||||
"Runtime/MathObject.cpp",
|
||||
"Runtime/ModuleEnvironment.cpp",
|
||||
"Runtime/ModuleNamespaceObject.cpp",
|
||||
"Runtime/NativeFunction.cpp",
|
||||
"Runtime/NumberConstructor.cpp",
|
||||
"Runtime/NumberObject.cpp",
|
||||
"Runtime/NumberPrototype.cpp",
|
||||
"Runtime/Object.cpp",
|
||||
"Runtime/ObjectConstructor.cpp",
|
||||
"Runtime/ObjectEnvironment.cpp",
|
||||
"Runtime/ObjectPrototype.cpp",
|
||||
"Runtime/PrimitiveString.cpp",
|
||||
"Runtime/PrivateEnvironment.cpp",
|
||||
"Runtime/Promise.cpp",
|
||||
"Runtime/PromiseCapability.cpp",
|
||||
"Runtime/PromiseConstructor.cpp",
|
||||
"Runtime/PromiseJobs.cpp",
|
||||
"Runtime/PromisePrototype.cpp",
|
||||
"Runtime/PromiseReaction.cpp",
|
||||
"Runtime/PromiseResolvingElementFunctions.cpp",
|
||||
"Runtime/PromiseResolvingFunction.cpp",
|
||||
"Runtime/PropertyDescriptor.cpp",
|
||||
"Runtime/ProxyConstructor.cpp",
|
||||
"Runtime/ProxyObject.cpp",
|
||||
"Runtime/Realm.cpp",
|
||||
"Runtime/Reference.cpp",
|
||||
"Runtime/ReflectObject.cpp",
|
||||
"Runtime/RegExpConstructor.cpp",
|
||||
"Runtime/RegExpLegacyStaticProperties.cpp",
|
||||
"Runtime/RegExpObject.cpp",
|
||||
"Runtime/RegExpPrototype.cpp",
|
||||
"Runtime/RegExpStringIterator.cpp",
|
||||
"Runtime/RegExpStringIteratorPrototype.cpp",
|
||||
"Runtime/Set.cpp",
|
||||
"Runtime/SetConstructor.cpp",
|
||||
"Runtime/SetIterator.cpp",
|
||||
"Runtime/SetIteratorPrototype.cpp",
|
||||
"Runtime/SetPrototype.cpp",
|
||||
"Runtime/Shape.cpp",
|
||||
"Runtime/SharedArrayBufferConstructor.cpp",
|
||||
"Runtime/SharedArrayBufferPrototype.cpp",
|
||||
"Runtime/StringConstructor.cpp",
|
||||
"Runtime/StringIterator.cpp",
|
||||
"Runtime/StringIteratorPrototype.cpp",
|
||||
"Runtime/StringObject.cpp",
|
||||
"Runtime/StringPrototype.cpp",
|
||||
"Runtime/SuppressedError.cpp",
|
||||
"Runtime/SuppressedErrorConstructor.cpp",
|
||||
"Runtime/SuppressedErrorPrototype.cpp",
|
||||
"Runtime/Symbol.cpp",
|
||||
"Runtime/SymbolConstructor.cpp",
|
||||
"Runtime/SymbolObject.cpp",
|
||||
"Runtime/SymbolPrototype.cpp",
|
||||
"Runtime/Temporal/AbstractOperations.cpp",
|
||||
"Runtime/Temporal/Calendar.cpp",
|
||||
"Runtime/Temporal/CalendarConstructor.cpp",
|
||||
"Runtime/Temporal/CalendarPrototype.cpp",
|
||||
"Runtime/Temporal/Duration.cpp",
|
||||
"Runtime/Temporal/DurationConstructor.cpp",
|
||||
"Runtime/Temporal/DurationPrototype.cpp",
|
||||
"Runtime/Temporal/ISO8601.cpp",
|
||||
"Runtime/Temporal/Instant.cpp",
|
||||
"Runtime/Temporal/InstantConstructor.cpp",
|
||||
"Runtime/Temporal/InstantPrototype.cpp",
|
||||
"Runtime/Temporal/Now.cpp",
|
||||
"Runtime/Temporal/PlainDate.cpp",
|
||||
"Runtime/Temporal/PlainDateConstructor.cpp",
|
||||
"Runtime/Temporal/PlainDatePrototype.cpp",
|
||||
"Runtime/Temporal/PlainDateTime.cpp",
|
||||
"Runtime/Temporal/PlainDateTimeConstructor.cpp",
|
||||
"Runtime/Temporal/PlainDateTimePrototype.cpp",
|
||||
"Runtime/Temporal/PlainMonthDay.cpp",
|
||||
"Runtime/Temporal/PlainMonthDayConstructor.cpp",
|
||||
"Runtime/Temporal/PlainMonthDayPrototype.cpp",
|
||||
"Runtime/Temporal/PlainTime.cpp",
|
||||
"Runtime/Temporal/PlainTimeConstructor.cpp",
|
||||
"Runtime/Temporal/PlainTimePrototype.cpp",
|
||||
"Runtime/Temporal/PlainYearMonth.cpp",
|
||||
"Runtime/Temporal/PlainYearMonthConstructor.cpp",
|
||||
"Runtime/Temporal/PlainYearMonthPrototype.cpp",
|
||||
"Runtime/Temporal/Temporal.cpp",
|
||||
"Runtime/Temporal/TimeZone.cpp",
|
||||
"Runtime/Temporal/TimeZoneConstructor.cpp",
|
||||
"Runtime/Temporal/TimeZoneMethods.cpp",
|
||||
"Runtime/Temporal/TimeZonePrototype.cpp",
|
||||
"Runtime/Temporal/ZonedDateTime.cpp",
|
||||
"Runtime/Temporal/ZonedDateTimeConstructor.cpp",
|
||||
"Runtime/Temporal/ZonedDateTimePrototype.cpp",
|
||||
"Runtime/TypedArray.cpp",
|
||||
"Runtime/TypedArrayConstructor.cpp",
|
||||
"Runtime/TypedArrayPrototype.cpp",
|
||||
"Runtime/Uint8Array.cpp",
|
||||
"Runtime/Utf16String.cpp",
|
||||
"Runtime/VM.cpp",
|
||||
"Runtime/Value.cpp",
|
||||
"Runtime/WeakContainer.cpp",
|
||||
"Runtime/WeakMap.cpp",
|
||||
"Runtime/WeakMapConstructor.cpp",
|
||||
"Runtime/WeakMapPrototype.cpp",
|
||||
"Runtime/WeakRef.cpp",
|
||||
"Runtime/WeakRefConstructor.cpp",
|
||||
"Runtime/WeakRefPrototype.cpp",
|
||||
"Runtime/WeakSet.cpp",
|
||||
"Runtime/WeakSetConstructor.cpp",
|
||||
"Runtime/WeakSetPrototype.cpp",
|
||||
"Runtime/WrapForValidIteratorPrototype.cpp",
|
||||
"Runtime/WrappedFunction.cpp",
|
||||
"Script.cpp",
|
||||
"SourceCode.cpp",
|
||||
"SourceTextModule.cpp",
|
||||
"SyntaxHighlighter.cpp",
|
||||
"SyntheticModule.cpp",
|
||||
"Token.cpp",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
shared_library("LibLine") {
|
||||
output_name = "line"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
sources = [
|
||||
"Editor.cpp",
|
||||
"InternalFunctions.cpp",
|
||||
"KeyCallbackMachine.cpp",
|
||||
"SuggestionManager.cpp",
|
||||
"XtermSuggestionDisplay.cpp",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
static_library("LibMain") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Main.cpp",
|
||||
"Main.h",
|
||||
]
|
||||
deps = [ "//AK" ]
|
||||
output_name = "main"
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
import("//Meta/gn/build/libs/ffmpeg/enable.gni")
|
||||
import("//Meta/gn/build/libs/pulse/enable.gni")
|
||||
|
||||
shared_library("LibMedia") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Audio/PlaybackStream.cpp",
|
||||
"Audio/SampleFormats.cpp",
|
||||
"Color/ColorConverter.cpp",
|
||||
"Color/ColorPrimaries.cpp",
|
||||
"Color/TransferCharacteristics.cpp",
|
||||
"Containers/Matroska/MatroskaDemuxer.cpp",
|
||||
"Containers/Matroska/Reader.cpp",
|
||||
"PlaybackManager.cpp",
|
||||
"PlaybackStates/PlaybackStateHandler.cpp",
|
||||
"Providers/AudioDataProvider.cpp",
|
||||
"Providers/GenericTimeProvider.cpp",
|
||||
"Providers/VideoDataProvider.cpp",
|
||||
"Sinks/AudioMixingSink.cpp",
|
||||
"Sinks/DisplayingVideoSink.cpp",
|
||||
"VideoFrame.cpp",
|
||||
]
|
||||
if (enable_pulseaudio) {
|
||||
sources += [
|
||||
"Audio/PlaybackStreamPulseAudio.cpp",
|
||||
"Audio/PulseAudioWrappers.cpp",
|
||||
]
|
||||
}
|
||||
if (enable_ffmpeg) {
|
||||
sources += [
|
||||
"FFmpeg/FFmpegAudioConverter.cpp",
|
||||
"FFmpeg/FFmpegAudioDecoder.cpp",
|
||||
"FFmpeg/FFmpegHelpers.cpp",
|
||||
"FFmpeg/FFmpegVideoDecoder.cpp",
|
||||
]
|
||||
} else {
|
||||
sources += [ "FFmpeg/FFmpegVideoDecoderStub.cpp" ]
|
||||
}
|
||||
if (current_os == "mac") {
|
||||
sources += [ "Audio/PlaybackStreamAudioUnit.cpp" ]
|
||||
frameworks = [
|
||||
"AudioToolbox.framework",
|
||||
"AudioUnit.framework",
|
||||
]
|
||||
}
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/ffmpeg",
|
||||
"//Meta/gn/build/libs/pulse",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibGfx",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
"//Userland/Libraries/LibThreading",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
output_name = "media"
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
shared_library("LibRegex") {
|
||||
output_name = "regex"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"RegexByteCode.cpp",
|
||||
"RegexLexer.cpp",
|
||||
"RegexMatcher.cpp",
|
||||
"RegexOptimizer.cpp",
|
||||
"RegexParser.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
import("//Meta/gn/build/compiled_action.gni")
|
||||
|
||||
compiled_action("RequestClientEndpoint") {
|
||||
tool = "//Meta/Lagom/Tools/CodeGenerators/IPCCompiler"
|
||||
inputs = [ "//Userland/Services/RequestServer/RequestClient.ipc" ]
|
||||
outputs = [ "$root_gen_dir/RequestServer/RequestClientEndpoint.h" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
compiled_action("RequestServerEndpoint") {
|
||||
tool = "//Meta/Lagom/Tools/CodeGenerators/IPCCompiler"
|
||||
inputs = [ "//Userland/Services/RequestServer/RequestServer.ipc" ]
|
||||
outputs = [ "$root_gen_dir/RequestServer/RequestServerEndpoint.h" ]
|
||||
args = [
|
||||
rebase_path(inputs[0], root_build_dir),
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
]
|
||||
}
|
||||
|
||||
shared_library("LibRequests") {
|
||||
output_name = "requests"
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"//Userland/Services",
|
||||
]
|
||||
deps = [
|
||||
":RequestClientEndpoint",
|
||||
":RequestServerEndpoint",
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibIPC",
|
||||
]
|
||||
sources = [
|
||||
"Request.cpp",
|
||||
"RequestClient.cpp",
|
||||
"WebSocket.cpp",
|
||||
]
|
||||
sources += get_target_outputs(":RequestClientEndpoint") +
|
||||
get_target_outputs(":RequestServerEndpoint")
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
shared_library("LibSyntax") {
|
||||
output_name = "syntax"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Document.cpp",
|
||||
"Highlighter.cpp",
|
||||
"Language.cpp",
|
||||
]
|
||||
deps = [ "//AK" ]
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
shared_library("LibTLS") {
|
||||
output_name = "tls"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
cflags_cc = [ "-Wvla" ]
|
||||
sources = [
|
||||
"Certificate.cpp",
|
||||
"Handshake.cpp",
|
||||
"HandshakeCertificate.cpp",
|
||||
"HandshakeClient.cpp",
|
||||
"HandshakeServer.cpp",
|
||||
"Record.cpp",
|
||||
"Socket.cpp",
|
||||
"TLSv12.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibCrypto",
|
||||
"//Userland/Libraries/LibFileSystem",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
shared_library("LibTest") {
|
||||
output_name = "test"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"CrashTest.cpp",
|
||||
"CrashTest.h",
|
||||
"Macros.h",
|
||||
"Randomized/Chunk.h",
|
||||
"Randomized/Generator.h",
|
||||
"Randomized/RandomRun.h",
|
||||
"Randomized/RandomnessSource.h",
|
||||
"Randomized/Shrink.h",
|
||||
"Randomized/ShrinkCommand.h",
|
||||
"Results.h",
|
||||
"TestCase.h",
|
||||
"TestRunner.h",
|
||||
"TestRunnerUtil.h",
|
||||
"TestSuite.cpp",
|
||||
"TestSuite.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
]
|
||||
|
||||
output_name = "test"
|
||||
|
||||
testonly = true
|
||||
}
|
||||
|
||||
source_set("test_main") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [ "TestMain.cpp" ]
|
||||
deps = [ "//AK" ]
|
||||
public_deps = [ ":LibTest" ]
|
||||
testonly = true
|
||||
}
|
||||
|
||||
source_set("test_js_main") {
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"JavaScriptTestRunner.h",
|
||||
"JavaScriptTestRunnerMain.cpp",
|
||||
]
|
||||
deps = [ "//AK" ]
|
||||
public_deps = [ ":LibTest" ]
|
||||
testonly = true
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
import("//Meta/gn/build/compiled_action.gni")
|
||||
|
||||
compiled_action("generate_encoding_indexes") {
|
||||
tool =
|
||||
"//Meta/Lagom/Tools/CodeGenerators/LibTextCodec:GenerateEncodingIndexes"
|
||||
|
||||
outputs = [
|
||||
"$target_gen_dir/LookupTables.h",
|
||||
"$target_gen_dir/LookupTables.cpp",
|
||||
]
|
||||
|
||||
args = [
|
||||
"-h",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
"-c",
|
||||
rebase_path(outputs[1], root_build_dir),
|
||||
"-j",
|
||||
rebase_path("//Userland/Libraries/LibTextCodec/indexes.json"),
|
||||
]
|
||||
}
|
||||
|
||||
shared_library("LibTextCodec") {
|
||||
output_name = "textcodec"
|
||||
include_dirs = [
|
||||
"//Userland/Libraries",
|
||||
"$target_gen_dir/..",
|
||||
]
|
||||
deps = [
|
||||
":generate_encoding_indexes",
|
||||
"//AK",
|
||||
]
|
||||
sources = [
|
||||
"Decoder.cpp",
|
||||
"Encoder.cpp",
|
||||
]
|
||||
sources += get_target_outputs(":generate_encoding_indexes")
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
shared_library("LibThreading") {
|
||||
output_name = "threading"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"BackgroundAction.cpp",
|
||||
"Thread.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
shared_library("LibURL") {
|
||||
output_name = "url"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"Forward.h",
|
||||
"Host.h",
|
||||
"Origin.cpp",
|
||||
"Origin.h",
|
||||
"Parser.cpp",
|
||||
"Parser.h",
|
||||
"URL.cpp",
|
||||
"URL.h",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibTextCodec",
|
||||
"//Userland/Libraries/LibUnicode",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
source_set("LibUnicode") {
|
||||
output_name = "unicode"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"CharacterTypes.cpp",
|
||||
"Collator.cpp",
|
||||
"CurrencyCode.cpp",
|
||||
"DateTimeFormat.cpp",
|
||||
"DisplayNames.cpp",
|
||||
"DurationFormat.cpp",
|
||||
"ICU.cpp",
|
||||
"IDNA.cpp",
|
||||
"ListFormat.cpp",
|
||||
"Locale.cpp",
|
||||
"Normalize.cpp",
|
||||
"NumberFormat.cpp",
|
||||
"PluralRules.cpp",
|
||||
"RelativeTimeFormat.cpp",
|
||||
"Segmenter.cpp",
|
||||
"String.cpp",
|
||||
"TimeZone.cpp",
|
||||
"UnicodeKeywords.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Meta/gn/build/libs/icu",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
declare_args() {
|
||||
# If true, download wasm spec tests from github.
|
||||
# Tests will be used by test-wasm to verify spec compliance
|
||||
include_wasm_spec_tests = false
|
||||
}
|
||||
|
||||
if (include_wasm_spec_tests) {
|
||||
# FIXME: Port wasm_spec_tests.cmake
|
||||
}
|
||||
|
||||
shared_library("LibWasm") {
|
||||
output_name = "wasm"
|
||||
include_dirs = [ "//Userland/Libraries" ]
|
||||
sources = [
|
||||
"AbstractMachine/AbstractMachine.cpp",
|
||||
"AbstractMachine/BytecodeInterpreter.cpp",
|
||||
"AbstractMachine/Configuration.cpp",
|
||||
"AbstractMachine/Validator.cpp",
|
||||
"Parser/Parser.cpp",
|
||||
"Printer/Printer.cpp",
|
||||
"WASI/Wasi.cpp",
|
||||
]
|
||||
deps = [
|
||||
"//AK",
|
||||
"//Userland/Libraries/LibCore",
|
||||
"//Userland/Libraries/LibJS",
|
||||
]
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
source_set("ARIA") {
|
||||
configs += [ "//Userland/Libraries/LibWeb:configs" ]
|
||||
deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
|
||||
sources = [
|
||||
"ARIAMixin.cpp",
|
||||
"ARIAMixin.h",
|
||||
"AriaData.cpp",
|
||||
"AriaData.h",
|
||||
"RoleType.cpp",
|
||||
"RoleType.h",
|
||||
"Roles.cpp",
|
||||
"Roles.h",
|
||||
"StateAndProperties.cpp",
|
||||
"StateAndProperties.h",
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue