From 38dacaf07a679857047b421fa42779887dd8c34d Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Mon, 26 Nov 2018 20:24:24 +0100 Subject: [PATCH 1/6] Automate secondary language support build. --- .gitignore | 14 ++++++++++++++ .travis.yml | 3 +++ Firmware/config.h | 4 ++-- build.sh | 40 ++++++++++++++++++++++++++++++++++++++++ lang/config.sh | 12 +++++++----- lang/fw-build.sh | 0 lang/lang-build.sh | 0 lang/progmem.sh | 0 lang/textaddr.sh | 0 lang/update_lang.sh | 0 10 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 .travis.yml create mode 100755 build.sh mode change 100644 => 100755 lang/fw-build.sh mode change 100644 => 100755 lang/lang-build.sh mode change 100644 => 100755 lang/progmem.sh mode change 100644 => 100755 lang/textaddr.sh mode change 100644 => 100755 lang/update_lang.sh diff --git a/.gitignore b/.gitignore index 2658902f4d..3ba8f4642f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,17 @@ Firmware/Doc /html /latex /Doxyfile +/lang/*.bin +/lang/*.hex +/lang/*.dat +/lang/*.tmp +/lang/*.out +/lang/not_tran.txt +/lang/not_used.txt +/lang/progmem1.chr +/lang/progmem1.lss +/lang/progmem1.txt +/lang/progmem1.var +/lang/text.sym +/lang/textaddr.txt +/build-env/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..43b49d04a5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +dist: trusty +script: + - bash -x build.sh diff --git a/Firmware/config.h b/Firmware/config.h index 64cf1468f7..7c4341dc0d 100644 --- a/Firmware/config.h +++ b/Firmware/config.h @@ -43,8 +43,8 @@ #define W25X20CL_SPSR SPI_SPSR(W25X20CL_SPI_RATE) //LANG - Multi-language support -#define LANG_MODE 0 // primary language only -//#define LANG_MODE 1 // sec. language support +//#define LANG_MODE 0 // primary language only +#define LANG_MODE 1 // sec. language support #define LANG_SIZE_RESERVED 0x2f00 // reserved space for secondary language (12032 bytes) diff --git a/build.sh b/build.sh new file mode 100755 index 0000000000..45bb9a931b --- /dev/null +++ b/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash +BUILD_ENV="1.0.1" +SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" + +if [ ! -d "build-env" ]; then + mkdir build-env || exit 1 +fi +cd build-env || exit 2 + +if [ ! -f "PF-build-env-Linux64-$BUILD_ENV.zip" ]; then + wget https://github.com/mkbel/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3 +fi + +if [ ! -d "../../PF-build-env-$BUILD_ENV" ]; then + unzip PF-build-env-Linux64-$BUILD_ENV.zip -d ../../PF-build-env-$BUILD_ENV || exit 4 +fi + +cd ../../PF-build-env-$BUILD_ENV || exit 5 +BUILD_ENV_PATH="$( pwd -P )" + +cd .. + +if [ ! -d "Prusa-Firmware-build" ]; then + mkdir Prusa-Firmware-build || exit 6 +fi + +cd Prusa-Firmware-build || exit 7 +BUILD_PATH="$( pwd -P )" + +if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then + cp $SCRIPT_PATH/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 8 +fi + +$BUILD_ENV_PATH/arduino $SCRIPT_PATH/Firmware/Firmware.ino --verify --board rambo:avr:rambo --pref build.path=$BUILD_PATH || exit 9 + +export ARDUINO=$BUILD_ENV_PATH + +cd $SCRIPT_PATH/lang +./lang-build.sh || exit 10 +./fw-build.sh || exit 11 diff --git a/lang/config.sh b/lang/config.sh index a4aae26ef6..f518693fcb 100644 --- a/lang/config.sh +++ b/lang/config.sh @@ -5,17 +5,19 @@ # This file is 'included' in all scripts. # # Arduino main folder: -export ARDUINO=C:/arduino-1.8.5 +if [ -z "$ARDUINO" ]; then + export ARDUINO=C:/arduino-1.8.5 +fi # # Arduino builder: -export BUILDER=$ARDUINO/arduino_debug.exe +export BUILDER=$ARDUINO/arduino-builder # # AVR gcc tools: -export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy.exe -export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump.exe +export OBJCOPY=$ARDUINO/hardware/tools/avr/bin/avr-objcopy +export OBJDUMP=$ARDUINO/hardware/tools/avr/bin/avr-objdump # # Output folder: -export OUTDIR="../../output" +export OUTDIR="../../Prusa-Firmware-build" # # Objects folder: export OBJDIR="$OUTDIR/sketch" diff --git a/lang/fw-build.sh b/lang/fw-build.sh old mode 100644 new mode 100755 diff --git a/lang/lang-build.sh b/lang/lang-build.sh old mode 100644 new mode 100755 diff --git a/lang/progmem.sh b/lang/progmem.sh old mode 100644 new mode 100755 diff --git a/lang/textaddr.sh b/lang/textaddr.sh old mode 100644 new mode 100755 diff --git a/lang/update_lang.sh b/lang/update_lang.sh old mode 100644 new mode 100755 From ebf7e805a823a7857db9f90aa31b8b32ce699269 Mon Sep 17 00:00:00 2001 From: mkbel <35807926+mkbel@users.noreply.github.com> Date: Tue, 27 Nov 2018 14:21:55 +0100 Subject: [PATCH 2/6] Update README.md --- README.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e15a8c97ad..bddfc50700 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,22 @@ # Table of contents - * [Development environment preparation](#1-development-environment-preparation) - * [Source code compilation](#2-source-code-compilation) + * [Linux build](#linux) + * [Windows build](#windows) * [Automated tests](#3-automated-tests) * [Documentation](#4-documentation) -# 1. Development environment preparation + +# Build +## Linux +Run shell script build.sh to build for MK3 and flash with Sli3er. +If you have different printel model, follow step 2.a from Windows build first. +If you wish to flash from Arduino, follow step 2.b from Windows build first. + +The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder PF-build-env-\ on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use firmware_\.hex for other printers. Don't forget to follow step 2.a first for non-MK3 printers. +## Windows +### 1. Development environment preparation 1. install `"Arduino Software IDE"` for your preferred operating system `https://www.arduino.cc -> Software->Downloads` @@ -39,11 +48,14 @@ add "-Wl,-u,vfprintf -lprintf_flt -lm" to "compiler.c.elf.flags=" before existin example: `"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"` -# 2. Source code compilation +### 2. Source code compilation place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk `https://github.com/prusa3d/Prusa-Firmware/` -in the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy them into `"Firmware/"` directory + +2.a In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory. + +2.b In file `"Firmware/config.h"` set LANG_MODE to 0. run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source codes `File->Open` From ae7abe17ddce3fb6bcaf8170950058bb51f87c48 Mon Sep 17 00:00:00 2001 From: mkbel <35807926+mkbel@users.noreply.github.com> Date: Tue, 27 Nov 2018 14:33:50 +0100 Subject: [PATCH 3/6] Update README.md --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bddfc50700..c67746d6c5 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,14 @@ # Build ## Linux Run shell script build.sh to build for MK3 and flash with Sli3er. -If you have different printel model, follow step 2.a from Windows build first. -If you wish to flash from Arduino, follow step 2.b from Windows build first. +If you have different printel model, follow step [2.b](#2b) from Windows build first. +If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first. -The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder PF-build-env-\ on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use firmware_\.hex for other printers. Don't forget to follow step 2.a first for non-MK3 printers. +The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder PF-build-env-\ on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use firmware_\.hex for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers. ## Windows ### 1. Development environment preparation - 1. install `"Arduino Software IDE"` for your preferred operating system + a. install `"Arduino Software IDE"` for your preferred operating system `https://www.arduino.cc -> Software->Downloads` it is recommended to use older version `"1.6.9"`, as it is used on out build server to produce official builds. _note: in the case of persistent compilation problems, check the version of the currently used C/C++ compiler (GCC) - should be `4.8.1`; version can be verified by entering the command @@ -26,7 +26,7 @@ _note: in the case of persistent compilation problems, check the version of the if you are not sure where the file is placed (depends on how `"Arduino Software IDE"` was installed), you can use the search feature within the file system_ _note: name collision for `"LiquidCrystal"` library known from previous versions is now obsolete (so there is no need to delete or rename original file/-s)_ - 2. add (`UltiMachine`) `RAMBo` board into the list of Arduino target boards + b. add (`UltiMachine`) `RAMBo` board into the list of Arduino target boards `File->Preferences->Settings` into text field `"Additional Boards Manager URLs"` type location @@ -43,19 +43,19 @@ _note: select this item for any variant of board used in printers `'Prusa i3 MKx 'clicking' the item will display the installation button; select choice `"1.0.1"` from the list(last known version as of the date of issue of this document) _(after installation, the item is labeled as `"INSTALLED"` and can then be used for target board selection)_ - 3. modify platform.txt to enable float printf support: + c. modify platform.txt to enable float printf support: add "-Wl,-u,vfprintf -lprintf_flt -lm" to "compiler.c.elf.flags=" before existing flag "-Wl,--gc-sections" example: `"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"` ### 2. Source code compilation -place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk +a.place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk `https://github.com/prusa3d/Prusa-Firmware/` -2.a In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory. +b. In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory. -2.b In file `"Firmware/config.h"` set LANG_MODE to 0. +c. In file `"Firmware/config.h"` set LANG_MODE to 0. run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source codes `File->Open` From 47356752d401c8e46b67ea48a3c10f94a09ce68d Mon Sep 17 00:00:00 2001 From: mkbel <35807926+mkbel@users.noreply.github.com> Date: Tue, 27 Nov 2018 14:34:35 +0100 Subject: [PATCH 4/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c67746d6c5..593f9134e7 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ example: ### 2. Source code compilation -a.place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk +a. place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk `https://github.com/prusa3d/Prusa-Firmware/` b. In the subdirectory `"Firmware/variants/"` select the configuration file (`.h`) corresponding to your printer model, make copy named `"Configuration_prusa.h"` (or make simple renaming) and copy it into `"Firmware/"` directory. From c571355db5906151a4713a44691025658bfa2a42 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 27 Nov 2018 17:51:05 +0100 Subject: [PATCH 5/6] Run tests and build all variants on Travis-ci. --- .travis.yml | 15 +++++++++++++++ test.sh | 12 ++++++++++++ 2 files changed, 27 insertions(+) create mode 100755 test.sh diff --git a/.travis.yml b/.travis.yml index 43b49d04a5..cb96d2aa81 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,18 @@ dist: trusty +before_install: + - sudo apt-get install -y ninja-build script: + - bash -x test.sh - bash -x build.sh + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh + - rm Firmware/Configuration_prusa.h + - cp Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h + - bash -x build.sh \ No newline at end of file diff --git a/test.sh b/test.sh new file mode 100755 index 0000000000..90047e2d4d --- /dev/null +++ b/test.sh @@ -0,0 +1,12 @@ +#!/bin/bash +cd .. || exit 5 + +if [ ! -d "Prusa-Firmware-test" ]; then + mkdir Prusa-Firmware-test || exit 10 +fi + +cd Prusa-Firmware-test || exit 20 + +cmake -G "Eclipse CDT4 - Ninja" ../Prusa-Firmware || exit 30 +cmake --build . || exit 35 +./tests || exit 40 \ No newline at end of file From 71826a3ab820851a49f01f921d83e82285da5353 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Tue, 27 Nov 2018 18:00:20 +0100 Subject: [PATCH 6/6] Fix tests build on Travis. --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03ff80e3d1..5b0798404f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,6 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.1) + +set (CMAKE_CXX_STANDARD 11) project(cmake_test)