Skip to content

Commit

Permalink
Merge pull request qmk#1491 from fredizzimo/msys2
Browse files Browse the repository at this point in the history
Add support for msys2 build environment
  • Loading branch information
jackhumbert authored Jul 13, 2017
2 parents 087af43 + b7d8dec commit 6ed8ce4
Show file tree
Hide file tree
Showing 12 changed files with 247 additions and 85 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ quantum/version.h
CMakeLists.txt
.DS_STORE
/util/wsl_downloaded
/util/win_downloaded

# Eclipse/PyCharm/Other IDE Settings
.cproject
Expand Down
4 changes: 2 additions & 2 deletions message.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 0 additions & 1 deletion quantum/keymap_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 4 additions & 1 deletion tests/basic/keymap.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
}
}
return MACRO_NONE;
};
};

void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
}
3 changes: 3 additions & 0 deletions tests/test_common/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
}
4 changes: 2 additions & 2 deletions tests/test_common/test_fixture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
2 changes: 1 addition & 1 deletion tests/test_common/test_fixture.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ class TestFixture : public testing::Test {
static void TearDownTestCase();

void run_one_scan_loop();
void idle_for(uint ms);
void idle_for(unsigned ms);
};
5 changes: 5 additions & 0 deletions tmk_core/native.mk
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SYSTEM_TYPE := $(shell gcc -dumpmachine)

CC = gcc
OBJCOPY =
OBJDUMP =
Expand All @@ -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
Expand Down
16 changes: 16 additions & 0 deletions util/activate_msys2.sh
Original file line number Diff line number Diff line change
@@ -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




117 changes: 117 additions & 0 deletions util/msys2_install.sh
Original file line number Diff line number Diff line change
@@ -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 "******************************************************************************"
80 changes: 80 additions & 0 deletions util/win_shared_install.sh
Original file line number Diff line number Diff line change
@@ -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

Loading

0 comments on commit 6ed8ce4

Please sign in to comment.