diff options
Diffstat (limited to 'README.bundled-libs.txt')
| -rw-r--r-- | README.bundled-libs.txt | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/README.bundled-libs.txt b/README.bundled-libs.txt new file mode 100644 index 000000000..75fbc1185 --- /dev/null +++ b/README.bundled-libs.txt @@ -0,0 +1,201 @@ +README.bundled-libs.txt - Developer information for bundled libraries +--------------------------------------------------------------------- + +****************************************************** +*** NOTICE *** This file is still work in progress *** +****************************************************** + +This file is mainly intended for FLTK developers and contains information +about the current versions of all bundled libraries and about how to +upgrade these bundled libraries. + + +Current versions of bundled libraries: + + ** work in progress -- not yet completely upgraded ** + + Library Version Release date FLTK Version + ------------------------------------------------------------------ + jpeg jpeg-9c 2018-01-14 1.4.0 + nanosvg [2017-07-09] n.a. 1.4.0 + png libpng-1.6.34 2017-09-29 1.4.0 + zlib zlib-1.2.11 2017-01-15 1.4.0 + + +Previous versions of bundled libraries: + + Library Version Release date FLTK Version + ------------------------------------------------------------------ + jpeg jpeg-9a 2014-01-19 1.3.4 + png libpng-1.6.16 2014-12-22 1.3.4 + zlib zlib-1.2.8 2013-04-28 1.3.4 + + +General information: + + FLTK does not include the entire library distributions. We only provide + the source files necessary to build the library itself. There are no + test programs or other contributed files. + + We use our own build files, hence a few files MUST NOT be upgraded when + the library source files are upgraded. We strive to keep changes to the + library source files as small as possible. Patching library code to + work with FLTK should be a rare exception. + + If patches are necessary all changes in the library files should be + marked with "FLTK" in a comment so a developer that upgrades the library + later is aware of changes in the source code for FLTK. Additional comments + should be added to show the rationale, i.e. why a particular change was + necessary. If applicable, add a reference to a Software Trouble Report + like "STR #3456". + + +How to update the bundled libraries: + + It is generally advisable to use a graphical merge program. I'm using + 'meld' under Linux, but YMMV. + + Do not add any source files unless they are required to build the library. + + Some config header files may be pre-generated in the FLTK sources. These + header files should be left untouched, but it may be necessary to update + them if new items were added to the new library version. In this case + the new header should be pre-generated on a Linux system with default + options unless otherwise mentioned below for a specific library. + Currently there are no known exceptions. + + +Merging source files: + + Please check if some source and header files contain "FLTK" comments + to be aware of necessary merges. It is also good to get the distribution + tar ball of the previous version and to run a (graphical) diff or + merge tool on the previous version and the bundled version of FLTK + to see the "previous" differences. + + Files that were not patched in previous versions should be copied to + the new version w/o changes. Files that had FLTK specific patches must + be merged manually. FLTK patches should be verified (if still necessary) + and should be kept in the new source files. + + Source and header files that have been added in the new library version + should be added in FLTK as well if they are necessary to build the + library. A simple "trial and error" should be sufficient to find files + that need to be added. Added files must be added to FLTK's build files + as well, usually to both the Makefile and the CMakeLists.txt to be + used in configure/make and in CMake based builds. + + +Upgrade order: + + There is only one dependency between all bundled libraries: libpng + depends on zlib. Hence zlib should be upgraded first, then all other + libs can be upgraded in arbitrary order. + + +Tests after merge: + + Tests should be done on as many platforms as possible, both with + autotools (configure/make) and CMake. Windows (Visual Studio) and + macOS (Xcode) build need CMake to generate the IDE files. + + +Upgrade notes for specific libraries: + + The following chapters contain information of specific files and how + they are upgraded. Since the changes in all bundled libraries can't + be known in advance this information can change in the future. Please + very that no other changes are necessary. + + +zlib: + + Website: http://zlib.net/ + Download: See website and follow links. + Repository: git clone https://github.com/madler/zlib.git + + + The following files need special handling: + + CMakeLists.txt: Keep FLTK version, update manually if necessary. + + Makefile: Same as CMakeLists.txt. + + zconf.h: Merge changes. + + As of zlib 1.2.11: two small sections marked with "FLTK" comments + that need to be kept. + + makedepend: Keep this file. Run `make depend' in the zlib folder + on a Linux system after the upgrade to update this file. + + +png: + + Website: http://libpng.org/pub/png/libpng.html + Download: See website and follow links. + Repository: git clone https://git.code.sf.net/p/libpng/code libpng + + libpng should be upgraded after zlib because it depends on zlib. + + The following files need special handling: + + CMakeLists.txt: Keep FLTK version, update manually if necessary. + + Makefile: Same as CMakeLists.txt. + + Note: more to come... + + makedepend: Keep this file. Run `make depend' in the zlib folder + on a Linux system after the upgrade to update this file. + + +jpeg: + + Website: http://ijg.org/ + Download: See website and follow links. + Repository: <unknown> + + The following files need special handling: + + CMakeLists.txt: Keep FLTK version, update manually if necessary. + + Makefile: Same as CMakeLists.txt. + + Note: more to come... + + makedepend: Keep this file. Run `make depend' in the zlib folder + on a Linux system after the upgrade to update this file. + + +nanosvg: + + Website: https://github.com/memononen/nanosvg + Download: See website and follow links. + Repository: git clone https://github.com/memononen/nanosvg.git + FLTK Clone: git clone https://github.com/fltk/nanosvg.git + + FLTK has its own GitHub clone of the original repository (see above). + + The intention is to update this clone from time to time so the FLTK + specific patches are up-to-date with the original library. Hopefully + the FLTK patches will be accepted upstream at some time in the future + so we no longer need our own patches. + AlbrechtS, 04 Feb 2018. + + Use this clone (branch 'fltk') to get the nanosvg library with FLTK + specific patches: + + $ git clone https://github.com/fltk/nanosvg.git nanosvg-fltk + $ cd nanosvg-fltk + $ git checkout fltk + $ cd src + $ cp nanosvg.h nanosvgrast.h /path/to/fltk-1.4/nanosvg/ + + This library does not have its own build files since it is a + header-only library. The build is included in FLTK where necessary. + + The following files need special handling: + + nanosvg.h: Merge or download from FLTK's clone (see above). + nanosvgrast.h: Merge or download from FLTK's clone (see above). |
