diff options
Diffstat (limited to 'buildroot/bin/generate_version')
-rw-r--r-- | buildroot/bin/generate_version | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/buildroot/bin/generate_version b/buildroot/bin/generate_version new file mode 100644 index 0000000..b88e3de --- /dev/null +++ b/buildroot/bin/generate_version @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +# +# generate_version +# +# Make a Version.h file to accompany CUSTOM_VERSION_FILE +# + +DIR=${1:-"Marlin"} + +# MRCC3=$( git merge-base HEAD upstream/bugfix-2.0.x 2>/dev/null ) +# MRCC2=$( git merge-base HEAD upstream/bugfix-1.1.x 2>/dev/null ) +# MRCC1=$( git merge-base HEAD upstream/1.1.x 2>/dev/null ) + +# BASE='?' +# if [[ -n $MRCC3 && $MRCC3 != $MRCC2 ]]; then +# BASE=bugfix-2.0.x +# elif [[ -n $MRCC2 ]]; then +# BASE=bugfix-1.1.x +# elif [[ -n $MRCC1 ]]; then +# BASE=1.1.x +# fi + +BUILDATE=$(date '+%s') +DISTDATE=$(date '+%Y-%m-%d %H:%M') + +BRANCH=$(git -C "${DIR}" symbolic-ref -q --short HEAD) +VERSION=$(git -C "${DIR}" describe --tags --first-parent 2>/dev/null) + +[ -z "${BRANCH}" ] && BRANCH=$(echo "${TRAVIS_BRANCH}") +[ -z "${VERSION}" ] && VERSION=$(git -C "${DIR}" describe --tags --first-parent --always 2>/dev/null) + +SHORT_BUILD_VERSION=$(echo "${BRANCH}") +DETAILED_BUILD_VERSION=$(echo "${BRANCH}-${VERSION}") + +# Gets some misc options from their defaults +DEFAULT_MACHINE_UUID=$(awk -F'"' \ + '/#define DEFAULT_MACHINE_UUID/{ print $2 }' < "${DIR}/Version.h") +MACHINE_NAME=$(awk -F'"' \ + '/#define MACHINE_NAME/{ print $2 }' < "${DIR}/Version.h") +PROTOCOL_VERSION=$(awk -F'"' \ + '/#define PROTOCOL_VERSION/{ print $2 }' < "${DIR}/Version.h") +SOURCE_CODE_URL=$(awk -F'"' \ + '/#define SOURCE_CODE_URL/{ print $2 }' < "${DIR}/Version.h") +WEBSITE_URL=$(awk -F'"' \ + '/#define WEBSITE_URL/{ print $2 }' < "${DIR}/Version.h") + +cat > "${DIR}/Version.h" <<EOF +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * 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, see <https://www.gnu.org/licenses/>. + * + */ +#pragma once + +/** + * THIS FILE IS AUTOMATICALLY GENERATED DO NOT MANUALLY EDIT IT. + * IT DOES NOT GET COMMITTED TO THE REPOSITORY. + * + * Branch: ${BRANCH} + * Version: ${VERSION} + */ + +/** + * Marlin release version identifier + */ +#ifndef SHORT_BUILD_VERSION + #define SHORT_BUILD_VERSION "${SHORT_BUILD_VERSION}" +#endif + +/** + * Verbose version identifier which should contain a reference to the location + * from where the binary was downloaded or the source code was compiled. + */ +#ifndef DETAILED_BUILD_VERSION + #define DETAILED_BUILD_VERSION "${DETAILED_BUILD_VERSION}" +#endif + +/** + * The STRING_DISTRIBUTION_DATE represents when the binary file was built, + * here we define this default string as the date where the latest release + * version was tagged. + */ +#ifndef STRING_DISTRIBUTION_DATE + #define STRING_DISTRIBUTION_DATE "${DISTDATE}" +#endif + +/** + * The protocol for communication to the host. Protocol indicates communication + * standards such as the use of ASCII, "echo:" and "error:" line prefixes, etc. + * (Other behaviors are given by the firmware version and capabilities report.) + */ +#ifndef PROTOCOL_VERSION + #define PROTOCOL_VERSION "${PROTOCOL_VERSION}" +#endif + +/** + * Defines a generic printer name to be output to the LCD after booting Marlin. + */ +#ifndef MACHINE_NAME + #define MACHINE_NAME "${MACHINE_NAME}" +#endif + +/** + * The SOURCE_CODE_URL is the location where users will find the Marlin Source + * Code which is installed on the device. In most cases —unless the manufacturer + * has a distinct Github fork— the Source Code URL should just be the main + * Marlin repository. + */ +#ifndef SOURCE_CODE_URL + #define SOURCE_CODE_URL "${SOURCE_CODE_URL}" +#endif + +/** + * Default generic printer UUID. + */ +#ifndef DEFAULT_MACHINE_UUID + #define DEFAULT_MACHINE_UUID "${DEFAULT_MACHINE_UUID}" +#endif + +/** + * The WEBSITE_URL is the location where users can get more information such as + * documentation about a specific Marlin release. + */ +#ifndef WEBSITE_URL + #define WEBSITE_URL "${WEBSITE_URL}" +#endif + +EOF |