Opt in with either: exp2cxx --api-version 2 schema.exp or: cmake -DSC_EXP2CXX_API_VERSION=2 ... Version 1 remains the default, and the regression test verifies default output is byte-identical to explicit v1 output. API v2 now provides: - Compact SELECT classes backed by shared descriptor-driven runtime code instead of repeated generated parsing, assignment, and serialization bodies. - Generic Set* and typed getter APIs in include/clstepcore/sdaiSelect.h:109. - Dependency-bounded entity headers and source-owned dependencies in src/exp2cxx/classes_entity.c:968. - Out-of-line entity creators. - Unity chunks that no longer include the all-entity header. - C++11 output; C++17 did not offer enough additional benefit for this tranche. The command-line handling is in src/exp2cxx/fedex_main.c:85, while compact SELECT generation begins in src/exp2cxx/selects.c:702. Measured using the BRL-CAD ap242e4.exp, Release builds, eight parallel jobs, and 64:8 unity chunks: Metric API v1 Final API v2 Reduction ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━ ━━━━━━━━━━━ Generated C++ lines 1,210,640 522,445 56.8% ──────────────────────── ─────────────── ────────────── ─────────── Generated bytes 57,566,051 27,202,644 52.7% ──────────────────────── ─────────────── ────────────── ─────────── Schema build wall time 183.22 s 88.31 s 51.8% ──────────────────────── ─────────────── ────────────── ─────────── Compiler CPU time 641.53 s 378.49 s 41.0% ──────────────────────── ─────────────── ────────────── ─────────── Peak RSS 1,035,112 KiB 916,412 KiB 11.5% ──────────────────────── ─────────────── ────────────── ─────────── Object-file bytes 70,472,952 40,031,088 43.2% ──────────────────────── ─────────────── ────────────── ─────────── Shared-library text 34,361,400 19,420,467 43.5% ──────────────────────── ─────────────── ────────────── ─────────── Generation wall time 1.52 s 0.69 s 54.6%
76 lines
2.9 KiB
Plaintext
76 lines
2.9 KiB
Plaintext
INSTALL
|
|
|
|
This file is contains installation instructions for STEPcode.
|
|
|
|
These installation requires that you have the following software
|
|
available:
|
|
|
|
- C and C++ compilers (Tested with GCC, MSVC, Embarcadero)
|
|
- CMake (v2.8.7 or greater)
|
|
- mingw (only on Windows)
|
|
- a lexer and parser (i.e. flex, bison) are NOT necessary anymore
|
|
-if you modify the lexer or parser, you will need LEMON, RE2C, PERPLEX from BRL-CAD
|
|
|
|
--------------------
|
|
Installation
|
|
--------------------
|
|
|
|
* Known to work on Linux, OSX, and Windows
|
|
|
|
* Build system uses CMake now: configure, Makefile, and all
|
|
autotools files have been removed, as has mkProbe.
|
|
|
|
* Building SC from the command prompt:
|
|
- cd sc
|
|
- mkdir build
|
|
- cd build
|
|
- cmake ..
|
|
- make
|
|
- make install # optional
|
|
|
|
* Building SC from the GUI:
|
|
- Run cmake-gui, set it to build in sc/build
|
|
- Select the correct build file generator
|
|
- Press Configure
|
|
- Change options as necessary, configuring again afterwards
|
|
- If there are errors, some options may not be visible until the error is resolved
|
|
- Press Generate
|
|
- Open the main build file using your preferred build tool
|
|
|
|
* Build options (append to the 'cmake ..' line):
|
|
-DSC_BUILD_SCHEMAS="path/to/schema.exp;path/to/schema2.exp"
|
|
- this generates c++ for the schema, and compiles it into a
|
|
library. Also works with directories, as long as each dir only
|
|
has one express file.
|
|
- multiple files/directories are separated by semicolons
|
|
- this also builds a 'p21read' program, which reads one step file
|
|
and writes another. It may change whitespace or remove comments;
|
|
otherwise, the input and output files should be identical. If
|
|
they are not identical, either the file does not match the
|
|
schema, or SC generated incorrect source code.
|
|
-DSC_BUILD_SCHEMAS=ALL
|
|
- Added to make use of ctest easier. If SC_BUILD_SCHEMAS == ALL,
|
|
then CMake adds each *.exp file found in data/.
|
|
-DSC_EXP2CXX_API_VERSION=2
|
|
- opts in to compact descriptor-driven SELECTs and dependency-bounded
|
|
entity headers in the generated C++ API.
|
|
- clients include the entity headers they use (for example,
|
|
entity/SdaiProduct.h); schema.h no longer expands every entity class.
|
|
- version 1 remains the default for source compatibility.
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
- this causes binaries to be built without debugging information
|
|
- without this, cmake defaults to a Debug build
|
|
|
|
* Using CTest to test SC:
|
|
- Read the comments in run_ctest.cmake
|
|
- (OPTIONAL) Create sc/../.SC_CTEST_PREFS.cmake, and set variables
|
|
in it (this file is required for CDash submission to be enabled)
|
|
- Run tests with `ctest -S run_ctest.cmake`
|
|
|
|
* Using CTest to regenerate the schema matrix on the github SC wiki:
|
|
- Requires:
|
|
- git
|
|
- python
|
|
- a clone of the git repo for the wiki at sc/../wiki-sc
|
|
- run `ctest -S ctest_matrix.cmake`
|