Documentation about using 3rd party plugins

I had a hard time finding documentation about where to put 3rd party plugins when building the firmware. I searched the READMEs and the Kaleidoscope Wiki but I could not find any information.

Of course I am pretty sure that most of the users are able to figure this out by means of trial and error. If there already exists any documentation that I was not able to find, it would definitely be worth being added in some prominent place in the Kaleidoscope-Wiki (if no already there :wink:)

1 Like

I’ve found that the best place to add them is under the sketch directory. For example:

$ git clone https://github.com/keyboardio/Model01-Firmware.git my-model01-firmware

$ cd my-model01-firmware

$ git clone <third-party-plugin>

Edit Model01-Firmware.ino

$ make flash

I haven’t checked to see if this works with the new build system yet, but it works well with kaleidoscope-builder.

1 Like

With this setup, do you have a symbolic link to the bundle hardware path in your Arduino installation? Or do you clone Model01-Firmware.git into the bundle’s library directory?

It should work with the sketch directory anywhere in the filesystem, as long as the symlink to the Kaleidoscope libraries is correct. In practice, I’ve almost always been using the Model01-Firmware directory inside the bundle.

Interesting. Building a sketch outside of the bundle tree seems not to work because of an incorrect path to rules.mk. Apparently, I haven’t done that in a while.

Because you mention rules.mk. Could the following issue be related. There was also problem with rules.mk’s path. Jesse recently pushed a quick fix.

1 Like

My link needs to change so it’s up one level, because build-tools is a sibling of avr, not a child, but in the bundle, avr/build-tools is a symlink pointing to ../build-tools.

You are correct! That fix is what broke building the sketch outside the bundle.

1 Like

:thinking: Can the fix be fixed?

I think if I change the level at which my symlink works, it will be fine.

[edit: i.e. link from ~/Arduino/hardware/keyboardio instead of from ~/Arduino/hardware/keyboardio/avr]