zmk-config-archive/Makefile

354 lines
16 KiB
Makefile

# ========================================
# FileName: Makefile
# Date: 07.03.2023
# Author: Marcos Chow Castro
# Email: mctechnology170318@gmail.com
# GitHub: https://github.com/mctechnology17
# Brief: Makefile for ZMK firmware with Docker
# Shields: corne sofle splitkb_aurora_sofle
# Boards: nice_nano_v2 puchi_ble_v1 seeeduino_xiao_ble
# =========================================
# ╔═╦═╦═╗
# ╔════╗ ║║║║║╔╝
# ║╔╗╔╗║ ║║║║║╚╗
# ╚╝║║╚╝ ║╠═╩╩═╝
# ║╠═╦═╣╚╦═╦╦═╦╗╔═╦═╦╦╗
# ║║╩╣═╣║║║║║╬║╚╣╬║╬║║║
# ╚╩═╩═╩╩╩╩═╩═╩═╩═╬╗╠╗║
# ╚═╩═╝
# to update the branch
# https://hub.docker.com/r/zmkfirmware/zmk-dev-arm/tags
# https://github.com/zmkfirmware/zmk/blob/main/.devcontainer/Dockerfile
# docker pull zmkfirmware/zmk-dev-arm:3.2-branch
#
# CUSTOM BRANCH EXAMPLE:
# git clone https://github.com/petejohanson/zmk -b v3.4.0+zmk-fixes
#
# WIDGET BRANCH ANIMATED
# cmake-args: -DKEYMAP_FILE=../../config/other-corne.keymap -DCONFIG_ZMK_KEYBOARD_NAME=\"other-corne\" -DEXTRA_CONF_FILE=../../config/other-corne.conf
# /Users/marcos/zmk-privat/config/config_ready/nice/oled_rgb/corne.conf
# -DKEYMAP_FILE=../../config/other-corne.keymap -DCONFIG_ZMK_KEYBOARD_NAME=\"other-corne\" -DEXTRA_CONF_FILE=../../config/other-corne.conf
# module:
# https://github.com/caksoylar/zmk-rgbled-widget
### config
# extra_conf_file_oled_rgb= -DEXTRA_CONF_FILE=${PWD}/config/config_ready/nice/oled_rgb/corne.conf
extra_modules_dir=${PWD}
extra_modules= -DZMK_EXTRA_MODULES="/boards"
config=${PWD}/config
nice_mount=/Volumes/NICENANO
puchi_mount=/Volumes/NRF52BOOT
xiao_mount=/Volumes/XIAO-SENSE
zmk_image=zmkfirmware/zmk-dev-arm:3.5
nice=nice_nano_v2
puchi=puchi_ble_v1
xiao=seeeduino_xiao_ble
urob=zmk-codebase_urob
default=zmk-codebase_default
# --name zmk-$@ is for codebase_urob, for example: zmk-codebase_urob
docker_opts= \
--interactive \
--tty \
--name zmk-$@ \
--workdir /zmk \
--volume "${config}:/zmk-config:Z" \
--volume "${PWD}/zmk:/zmk:Z" \
--volume "${extra_modules_dir}:/boards:Z" \
${zmk_image}
### name
keyboard_name_nice= '-DCONFIG_ZMK_KEYBOARD_NAME="Nice_Corne_View"'
keyboard_name_nice_oled= '-DCONFIG_ZMK_KEYBOARD_NAME="Nice_Corne_Oled"'
keyboard_name_nice_dongle= '-DCONFIG_ZMK_KEYBOARD_NAME="Nice_Dongle"'
keyboard_name_nice_dongle_oled= '-DCONFIG_ZMK_KEYBOARD_NAME="Nice_Dongle_O"'
keyboard_name_nice_dongle_view= '-DCONFIG_ZMK_KEYBOARD_NAME="Nice_Dongle_V"'
keyboard_name_puchi_view= '-DCONFIG_ZMK_KEYBOARD_NAME="Puchi_Corne_View"'
keyboard_name_puchi_oled= '-DCONFIG_ZMK_KEYBOARD_NAME="Puchi_Corne_Oled"'
keyboard_name_puchi_dongle= '-DCONFIG_ZMK_KEYBOARD_NAME="Puchi_Dongle"'
keyboard_name_puchi_dongle_oled= '-DCONFIG_ZMK_KEYBOARD_NAME="Puchi_Dongle_O"'
keyboard_name_puchi_dongle_view= '-DCONFIG_ZMK_KEYBOARD_NAME="Puchi_Dongle_V"'
keyboard_name_xiao_dongle= '-DCONFIG_ZMK_KEYBOARD_NAME="Xiao_Dongle"'
keyboard_name_xiao_dongle_oled= '-DCONFIG_ZMK_KEYBOARD_NAME="Xiao_Dongle_O"'
keyboard_name_xiao_dongle_view= '-DCONFIG_ZMK_KEYBOARD_NAME="Xiao_Dongle_V"'
### west
west_built_puchi= \
west build /zmk/app \
--pristine --board "${puchi}"
west_built_nice= \
west build /zmk/app \
--pristine --board "${nice}"
west_built_xiao= \
west build /zmk/app \
--pristine --board "${xiao}"
### shields
shield_settings_reset= \
-- -DSHIELD="settings_reset" -DZMK_CONFIG="/zmk-config"
shield_corne_left= \
-- -DSHIELD="corne_left" -DZMK_CONFIG="/zmk-config"
shield_corne_right_view= \
-- -DSHIELD="corne_right nice_view_adapter nice_view" \
-DZMK_CONFIG="/zmk-config"
shield_corne_right= \
-- -DSHIELD="corne_right" -DZMK_CONFIG="/zmk-config"
shield_corne_left_view= \
-- -DSHIELD="corne_left nice_view_adapter nice_view" \
-DZMK_CONFIG="/zmk-config"
shield_xiao_corne_dongle_xiao= \
-- -DSHIELD="corne_dongle_xiao" -DZMK_CONFIG="/zmk-config"
shield_xiao_corne_dongle_xiao_dongle_display= \
-- -DSHIELD="corne_dongle_xiao dongle_display" \
-DZMK_CONFIG="/zmk-config"
shield_xiao_corne_dongle_xiao_rgbled_adapter= \
-- -DSHIELD="corne_dongle_xiao rgbled_adapter" \
-DZMK_CONFIG="/zmk-config"
shield_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter= \
-- -DSHIELD="corne_dongle_xiao dongle_display rgbled_adapter" \
-DZMK_CONFIG="/zmk-config"
shield_corne_left_peripheral_view= \
-- -DSHIELD="corne_left_peripheral nice_view_adapter nice_view" \
-DZMK_CONFIG="/zmk-config"
shield_corne_left_peripheral_oled= \
-- -DSHIELD="corne_left_peripheral" \
-DZMK_CONFIG="/zmk-config"
shield_corne_dongle_pro_micro= \
-- -DSHIELD="corne_dongle_pro_micro" -DZMK_CONFIG="/zmk-config"
shield_corne_dongle_pro_micro_dongle_display= \
-- -DSHIELD="corne_dongle_pro_micro dongle_display" -DZMK_CONFIG="/zmk-config"
### uf2
uf2_copy_puchi_corne_settings_reset=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_settings_reset.uf2
uf2_copy_puchi_corne_left=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_left.uf2
uf2_copy_puchi_corne_right=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_right.uf2
uf2_copy_puchi_corne_left_peripheral_view=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_left_peripheral.uf2
uf2_copy_niceuf2_copy_puchi_corne_dongle_pro_micro=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_dongle_pro_micro.uf2
uf2_copy_puchi_corne_dongle_pro_micro_dongle_display=/zmk/build/zephyr/zmk.uf2 \
firmware/puchi_corne_dongle_pro_micro_dongle_display.uf2
uf2_copy_nice_corne_settings_reset=/zmk/build/zephyr/zmk.uf2 \
firmware/nice_corne_settings_reset.uf2
uf2_copy_nice_corne_left=/zmk/build/zephyr/zmk.uf2 firmware/nice_corne_left.uf2
uf2_copy_nice_corne_right=/zmk/build/zephyr/zmk.uf2 firmware/nice_corne_right.uf2
uf2_copy_nice_corne_left_peripheral_view=/zmk/build/zephyr/zmk.uf2 \
firmware/nice_corne_left_peripheral.uf2
uf2_copy_nice_corne_left_peripheral_oled=/zmk/build/zephyr/zmk.uf2 \
firmware/nice_corne_left_peripheral.uf2
uf2_copy_nice_corne_dongle_pro_micro=/zmk/build/zephyr/zmk.uf2 \
firmware/nice_corne_dongle_pro_micro.uf2
uf2_copy_nice_corne_dongle_pro_micro_dongle_display=/zmk/build/zephyr/zmk.uf2 \
firmware/nice_corne_dongle_pro_micro_dongle_display.uf2
uf2_copy_xiao_corne_dongle_xiao=/zmk/build/zephyr/zmk.uf2 \
firmware/xiao_corne_dongle_xiao.uf2
uf2_copy_xiao_corne_settings_reset=/zmk/build/zephyr/zmk.uf2 \
firmware/xiao_corne_settings_reset.uf2
uf2_copy_xiao_corne_dongle_xiao_dongle_display=/zmk/build/zephyr/zmk.uf2 \
firmware/xiao_corne_dongle_xiao_dongle_display.uf2
uf2_copy_xiao_corne_dongle_xiao_rgbled_adapter=/zmk/build/zephyr/zmk.uf2 \
firmware/xiao_corne_dongle_xiao_rgbled_adapter.uf2
uf2_copy_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter=/zmk/build/zephyr/zmk.uf2 \
firmware/xiao_corne_dongle_xiao_dongle_display_rgbled_adapter.uf2
### chmod
uf2_chmod_puchi_corne_settings_reset=chmod go+wrx \
firmware/puchi_corne_settings_reset.uf2
uf2_chmod_puchi_corne_left=chmod go+wrx firmware/puchi_corne_left.uf2
uf2_chmod_puchi_corne_right=chmod go+wrx firmware/puchi_corne_right.uf2
uf2_chmod_puchi_corne_left_peripheral_view=chmod go+wrx firmware/puchi_corne_left_peripheral.uf2
uf2_chmod_puchi_corne_dongle_pro_micro=chmod go+wrx firmware/puchi_corne_dongle_pro_micro.uf2
uf2_chmod_puchi_corne_dongle_pro_micro_dongle_display=chmod go+wrx firmware/puchi_corne_dongle_pro_micro_dongle_display.uf2
uf2_chmod_nice_corne_settings_reset=chmod go+wrx \
firmware/nice_corne_settings_reset.uf2
uf2_chmod_nice_corne_left=chmod go+wrx firmware/nice_corne_left.uf2
uf2_chmod_nice_corne_right=chmod go+wrx firmware/nice_corne_right.uf2
uf2_chmod_nice_corne_left_peripheral_view=chmod go+wrx firmware/nice_corne_left_peripheral.uf2
uf2_chmod_nice_corne_left_peripheral_oled=chmod go+wrx firmware/nice_corne_left_peripheral.uf2
uf2_chmod_nice_corne_dongle_pro_micro=chmod go+wrx firmware/nice_corne_dongle_pro_micro.uf2
uf2_chmod_nice_corne_dongle_pro_micro_dongle_display=chmod go+wrx firmware/nice_corne_dongle_pro_micro_dongle_display.uf2
uf2_chmod_xiao_corne_dongle_xiao=chmod go+wrx firmware/xiao_corne_dongle_xiao.uf2
uf2_chmod_xiao_corne_settings_reset=chmod go+wrx \
firmware/xiao_corne_settings_reset.uf2
uf2_chmod_xiao_corne_dongle_xiao_dongle_display=chmod go+wrx firmware/xiao_corne_dongle_xiao_dongle_display.uf2
uf2_chmod_xiao_corne_dongle_xiao_rgbled_adapter=chmod go+wrx firmware/xiao_corne_dongle_xiao_rgbled_adapter.uf2
uf2_chmod_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter=chmod go+wrx firmware/xiao_corne_dongle_xiao_dongle_display_rgbled_adapter.uf2
clone_zmk_default:
if [ ! -d zmk ]; then git clone https://github.com/zmkfirmware/zmk; fi
codebase_default: clone_zmk_default
docker run ${docker_opts} sh -c '\
west init -l /zmk/app/; \
west update'
clone_zmk_urob:
if [ ! -d zmk ]; then git clone https://github.com/urob/zmk; fi
codebase_urob: clone_zmk_urob
docker run ${docker_opts} sh -c '\
west init -l /zmk/app/; \
west update'
### CODEBASE_UROB START
only_nice_corne_left_view_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_left_view} \
${keyboard_name_nice} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_left}
${uf2_chmod_nice_corne_left}
only_nice_corne_right_view_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_right_view} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_right}
${uf2_chmod_nice_corne_right}
only_puchi_corne_left_view_urob:
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_left_view} \
${keyboard_name_puchi} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_left}
${uf2_chmod_puchi_corne_left}
only_puchi_corne_right_view_urob:
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_right} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_right}
${uf2_chmod_puchi_corne_right}
only_nice_corne_left_peripheral_view_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_left_peripheral_view} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_left_peripheral_view}
${uf2_chmod_nice_corne_left_peripheral_view}
only_puchi_corne_left_peripheral_view_urob:
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_left_peripheral_view} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_left_peripheral_view}
${uf2_chmod_puchi_corne_left_peripheral_view}
only_nice_corne_dongle_pro_micro_dongle_display_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_dongle_pro_micro_dongle_display} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_dongle_pro_micro_dongle_display}
${uf2_chmod_nice_corne_dongle_pro_micro_dongle_display}
only_puchi_corne_dongle_pro_micro_dongle_display_urob:
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_dongle_pro_micro_dongle_display} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_dongle_pro_micro_dongle_display}
${uf2_chmod_puchi_corne_dongle_pro_micro_dongle_display}
only_corne_xiao_corne_dongle_xiao_dongle_display_urob:
docker run --rm ${docker_opts} \
${west_built_xiao} ${shield_xiao_corne_dongle_xiao_dongle_display} ${extra_modules}
docker cp ${urob}:${uf2_copy_xiao_corne_dongle_xiao_dongle_display}
${uf2_chmod_xiao_corne_dongle_xiao_dongle_display}
only_nice_settings_reset_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_settings_reset}
docker cp ${urob}:${uf2_copy_nice_corne_settings_reset}
${uf2_chmod_nice_corne_settings_reset}
only_puchi_settings_reset_urob:
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_settings_reset}
docker cp ${urob}:${uf2_copy_puchi_corne_settings_reset}
${uf2_chmod_puchi_corne_settings_reset}
only_xiao_settings_reset_urob:
docker run --rm ${docker_opts} \
${west_built_xiao} ${shield_settings_reset}
docker cp ${urob}:${uf2_copy_xiao_corne_settings_reset}
${uf2_chmod_xiao_corne_settings_reset}
### MC: TODO: excluded for the moment START
only_corne_left_peripheral_oled_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_left_peripheral_oled} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_left_peripheral_oled}
${uf2_chmod_nice_corne_left_peripheral_oled}
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_left_peripheral_oled} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_left_peripheral_oled}
${uf2_chmod_puchi_corne_left_peripheral_oled}
only_corne_dongle_pro_micro_urob:
docker run --rm ${docker_opts} \
${west_built_nice} ${shield_corne_dongle_pro_micro} ${extra_modules}
docker cp ${urob}:${uf2_copy_nice_corne_dongle_pro_micro}
${uf2_chmod_nice_corne_dongle_pro_micro}
docker run --rm ${docker_opts} \
${west_built_puchi} ${shield_corne_dongle_pro_micro} ${extra_modules}
docker cp ${urob}:${uf2_copy_puchi_corne_dongle_pro_micro}
${uf2_chmod_puchi_corne_dongle_pro_micro}
only_corne_xiao_corne_dongle_xiao_urob:
docker run --rm ${docker_opts} \
${west_built_xiao} ${shield_xiao_corne_dongle_xiao} ${extra_modules}
docker cp ${urob}:${uf2_copy_xiao_corne_dongle_xiao}
${uf2_chmod_xiao_corne_dongle_xiao}
### MC: TODO: excluded for the moment END
### MC: rgbled_adapter TODO: START
only_corne_xiao_corne_dongle_xiao_rgbled_adapter_urob:
docker run --rm ${docker_opts} \
${west_built_xiao} ${shield_xiao_corne_dongle_xiao_rgbled_adapter} ${extra_modules}
docker cp ${urob}:${uf2_copy_xiao_corne_dongle_xiao_rgbled_adapter}
${uf2_chmod_xiao_corne_dongle_xiao_rgbled_adapter}
only_corne_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter_urob:
docker run --rm ${docker_opts} \
${west_built_xiao} ${shield_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter} ${extra_modules}
docker cp ${urob}:${uf2_copy_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter}
${uf2_chmod_xiao_corne_dongle_xiao_dongle_display_rgbled_adapter}
### MC: rgbled_adapter TODO: END
only_corne_left_view_urob: only_nice_corne_left_view_urob \
only_puchi_corne_left_view_urob
only_corne_right_view_urob: only_nice_corne_right_view_urob \
only_puchi_corne_right_view_urob
only_corne_left_peripheral_view_urob: only_nice_corne_left_peripheral_view_urob \
only_puchi_corne_left_peripheral_view_urob
only_corne_dongle_pro_micro_dongle_display_urob: only_nice_corne_dongle_pro_micro_dongle_display_urob \
only_puchi_corne_dongle_pro_micro_dongle_display_urob
settings_reset_urob: only_nice_settings_reset_urob \
only_puchi_settings_reset_urob \
only_xiao_settings_reset_urob
corne_urob: only_corne_left_view_urob \
only_corne_right_view_urob \
only_corne_left_peripheral_view_urob \
only_corne_dongle_pro_micro_dongle_display_urob \
only_corne_xiao_corne_dongle_xiao_dongle_display_urob \
settings_reset_urob
### CODEBASE_UROB END
# Open a shell within the ZMK environment
shell:
docker run --rm ${docker_opts} /bin/bash
# Flash the appropriate firmware to the bootloader
nice_corne_flash_left:
@ printf "Waiting for ${nice} bootloader to appear at ${nice_mount}.."
@ while [ ! -d ${nice_mount} ]; do sleep 1; printf "."; done; printf "\n"
cp -av firmware/nice_corne_left.uf2 ${nice_mount}
nice_corne_flash_right:
@ printf "Waiting for ${nice} bootloader to appear at ${nice_mount}.."
@ while [ ! -d ${nice_mount} ]; do sleep 1; printf "."; done; printf "\n"
cp -av firmware/nice_corne_right.uf2 ${nice_mount}
puchi_corne_flash_left:
@ printf "Waiting for ${puchi} bootloader to appear at ${puchi_mount}.."
@ while [ ! -d ${puchi_mount} ]; do sleep 1; printf "."; done; printf "\n"
cp -av firmware/puchi_corne_left.uf2 ${puchi_mount}
puchi_corne_flash_right:
@ printf "Waiting for ${puchi} bootloader to appear at ${puchi_mount}.."
@ while [ ! -d ${puchi_mount} ]; do sleep 1; printf "."; done; printf "\n"
cp -av firmware/puchi_corne_right.uf2 ${puchi_mount}
clean_firmware:
find firmware/*.uf2 -type f -delete
clean_zmk:
if [ -d zmk ]; then rm -rfv zmk; fi
clean: clean_zmk
docker ps -aq --filter name='^zmk' | xargs -r docker container rm
docker volume list -q --filter name='zmk' | xargs -r docker volume rm
clean_all: clean clean_firmware
@echo "cleaning all"
# vim: set ft=make fdm=marker: