ANSWERED: Example of making a library using out-of-tree source files

Welcome, and thanks for your interest in Arduino!

Way cool!

I think it wouldn't be easy to accomplish this. The only possibility I can think of is symlinks, but the resulting library would be since symlinks are restricted on Windows and prohibited in Arduino Library Manager.

I think the best way to accomplish this is by writing a repackaging script that converts the repository to a series of valid Arduino libraries. Something like this has been done for TensorFlow lite and Edge Impulse. You could publish the repackaged libraries to dedicated repositories periodically, and distribute the libraries from those repositories to the Arduino users.

The resulting folder structure of the BLE library would look something like this:

u_ble
|-- src
|   |-- utility
|   |   |-- u_ble_cfg_extmod.c
|   |   |-- u_ble_cfg_intmod.c
|   |   |-- u_ble_data_extmod.c
|   |   |-- u_ble_data_intmod.c
|   |   |-- u_ble_extmod.c
|   |   |-- u_ble_intmod.c
|   |   |-- u_ble_private.c
|   |   `-- u_ble_private.h
|   |-- u_ble.h
|   |-- u_ble_cfg.h
|   |-- u_ble_data.h
|   `-- u_ble_module_type.h
|-- LICENSE
|-- README.md
`-- library.properties

You can define dependencies in the library.properties metadata file and Arduino Library Manager will offer the dependencies when the user installs the library.

The feature requested here sounds like it would avoid the need to either break the repository up into multiple libraries or rewrite the #include directives to use local paths: