With the introduction of an external project reference via git submodule by `tls_wolfssl`, I am opening this to discuss where it would be the _best_ place for them.
Now it is in the folder of the tls_wolfssl module, but I noticed that many projects have a dedicated folder like `vendor` (or `extern`, `import`), and I would somehow that approach more because it is easier to locate the external code and figure out its implications in licensing, dependencies, etc ...
Moreover, it can happen that many modules would need to use that external project/repo. For example, now crypto uses libssl, but for someone that wants to get rid of it and use only libwolfssl may contribute an alternative of that module. Then two modules would need same external repo and having it inside another module would not be straightforward to manage.
Given the above, I would suggest to place them in a folder like `misc/vendor` or similar inside the `misc/` directory, not to get back into growing the root folder. I would like to keep `src/` folder only for Kamailio specific code.
If someone has other suggestions, propose them in comments and let's try to get to a decision soon.
We could(should?) recommend the location for build artifacts `*.h *.a *.so` so the Makefiles can have some consistency. To take @miconda's example one step further
``` misc/vendor/wolfssl/ - vendor root directory misc/vendor/wolfssl/@wolfssl - the git submodule misc/vendor/wolfssl/root - the --prefix in autotools build systems ```
The submodule Makefile can then reference the build artifacts. ``` # maybe some make system var for ../../../misc/vendor VENDOR = ../../../misc/vendor
INCLUDES = -I$(VENDOR)/wolfssl/root/include LIBS = $(VENDOR)/wolfssl/root/lib/libwolfssl.a ```
"Vendor" doesn't apply to all projects. Kamailio is not a "vendor".
I would suggest` /misc/external` to mark it's external code to this project, not managed by this project or our services (mailing list, bug tracker etc)
I think its a good idea to keep it in the misc folder and not in the module directory. If we name it vendor or external, I do not care that much.
OK, based on the comments it can be placed it in `misc/external/`.
@space88man: do you want to do it given that is now applicable for `tls_wolfssl`? If no time, for it, I or maybe someone else can address it soon.
Thanks I will push the change; any var you are going to add to the Makefile system?
For now I will just refer with ../../.. etc.
Closing, I think this is completed.
Closed #3164 as completed.