I have figured out how to get mkgmap to produce fully customized, routable Garmin-compatible IMG files for my nüvi GPS navigator. Here’s the story, with the helpful hints so you can produce custom IMG files to your own specifications, too.
Background
I first got serious about mapping in OSM in 2014, during a diplomatic posting to New Delhi. I had a Garmin nüvi GPS navigator, but Garmin provided no maps for India. A search of the OSM wiki revealed Lambertus’ website that provided ready-to-use, downloadable IMG files, which proved a godsend. Fast forward to 2015 and my diplomatic posting to Turkmenistan. That story is told in a recording of my 2019 banquet speech to the North American Cartographic Society. People in Turkmenistan and elsewhere relied on Lambertus’ IMG files to navigate in countries for which Garmin provides no maps. Alas, a couple of years ago Lambertus’ website went defunct. I tried bbbike’s IMG downloads, but they leave out numerous POIs I know are either useful or necessary for both diplomats and local residents in Central Asia.
I decided to study mkgmap so as to generate custom IMG files. As an aside, when I mentioned this to a longtime OSMer friend, the response was, “Good luck with that.”
The documentation
The documentation on mkgmap is a bit sparse, and it is not really comprehensive. The base documentation found at https://www.mkgmap.org.uk/doc/index.html is enough to get you started, but is written by computer experts for other computer experts. It is inaccessible in places to those of us who majored in political science or economics.
Andy Townsend’s instructions at osm.org/user/SomeoneElse/diary/38613 proved very helpful in shedding light on how things work.
Then I stumbled across ligfietser’s style sheets at https://github.com/ligfietser/mkgmap-style-sheets. This shed even more light on how to get rendering to work the way I wanted it to.