diff options
author | Jack Humbert <jack.humb@gmail.com> | 2017-07-13 14:24:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-13 14:24:26 -0400 |
commit | 6ed8ce4f598f838b971aa290a499f852827e1b58 (patch) | |
tree | 088e5e6d1d0d448f0e5c4032a830c27b33a126ab | |
parent | 087af43dee545792f486069481460ed5997bc41b (diff) | |
parent | b7d8dec7dccc9bc6b458e26a8d12fcdb4d73cdeb (diff) | |
download | qmk_firmware-6ed8ce4f598f838b971aa290a499f852827e1b58.tar.gz qmk_firmware-6ed8ce4f598f838b971aa290a499f852827e1b58.zip |
Merge pull request #1491 from fredizzimo/msys2
Add support for msys2 build environment
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | message.mk | 4 | ||||
-rw-r--r-- | quantum/keymap_common.c | 1 | ||||
-rw-r--r-- | tests/basic/keymap.c | 5 | ||||
-rw-r--r-- | tests/test_common/matrix.c | 3 | ||||
-rw-r--r-- | tests/test_common/test_fixture.cpp | 4 | ||||
-rw-r--r-- | tests/test_common/test_fixture.hpp | 2 | ||||
-rw-r--r-- | tmk_core/native.mk | 5 | ||||
-rw-r--r-- | util/activate_msys2.sh | 16 | ||||
-rw-r--r-- | util/msys2_install.sh | 117 | ||||
-rw-r--r-- | util/win_shared_install.sh | 80 | ||||
-rw-r--r-- | util/wsl_install.sh | 94 |
12 files changed, 247 insertions, 85 deletions
diff --git a/.gitignore b/.gitignore index ffa7662bd7..e40308193c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ quantum/version.h CMakeLists.txt .DS_STORE /util/wsl_downloaded +/util/win_downloaded # Eclipse/PyCharm/Other IDE Settings .cproject diff --git a/message.mk b/message.mk index fa051fd712..4f72202e6a 100644 --- a/message.mk +++ b/message.mk @@ -21,8 +21,8 @@ OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n -TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' -TAB_LOG_PLAIN = printf "$$LOG\n" +TAB_LOG = printf "\n%s\n\n" "$$LOG" | $(AWK) '{ sub(/^/," | "); print }' +TAB_LOG_PLAIN = printf "%s\n" "$$LOG" AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }' PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && $(ON_ERROR) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index b1460c53cc..1c522e8b8b 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -169,7 +169,6 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) } // translates key to keycode -__attribute__ ((weak)) uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) { // Read entire word (16bits) diff --git a/tests/basic/keymap.c b/tests/basic/keymap.c index 3274f213f7..3f97c0a0ee 100644 --- a/tests/basic/keymap.c +++ b/tests/basic/keymap.c @@ -40,4 +40,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { } } return MACRO_NONE; -};
\ No newline at end of file +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { +}
\ No newline at end of file diff --git a/tests/test_common/matrix.c b/tests/test_common/matrix.c index 0d9fa68b04..4b501039b6 100644 --- a/tests/test_common/matrix.c +++ b/tests/test_common/matrix.c @@ -58,3 +58,6 @@ void release_key(uint8_t col, uint8_t row) { void clear_all_keys(void) { memset(matrix, 0, sizeof(matrix)); } + +void led_set(uint8_t usb_led) { +} diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp index df57338dfc..4084ee9c67 100644 --- a/tests/test_common/test_fixture.cpp +++ b/tests/test_common/test_fixture.cpp @@ -44,8 +44,8 @@ void TestFixture::run_one_scan_loop() { advance_time(1); } -void TestFixture::idle_for(uint time) { - for (uint i=0; i<time; i++) { +void TestFixture::idle_for(unsigned time) { + for (unsigned i=0; i<time; i++) { run_one_scan_loop(); } }
\ No newline at end of file diff --git a/tests/test_common/test_fixture.hpp b/tests/test_common/test_fixture.hpp index 4146b682b1..fb37e440fc 100644 --- a/tests/test_common/test_fixture.hpp +++ b/tests/test_common/test_fixture.hpp @@ -26,5 +26,5 @@ public: static void TearDownTestCase(); void run_one_scan_loop(); - void idle_for(uint ms); + void idle_for(unsigned ms); };
\ No newline at end of file diff --git a/tmk_core/native.mk b/tmk_core/native.mk index 50232ee9b7..530b50b84a 100644 --- a/tmk_core/native.mk +++ b/tmk_core/native.mk @@ -1,3 +1,5 @@ +SYSTEM_TYPE := $(shell gcc -dumpmachine) + CC = gcc OBJCOPY = OBJDUMP = @@ -14,6 +16,9 @@ COMPILEFLAGS += -funsigned-bitfields COMPILEFLAGS += -ffunction-sections COMPILEFLAGS += -fdata-sections COMPILEFLAGS += -fshort-enums +ifneq ($(findstring mingw, ${SYSTEM_TYPE}),) +COMPILEFLAGS += -mno-ms-bitfields +endif CFLAGS += $(COMPILEFLAGS) CFLAGS += -fno-inline-small-functions diff --git a/util/activate_msys2.sh b/util/activate_msys2.sh new file mode 100644 index 0000000000..bb0485302e --- /dev/null +++ b/util/activate_msys2.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +function export_variables { + local util_dir=~/qmk_utils + export PATH=$PATH:$util_dir/dfu-programmer + export PATH=$PATH:$util_dir/dfu-util-0.9-win64 + export PATH=$PATH:$util_dir/flip/bin + export PATH=$PATH:$util_dir/avr8-gnu-toolchain/bin + export PATH=$PATH:$util_dir/gcc-arm-none-eabi/bin +} + +export_variables + + + + diff --git a/util/msys2_install.sh b/util/msys2_install.sh new file mode 100644 index 0000000000..de03b89ac4 --- /dev/null +++ b/util/msys2_install.sh @@ -0,0 +1,117 @@ +#!/bin/bash + +dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +download_dir=~/qmk_utils +avrtools=avr8-gnu-toolchain +armtools=gcc-arm-none-eabi +installflip=false + +echo "Installing dependencies needed for the installation (quazip)" +pacman --needed -S msys/unzip msys/p7zip base-devel msys/git mingw-w64-x86_64-toolchain + +source "$dir/win_shared_install.sh" + +function install_avr { + rm -f -r "$avrtools" + wget "http://www.atmel.com/images/avr8-gnu-toolchain-installer-3.5.4.91-win32.any.x86.exe" + 7z x avr8-gnu-toolchain-installer-3.5.4.91-win32.any.x86.exe + rm avr8-gnu-toolchain-installer-3.5.4.91-win32.any.x86.exe +} + +function install_arm { + wget -O gcc-arm-none-eabi.zip "https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-win32.zip?product=GNU%20ARM%20Embedded%20Toolchain,ZIP,,Windows,6-2017-q2-update" + unzip -d gcc-arm-none-eabi gcc-arm-none-eabi.zip + rm gcc-arm-none-eabi.zip +} + +function extract_flip { + rm -f -r flip + 7z -oflip x FlipInstaller.exe +} + +pushd "$download_dir" + +if [ -f "FlipInstaller.exe" ]; then + echo + echo "Extracting flip" + extract_flip +fi + +if [ ! -d "$avrtools" ]; then + while true; do + echo + echo "The AVR toolchain is not installed." + echo "This is needed for building AVR based keboards." + read -p "Do you want to install it? (Y/N) " res + case $res in + [Yy]* ) install_avr; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +else + while true; do + echo + echo "The AVR toolchain is already installed" + read -p "Do you want to reinstall? (Y/N) " res + case $res in + [Yy]* ) install_avr; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +fi + +if [ ! -d "$armtools" ]; then + while true; do + echo + echo "The ARM toolchain is not installed." + echo "This is needed for building ARM based keboards." + read -p "Do you want to install it? (Y/N) " res + case $res in + [Yy]* ) install_arm; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +else + while true; do + echo + echo "The ARM toolchain is already installed" + read -p "Do you want to reinstall? (Y/N) " res + case $res in + [Yy]* ) install_arm; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +fi +popd + +cp -f "$dir/activate_msys2.sh" "$download_dir/" + +if grep "^source ~/qmk_utils/activate_msys2.sh$" ~/.bashrc +then + echo + echo "The line source ~/qmk_utils/activate_msys2.sh is already added to your /.bashrc" + echo "Not adding it twice!" +else + while true; do + echo + echo "Do you want to add 'source ~/qmk_utils/activate_msys2.sh' to the end of your" + echo ".bashrc file? Without this make won't find the needed utils, so if you don't" + echo "want to do it automatically, then you have to do it manually later." + read -p "(Y/N)? " res + case $res in + [Yy]* ) echo "source ~/qmk_utils/activate_msys2.sh" >> ~/.bashrc; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +fi + +echo +echo "******************************************************************************" +echo "Installation completed!" +echo "Please close this Window and restart MSYS2 MinGW" +echo "******************************************************************************"
\ No newline at end of file diff --git a/util/win_shared_install.sh b/util/win_shared_install.sh new file mode 100644 index 0000000000..8d1949ae9f --- /dev/null +++ b/util/win_shared_install.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +function install_utils { + rm -f -r "$download_dir" + mkdir "$download_dir" + + pushd "$download_dir" + + echo "Installing dfu-programmer" + wget 'http://downloads.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip' + unzip -d dfu-programmer dfu-programmer-win-0.7.2.zip + + echo "Installing dfu-util" + wget 'http://dfu-util.sourceforge.net/releases/dfu-util-0.9-win64.zip' + unzip dfu-util-0.9-win64.zip + + echo "Installing teensy_loader_cli" + wget 'https://www.pjrc.com/teensy/teensy_loader_cli_windows.zip' + unzip teensy_loader_cli_windows.zip + + echo "Installing Atmel Flip" + wget 'http://www.atmel.com/images/Flip%20Installer%20-%203.4.7.112.exe' + mv Flip\ Installer\ \-\ 3.4.7.112.exe FlipInstaller.exe + + echo "Downloading the QMK driver installer" + wget -qO- https://api.github.com/repos/qmk/qmk_driver_installer/releases | grep browser_download_url | head -n 1 | cut -d '"' -f 4 | wget -i - + + rm -f *.zip + + popd > /dev/null +} + +function install_drivers { + pushd "$download_dir" + cp -f "$dir/drivers.txt" . + echo + cmd.exe /c "qmk_driver_installer.exe $1 $2 drivers.txt" + popd > /dev/null +} + +pushd "$dir" + +if [ ! -d "$download_dir" ]; then + install_utils +else + while true; do + echo + echo "The utils seem to already be downloaded." + read -p "Do you want to re-download them and update to the newest version (Y/N) " res + case $res in + [Yy]* ) install_utils; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac + done +fi + +while true; do + echo + echo "Which USB drivers do you want to install?" + echo "(A)all - All supported drivers will be installed" + echo "(C)onnected - Only drivers for connected keyboards (in bootloader/flashing mode)" + echo " will be installed" + echo "(F)force - Like all, but will also override existing drivers for connected" + echo " keyboards" + echo "(N)one - No drivers will be installed," + echo " flashing your keyboard will most likely not work" + read -p "(A/C/F/N)? " res + case $res in + [Aa]* ) install_drivers --all; break;; + [Cc]* ) install_drivers; break;; + [Ff]* ) install_drivers --all --force; break;; + [Nn]* ) break;; + * ) echo "Invalid answer";; + esac +done + + +popd > /dev/null + diff --git a/util/wsl_install.sh b/util/wsl_install.sh index 8999da8a46..1574803534 100644 --- a/util/wsl_install.sh +++ b/util/wsl_install.sh @@ -1,44 +1,7 @@ #!/bin/bash -download_dir=wsl_downloaded - -function install_utils { - rm -f -r $download_dir - mkdir $download_dir - - pushd $download_dir - - echo "Installing dfu-programmer" - wget 'http://downloads.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip' - unzip -d dfu-programmer dfu-programmer-win-0.7.2.zip - - echo "Installing dfu-util" - wget 'http://dfu-util.sourceforge.net/releases/dfu-util-0.9-win64.zip' - unzip dfu-util-0.9-win64.zip - - echo "Installing teensy_loader_cli" - wget 'https://www.pjrc.com/teensy/teensy_loader_cli_windows.zip' - unzip teensy_loader_cli_windows.zip - - echo "Installing Atmel Flip" - wget 'http://www.atmel.com/images/Flip%20Installer%20-%203.4.7.112.exe' - mv Flip\ Installer\ \-\ 3.4.7.112.exe FlipInstaller.exe - - echo "Downloading the QMK driver installer" - wget -qO- https://api.github.com/repos/qmk/qmk_driver_installer/releases | grep browser_download_url | head -n 1 | cut -d '"' -f 4 | wget -i - - - rm -f *.zip - - popd > /dev/null -} - -function install_drivers { - pushd $download_dir - cmd.exe /C qmk_driver_installer.exe $1 $2 ../drivers.txt - popd > /dev/null -} - dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +pushd "$dir"; if [[ $dir != /mnt/* ]]; then @@ -48,7 +11,6 @@ then exit 1 fi -pushd "$dir" while true; do echo @@ -67,49 +29,25 @@ echo "Installing dependencies needed for the installation (unzip, wget)" echo "This will ask for the sudo password" sudo apt-get install unzip wget +download_dir=wsl_downloaded -if [ ! -d "$download_dir" ]; then - install_utils -else - while true; do - echo - read -p "The utils seem to already be downloaded, do you want to re-download them and update to the newest version (Y/N) " res - case $res in - [Yy]* ) install_utils; break;; - [Nn]* ) break;; - * ) echo "Invalid answer";; - esac - done -fi +source "$dir/win_shared_install.sh" +pushd "$download_dir" while true; do echo - read -p "Flip need to be installed if you want to use that for programming, do you want to install it now? (Y/N) " res + echo "Flip need to be installed if you want to use that for programming." + echo "Please install it to the default location!" + read -p "Do you want to install it now? (Y/N) " res case $res in - [Yy]* ) cmd.exe /c $download_dir\\FlipInstaller.exe; break;; + [Yy]* ) cmd.exe /c FlipInstaller.exe; break;; [Nn]* ) break;; * ) echo "Invalid answer";; esac done +popd -while true; do - echo - echo "Which USB drivers do you want to install?" - echo "(A)all - All supported drivers will be installed" - echo "(C)onnected - Only drivers for connected keyboards (in bootloader/flashing mode) will be installed" - echo "(F)force - Like all, but will also override existing drivers for connected keyboards" - echo "(N)one - No drivers will be installed, flashing your keyboard will most likely not work" - read -p "(A/C/F/N)? " res - case $res in - [Aa]* ) install_drivers --all; break;; - [Cc]* ) install_drivers; break;; - [Ff]* ) install_drivers --all --force; break;; - [Nn]* ) break;; - * ) echo "Invalid answer";; - esac -done - echo echo "Creating a softlink to the utils directory as ~/qmk_utils." echo "This is needed so that the the make system can find all utils it need." @@ -124,9 +62,9 @@ then else while true; do echo - echo "Do you want to add 'source ~/qmk_utils/activate_wsl.sh' to the end of you .bashrc file?" - echo "Without this make won't find the needed utils, so if you don't want to do it automatically," - echo "then you have to do it manually." + echo "Do you want to add 'source ~/qmk_utils/activate_wsl.sh' to the end of your" + echo ".bashrc file? Without this make won't find the needed utils, so if you don't" + echo "want to do it automatically, then you have to do it manually later." read -p "(Y/N)? " res case $res in [Yy]* ) echo "source ~/qmk_utils/activate_wsl.sh" >> ~/.bashrc; break;; @@ -138,9 +76,10 @@ fi while true; do echo - echo "Do you want to add a symlink to the QMK repository in your home directory for convenience?" - echo "This will create a folder 'qmk_firmware' in your home directory." - echo "In the future you can use this folder instead of the full path on your windows file system" + echo "Do you want to add a symlink to the QMK repository in your home directory for" + echo "convenience? This will create a folder 'qmk_firmware' in your home directory." + echo "In the future you can use this folder instead of the full path on your Windows" + echo "file system." read -p "(Y/N)? " res case $res in [Yy]* ) ln -sfn "$dir/.." ~/qmk_firmware; break;; @@ -156,4 +95,3 @@ echo "You need to open a new batch command prompt for all the utils to work prop echo "******************************************************************************" popd > /dev/null - |