Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Foundation layer:**
- **llcommon** - Foundation: threading (`LLThread`, `LL::ThreadPool`, `LL::WorkQueue`), logging, string utils, timers, event system (`LLEventPump`), coroutines (`LLCoros`), LLSD (universal data type), `LLSingleton` base class, regular expressions (`ALRegex`, over RE2: linear time and no lookaround, so the script editor's find and vim search keep Boost.Regex for their Perl syntax)
- **llmath** - Math primitives: vectors, matrices, quaternions, bounding boxes. Also includes mikktspace tangent generation and meshoptimizer
- **llmath** - Math primitives: vectors, matrices, quaternions, bounding boxes. Also includes meshoptimizer

**Data/IO layer:**
- **llfilesystem** - Virtual filesystem and asset cache
Expand Down
4 changes: 3 additions & 1 deletion doc/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ctest --test-dir build-<OS>-<preset> --output-on-failure -LE manual
- **In another order:** `--order rand --rng-seed <n>`. Cases run in declared order by default.
- **Every case in a process of its own:** configure with `-DAL_TEST_PER_CASE=ON`. Each case is then its own entry, found when CTest runs. It is for chasing a case that passes alone and fails with the others.
- **The log:** `LOGTEST=DEBUG` logs everything at that level as it happens. `LOGFAIL=DEBUG` keeps it and prints a failing case's log only. `--al-log` also writes the log to `<binary>.<pid>.log`.
- **Real mesh assets:** llmath's hidden `[corpus]` case and its corpus benchmark read the meshes of a viewer's cache from the directory `AL_MESH_CORPUS_DIR` names, a seeded sample of them (`indra/llmath/tests/almeshcorpus.h` says how to size and split it), skip where it is not set, and fail where it names no directory or the directory's walk meets an error: `llmath_tests "[corpus]"`. The assets are other people's, so nothing from them goes into the tree.

## Writing a test

Expand Down Expand Up @@ -60,6 +61,7 @@ Everything a test file defines goes in an anonymous namespace. A test binary is
- `UIImageProbe` (`llrender/lluiimage.h`);
- `VertexBufferProbe` (`llrender/llfonttextcache.h`);
- `RenderProbe` (`llrender/llrender.h`);
- `VolumeProbe` (`llmath/llvolume.h`);
- `TextViewProbe` (`llui/text/altextview.h` and `altextruler.h`);
- `alincludesearch_data` (`alscript/preprocessor/alincludesearch.h`).
- **Internal is not enough for LL's name-keyed registries.** `LLSingleton`, `LLInstanceTracker` and `LLThreadLocalSingletonPointer` key on `typeid(T).name()`, which is `(anonymous namespace)::X` for every anonymous `X`. A type used with one of them needs a name unique across the tree.
Expand Down Expand Up @@ -88,7 +90,7 @@ The **state guard** compares a set of process facts after every case with what t
- **An `LL_ERRS`** throws `ll_test::FatalError` in a test, so `REQUIRE_THROWS_AS(..., ll_test::FatalError)` checks one.
- **A child process of the test's own making:** register it with `AL_TEST_HELPER(name)`, and launch the binary with `ll_test::Helper::argument(name)`. The main then runs only that helper.
- **The running case's name:** `ll_test::currentTestName()`.
- **Built with ThreadSanitizer:** `ll_test::THREAD_SANITIZER` (`altestsanitizer.h`). Its own call stack holds `THREAD_SANITIZER_FRAMES` frames, past which a process falls over with no report, so a case that recurses deeper on purpose is passed over under it.
- **Built with ThreadSanitizer:** `ll_test::THREAD_SANITIZER` (`altestsanitizer.h`). Its own call stack holds `THREAD_SANITIZER_FRAMES` frames, past which a process falls over with no report, so a case that recurses deeper on purpose is passed over under it. `ll_test::SANITIZER_ALLOCATOR` says `operator new` is AddressSanitizer's or ThreadSanitizer's, which ends the process on a size it cannot serve where the standard's throws `std::bad_alloc`, so a case that checks for the throw is passed over under them.

## Binaries

Expand Down
1 change: 0 additions & 1 deletion indra/cmake/Dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ al_import(ll::glext HEADER GL/glcorearb.h)
al_import(ll::pocketfft HEADER pocketfft_hdronly.h DEFINES POCKETFFT_NO_MULTITHREADING)
al_import(ll::tinygltf HEADER tiny_gltf.h)
al_import(ll::vhacd HEADER VHACD.h)
al_import(ll::mikktspace INCLUDE ${INDRA_SOURCE_DIR}/externals/mikktspace/)

# Per platform, and per option. The target is empty where the condition is
# false, so the option gates sources at the consumer and nothing else.
Expand Down
7 changes: 0 additions & 7 deletions indra/cmake/attribution.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,6 @@
},

"extras": [
{
"name": "mikktspace",
"holder": "Copyright (C) 2011 by Morten S. Mikkelsen; Copyright (C) 2022 Blender Authors",
"license": "Apache-2.0",
"homepage": "https://github.com/blender/blender/tree/main/intern/mikktspace",
"text": "externals/mikktspace/LICENSE.txt"
},
{
"name": "three.js",
"holder": "Copyright (c) 2010-2021 three.js authors",
Expand Down
1 change: 0 additions & 1 deletion indra/externals/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@
This directory contains vendored external resources which are unsuited for vcpkg or upstream are no longer active

* js - ThreeJS and JPEGEncoder
* mikktspace - Blender Mikktspace - code relatively static and unchanging
208 changes: 0 additions & 208 deletions indra/externals/mikktspace/LICENSE.txt

This file was deleted.

Loading
Loading