You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qmk_firmware/docs/embedding.md

2.3 KiB

WARNING: Until issue #173 goes through, the core repository will not be up-to-date with the latest changes and fixes, but can still be used.

If you want to use TMK for your own keyboard project, you've got three options for embedding the core.
The recommended option is subtrees.

After adding the embed you'll need to modify the Makefile of your project to point to the core correctly.

1. git subtree

In order to set up the subtree in your project, first add the core repository as a remote:

git remote add -f core https://github.com/tmk/tmk_core

Then add the core as a subtree (directory) in your local repository:

git subtree add -P tmk_core core master --squash

And that's it!

When you want to update the subtree in your repository to match the master on tmk_core, do this:

git subtree pull -P tmk_core core master --squash

2. git submodule

In order to set up the submodule in your project, first add a new submodule:

git submodule add https://github.com/tmk/tmk_core tmk_core

Then pull, sync and update the submodule:

git pull
git submodule sync --recursive
git submodule update --init --recursive

And that's it!

When you want to update the subtree in your repository to match the master on tmk_core, follow the same steps as above.

If you want to clone a repository from GitHub that has submodule(s) in it, pass --recursive when cloning, like so:
git clone --recursive https://github.com/<username>/<repository>

3. Manually (without git)

Note: This is not recommended in any way, but it's still possible.

Download a zipped version of the tmk_core repository using this link:
https://github.com/tmk/tmk_core/archive/master.zip

Extract the zip in your project's directory, then rename the folder to tmk_core.

Modifications to the Makefile

The one thing you have to make sure to change in the Makefile (compared to tmk_keyboard drivers' Makefile) is the "TMK_DIR" variable, which needs to point to the embed directory:

TMK_DIR = ./tmk_core