Skip to content
This repository was archived by the owner on Oct 5, 2021. It is now read-only.

Commit 12eaf10

Browse files
committed
Add Makefile to generate arm-none-eabi-gcc JSON
To produce arm-none-eabi-gcc JSON: make or make all Signed-off-by: Frederic.Pillon <[email protected]>
1 parent 267b47d commit 12eaf10

File tree

3 files changed

+210
-0
lines changed

3 files changed

+210
-0
lines changed

Makefile

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
SHELL = /bin/sh
2+
3+
.SUFFIXES: .tar.bz2
4+
5+
ROOT_PATH := .
6+
DOWNLOAD_PATH := download
7+
8+
OS ?=$(shell uname -s)
9+
10+
# -----------------------------------------------------------------------------
11+
ifeq (postpackaging_arm-gcc,$(findstring $(MAKECMDGOALS),postpackaging_arm-gcc))
12+
PACKAGE_WIN_FILENAME=$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-windows.tar.bz2
13+
PACKAGE_LINUX32_FILENAME=$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-linux32.tar.bz2
14+
PACKAGE_LINUX64_FILENAME=$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-linux64.tar.bz2
15+
PACKAGE_MAC_FILENAME=$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-mac.tar.bz2
16+
17+
PACKAGE_WIN_CHKSUM := $(firstword $(shell shasum -a 256 "$(DOWNLOAD_PATH)/$(PACKAGE_WIN_FILENAME)"))
18+
PACKAGE_LINUX32_CHKSUM := $(firstword $(shell shasum -a 256 "$(DOWNLOAD_PATH)/$(PACKAGE_LINUX32_FILENAME)"))
19+
PACKAGE_LINUX64_CHKSUM := $(firstword $(shell shasum -a 256 "$(DOWNLOAD_PATH)/$(PACKAGE_LINUX64_FILENAME)"))
20+
PACKAGE_MAC_CHKSUM := $(firstword $(shell shasum -a 256 "$(DOWNLOAD_PATH)/$(PACKAGE_MAC_FILENAME)"))
21+
22+
PACKAGE_WIN_SIZE := $(firstword $(shell wc -c "$(DOWNLOAD_PATH)/$(PACKAGE_WIN_FILENAME)"))
23+
PACKAGE_LINUX32_SIZE := $(firstword $(shell wc -c "$(DOWNLOAD_PATH)/$(PACKAGE_LINUX32_FILENAME)"))
24+
PACKAGE_LINUX64_SIZE := $(firstword $(shell wc -c "$(DOWNLOAD_PATH)/$(PACKAGE_LINUX64_FILENAME)"))
25+
PACKAGE_MAC_SIZE := $(firstword $(shell wc -c "$(DOWNLOAD_PATH)/$(PACKAGE_MAC_FILENAME)"))
26+
endif
27+
28+
# -----------------------------------------------------------------------------
29+
30+
.PHONY: all clean tools print_info postpackaging
31+
32+
all: arm-gcc
33+
34+
arm-gcc: PACKAGE_NAME := arm-none-eabi-gcc
35+
arm-gcc: PACKAGE_FOLDER := $(DOWNLOAD_PATH)
36+
arm-gcc: PACKAGE_FILENAME := gcc-arm-none-eabi
37+
arm-gcc: PACKAGE_VERSION := $(shell ./github_cli.sh)
38+
arm-gcc: clean print_info
39+
@echo ----------------------------------------------------------
40+
@echo "Packaging $@..."
41+
@[ -d $(DOWNLOAD_PATH) ] || mkdir $(DOWNLOAD_PATH)
42+
@cd $(DOWNLOAD_PATH); wget https://github.com/stm32duino/$(PACKAGE_NAME)/releases/download/$(PACKAGE_VERSION)/$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-linux32.tar.bz2
43+
@cd $(DOWNLOAD_PATH); wget https://github.com/stm32duino/$(PACKAGE_NAME)/releases/download/$(PACKAGE_VERSION)/$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-linux64.tar.bz2
44+
@cd $(DOWNLOAD_PATH); wget https://github.com/stm32duino/$(PACKAGE_NAME)/releases/download/$(PACKAGE_VERSION)/$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-mac.tar.bz2
45+
@cd $(DOWNLOAD_PATH); wget https://github.com/stm32duino/$(PACKAGE_NAME)/releases/download/$(PACKAGE_VERSION)/$(PACKAGE_FILENAME)-$(PACKAGE_VERSION)-windows.tar.bz2
46+
$(MAKE) PACKAGE_NAME=$(PACKAGE_NAME) PACKAGE_VERSION=$(PACKAGE_VERSION) PACKAGE_FILENAME=$(PACKAGE_FILENAME) --no-builtin-rules postpackaging_arm-gcc -C .
47+
@echo ----------------------------------------------------------
48+
49+
clean:
50+
@echo ----------------------------------------------------------
51+
@echo Cleanup
52+
-$(RM) *.tar.bz2 package_*.json
53+
-$(RM) -r $(DOWNLOAD_PATH)
54+
@echo ----------------------------------------------------------
55+
56+
print_info:
57+
@echo ----------------------------------------------------------
58+
@echo Building $(PACKAGE_NAME) using
59+
@echo "CURDIR = $(CURDIR)"
60+
@echo "OS = $(OS)"
61+
@echo "SHELL = $(SHELL)"
62+
@echo "PACKAGE_NAME = $(PACKAGE_NAME)"
63+
@echo "PACKAGE_FOLDER = $(PACKAGE_FOLDER)"
64+
@echo "PACKAGE_VERSION = $(PACKAGE_VERSION)"
65+
66+
67+
postpackaging_arm-gcc:
68+
@echo "PACKAGE_WIN_FILENAME = $(PACKAGE_WIN_FILENAME)"
69+
@echo "PACKAGE_WIN_SIZE = $(PACKAGE_WIN_SIZE)"
70+
@echo "PACKAGE_WIN_CHKSUM = $(PACKAGE_WIN_CHKSUM)"
71+
@echo "PACKAGE_LINUX32_FILENAME = $(PACKAGE_LINUX32_FILENAME)"
72+
@echo "PACKAGE_LINUX32_SIZE = $(PACKAGE_LINUX32_SIZE)"
73+
@echo "PACKAGE_LINUX32_CHKSUM = $(PACKAGE_LINUX32_CHKSUM)"
74+
@echo "PACKAGE_LINUX64_FILENAME = $(PACKAGE_LINUX64_FILENAME)"
75+
@echo "PACKAGE_LINUX64_SIZE = $(PACKAGE_LINUX64_SIZE)"
76+
@echo "PACKAGE_LINUX64_CHKSUM = $(PACKAGE_LINUX64_CHKSUM)"
77+
@echo "PACKAGE_MAC_FILENAME = $(PACKAGE_MAC_FILENAME)"
78+
@echo "PACKAGE_MAC_SIZE = $(PACKAGE_MAC_SIZE)"
79+
@echo "PACKAGE_MAC_CHKSUM = $(PACKAGE_MAC_CHKSUM)"
80+
@cat templates/package_arm_index.json | sed s/%%PACKAGENAME%%/$(PACKAGE_NAME)/ | sed s/%%VERSION%%/$(PACKAGE_VERSION)/ | sed s/%%FILENAMEWIN%%/$(PACKAGE_WIN_FILENAME)/ | sed s/%%CHECKSUMWIN%%/$(PACKAGE_WIN_CHKSUM)/ | sed s/%%SIZEWIN%%/$(PACKAGE_WIN_SIZE)/ | sed s/%%FILENAMEMAC%%/$(PACKAGE_MAC_FILENAME)/ | sed s/%%CHECKSUMMAC%%/$(PACKAGE_MAC_CHKSUM)/ | sed s/%%SIZEMAC%%/$(PACKAGE_MAC_SIZE)/ | sed s/%%FILENAMELINUX64%%/$(PACKAGE_LINUX64_FILENAME)/ | sed s/%%CHECKSUMLINUX64%%/$(PACKAGE_LINUX64_CHKSUM)/ | sed s/%%SIZELINUX64%%/$(PACKAGE_LINUX64_SIZE)/ | sed s/%%FILENAMELINUX32%%/$(PACKAGE_LINUX32_FILENAME)/ | sed s/%%CHECKSUMLINUX32%%/$(PACKAGE_LINUX32_CHKSUM)/ | sed s/%%SIZELINUX32%%/$(PACKAGE_LINUX32_SIZE)/ > package_$(PACKAGE_NAME)_$(PACKAGE_VERSION)_index.json
81+
@echo "package_$(PACKAGE_NAME)_$(PACKAGE_VERSION)_index.json created"

github_cli.sh

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#!/bin/bash -
2+
#===============================================================================
3+
#
4+
# FILE: github_cli.sh
5+
#
6+
# USAGE: ./github_cli.sh
7+
#
8+
# DESCRIPTION:
9+
#
10+
# OPTIONS: See usage()
11+
# REQUIREMENTS: ---
12+
# BUGS: ---
13+
# NOTES: ---
14+
# AUTHOR: Frederic Pillon (), [email protected]
15+
# ORGANIZATION: MCU Embedded Software
16+
# COPYRIGHT: Copyright (c) 2018, Frederic Pillon
17+
# CREATED: 08/14/2018 08:07:43
18+
# REVISION: ---
19+
#===============================================================================
20+
21+
set -o nounset # Treat unset variables as an error
22+
23+
VERSION="0.1"
24+
GITHUB_ACCOUNT="stm32duino"
25+
REPO_NAME="arm-none-eabi-gcc"
26+
LATEST_RELEASE=1
27+
28+
29+
###############################################################################
30+
## Help function
31+
usage()
32+
{
33+
echo "############################################################"
34+
echo "##"
35+
echo "## `basename $0`"
36+
echo "##"
37+
echo "############################################################"
38+
echo "##"
39+
echo "## `basename $0`"
40+
echo "## [-l] [-h] [-v] [-a <github account>] [-r <repo name>]"
41+
echo "##"
42+
echo "## Mandatory options:"
43+
echo "##"
44+
echo "## None"
45+
echo "##"
46+
echo "## Optionnal:"
47+
echo "##"
48+
echo "## -a <github account>: github account name. Default: '$GITHUB_ACCOUNT'"
49+
echo "## -r <repo name>: repository name. Default: '$REPO_NAME'"
50+
echo "## -l: get latest release"
51+
echo "## -v: print version"
52+
echo "##"
53+
echo "############################################################"
54+
exit 0
55+
}
56+
57+
get_latest_release() {
58+
# Get latest release from GitHub api
59+
curl --silent "https://api.github.com/repos/${GITHUB_ACCOUNT}/${REPO_NAME}/releases/latest" |
60+
grep '"tag_name":' | # Get tag line
61+
sed -E 's/.*"([^"]+)".*/\1/' # Pluck JSON value
62+
}
63+
64+
65+
# parse command line arguments
66+
# options may be followed by one colon to indicate they have a required arg
67+
options=`getopt -o a:hlr:v -- "$@"`
68+
69+
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
70+
71+
eval set -- "$options"
72+
73+
while true ; do
74+
case "$1" in
75+
-a) GITHUB_ACCOUNT=$2
76+
shift 2;;
77+
-h|-\?) usage
78+
shift;;
79+
-l) LATEST_RELEASE=1
80+
shift;;
81+
-r) REPO_NAME=$2
82+
shift 2;;
83+
-v) echo "`basename $0`: $VERSION"
84+
exit 0
85+
shift;;
86+
--) shift;
87+
break;;
88+
*) break;;
89+
esac
90+
done
91+
92+
if [ $LATEST_RELEASE -eq 1 ]; then
93+
get_latest_release
94+
fi

templates/package_arm_index.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"name": "%%PACKAGENAME%%",
3+
"version": "%%VERSION%%",
4+
"systems":
5+
[
6+
{
7+
"host": "i686-mingw32",
8+
"url": "https://github.com/stm32duino/arm-none-eabi-gcc/releases/download/%%VERSION%%/%%FILENAMEWIN%%",
9+
"archiveFileName": "%%FILENAMEWIN%%",
10+
"checksum": "SHA-256:%%CHECKSUMWIN%%",
11+
"size": "%%SIZEWIN%%"
12+
},
13+
{
14+
"host": "x86_64-apple-darwin",
15+
"url": "https://github.com/stm32duino/arm-none-eabi-gcc/releases/download/%%VERSION%%/%%FILENAMEMAC%%",
16+
"archiveFileName": "%%FILENAMEMAC%%",
17+
"checksum": "SHA-256:%%CHECKSUMMAC%%",
18+
"size": "%%SIZEMAC%%"
19+
},
20+
{
21+
"host": "x86_64-pc-linux-gnu",
22+
"url": "https://github.com/stm32duino/arm-none-eabi-gcc/releases/download/%%VERSION%%/%%FILENAMELINUX64%%",
23+
"archiveFileName": "%%FILENAMELINUX64%%",
24+
"checksum": "SHA-256:%%CHECKSUMLINUX64%%",
25+
"size": "%%SIZELINUX64%%"
26+
},
27+
{
28+
"host": "i686-pc-linux-gnu",
29+
"url": "https://github.com/stm32duino/arm-none-eabi-gcc/releases/download/%%VERSION%%/%%FILENAMELINUX32%%",
30+
"archiveFileName": "%%FILENAMELINUX32%%",
31+
"checksum": "SHA-256:%%CHECKSUMLINUX32%%",
32+
"size": "%%SIZELINUX32%%"
33+
}
34+
]
35+
}

0 commit comments

Comments
 (0)