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

Reply via email to