INSTALL

This file is contains installation instructions for the
STEP Class Library.

These installation requires that you have the following software
available:

- C and C++ compilers    (Tested with GCC, MSVC, Embarcadero)
- bison, byacc, or yacc  (only bison has been tested recently)
- flex or lex            (only flex has been tested recently)
- CMake
- mingw                  (only on Windows)

--------------------
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 SCL from the command prompt:
  - cd scl
  - mkdir build
  - cd build
  - cmake ..
  - make
  - make install       #  optional

* Building SCL from the GUI:
  - Run cmake-gui, set it to build in scl/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):
  -DBUILD_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 SCL generated incorrect source code.
  -DBUILD_SCHEMAS=ALL
    - Added to make use of ctest easier. If BUILD_SCHEMAS == ALL,
      then CMake adds each *.exp file found in data/.
  -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 SCL:
  - Read the comments in run_ctest.cmake
  - (OPTIONAL) Create scl/../.SCL_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 SCL wiki:
  - Requires:
     - git
     - python
     - a clone of the git repo for the wiki at scl/../wiki-scl
  - run `ctest -S ctest_matrix.cmake`
