summaryrefslogtreecommitdiff
path: root/gen.sh
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2020-01-19 10:11:37 +0100
committerLars-Dominik Braun <lars@6xq.net>2020-01-19 10:19:21 +0100
commitf15b59b9319d4e5a43a3e3515cb0f0449c7224c7 (patch)
tree8afadd7358b5e16965e7ab4b3957db702c17869b /gen.sh
parent810c8ff0bea17214b4e4c5ce802ad89b5ad6e2c9 (diff)
downloadlulua-f15b59b9319d4e5a43a3e3515cb0f0449c7224c7.tar.gz
lulua-f15b59b9319d4e5a43a3e3515cb0f0449c7224c7.tar.bz2
lulua-f15b59b9319d4e5a43a3e3515cb0f0449c7224c7.zip
Add Windows driver
Generate C header file based on layout description and create a source bundle that must be compiled on a Windows system and then moved back to the source tree. This sucks, but cross-compiling on Linux is a pain, since Windows’ development headers assume a case-insensitive filesystem. Also I’m using MSKLC because the latest driver development kit cannot compile these drivers correctly. Dear @microsoft, please fix your shit: https://github.com/microsoft/Windows-driver-samples/issues/433 A remaining concern right now is licensing. keyboard.{c,h,def,rc} have been copied from a project generated by MSKLC and are probably non-free, although pretty much identical files like https://github.com/microsoft/Windows-driver-samples/blob/master/input/layout/kbdus/kbdus.c are covered by MS-PL. Also binds backspace key to \b and adjusts xmodmap/svg rendering accordingly. See #7.
Diffstat (limited to 'gen.sh')
-rwxr-xr-xgen.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/gen.sh b/gen.sh
index 17d4214..3d83839 100755
--- a/gen.sh
+++ b/gen.sh
@@ -101,12 +101,21 @@ rule html
rule cp
command = cp \$in \$out
+rule cpR
+ command = cp -R \$in \$out
+
rule gz
command = gzip -c \$in > \$out
rule configure-make
command = cd \$in && autoreconf --install && ./configure && make
+rule zipR
+ command = ./makezip.sh \$in \$out
+
+rule render-winkbd
+ command = lulua-render -l ar-lulua winkbd \$out
+
### build targets ###
build \$docdir/_build: mkdir
build \$docdir/_build/fonts: mkdir
@@ -124,6 +133,22 @@ build \$docdir/_build/fonts/IBMPlexArabic-Thin.woff2: cp \$fontdir/IBMPlexArabic
# build osmconvert
build \$osmconvert: configure-make 3rdparty/osmctools
+
+# windows drivers
+build \$docdir/_temp/winkbd: cpR lulua/data/winkbd
+build \$docdir/_temp/winkbd/customization.h: render-winkbd || \$docdir/_temp/winkbd
+build \$docdir/_temp/ar-lulua-w64: mkdir
+EOF
+
+w64zipfile="System32/kbdarlulua.dll SysWOW64/kbdarlulua.dll README.txt lulua.reg install.bat"
+deps=""
+for f in $w64zipfile; do
+ echo "build \$docdir/_temp/ar-lulua-w64/$f: cp \$docdir/_temp/winkbd/$f || \$docdir/_temp/ar-lulua-w64"
+ deps+=" \$docdir/_temp/ar-lulua-w64/$f"
+done
+cat <<EOF
+build \$docdir/_build/ar-lulua-w64.zip: zipR \$docdir/_temp/ar-lulua-w64 | $deps
+
EOF
# targets for every layout