# WARNING: Until issue [#173](https://github.com/tmk/tmk_keyboard/issues/173) goes through, the [core][1] 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][1]. The recommended option is [subtrees](#1-git-subtree). After adding the embed you'll need to [modify the Makefile](#modifications-to-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][1], 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][1], 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//` ## 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][1] repository using this link: 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](https://github.com/tmk/tmk_keyboard) drivers' *[Makefile](https://github.com/tmk/tmk_keyboard/blob/master/keyboard/gh60/Makefile#L45)*) is the "TMK_DIR" variable, which needs to point to the embed directory: ```Makefile TMK_DIR = ./tmk_core ``` [1]: https://github.com/tmk/tmk_core