Hi All,
I'd like to propose a way to add 3rd party code to Harbour in an organized way. We already have zlib and pcre in core, and sqlite3 in contrib. In the first pass (or even at all) I wouldn't like to touch zlib and pcre in this respect, but for sqlite3 and some other potential libs like these might be useful because in such way these libs will be available in tested (and if need patched versions) for all Harbour users, even as static libs. Problems to solve: - We need a way to properly follow local changes, and allow us to propagate back these changes to 3rd party source tree, and to relatively easily update 3rd party code in our SVN. To ease this we definitely need a local ChangeLog which must be updated on each change. Furthermore, we might resort to only keep a .pat file, which is applied before doing the build. (we need to find a way how to do this using the GNU Make system in a manageable way, but since doesn't seem easy, let's skip it first) - We need to keep these libs updated as the 3rd party libs get updates. This needs some work to do from one, to the benefit of all. This kind of job needs converting 3rd party source tree to a flat directory (or subdir per output lib) and adapt our local Makefile. - Licensing: We must make sure the license allows such embedded source distribution for us and also for Harbour users in binary forms. (so pure GPL isn't good). The rules is the same as for pcre, zlib, sqlite3. Misc issues: - To make our job easier we can lift most of our uniformity rules for these libs, like the 8.3 filename rule. - We should discuss each new such 3rd party lib before addition, and try to resort to universal, multiplatform, mature libs. - Some versioning softwares, like GIT, allows to integrate local repository with external repositories, we may be able to extend in this direction in the future. - Naturally no local changes are allowed besides portability or code quality patches and bugfixes. - Naturally, we mustn't break compatibility with original libs (dynamic or static). - We should be using the original libnames for output. - We should think about distribution, whether to allow them, or build these by default. We can introduce make switches for this purpose and discuss a good default. Future directions: - We may add support to create dynamic libs from these 3rd party libs and if we find a way may use the infrastructure to create dynamic libs from Harbour contrib libs too. We could put all these libs in a new root dir called: - /3rd Some libs which may add in this form: jpeg, libpng, libharu, sqlite3 (from current contrib subdir), freetype, etcetc. I'd welcome opinions from everyone. Brgds, Viktor
_______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
