mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
Merge remote-tracking branch 'origin/os/friendly-toolchain-install' into next
This commit is contained in:
commit
3b3377e6f4
37
Makefile
37
Makefile
@ -1,6 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Top level Makefile for the OpenPilot project build system.
|
# Top level Makefile for the OpenPilot project build system.
|
||||||
# Copyright (c) 2010-2013, The OpenPilot Team, http://www.openpilot.org
|
# Copyright (c) 2010-2013, The OpenPilot Team, http://www.openpilot.org
|
||||||
|
# Use 'make help' for instructions.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -93,39 +94,11 @@ endif
|
|||||||
# the tools.mk to ensure that we download/install the right tools.
|
# the tools.mk to ensure that we download/install the right tools.
|
||||||
UNAME := $(shell uname)
|
UNAME := $(shell uname)
|
||||||
ARCH := $(shell uname -m)
|
ARCH := $(shell uname -m)
|
||||||
# Here and everywhere if not Linux or OSX then assume Windows
|
# Here and everywhere if not Linux or Mac then assume Windows
|
||||||
ifeq ($(filter Linux Darwin, $(UNAME)), )
|
ifeq ($(filter Linux Darwin, $(UNAME)), )
|
||||||
UNAME := Windows
|
UNAME := Windows
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Set up misc host tools
|
|
||||||
export ECHO := echo
|
|
||||||
export MKDIR := mkdir
|
|
||||||
export CP := cp
|
|
||||||
export RM := rm
|
|
||||||
export LN := ln
|
|
||||||
export CAT := cat
|
|
||||||
export SED := sed
|
|
||||||
export TAR := tar
|
|
||||||
export ANT := ant
|
|
||||||
export JAVAC := javac
|
|
||||||
export JAR := jar
|
|
||||||
export GIT := git
|
|
||||||
export CURL := curl
|
|
||||||
export PYTHON := python
|
|
||||||
export INSTALL := install
|
|
||||||
|
|
||||||
# Command to extract version info data from the repository and source tree
|
|
||||||
export VERSION_INFO := $(PYTHON) "$(ROOT_DIR)/make/scripts/version-info.py" --path="$(ROOT_DIR)"
|
|
||||||
|
|
||||||
# Test if quotes are needed for the echo-command
|
|
||||||
ifeq (${shell $(ECHO) "test"}, test)
|
|
||||||
export QUOTE := '
|
|
||||||
# This line is just to clear out the single quote above '
|
|
||||||
else
|
|
||||||
export QUOTE :=
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Include tools installers
|
# Include tools installers
|
||||||
include $(ROOT_DIR)/make/tools.mk
|
include $(ROOT_DIR)/make/tools.mk
|
||||||
|
|
||||||
@ -136,7 +109,7 @@ ifeq ($(UNAME), Linux)
|
|||||||
else ifeq ($(UNAME), Darwin)
|
else ifeq ($(UNAME), Darwin)
|
||||||
QT_SPEC = macx-g++
|
QT_SPEC = macx-g++
|
||||||
UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/uavobjgenerator"
|
UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/uavobjgenerator"
|
||||||
else
|
else ifeq ($(UNAME), Windows)
|
||||||
QT_SPEC = win32-g++
|
QT_SPEC = win32-g++
|
||||||
UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/$(UAVOGEN_BUILD_CONF)/uavobjgenerator.exe"
|
UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/$(UAVOGEN_BUILD_CONF)/uavobjgenerator.exe"
|
||||||
endif
|
endif
|
||||||
@ -846,8 +819,10 @@ help:
|
|||||||
@$(ECHO) " Here is a summary of the available targets:"
|
@$(ECHO) " Here is a summary of the available targets:"
|
||||||
@$(ECHO)
|
@$(ECHO)
|
||||||
@$(ECHO) " [Tool Installers]"
|
@$(ECHO) " [Tool Installers]"
|
||||||
@$(ECHO) " qt_sdk_install - Install the QT development tools"
|
|
||||||
@$(ECHO) " arm_sdk_install - Install the GNU ARM gcc toolchain"
|
@$(ECHO) " arm_sdk_install - Install the GNU ARM gcc toolchain"
|
||||||
|
@$(ECHO) " qt_sdk_install - Install the QT development tools"
|
||||||
|
@$(ECHO) " mingw_install - Install the MinGW toolchain (Windows only)"
|
||||||
|
@$(ECHO) " python_install - Install the Python interpreter (Windows only)"
|
||||||
@$(ECHO) " openocd_install - Install the OpenOCD JTAG daemon"
|
@$(ECHO) " openocd_install - Install the OpenOCD JTAG daemon"
|
||||||
@$(ECHO) " stm32flash_install - Install the stm32flash tool for unbricking F1-based boards"
|
@$(ECHO) " stm32flash_install - Install the stm32flash tool for unbricking F1-based boards"
|
||||||
@$(ECHO) " dfuutil_install - Install the dfu-util tool for unbricking F4-based boards"
|
@$(ECHO) " dfuutil_install - Install the dfu-util tool for unbricking F4-based boards"
|
||||||
|
@ -21,6 +21,7 @@ ifndef OPENPILOT_IS_COOL
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
include $(ROOT_DIR)/make/boards/$(BOARD_NAME)/board-info.mk
|
include $(ROOT_DIR)/make/boards/$(BOARD_NAME)/board-info.mk
|
||||||
|
include $(ROOT_DIR)/make/firmware-defs.mk
|
||||||
|
|
||||||
# Paths
|
# Paths
|
||||||
TOPDIR = .
|
TOPDIR = .
|
||||||
|
0
ground/openpilotgcs/bin/openpilotgcs
Normal file → Executable file
0
ground/openpilotgcs/bin/openpilotgcs
Normal file → Executable file
96
make/scripts/win_sdk_install.sh
Normal file
96
make/scripts/win_sdk_install.sh
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# win_sdk_install.sh - Windows toolchain install script.
|
||||||
|
# Copyright (c) 2013, The OpenPilot Team, http://www.openpilot.org
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
# This script should be launched from git bash prompt. It assumes MSYS
|
||||||
|
# environment and expects path names in the form of /C/some/path, where
|
||||||
|
# C is a drive letter, and paths are in MSYS format. It probably won't
|
||||||
|
# work under cygwin.
|
||||||
|
SCRIPT_PATH="`echo "$BASH_SOURCE" | sed 's|\\\\|/|g; s|^\(.\):|/\1|'`"
|
||||||
|
SCRIPT_NAME="`basename \"$SCRIPT_PATH\"`"
|
||||||
|
SCRIPT_DIR="`dirname \"$SCRIPT_PATH\"`"
|
||||||
|
ROOT_DIR="`pushd \"$SCRIPT_DIR/../..\" >/dev/null && pwd && popd >/dev/null`"
|
||||||
|
TOOLS_DIR="$ROOT_DIR/tools"
|
||||||
|
|
||||||
|
# Tools URLs to fetch
|
||||||
|
WGET_URL="http://wiki.openpilot.org/download/attachments/18612236/wget.exe"
|
||||||
|
MAKE_URL="http://wiki.openpilot.org/download/attachments/18612236/make.exe"
|
||||||
|
|
||||||
|
# Expected tools paths
|
||||||
|
WGET="$TOOLS_DIR/bin/`basename \"$WGET_URL\"`"
|
||||||
|
MAKE="$TOOLS_DIR/bin/`basename \"$MAKE_URL\"`"
|
||||||
|
|
||||||
|
# wget is necessary to fetch other files
|
||||||
|
WGET_NAME="`basename \"$WGET\"`"
|
||||||
|
if [ ! -x "$WGET" ]; then
|
||||||
|
echo "$SCRIPT_NAME: $WGET_NAME not found, fetching from $WGET_URL"
|
||||||
|
mkdir -p "`dirname \"$WGET\"`"
|
||||||
|
|
||||||
|
VBSCRIPT="$TOOLS_DIR/fetch.$$.vbs"
|
||||||
|
cat >"$VBSCRIPT" <<-EOF
|
||||||
|
url = WScript.Arguments.Item(0)
|
||||||
|
file = WScript.Arguments.Item(1)
|
||||||
|
|
||||||
|
Dim xHttp: Set xHttp = CreateObject("MSXML2.ServerXMLHTTP")
|
||||||
|
xHttp.Open "GET", url, False
|
||||||
|
xHttp.setOption 2, SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
|
||||||
|
xHttp.Send
|
||||||
|
|
||||||
|
If xHttp.Status = 200 Then
|
||||||
|
Dim bStrm: Set bStrm = CreateObject("AdoDb.Stream")
|
||||||
|
With bStrm
|
||||||
|
.Type = 1 '// binary
|
||||||
|
.Open
|
||||||
|
.Write xHttp.ResponseBody
|
||||||
|
.SaveToFile file, 2 '// overwrite
|
||||||
|
.Close
|
||||||
|
End With
|
||||||
|
WScript.Quit(0)
|
||||||
|
Else
|
||||||
|
WScript.Quit(1)
|
||||||
|
End IF
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cscript "$VBSCRIPT" "$WGET_URL" "$WGET"
|
||||||
|
rc=$?
|
||||||
|
rm "$VBSCRIPT"
|
||||||
|
|
||||||
|
if [ $rc -ne 0 ]; then
|
||||||
|
echo "$SCRIPT_NAME: $WGET_NAME fetch error, hope it's in the path..."
|
||||||
|
WGET="$WGET_NAME"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make is necessary to fetch all SDKs
|
||||||
|
MAKE_NAME="`basename \"$MAKE\"`"
|
||||||
|
if [ ! -x "$MAKE" ]; then
|
||||||
|
echo "$SCRIPT_NAME: $MAKE_NAME not found, fetching from $MAKE_URL"
|
||||||
|
MAKE_DIR="`dirname \"$MAKE\"`"
|
||||||
|
mkdir -p "$MAKE_DIR"
|
||||||
|
$WGET -N --content-disposition -P "$MAKE_DIR" "$MAKE_URL"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "$SCRIPT_NAME: $MAKE_NAME fetch error, hope it's in the path..."
|
||||||
|
MAKE="$MAKE_NAME"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Finally we can fetch all SDKs using top level Makefile
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
echo "Run 'tools/bin/make all_sdk_install' to install the other tools"
|
||||||
|
echo " or 'tools/bin/make help' for more info on make targets"
|
333
make/tools.mk
333
make/tools.mk
@ -8,11 +8,11 @@
|
|||||||
#
|
#
|
||||||
# Ready to use:
|
# Ready to use:
|
||||||
# arm_sdk_install
|
# arm_sdk_install
|
||||||
|
# qt_sdk_install
|
||||||
|
# mingw_install (Windows only)
|
||||||
|
# python_install (Windows only)
|
||||||
#
|
#
|
||||||
# TODO:
|
# TODO:
|
||||||
# wget_win_install
|
|
||||||
# make_win_install
|
|
||||||
# qt_sdk_install
|
|
||||||
# openocd_install
|
# openocd_install
|
||||||
# ftd2xx_install
|
# ftd2xx_install
|
||||||
# libusb_win_install
|
# libusb_win_install
|
||||||
@ -53,13 +53,25 @@ endif
|
|||||||
|
|
||||||
ifeq ($(UNAME), Linux)
|
ifeq ($(UNAME), Linux)
|
||||||
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2
|
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2
|
||||||
|
ifeq ($(ARCH), x86_64)
|
||||||
|
QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-linux-x64.tar.bz2
|
||||||
|
else
|
||||||
|
QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-linux.tar.bz2
|
||||||
|
endif
|
||||||
else ifeq ($(UNAME), Darwin)
|
else ifeq ($(UNAME), Darwin)
|
||||||
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-mac.tar.bz2
|
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-mac.tar.bz2
|
||||||
|
QT_SDK_URL := TODO/qt-4.8.4-mac.tar.bz2
|
||||||
else ifeq ($(UNAME), Windows)
|
else ifeq ($(UNAME), Windows)
|
||||||
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-windows.tar.bz2
|
ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-windows.tar.bz2
|
||||||
|
QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-windows.tar.bz2
|
||||||
|
MINGW_URL := http://wiki.openpilot.org/download/attachments/18612236/mingw-4.4.0.tar.bz2
|
||||||
|
PYTHON_URL := http://wiki.openpilot.org/download/attachments/18612236/python-2.7.4-windows.tar.bz2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1
|
ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1
|
||||||
|
QT_SDK_DIR := $(TOOLS_DIR)/qt-4.8.4
|
||||||
|
MINGW_DIR := $(TOOLS_DIR)/mingw-4.4.0
|
||||||
|
PYTHON_DIR := $(TOOLS_DIR)/python-2.7.4
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
@ -67,7 +79,10 @@ ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1
|
|||||||
#
|
#
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
ALL_SDK_TARGETS := arm_sdk
|
ALL_SDK_TARGETS := arm_sdk qt_sdk
|
||||||
|
ifeq ($(UNAME), Windows)
|
||||||
|
ALL_SDK_TARGETS += mingw python
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: all_sdk_install all_sdk_clean all_sdk_distclean all_sdk_version
|
.PHONY: all_sdk_install all_sdk_clean all_sdk_distclean all_sdk_version
|
||||||
all_sdk_install: $(addsuffix _install,$(ALL_SDK_TARGETS))
|
all_sdk_install: $(addsuffix _install,$(ALL_SDK_TARGETS))
|
||||||
@ -75,6 +90,47 @@ all_sdk_clean: $(addsuffix _clean,$(ALL_SDK_TARGETS))
|
|||||||
all_sdk_distclean: $(addsuffix _distclean,$(ALL_SDK_TARGETS))
|
all_sdk_distclean: $(addsuffix _distclean,$(ALL_SDK_TARGETS))
|
||||||
all_sdk_version: $(addsuffix _version,$(ALL_SDK_TARGETS))
|
all_sdk_version: $(addsuffix _version,$(ALL_SDK_TARGETS))
|
||||||
|
|
||||||
|
##############################
|
||||||
|
#
|
||||||
|
# Misc host tools
|
||||||
|
#
|
||||||
|
##############################
|
||||||
|
|
||||||
|
export MKDIR := mkdir
|
||||||
|
export CP := cp
|
||||||
|
export RM := rm
|
||||||
|
export LN := ln
|
||||||
|
export CAT := cat
|
||||||
|
export SED := sed
|
||||||
|
export TAR := tar
|
||||||
|
export ANT := ant
|
||||||
|
export JAVAC := javac
|
||||||
|
export JAR := jar
|
||||||
|
export GIT := git
|
||||||
|
export CURL := curl
|
||||||
|
export INSTALL := install
|
||||||
|
export MD5SUM := md5sum
|
||||||
|
|
||||||
|
# Echo in recipes is a bit tricky in a Windows Git Bash window in some cases.
|
||||||
|
# It does not work if make started under msysGit installed into a path with spaces.
|
||||||
|
ifneq ($(UNAME), Windows)
|
||||||
|
export ECHO := echo
|
||||||
|
else
|
||||||
|
# export ECHO := $(PYTHON) -c "import sys; print(' '.join(sys.argv[1:]))"
|
||||||
|
export ECHO := echo
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Test if quotes are needed for the echo command
|
||||||
|
ifeq ($(shell $(ECHO) "test"), test)
|
||||||
|
export QUOTE := '
|
||||||
|
# This line is just to clear out the single quote above '
|
||||||
|
else
|
||||||
|
export QUOTE :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Command to extract version info data from the repository and source tree
|
||||||
|
export VERSION_INFO = $(PYTHON) $(ROOT_DIR)/make/scripts/version-info.py --path=$(ROOT_DIR)
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
# Misc settings
|
# Misc settings
|
||||||
@ -82,17 +138,21 @@ all_sdk_version: $(addsuffix _version,$(ALL_SDK_TARGETS))
|
|||||||
##############################
|
##############################
|
||||||
|
|
||||||
# Define messages
|
# Define messages
|
||||||
|
MSG_VERIFYING = $(QUOTE) VERIFY $(QUOTE)
|
||||||
MSG_DOWNLOADING = $(QUOTE) DOWNLOAD $(QUOTE)
|
MSG_DOWNLOADING = $(QUOTE) DOWNLOAD $(QUOTE)
|
||||||
|
MSG_CHECKSUMMING = $(QUOTE) MD5 $(QUOTE)
|
||||||
MSG_EXTRACTING = $(QUOTE) EXTRACT $(QUOTE)
|
MSG_EXTRACTING = $(QUOTE) EXTRACT $(QUOTE)
|
||||||
MSG_INSTALLING = $(QUOTE) INSTALL $(QUOTE)
|
MSG_INSTALLING = $(QUOTE) INSTALL $(QUOTE)
|
||||||
|
MSG_CONFIGURING = $(QUOTE) CONFIGURE $(QUOTE)
|
||||||
MSG_CLEANING = $(QUOTE) CLEAN $(QUOTE)
|
MSG_CLEANING = $(QUOTE) CLEAN $(QUOTE)
|
||||||
MSG_DISTCLEANING = $(QUOTE) DISTCLEAN $(QUOTE)
|
MSG_DISTCLEANING = $(QUOTE) DISTCLEAN $(QUOTE)
|
||||||
|
MSG_NOTICE = $(QUOTE) NOTE $(QUOTE)
|
||||||
|
|
||||||
# Verbosity level
|
# Verbosity level
|
||||||
ifeq ($(V), 1)
|
ifeq ($(V), 1)
|
||||||
CURL_OPTIONS :=
|
CURL_OPTIONS :=
|
||||||
else
|
else
|
||||||
# CURL_OPTIONS := --silent
|
CURL_OPTIONS := --silent
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# MSYS tar workaround
|
# MSYS tar workaround
|
||||||
@ -102,15 +162,62 @@ else
|
|||||||
TAR_OPTIONS :=
|
TAR_OPTIONS :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Disable parallel make for sdk install targets to ensure ordered dependences
|
# Print some useful notes for *_install targets
|
||||||
# like 'arm_sdk_clean | $(DL_DIR) $(TOOLS_DIR)'. They may fail otherwise being
|
|
||||||
# run in parallel
|
|
||||||
ifneq ($(strip $(filter $(addsuffix _install,all_sdk $(ALL_SDK_TARGETS)),$(MAKECMDGOALS))),)
|
ifneq ($(strip $(filter $(addsuffix _install,all_sdk $(ALL_SDK_TARGETS)),$(MAKECMDGOALS))),)
|
||||||
.NOTPARALLEL:
|
ifneq ($(shell $(CURL) --version >/dev/null 2>&1 && $(ECHO) "found"), found)
|
||||||
$(info $(EMPTY) NOTE Parallel make disabled by some of sdk install targets)
|
$(error Please install curl first ('apt-get install curl' or similar))
|
||||||
$(info $(EMPTY) NOTE If some of install/extract targets failed, try 'make *_distclean' first)
|
|
||||||
$(info $(EMPTY) NOTE Use all_sdk_version to check toolchain versions)
|
|
||||||
endif
|
endif
|
||||||
|
$(info $(EMPTY) NOTE Use 'make all_sdk_distclean' to remove installation files)
|
||||||
|
$(info $(EMPTY) NOTE Use 'make all_sdk_version' to check toolchain versions)
|
||||||
|
$(info $(EMPTY) NOTE Add 'V=1' to make command line to diagnose make problems)
|
||||||
|
endif
|
||||||
|
|
||||||
|
##############################
|
||||||
|
#
|
||||||
|
# Common tool install template
|
||||||
|
# $(1) = tool name
|
||||||
|
# $(2) = tool install directory
|
||||||
|
# $(3) = tool distribution URL
|
||||||
|
# $(4) = tool distribution file
|
||||||
|
# $(5) = optional pre-fetch template
|
||||||
|
# $(6) = optional post-extract template
|
||||||
|
#
|
||||||
|
##############################
|
||||||
|
|
||||||
|
define TOOL_INSTALL_TEMPLATE
|
||||||
|
|
||||||
|
.PHONY: $(addprefix $(1)_, install clean distclean)
|
||||||
|
|
||||||
|
$(1)_install: $(1)_clean | $(DL_DIR) $(TOOLS_DIR)
|
||||||
|
$(5)
|
||||||
|
|
||||||
|
@$(ECHO) $(MSG_VERIFYING) $$(call toprel, $(DL_DIR)/$(4))
|
||||||
|
$(V1) ( \
|
||||||
|
cd "$(DL_DIR)" && \
|
||||||
|
$(CURL) $(CURL_OPTIONS) -o "$(DL_DIR)/$(4).md5" "$(3).md5" && \
|
||||||
|
if ! $(MD5SUM) -c --status "$(DL_DIR)/$(4).md5" 2>/dev/null; then \
|
||||||
|
$(ECHO) $(MSG_DOWNLOADING) $(3) && \
|
||||||
|
$(CURL) $(CURL_OPTIONS) -o "$(DL_DIR)/$(4)" "$(3)" && \
|
||||||
|
$(ECHO) $(MSG_CHECKSUMMING) $$(call toprel, $(DL_DIR)/$(4)) && \
|
||||||
|
$(MD5SUM) -c --status "$(DL_DIR)/$(4).md5" 2>/dev/null; \
|
||||||
|
fi; \
|
||||||
|
)
|
||||||
|
|
||||||
|
@$(ECHO) $(MSG_EXTRACTING) $$(call toprel, $(2))
|
||||||
|
$(V1) $(TAR) $(TAR_OPTIONS) -C $$(call toprel, $(TOOLS_DIR)) -xjf $$(call toprel, $(DL_DIR)/$(4))
|
||||||
|
|
||||||
|
$(6)
|
||||||
|
|
||||||
|
$(1)_clean:
|
||||||
|
@$(ECHO) $(MSG_CLEANING) $$(call toprel, $(2))
|
||||||
|
$(V1) [ ! -d "$(2)" ] || $(RM) -rf "$(2)"
|
||||||
|
|
||||||
|
$(1)_distclean:
|
||||||
|
@$(ECHO) $(MSG_DISTCLEANING) $$(call toprel, $$@)
|
||||||
|
$(V1) [ ! -f "$(DL_DIR)/$(4)" ] || $(RM) "$(DL_DIR)/$(4)"
|
||||||
|
$(V1) [ ! -f "$(DL_DIR)/$(4).md5" ] || $(RM) "$(DL_DIR)/$(4).md5"
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
@ -118,31 +225,7 @@ endif
|
|||||||
#
|
#
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
ARM_SDK_FILE := $(notdir $(ARM_SDK_URL))
|
$(eval $(call TOOL_INSTALL_TEMPLATE,arm_sdk,$(ARM_SDK_DIR),$(ARM_SDK_URL),$(notdir $(ARM_SDK_URL))))
|
||||||
|
|
||||||
.PHONY: arm_sdk_install
|
|
||||||
arm_sdk_install: arm_sdk_clean | $(DL_DIR) $(TOOLS_DIR)
|
|
||||||
@$(ECHO) $(MSG_DOWNLOADING) $(call toprel, $(DL_DIR)/$(ARM_SDK_FILE))
|
|
||||||
$(V1) $(CURL) $(CURL_OPTIONS) \
|
|
||||||
$(if $(shell [ -f "$(DL_DIR)/$(ARM_SDK_FILE)" ] && $(ECHO) "exists"),-z "$(DL_DIR)/$(ARM_SDK_FILE)",) \
|
|
||||||
-o "$(DL_DIR)/$(ARM_SDK_FILE)" \
|
|
||||||
"$(ARM_SDK_URL)"
|
|
||||||
@$(ECHO) $(MSG_EXTRACTING) $(call toprel, $(ARM_SDK_DIR))
|
|
||||||
$(V1) $(TAR) $(TAR_OPTIONS) -C $(call toprel, $(TOOLS_DIR)) -xjf $(call toprel, $(DL_DIR)/$(ARM_SDK_FILE))
|
|
||||||
|
|
||||||
.PHONY: arm_sdk_clean
|
|
||||||
arm_sdk_clean:
|
|
||||||
@$(ECHO) $(MSG_CLEANING) $(call toprel, $(ARM_SDK_DIR))
|
|
||||||
$(V1) [ ! -d "$(ARM_SDK_DIR)" ] || $(RM) -r "$(ARM_SDK_DIR)"
|
|
||||||
|
|
||||||
.PHONY: arm_sdk_distclean
|
|
||||||
arm_sdk_distclean:
|
|
||||||
@$(ECHO) $(MSG_DISTCLEANING) $(call toprel, $@)
|
|
||||||
$(V1) [ ! -f "$(DL_DIR)/$(ARM_SDK_FILE)" ] || $(RM) "$(DL_DIR)/$(ARM_SDK_FILE)"
|
|
||||||
|
|
||||||
.PHONY: arm_sdk_version
|
|
||||||
arm_sdk_version:
|
|
||||||
$(V1) $(ARM_SDK_PREFIX)gcc --version | head -n1
|
|
||||||
|
|
||||||
ifeq ($(shell [ -d "$(ARM_SDK_DIR)" ] && $(ECHO) "exists"), exists)
|
ifeq ($(shell [ -d "$(ARM_SDK_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
export ARM_SDK_PREFIX := $(ARM_SDK_DIR)/bin/arm-none-eabi-
|
export ARM_SDK_PREFIX := $(ARM_SDK_DIR)/bin/arm-none-eabi-
|
||||||
@ -152,50 +235,142 @@ else
|
|||||||
export ARM_SDK_PREFIX ?= arm-none-eabi-
|
export ARM_SDK_PREFIX ?= arm-none-eabi-
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
.PHONY: arm_sdk_version
|
||||||
|
arm_sdk_version:
|
||||||
|
$(V1) $(ARM_SDK_PREFIX)gcc --version | head -n1
|
||||||
|
|
||||||
|
##############################
|
||||||
|
#
|
||||||
|
# Qt SDK
|
||||||
|
#
|
||||||
|
# Windows: native binary package has been provided
|
||||||
|
# Linux: user should install native Qt SDK package
|
||||||
|
# Mac OS X: user should install native Qt SDK package
|
||||||
|
#
|
||||||
|
##############################
|
||||||
|
|
||||||
|
define QT_SDK_CONFIGURE_TEMPLATE
|
||||||
|
@$(ECHO) $(MSG_CONFIGURING) $(call toprel, $(QT_SDK_DIR))
|
||||||
|
$(V1) $(ECHO) $(QUOTE)[Paths]$(QUOTE) > $(QT_SDK_DIR)/bin/qt.conf
|
||||||
|
$(V1) $(ECHO) $(QUOTE)Prefix = $(QT_SDK_DIR)$(QUOTE) >> $(QT_SDK_DIR)/bin/qt.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
ifeq ($(UNAME), Windows)
|
||||||
|
|
||||||
|
$(eval $(call TOOL_INSTALL_TEMPLATE,qt_sdk,$(QT_SDK_DIR),$(QT_SDK_URL),$(notdir $(QT_SDK_URL)),,$(QT_SDK_CONFIGURE_TEMPLATE)))
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
.PHONY: qt_sdk_install
|
||||||
|
qt_sdk_install:
|
||||||
|
@$(ECHO) $(MSG_NOTICE) --------------------------------------------------------
|
||||||
|
@$(ECHO) $(MSG_NOTICE) Please install native Qt 4.8.x SDK using package manager
|
||||||
|
@$(ECHO) $(MSG_NOTICE) --------------------------------------------------------
|
||||||
|
|
||||||
|
.PHONY: qt_sdk_clean
|
||||||
|
qt_sdk_clean:
|
||||||
|
|
||||||
|
.PHONY: qt_sdk_distclean
|
||||||
|
qt_sdk_distclean:
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(shell [ -d "$(QT_SDK_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
|
export QMAKE := $(QT_SDK_DIR)/bin/qmake
|
||||||
|
|
||||||
|
# set Qt library search path
|
||||||
|
ifeq ($(UNAME), Windows)
|
||||||
|
export PATH := $(QT_SDK_DIR)/bin:$(PATH)
|
||||||
|
else
|
||||||
|
export LD_LIBRARY_PATH := $(QT_SDK_DIR)/lib:$(LD_LIBRARY_PATH)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
# not installed, hope it's in the path...
|
||||||
|
# $(info $(EMPTY) WARNING $(call toprel, $(QT_SDK_DIR)) not found (make qt_sdk_install), using system PATH)
|
||||||
|
QMAKE ?= qmake
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: qt_sdk_version
|
||||||
|
qt_sdk_version:
|
||||||
|
$(V1) $(QMAKE) --version | tail -1
|
||||||
|
|
||||||
|
##############################
|
||||||
|
#
|
||||||
|
# MinGW
|
||||||
|
#
|
||||||
|
##############################
|
||||||
|
|
||||||
|
ifeq ($(UNAME), Windows)
|
||||||
|
|
||||||
|
$(eval $(call TOOL_INSTALL_TEMPLATE,mingw,$(MINGW_DIR),$(MINGW_URL),$(notdir $(MINGW_URL))))
|
||||||
|
|
||||||
|
ifeq ($(shell [ -d "$(MINGW_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
|
# set MinGW binary and library paths (QTMINGW is used by qmake, do not rename)
|
||||||
|
export QTMINGW := $(MINGW_DIR)/bin
|
||||||
|
export PATH := $(QTMINGW):$(PATH)
|
||||||
|
else
|
||||||
|
# not installed, use host gcc compiler
|
||||||
|
# $(info $(EMPTY) WARNING $(call toprel, $(MINGW_DIR)) not found (make mingw_install), using system PATH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: mingw_version
|
||||||
|
mingw_version:
|
||||||
|
$(V1) gcc --version | head -n1
|
||||||
|
|
||||||
|
.PHONY: gcc_version
|
||||||
|
gcc_version: mingw_version
|
||||||
|
|
||||||
|
else # Linux or Mac
|
||||||
|
|
||||||
|
all_sdk_version: gcc_version
|
||||||
|
|
||||||
|
.PHONY: gcc_version
|
||||||
|
gcc_version:
|
||||||
|
$(V1) gcc --version | head -n1
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
##############################
|
||||||
|
#
|
||||||
|
# Python
|
||||||
|
#
|
||||||
|
##############################
|
||||||
|
|
||||||
|
ifeq ($(UNAME), Windows)
|
||||||
|
|
||||||
|
$(eval $(call TOOL_INSTALL_TEMPLATE,python,$(PYTHON_DIR),$(PYTHON_URL),$(notdir $(PYTHON_URL))))
|
||||||
|
|
||||||
|
else # Linux or Mac
|
||||||
|
|
||||||
|
all_sdk_version: python_version
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(shell [ -d "$(PYTHON_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
|
export PYTHON := $(PYTHON_DIR)/python
|
||||||
|
export PATH := $(PYTHON_DIR):$(PATH)
|
||||||
|
else
|
||||||
|
# not installed, hope it's in the path...
|
||||||
|
# $(info $(EMPTY) WARNING $(call toprel, $(PYTHON_DIR)) not found (make python_install), using system PATH)
|
||||||
|
export PYTHON := python
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: python_version
|
||||||
|
python_version:
|
||||||
|
$(V1) $(PYTHON) --version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
#
|
#
|
||||||
# TODO: code below is not revised yet
|
# TODO: code below is not revised yet
|
||||||
#
|
#
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
# Set up QT toolchain
|
|
||||||
QT_SDK_DIR := $(TOOLS_DIR)/qtsdk-v1.2.1
|
|
||||||
|
|
||||||
.PHONY: qt_sdk_install
|
|
||||||
# Choose the appropriate installer based on host architecture
|
|
||||||
ifneq (,$(filter $(ARCH), x86_64 amd64))
|
|
||||||
# 64-bit
|
|
||||||
QT_SDK_QMAKE_PATH := $(QT_SDK_DIR)/Desktop/Qt/4.8.1/gcc/bin/qmake
|
|
||||||
qt_sdk_install: QT_SDK_FILE := QtSdk-offline-linux-x86_64-v1.2.1.run
|
|
||||||
qt_sdk_install: QT_SDK_URL := http://www.developer.nokia.com/dp?uri=http://sw.nokia.com/id/14b2039c-0e1f-4774-a4f2-9aa60b6d5313/Qt_SDK_Lin64_offline
|
|
||||||
else
|
|
||||||
# 32-bit
|
|
||||||
QT_SDK_QMAKE_PATH := $(QT_SDK_DIR)/Desktop/Qt/4.8.1/gcc/bin/qmake
|
|
||||||
qt_sdk_install: QT_SDK_URL := http://www.developer.nokia.com/dp?uri=http://sw.nokia.com/id/8ea74da4-fec1-4277-8b26-c58cc82e204b/Qt_SDK_Lin32_offline
|
|
||||||
qt_sdk_install: QT_SDK_FILE := QtSdk-offline-linux-x86-v1.2.1.run
|
|
||||||
endif
|
|
||||||
# order-only prereq on directory existance:
|
|
||||||
qt_sdk_install : | $(DL_DIR) $(TOOLS_DIR)
|
|
||||||
qt_sdk_install: qt_sdk_clean
|
|
||||||
# download the source only if it's newer than what we already have
|
|
||||||
$(V1) $(WGET) -N --content-disposition -P "$(DL_DIR)" "$(QT_SDK_URL)"
|
|
||||||
# tell the user exactly which path they should select in the GUI
|
|
||||||
$(V1) echo "*** NOTE NOTE NOTE ***"
|
|
||||||
$(V1) echo "*"
|
|
||||||
$(V1) echo "* In the GUI, please use exactly this path as the installation path:"
|
|
||||||
$(V1) echo "* $(QT_SDK_DIR)"
|
|
||||||
$(V1) echo "*"
|
|
||||||
$(V1) echo "*** NOTE NOTE NOTE ***"
|
|
||||||
|
|
||||||
#installer is an executable, make it executable and run it
|
|
||||||
$(V1) chmod u+x "$(DL_DIR)/$(QT_SDK_FILE)"
|
|
||||||
$(V1) "$(DL_DIR)/$(QT_SDK_FILE)" -style cleanlooks
|
|
||||||
|
|
||||||
.PHONY: qt_sdk_clean
|
|
||||||
qt_sdk_clean:
|
|
||||||
$(V1) [ ! -d "$(QT_SDK_DIR)" ] || $(RM) -rf $(QT_SDK_DIR)
|
|
||||||
|
|
||||||
|
|
||||||
# Set up openocd tools
|
# Set up openocd tools
|
||||||
OPENOCD_DIR := $(TOOLS_DIR)/openocd
|
OPENOCD_DIR := $(TOOLS_DIR)/openocd
|
||||||
OPENOCD_WIN_DIR := $(TOOLS_DIR)/openocd_win
|
OPENOCD_WIN_DIR := $(TOOLS_DIR)/openocd_win
|
||||||
@ -480,14 +655,6 @@ gtest_clean:
|
|||||||
#
|
#
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
# Set up paths to tools
|
|
||||||
ifeq ($(shell [ -d "$(QT_SDK_DIR)" ] && $(ECHO) "exists"), exists)
|
|
||||||
QMAKE := $(QT_SDK_QMAKE_PATH)
|
|
||||||
else
|
|
||||||
# not installed, hope it's in the path...
|
|
||||||
QMAKE ?= qmake
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(shell [ -d "$(OPENOCD_DIR)" ] && $(ECHO) "exists"), exists)
|
ifeq ($(shell [ -d "$(OPENOCD_DIR)" ] && $(ECHO) "exists"), exists)
|
||||||
export OPENOCD := $(OPENOCD_DIR)/bin/openocd
|
export OPENOCD := $(OPENOCD_DIR)/bin/openocd
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user