Skip to content

Commit

Permalink
Merge pull request prusa3d#1365 from mkbel/build_lang
Browse files Browse the repository at this point in the history
Build lang
  • Loading branch information
PavelSindler authored Nov 30, 2018
2 parents 9087645 + 71826a3 commit 23e8d6a
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 17 deletions.
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -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
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.1)

set (CMAKE_CXX_STANDARD 11)

project(cmake_test)

Expand Down
4 changes: 2 additions & 2 deletions Firmware/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)


Expand Down
30 changes: 21 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,32 @@
# 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
`avr-gcc --version`
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
Expand All @@ -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`
Expand Down
40 changes: 40 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -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
12 changes: 7 additions & 5 deletions lang/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Empty file modified lang/fw-build.sh
100644 → 100755
Empty file.
Empty file modified lang/lang-build.sh
100644 → 100755
Empty file.
Empty file modified lang/progmem.sh
100644 → 100755
Empty file.
Empty file modified lang/textaddr.sh
100644 → 100755
Empty file.
Empty file modified lang/update_lang.sh
100644 → 100755
Empty file.
12 changes: 12 additions & 0 deletions test.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 23e8d6a

Please sign in to comment.