Pārlūkot izejas kodu

Merge pull request #1365 from mkbel/build_lang

Build lang
PavelSindler 5 gadi atpakaļ
vecāks
revīzija
23e8d6adf5
13 mainītis faili ar 117 papildinājumiem un 17 dzēšanām
  1. 14 0
      .gitignore
  2. 18 0
      .travis.yml
  3. 3 1
      CMakeLists.txt
  4. 2 2
      Firmware/config.h
  5. 21 9
      README.md
  6. 40 0
      build.sh
  7. 7 5
      lang/config.sh
  8. 0 0
      lang/fw-build.sh
  9. 0 0
      lang/lang-build.sh
  10. 0 0
      lang/progmem.sh
  11. 0 0
      lang/textaddr.sh
  12. 0 0
      lang/update_lang.sh
  13. 12 0
      test.sh

+ 14 - 0
.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/

+ 18 - 0
.travis.yml

@@ -0,0 +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

+ 3 - 1
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)
 

+ 2 - 2
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)
 
 

+ 21 - 9
README.md

@@ -1,15 +1,24 @@
 # Table of contents
 
 <!--ts-->
-   * [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)
 <!--te-->
 
-# 1. Development environment preparation
 
-   1. install `"Arduino Software IDE"` for your preferred operating system  
+# Build
+## Linux
+Run shell script build.sh to build for MK3 and flash with Sli3er.  
+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-\<version\> 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_\<lang\>.hex for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers.
+## Windows
+### 1. Development environment preparation
+
+   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  
@@ -17,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  
@@ -34,16 +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
+### 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/`  
-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  
+
+b.<a name="2b"></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.  
+
+c.<a name="2c"></a> 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`  

+ 40 - 0
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

+ 7 - 5
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"

+ 0 - 0
lang/fw-build.sh


+ 0 - 0
lang/lang-build.sh


+ 0 - 0
lang/progmem.sh


+ 0 - 0
lang/textaddr.sh


+ 0 - 0
lang/update_lang.sh


+ 12 - 0
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