diff options
Diffstat (limited to 'README.abi-version.txt')
| -rw-r--r-- | README.abi-version.txt | 95 |
1 files changed, 29 insertions, 66 deletions
diff --git a/README.abi-version.txt b/README.abi-version.txt index 83e270680..f6a87019f 100644 --- a/README.abi-version.txt +++ b/README.abi-version.txt @@ -2,14 +2,15 @@ Configuration of the ABI Version for the Fast Light Toolkit (FLTK) ------------------------------------------------------------------ FLTK preserves the application binary interface (ABI) throughout -patch versions, for instance all 1.3.x versions (x = patch version). +patch versions, for instance all 1.4.x versions (x = patch version). -This basically means that a program compiled and linked with FLTK 1.3.0 -can run with a FLTK shared library (fltk.dll, fltk.so.1.3.x) of a later -FLTK version 1.3.x, but not with a shared library of FLTK 1.4.0 or later. +This basically means that a program compiled and linked with FLTK 1.4.0 +can run with a FLTK shared library (fltk.dll, fltk.so.1.4.x) of a later +FLTK version 1.4.x, but not with a shared library of FLTK 1.5.0 or later. Since FLTK 1.3.1 the FLTK team began to introduce ABI-breaking features -wrapped in so-called ABI guards in the library code, e.g. +wrapped in so-called ABI guards in the library code, using a preprocessor +macro. Since FLTK 1.4.0 the macro name is FL_ABI_VERSION: #if FL_ABI_VERSION >= 10401 ... new, ABI breaking code ... @@ -17,10 +18,7 @@ wrapped in so-called ABI guards in the library code, e.g. ... old, ABI preserving code ... #endif - Note: In FLTK 1.3.x this preprocessor macro was named FLTK_ABI_VERSION. - In FLTK 1.4.0 FLTK_ABI_VERSION was renamed to FL_ABI_VERSION. - -This documentation is written for FLTK 1.4.x, but it applies to all later +This documentation was written for FLTK 1.4.x but it applies to all later versions as well. Replace the version numbers given here with the version numbers of the version you are using. FLTK version 1.4.1 was chosen as an example only. @@ -35,78 +33,45 @@ defined as a number representing the ABI version in the form #define FL_ABI_VERSION 1xxyy where xx and yy are the minor and patch versions, resp. with leading zeroes, -and '1' is the major version number. - -The default ABI version for all FLTK 1.4.x versions is 10400 (the binary -version of FLTK 1.4.0), but you can configure another version, e.g. -10401 for FLTK 1.4.1 to enable the ABI features of FLTK 1.4.1 and all -previous versions. See CHANGES.txt. +and '1' is the major version number. CMake generates the file FL/fl_config.h +in the build folder given the version you select (see below). +For instance, the default ABI version for all FLTK 1.4.x versions is 10400 +(the binary version of FLTK 1.4.0) but you can select another version, +e.g. 10401 for FLTK 1.4.1 to enable the ABI features of FLTK 1.4.1 and all +previous versions. The same applies to all higher FLTK versions. -Depending on how you build FLTK, there are two different ways to configure -the ABI version. The default is always the lowest version (e.g. 10400). All +The default ABI version is always the lowest version (e.g. 10400). All following examples are written for FLTK 1.4.1, hence we use "10401" for the version number. -(1) Traditional configure + make (Unix, Linux, MinGW, MSYS, etc.) ------------------------------------------------------------------ - - Run - make clean - ./configure --with-abiversion=10401 - make - - This will generate FL/fl_config.h and build FLTK as usual. +How to select the ABI version with CMake +---------------------------------------- - Note: you should always make sure that you compile everything from - scratch if you change the ABI version or any other configuration - options, e.g. with `make clean'. + Use CMake to build the Makefile's and run 'make' or use any other CMake + generator of your choice. To select the ABI version use one of the CMake + configuration tools (cmake-gui or ccmake), or run CMake with these or + similar commands: -(2) CMake + make ----------------- + cd /path/to/fltk + cmake . -B build [-G <GENERATOR>] -D FLTK_ABI_VERSION:STRING=10401 - FLTK versions 1.4.0 and later contain full CMake support. - - Use CMake to build the Makefile's and run 'make'. To configure the - ABI version, use ccmake, cmake-gui, or run cmake with the following - command: - - cmake -D FLTK_ABI_VERSION:STRING=10401 /path/to/fltk + The optional part '[-G <GENERATOR>]' can be used to select a particular + build tool that is not the default for the build platform, for instance + '-G Ninja'. Further CMake options can be appended. Then execute - make + cmake --build build - You can define FLTK_ABI_VERSION to the required version number using - one of the graphical CMake tools. + or the selected build tool (-G <GENERATOR>), e.g. `make`. For more information on how to use CMake with FLTK see README.CMake.txt. -(3) CMake + IDE Projects: Visual C++, Xcode, other IDE's --------------------------------------------------------- - - FLTK versions 1.4.0 and later contain full CMake support. - - IDE project files are no longer included in the FLTK source distribution. - You need to install CMake to generate the IDE files. - - Use CMake to generate the IDE project files of your choice. Currently - the FLTK team uses some Visual C++ (Visual Studio) versions and Xcode - for testing FLTK. Other IDE's may work as well but are not tested. - - For more informations on how to install and use CMake see README.CMake.txt. - - Use CMake option `-D FLTK_ABI_VERSION:STRING=10401` on the command line - or set FLTK_ABI_VERSION with one of the CMake GUI programs. - - Then start the build process in the IDE solution of your choice. This - will run the build with the defined ABI version. - - -General Note on CMake: ----------------------- +General Note on CMake +--------------------- CMake generates FL/fl_config.h in the build tree. You may run 'make install' to install the FLTK library including all headers in @@ -115,5 +80,3 @@ General Note on CMake: The FLTK team recommends to use the FLTK library directly from the build folder. See README.CMake.txt for more information. - - Possible exception: Visual Studio IDE builds (Windows). |
