1 |
ron |
1 |
cmake_minimum_required(VERSION 2.8)
|
|
|
2 |
#====================================================================#
|
|
|
3 |
# Usage under Linux: #
|
|
|
4 |
# #
|
|
|
5 |
# From Marlin/buildroot/share/cmake folder: #
|
|
|
6 |
# mkdir -p build && cd build #
|
|
|
7 |
# cmake .. #
|
|
|
8 |
# make #
|
|
|
9 |
# #
|
|
|
10 |
# Usage under Windows: #
|
|
|
11 |
# #
|
|
|
12 |
# From Marlin/buildroot/share/cmake folder: #
|
|
|
13 |
# mkdir build && cd build #
|
|
|
14 |
# cmake -G"Unix Makefiles" .. #
|
|
|
15 |
# make #
|
|
|
16 |
#====================================================================#
|
|
|
17 |
|
|
|
18 |
#====================================================================#
|
|
|
19 |
# Download marlin-cmake scriptfiles if not already installed #
|
|
|
20 |
# and add the path to the module path #
|
|
|
21 |
#====================================================================#
|
|
|
22 |
|
|
|
23 |
set(SCRIPT_BRANCH 1.0.2) #Set to wanted marlin-cmake release tag or branch
|
|
|
24 |
|
|
|
25 |
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake)
|
|
|
26 |
|
|
|
27 |
file(DOWNLOAD https://github.com/tohara/marlin-cmake/archive/${SCRIPT_BRANCH}.tar.gz
|
|
|
28 |
${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz SHOW_PROGRESS)
|
|
|
29 |
|
|
|
30 |
execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xvf ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
|
31 |
|
|
|
32 |
file(RENAME ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-${SCRIPT_BRANCH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake)
|
|
|
33 |
file(REMOVE ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake-src.tar.gz)
|
|
|
34 |
|
|
|
35 |
|
|
|
36 |
endif()
|
|
|
37 |
|
|
|
38 |
if(WIN32 AND NOT EXISTS ${CMAKE_BINARY_DIR}/make.exe)
|
|
|
39 |
file(COPY ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/resources/make.exe DESTINATION ${CMAKE_BINARY_DIR}/)
|
|
|
40 |
endif()
|
|
|
41 |
|
|
|
42 |
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/modules)
|
|
|
43 |
|
|
|
44 |
#====================================================================#
|
|
|
45 |
# Custom path to Arduino SDK can be set here. #
|
|
|
46 |
# It can also be set from command line. eg.: #
|
|
|
47 |
# cmake .. -DARDUINO_SDK_PATH="/path/to/arduino-1.x.x" #
|
|
|
48 |
#====================================================================#
|
|
|
49 |
#set(ARDUINO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR}/arduino-1.6.8)
|
|
|
50 |
#set(ARDUINO_SDK_PATH /home/tom/git/BigBox-Dual-Marlin/ArduinoAddons/Arduino_1.6.x)
|
|
|
51 |
#set(ARDUINO_SDK_PATH /home/tom/test/arduino-1.6.11)
|
|
|
52 |
#====================================================================#
|
|
|
53 |
# Set included cmake files #
|
|
|
54 |
#====================================================================#
|
|
|
55 |
include(Arduino_SDK) # Find the intallpath of Arduino SDK
|
|
|
56 |
include(marlin_cmake_functions)
|
|
|
57 |
|
|
|
58 |
#====================================================================#
|
|
|
59 |
# Set toolchain file for arduino #
|
|
|
60 |
#====================================================================#
|
|
|
61 |
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_LIST_DIR}/marlin-cmake/toolchain/ArduinoToolchain.cmake) # Arduino Toolchain
|
|
|
62 |
|
|
|
63 |
#====================================================================#
|
|
|
64 |
# Setup Project #
|
|
|
65 |
#====================================================================#
|
|
|
66 |
project(Marlin C CXX)
|
|
|
67 |
|
|
|
68 |
#====================================================================#
|
|
|
69 |
# Register non standard hardware #
|
|
|
70 |
#====================================================================#
|
|
|
71 |
#register_hardware_platform(/home/tom/test/Sanguino)
|
|
|
72 |
|
|
|
73 |
#====================================================================#
|
|
|
74 |
# Print any info #
|
|
|
75 |
# print_board_list() #
|
|
|
76 |
# print_programmer_list() #
|
|
|
77 |
# print_board_settings(mega) #
|
|
|
78 |
#====================================================================#
|
|
|
79 |
print_board_list()
|
|
|
80 |
print_programmer_list()
|
|
|
81 |
|
|
|
82 |
|
|
|
83 |
#====================================================================#
|
|
|
84 |
# Get motherboard settings from Configuration.h #
|
|
|
85 |
# setup_motherboard(TARGET Marlin_src_folder) #
|
|
|
86 |
# Returns ${TARGET}_BOARD and ${TARGET}_CPU #
|
|
|
87 |
# #
|
|
|
88 |
# To set it manually: #
|
|
|
89 |
# set(${PROJECT_NAME}_BOARD mega) #
|
|
|
90 |
# set(${PROJECT_NAME}_CPU atmega2560) #
|
|
|
91 |
#====================================================================#
|
|
|
92 |
setup_motherboard(${PROJECT_NAME} ${CMAKE_CURRENT_LIST_DIR}/../../../Marlin)
|
|
|
93 |
|
|
|
94 |
#====================================================================#
|
|
|
95 |
# Setup all source files #
|
|
|
96 |
# Incude Marlin.ino to compile libs not included in *.cpp files #
|
|
|
97 |
#====================================================================#
|
|
|
98 |
|
|
|
99 |
file(GLOB SOURCES "../../../Marlin/*.cpp")
|
|
|
100 |
set(${PROJECT_NAME}_SRCS "${SOURCES};../../../Marlin/Marlin.ino")
|
|
|
101 |
|
|
|
102 |
#====================================================================#
|
|
|
103 |
# Define the port for uploading code to the Arduino #
|
|
|
104 |
# Can be set from commandline with: #
|
|
|
105 |
# cmake .. -DUPLOAD_PORT=/dev/ttyACM0 #
|
|
|
106 |
#====================================================================#
|
|
|
107 |
if(UPLOAD_PORT)
|
|
|
108 |
set(${PROJECT_NAME}_PORT ${UPLOAD_PORT})
|
|
|
109 |
else()
|
|
|
110 |
set(${PROJECT_NAME}_PORT /dev/ttyACM0)
|
|
|
111 |
endif()
|
|
|
112 |
|
|
|
113 |
#====================================================================#
|
|
|
114 |
# Register arduino libraries not included in SDK #
|
|
|
115 |
#====================================================================#
|
|
|
116 |
#link_directories(/home/tom/test/ArduinoAddons) #U8glib
|
|
|
117 |
#set(${PROJECT_NAME}_ARDLIBS U8glib)
|
|
|
118 |
#set(U8glib_RECURSE True)
|
|
|
119 |
|
|
|
120 |
#====================================================================#
|
|
|
121 |
# Command to generate code arduino firmware (.hex file) #
|
|
|
122 |
#====================================================================#
|
|
|
123 |
generate_arduino_firmware(${PROJECT_NAME})
|