Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
2b3de4d
adding in code for testing weyl algebras, also CLAUDE.md file for eng…
mikestillman Feb 21, 2026
42a92cb
add RingElem: lightweight value-semantics wrapper for unit tests
mikestillman Feb 22, 2026
478ce0c
switch RingElem class to use mRing, mValue as member fields, and usin…
mikestillman Feb 23, 2026
79c0eef
add idealFromStrings, computeGB, simpleQuotientRing utilities and a s…
mikestillman Feb 23, 2026
a4d3cc9
EliminationTemplates v1
timduff35 May 1, 2026
c1c7fea
merge in main
timduff35 May 1, 2026
5195c5d
some requested fixes
timduff35 May 1, 2026
7da035d
more fixes
timduff35 May 1, 2026
66e78d0
more fixes
timduff35 May 1, 2026
8a9dcd1
documentation + fixes
timduff35 May 1, 2026
b7898f8
documentation + fixes
timduff35 May 1, 2026
babece6
update list of distributed packgaes
timduff35 May 1, 2026
d54306e
move files, fix warnings
timduff35 May 1, 2026
1af67b2
typo
timduff35 May 1, 2026
d84f473
Minor addition to util functions
mikestillman May 17, 2026
63aeaa3
First commit of a file that Mike gave us
dswinarski May 17, 2026
bf80699
Changed comments to use doxygen style
haackett May 17, 2026
22b9779
updating sagbi.hpp doxygen
timduff35 May 17, 2026
74579de
merge michael
timduff35 May 17, 2026
6a699f6
Merge branch 'unit-testing' of github.com:mikestillman/M2
HansLjy May 17, 2026
5e44ec2
Merge pull request #12 from timduff35/mburr-group3
MichaelABurr May 18, 2026
cb44e47
Merge pull request #8 from dswinarski/Group2
MichaelABurr May 18, 2026
56fe2c1
Merge pull request #10 from haackett/Group4
MichaelABurr May 18, 2026
d42105b
Merge branch 'Group2' of https://github.com/MichaelABurr/M2 into mbur…
timduff35 May 18, 2026
c98799e
Moving files in e directory. Moved schur2.hpp and schur2.cpp into Schur/
dswinarski May 19, 2026
766650f
mike clusters
andrew-tawfeek May 19, 2026
8866857
Revert "mike clusters"
MichaelABurr May 19, 2026
ee41aa3
Moving all three pairs of schur files from e to e/Schur/
dswinarski May 19, 2026
86b1c07
moved arings files into basic-rings directory
ddale27 May 19, 2026
ae612ba
add rings directory
timduff35 May 19, 2026
2b508ce
Merge branch 'Subdirectories' of https://github.com/MichaelABurr/M2 i…
timduff35 May 19, 2026
ab6bcd5
changed names like zz to ZZ, etc.
ddale27 May 19, 2026
8f8f89d
Merge pull request #24 from ddale27/Subdirectories
MichaelABurr May 20, 2026
f563fa9
merge in subdirectories
timduff35 May 20, 2026
5f79a7b
Deleting unintended extra copies of Schur files in the e directory
dswinarski May 20, 2026
3dcf4b2
Remove incorrectly placed CMakeLists.txt
dswinarski May 20, 2026
4f761f4
Merge pull request #25 from timduff35/mburr-group3
MichaelABurr May 20, 2026
0b44a04
Merge branch 'Subdirectories' into subdirectories
MichaelABurr May 20, 2026
3ef10cc
Merge pull request #21 from dswinarski/subdirectories
MichaelABurr May 20, 2026
c1070eb
fix rings and schur rings
timduff35 May 20, 2026
cf9f857
merge in michael
timduff35 May 20, 2026
c44ad36
add directories to autotools script
timduff35 May 20, 2026
eadb914
missed two paths
timduff35 May 20, 2026
a755e1f
Move mutable matrix files into basic-mutable-matrices and mutable-mat…
ryan-a-anderson May 20, 2026
05f17ec
remove duplicate CMakeLists entries
timduff35 May 20, 2026
944daeb
Move matrix helpers into matrices directory
andrew-tawfeek May 20, 2026
412bbd5
fix link in interface.dd
timduff35 May 20, 2026
086c262
Group unused engine notes
andrew-tawfeek May 20, 2026
4c5f86c
Refactor overflow-test
haackett May 20, 2026
7a4502b
Use FLINT for sqrt(CC) and friends
d-torrance May 19, 2026
0f13b19
Remove now-unused complex.c and complex.h
d-torrance May 19, 2026
28a631f
Update EllipticIntegrals test with new sqrt(CC) behavior
d-torrance May 19, 2026
59b2d3b
Removing points.{cpp,hpp}
andrew-tawfeek May 20, 2026
5363bab
Merge pull request #31 from d-torrance/sqrt-cc
MichaelABurr May 20, 2026
28178b1
remove unused godboltTest
haackett May 20, 2026
7e447da
Merge pull request #27 from timduff35/mburr-group3
MichaelABurr May 20, 2026
d32d4de
moved Groebner basis calculations to groebner-computations directory
ddale27 May 20, 2026
9d60f15
fix captilization
timduff35 May 20, 2026
501086f
Merge pull request #30 from haackett/overflow-tests
MichaelABurr May 20, 2026
580bf5e
Merge pull request #32 from timduff35/mburr-group3
MichaelABurr May 20, 2026
a7a83d3
Merge remote-tracking branch 'burr/Subdirectories' into Subdirectories
ddale27 May 20, 2026
1938a18
more capitalization
timduff35 May 20, 2026
82d3fe3
fix CMakeLists capital issue
HansLjy May 20, 2026
f19b1cc
Finished merge
MichaelABurr May 20, 2026
f9f38f0
Merge branch 'andrew-tawfeek-matrix-only-clean' into Subdirectories
MichaelABurr May 20, 2026
0e9b9e8
fix d level makefiles
timduff35 May 20, 2026
ccc742d
Merge pull request #33 from timduff35/mburr-group3
MichaelABurr May 20, 2026
51929de
Merged
MichaelABurr May 20, 2026
77aa214
Merge branch 'Subdirectories' of github.com:MichaelABurr/M2 into Subd…
MichaelABurr May 20, 2026
bb65813
Merge pull request #34 from timduff35/mburr-group3
MichaelABurr May 20, 2026
594e153
fixed broken Makefile.files.in file and broken include statement
ddale27 May 20, 2026
fc7b948
Merged
MichaelABurr May 20, 2026
78d52dd
Fix engine build after Subdirectories update
andrew-tawfeek May 20, 2026
a7c440e
fixed broken Makefile.files.in file and over-aggressive sed changes i…
ddale27 May 20, 2026
8a667ff
move monomial stuff to e/monomial
HansLjy May 20, 2026
0494c1e
Fixed Makefile.files for new paths
MichaelABurr May 20, 2026
8b414d6
move schorder, freemode to free-modules
local-ring May 20, 2026
4479288
rename schorder to schreyer-orders
local-ring May 20, 2026
e2b04a1
small fix in readme.md
local-ring May 20, 2026
4c66556
Merge pull request #36 from andrew-tawfeek/matrix-only-clean
MichaelABurr May 20, 2026
bcf0ca8
add new folders
local-ring May 20, 2026
ba4e0cb
stash pop change to rebase
local-ring May 20, 2026
fb93361
fixes some odd behavior in the poly parser
haackett May 20, 2026
0f2eea6
Merging
MichaelABurr May 20, 2026
bc83d29
Merge remote-tracking branch 'burr/Subdirectories' into Subdirectories
ddale27 May 20, 2026
c05e3c4
fix autotool build issue
HansLjy May 20, 2026
607f969
Moving res-* to resolutions/
dswinarski May 20, 2026
e2d53c6
Merge remote-tracking branch 'refs/remotes/origin/Subdirectories' int…
dswinarski May 20, 2026
63d15e0
fixed broken Makefile.files.in file
ddale27 May 20, 2026
d39d524
Merged
MichaelABurr May 20, 2026
5e8cf12
Merge branch 'local-ring-Subdirectories' into Subdirectories
MichaelABurr May 20, 2026
cf00f03
Merge branch 'Subdirectories' into subdirectory
MichaelABurr May 20, 2026
eb207c4
Merge pull request #43 from HansLjy/subdirectory
MichaelABurr May 20, 2026
7b8f3eb
Merge remote-tracking branch 'burr/Subdirectories' into Subdirectories
ddale27 May 20, 2026
2828424
Merge remote-tracking branch 'burr/Subdirectories' into Subdirectories
ddale27 May 20, 2026
df9eaec
fixed compilation issues with autotools
ddale27 May 21, 2026
e046dcb
Fixed references
MichaelABurr May 21, 2026
3181be2
Merge pull request #40 from haackett/poly-parsing
MichaelABurr May 21, 2026
2b53d49
Merge branch 'Subdirectories' of github.com:ddale27/M2 into ddale27-S…
MichaelABurr May 21, 2026
7b73375
Merge branch 'ddale27-Subdirectories' into Subdirectories
MichaelABurr May 21, 2026
b9b31a5
Merge branch 'Subdirectories' of github.com:dswinarski/M2 into dswina…
MichaelABurr May 21, 2026
949f90f
Merge branch 'dswinarski-Subdirectories' into Subdirectories
MichaelABurr May 21, 2026
ad91285
Fixed missing references
MichaelABurr May 21, 2026
cf65d7e
remove print call
haackett May 21, 2026
90c0fab
Merge pull request #44 from haackett/poly-parsing
MichaelABurr May 21, 2026
733355b
move schreyer resolutions
timduff35 May 21, 2026
a56ffff
monomial -> monomials
timduff35 May 21, 2026
4767f07
Restructure engine file layout
andrew-tawfeek May 21, 2026
565c3d3
Merge pull request #45 from andrew-tawfeek/matrix-only-clean
MichaelABurr May 21, 2026
f9a86e2
Fix matrix header dependency path
andrew-tawfeek May 21, 2026
4b6b730
Restructure engine file layout
andrew-tawfeek May 21, 2026
80ae380
fix pluralization in schreyer-resolutions/ and monomials/
timduff35 May 21, 2026
0182f8d
Restructure engine file layout
andrew-tawfeek May 21, 2026
9eff6ee
Merged
MichaelABurr May 21, 2026
7bcd079
Merge branch 'timduff35-mburr-group3' into Subdirectories
MichaelABurr May 21, 2026
cd4f6bf
Merged
MichaelABurr May 21, 2026
961d7a0
Merge branch 'andrew-tawfeek-matrix-only-clean' into Subdirectories
MichaelABurr May 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
326 changes: 326 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,326 @@
# Macaulay2 Engine Development Guide

## Project Overview

Macaulay2 is a software system for algebraic geometry research. This guide focuses on the
C++ engine in `M2/Macaulay2/e/`, which is the computational core.

## Repository Structure

```
M2/ Top-level build directory
CMakeLists.txt CMake entry point (requires 3.24+, C++17)
configure.ac Autotools configuration
Macaulay2/
e/ Engine (C++ computational core, ~500 source files)
CMakeLists.txt Builds M2-engine static library and M2-unit-tests
Makefile.in Autotools build for engine
unit-tests/ GoogleTest-based unit tests
Makefile.in Autotools build for unit tests
Makefile.files List of test source files (shared by autotools)
interface/ Public C/C++ API (ring, matrix, groebner, etc.)
f4/ Faugere F4 algorithm
gb-f4/ GB F4 computation interface
NCAlgebras/ Non-commutative algebra support
schreyer-resolution/ Schreyer resolution (F4-style linear algebra)
bibasis/ Boolean Involutive Groebner Bases
d/ Interpreter
m2/ M2 language libraries
packages/ User packages
submodules/ Git submodules (googletest, flint, bdwgc, etc.)
cmake/ CMake modules (check-libraries, build-libraries, etc.)
libraries/ External library sources
```

## Engine Unit Tests

### Location and Framework

Tests are in `M2/Macaulay2/e/unit-tests/` using **GoogleTest** (gtest).

### Key Files

- `testMain.cpp` - Test entry point; calls `IM2_initialize()` then `RUN_ALL_TESTS()`
- `M2-cpp-replacement.cpp` - Stub for `system_interrupted()` (avoids linking interpreter)
- `ARingTest.hpp` - Templated test helpers for arithmetic ring operations (negate, add,
subtract, multiply, divide, reciprocal, power, axioms, coercions)
- `RingTest.hpp` - Test helpers for Ring interface
- `DMatTest.hpp` - Test helpers for dense matrices
- `RingElem.hpp/cpp` - Lightweight value-semantics wrapper for ring elements (see below)
- `util-polyring-creation.hpp/cpp` - Helpers for creating rings in tests:
- `simplePolynomialRing(p, names)` - polynomial ring over ZZ/p (or QQ if p=0)
- `simpleWeylAlgebra(p, names, comms, derivs)` - Weyl algebra
- `degreeRing(n)` - degree ring with n variables

### Existing Test Files

| Test File | What It Tests |
|-----------|---------------|
| `ARingZZTest.cpp` | Integers (flint) |
| `ARingZZpTest.cpp` | Z/p (multiple implementations) |
| `ARingQQFlintTest.cpp` | Rationals (flint) |
| `ARingQQGmpTest.cpp` | Rationals (GMP) |
| `ARingRRTest.cpp` | Machine reals |
| `ARingCCTest.cpp` | Machine complex |
| `ARingRRRTest.cpp` | Arbitrary-precision reals (MPFR) |
| `ARingRRiTest.cpp` | Arbitrary-precision real intervals (MPFI) |
| `ARingCCCTest.cpp` | Arbitrary-precision complex |
| `RingZZTest.cpp` | ZZ via Ring interface |
| `RingZZpTest.cpp` | ZZp via Ring interface |
| `RingQQTest.cpp` | QQ via Ring interface |
| `RingRRRTest.cpp` | RRR via Ring interface |
| `RingCCCTest.cpp` | CCC via Ring interface |
| `RingTowerTest.cpp` | Tower of polynomial rings |
| `DMatZZpTest.cpp` | Dense matrices over ZZp |
| `MonoidTest.cpp` | Monoid operations |
| `PolyRingTest.cpp` | Polynomial ring operations |
| `NCGroebnerTest.cpp` | Non-commutative Groebner bases |
| `WeylAlgebraTest.cpp` | Weyl algebra creation, commutators, binomial, multinomial, fromString |
| `NewF4Test.cpp` | New F4 algorithm |
| `ResTest.cpp` | Resolutions |
| `MatrixIOTest.cpp` | Matrix I/O |
| `SubsetTest.cpp` | Subset operations |
| `PointArray.cpp` | Point array operations |
| `basics-test.cpp` | Buffer, utility functions |
| `fromStream.cpp` | Stream parsing |

### Excluded Test Files

| Test File | Why Excluded |
|-----------|-------------|
| `ARingGFTest.cpp` | ARingGFFlint API changed: constructor now requires `PolynomialRing` + primitive element (was `(int p, int n)`), and `cardinality()` method is missing |

### Linking Requirements

The unit tests link against the M2 engine library. The only additional file needed is
`M2-cpp-replacement.cpp`, which stubs out `system_interrupted()` — a function normally
supplied by the Macaulay2 executable. `testMain.cpp` calls `IM2_initialize()` to
handle engine initialization (including GC).

### Writing New Tests

Pattern for arithmetic ring tests (standalone `TEST` macros):
```cpp
#include <gtest/gtest.h>
#include "aring-zz-flint.hpp" // or whichever ring
#include "ARingTest.hpp" // templated test helpers

TEST(MyRing, create) {
M2::ARingZZ R;
// ... test ring properties
}

TEST(MyRing, arithmetic) {
M2::ARingZZ R;
testCoercions(R);
testNegate(R, ntrials);
testAdd(R, ntrials);
// ...
}
```

Pattern for tests using polynomial rings (use `util-polyring-creation.hpp`):
```cpp
#include "util-polyring-creation.hpp"
const PolynomialRing* R = simplePolynomialRing(101, {"a", "b", "c"});
const WeylAlgebra* W = simpleWeylAlgebra(0, {"x","y","Dx","Dy"}, {0,1}, {2,3});
```

Pattern for test fixtures with shared setup (use `TEST_F`):
```cpp
class MyTest : public ::testing::Test {
protected:
SomeRing* R = nullptr;
void SetUp() override {
R = /* create ring */;
}
};

TEST_F(MyTest, someTest) {
// R is available here, freshly created for each test
}
```

### Testing Private/Protected Members

Use the friend class pattern. Add `friend class FooTestAccessor;` to the class header,
then define a test accessor in the test file with static forwarding methods:
```cpp
// In the .hpp file:
class Foo {
friend class FooTestAccessor;
// ...
};

// In the test .cpp file:
class FooTestAccessor {
public:
static int privateMethod(const Foo* f, int arg) {
return f->privateMethod(arg);
}
};
```
See `WeylAlgebraTest.cpp` and `weylalg.hpp` for a concrete example.

### RingElem — Lightweight Value Wrapper for Tests

`RingElem` (in `unit-tests/RingElem.hpp`) wraps `const Ring*` + `ring_elem` with
value semantics. Operators return values (not pointers), making test code concise:
```cpp
#include "RingElem.hpp"
auto x = RingElem::var(R, 0);
auto y = RingElem::var(R, 1);
auto one = RingElem::fromInt(R, 1);
EXPECT_EQ(x * y - y * x, one); // value comparison, prints elements on failure

// Parse from string (requires explicit ^ and * in polynomial syntax):
auto f = RingElem::fromString(R, "x^2+3*x*y-1");

// Scalar multiplication:
auto g = x * 3; // RingElem * long
auto h = 3 * x; // long * RingElem
```

Factories: `RingElem::var(R, i)`, `RingElem::fromInt(R, n)`, `RingElem::fromString(R, s)`.
Arithmetic: `+`, `-`, `*`, `/`, unary `-`, `.power(n)`.
Output: `to_string()`, `operator<<` for gtest diagnostics.

**fromString format**: Uses `parseBasicPoly` from `BasicPoly.hpp`. Requires `*` between
factors and `^` for exponents (e.g. `"3*x^2*y-1"`). Note: `to_string()` outputs a
different format (`x2y-1` without `*` or `^`), so round-tripping is not yet supported.

**Naming convention**: Member fields use `m` prefix (e.g., `mRing`, `mValue`).

### RingElement (Legacy Interface)

`RingElement` operators (`*`, `+`, `-`, `/`) return `RingElement*` (pointers), not values.
Prefer `RingElem` for new test code. `RingElement` is still used in the interpreter interface.
```cpp
RingElement *x = new RingElement(W, W->var(0));
RingElement *product = (*x) * (*y); // dereference, then multiply
EXPECT_TRUE(product->is_equal(*expected));
```
`is_equal` checks ring pointer equality first — both elements must come from the same
ring object. Use `IM2_Ring_QQ()` (QQGMP) consistently, not `rawARingQQFlint()`, when
creating rings whose elements will be compared.

### M2_arrayint in Tests

Many engine functions take `M2_arrayint` (a GC-allocated array). Convert from
`std::vector<int>` using:
```cpp
#include "util.hpp"
M2_arrayint arr = stdvector_to_M2_arrayint(std::vector<int>{2, 3, 5});
```

## Building and Running Tests
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part is specific to me. We should fix this, but we can do so after this is merged, I believe.


Build configurations are defined in `M2/BUILD/mike/Makefile`. Existing builds live
under `M2/BUILD/mike/builds.tmp/`.

### CMake Build

The active cmake build directory is:
`M2/BUILD/mike/builds.tmp/cmake-appleclang` (RelWithDebInfo, Ninja)

```sh
# Build unit tests:
ninja -C M2/BUILD/mike/builds.tmp/cmake-appleclang M2-unit-tests

# Run all engine unit tests:
ctest --test-dir M2/BUILD/mike/builds.tmp/cmake-appleclang -R unit-tests

# Run a specific test by name:
ctest --test-dir M2/BUILD/mike/builds.tmp/cmake-appleclang -R "WeylAlgebra" --output-on-failure

# Or run the executable directly:
M2/BUILD/mike/builds.tmp/cmake-appleclang/Macaulay2/e/M2-unit-tests
# With a gtest filter:
M2/BUILD/mike/builds.tmp/cmake-appleclang/Macaulay2/e/M2-unit-tests --gtest_filter="WeylAlgebra*"
```

The CMake build uses `gtest_discover_tests()` with prefix `unit-tests:`.

### Autotools Build

The active autotools build directory is:
`M2/BUILD/mike/builds.tmp/arm64-appleclang`

```sh
# From the autotools build directory, in Macaulay2/e/unit-tests/:
gmake -k check
# Or run the executable directly:
./testMain
```

If `e/unit-tests/Makefile.in` changes, regenerate the build Makefile:
```sh
# From the autotools build root:
./config.status Macaulay2/e/unit-tests/Makefile
```

### Adding a New Test File

1. Add the `.cpp` file to `e/unit-tests/`
2. Add it to `e/CMakeLists.txt` in the `add_executable(M2-unit-tests ...)` section
3. Add it to `e/unit-tests/Makefile.files` in the `UNITTEST_CCFILES` list
4. Build and run tests in **both** cmake and autotools to verify

### Keeping Builds in Sync

The CMake and autotools builds maintain separate lists of test files:
- CMake: `e/CMakeLists.txt` — the `add_executable(M2-unit-tests ...)` block
- Autotools: `e/unit-tests/Makefile.files` — the `UNITTEST_CCFILES` variable

Both should include the same set of test files. Currently 199 tests pass in both builds.

## Engine Dependencies

All of the following are linked to the `M2-engine` target (see `e/CMakeLists.txt`).

### Submodule Dependencies (built as part of engine)
- **memtailor** - Special-purpose memory allocators
- **mathic** - Symbolic algebra data structures
- **mathicgb** - Signature Groebner bases library
- **googletest** - Unit testing framework (for M2-unit-tests only)

### Header-Only Libraries
- **Eigen3** (3.4.0+) - Linear algebra templates

### Libraries (found via pkg-config)
- **FFLAS_FFPACK** (2.4.3+) - Finite field linear algebra routines (needs LAPACK, GIVARO)
- **GIVARO** (4.1.1+) - Prime field and algebraic computations

### Libraries (found via find_package / FindXxx.cmake)
- **GMP** (6.0.0+) - GNU multiprecision arithmetic
- **MPFR** (4.0.1+) - Multiprecision floating-point (needs GMP)
- **MPFI** (1.5.1+) - Multiprecision floating-point intervals (needs GMP, MPFR)
- **FLINT** (3.0.0+) - Fast library for number theory (needs GMP, MPFR)
- **NTL** (10.5.0+) - Number theory library (needs GMP)
- **FACTORY** (4.4.0+) - Polynomial factorization (needs GMP, FLINT, NTL)
- **BDWGC** (7.6.4+) - Boehm-Demers-Weiser garbage collector
- **LAPACK** - Linear algebra (BLAS/LAPACK)
- **MPSOLVE** (3.2.0+) - Multiprecision polynomial solver
- **FROBBY** (0.9.0+) - Computations with monomial ideals
- **NORMALIZ** (3.8.0+) - Discrete convex geometry (needs GMP, Nauty)
Note: READLINE, HISTORY, and GDBM are in the top-level `LIBRARY_LIST` but are only
used by the interpreter (`d/`), not the engine.

### Optional
- **OpenMP** - Parallel processing

## Code Conventions

- C++17 standard (`-std=gnu++17`)
- Arithmetic ring types live in `M2` namespace (e.g., `M2::ARingZZ`, `M2::ARingZZp`)
- Ring elements use init/clear pattern: `R.init(a); ... R.clear(a);`
- `buffer` class (from `buffer.hpp`) used for string building and text output
- Interface functions prefixed with `IM2_` (e.g., `IM2_initialize()`)
- Source files generally come in `.cpp`/`.hpp` pairs
- Use `IM2_Ring_QQ()` for the rationals (QQGMP) in tests, not `rawARingQQFlint()`
- New classes should use `m` prefix for member fields (e.g., `mRing`, `mValue`)

## Branch Info

- Current branch: `unit-testing` (improving engine unit test infrastructure)
- PR target: `stable`
3 changes: 3 additions & 0 deletions M2/Macaulay2/d/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ target_include_directories(M2-interpreter
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/Macaulay2/e> # need newdelete.hpp
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/Macaulay2/e/CoefficientRings>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/Macaulay2/e/matrices>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/Macaulay2/e/Rings>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/Macaulay2/c> # need scc-core.h
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this supposed to be rings, not Rings? Why are these here in the d directory, but only these?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that these should be removed (but we'll need to check after making this change). I believe that they were added as a work-around so that the full paths didn't need to be added, but we decided against that approach. It looks like we forgot to delete these after that decision.

$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/Macaulay2/d>
# for version.dd to get version numbers
Expand Down
Loading