From fc0944e2742987ceefea68b98dcf6bcd28af9702 Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 22:27:49 +0100 Subject: [PATCH 01/10] Moved source files under src directory. --- Makefile | 70 +++++++++---------- endian.h => src/endian.h | 0 frag_parser.c => src/frag_parser.c | 0 frag_parser.h => src/frag_parser.h | 0 fragfile.dat => src/fragfile.dat | 0 logger.c => src/logger.c | 0 logger.h => src/logger.h | 0 main.c => src/main.c | 0 maindef.h => src/maindef.h | 0 mvd_parser.c => src/mvd_parser.c | 0 mvd_parser.h => src/mvd_parser.h | 0 net_msg.c => src/net_msg.c | 0 net_msg.h => src/net_msg.h | 0 netmsg_parser.c => src/netmsg_parser.c | 2 - netmsg_parser.h => src/netmsg_parser.h | 0 qw_protocol.c => src/qw_protocol.c | 0 qw_protocol.h => src/qw_protocol.h | 0 shared.c => src/shared.c | 0 stats.h => src/stats.h | 0 strptime.c => src/strptime.c | 0 strptime.h => src/strptime.h | 0 sys_linux.c => src/sys_linux.c | 3 + sys_win.c => src/sys_win.c | 0 template.dat => src/template.dat | 0 .../old_mvs_files/mvdparser.sln | 0 .../old_mvs_files/mvdparser.vcproj | 0 .../old_mvs_files/mvdparser.vcxproj | 0 .../old_mvs_files/mvdparser.vcxproj.filters | 0 28 files changed, 37 insertions(+), 38 deletions(-) rename endian.h => src/endian.h (100%) rename frag_parser.c => src/frag_parser.c (100%) rename frag_parser.h => src/frag_parser.h (100%) rename fragfile.dat => src/fragfile.dat (100%) rename logger.c => src/logger.c (100%) rename logger.h => src/logger.h (100%) rename main.c => src/main.c (100%) rename maindef.h => src/maindef.h (100%) rename mvd_parser.c => src/mvd_parser.c (100%) rename mvd_parser.h => src/mvd_parser.h (100%) rename net_msg.c => src/net_msg.c (100%) rename net_msg.h => src/net_msg.h (100%) rename netmsg_parser.c => src/netmsg_parser.c (95%) rename netmsg_parser.h => src/netmsg_parser.h (100%) rename qw_protocol.c => src/qw_protocol.c (100%) rename qw_protocol.h => src/qw_protocol.h (100%) rename shared.c => src/shared.c (100%) rename stats.h => src/stats.h (100%) rename strptime.c => src/strptime.c (100%) rename strptime.h => src/strptime.h (100%) rename sys_linux.c => src/sys_linux.c (93%) rename sys_win.c => src/sys_win.c (100%) rename template.dat => src/template.dat (100%) rename mvdparser.sln => tools/old_mvs_files/mvdparser.sln (100%) rename mvdparser.vcproj => tools/old_mvs_files/mvdparser.vcproj (100%) rename mvdparser.vcxproj => tools/old_mvs_files/mvdparser.vcxproj (100%) rename mvdparser.vcxproj.filters => tools/old_mvs_files/mvdparser.vcxproj.filters (100%) diff --git a/Makefile b/Makefile index 4f85adf..90084c0 100644 --- a/Makefile +++ b/Makefile @@ -1,36 +1,34 @@ - -ifeq "$(shell uname | cut -d _ -f1)" "CYGWIN" - OS=cygwin -else - OS=linux -endif - - -CC_LIN = gcc -CC_WIN = gcc -CCFLAGS = -lm -INCLUDEDIRS= - -ifeq "$(OS)" "linux" - SOURCES = frag_parser.c logger.c main.c mvd_parser.c net_msg.c netmsg_parser.c qw_protocol.c shared.c sys_linux.c - CC=$(CC_LIN) -else ## windows - SOURCES = frag_parser.c logger.c main.c mvd_parser.c net_msg.c netmsg_parser.c qw_protocol.c shared.c strptime.c sys_win.c - CC=$(CC_WIN) -mno-cygwin -L/lib/w32api - CCFLAGS+=-Wl,--allow-multiple-definition -Wl,--enable-auto-import - EXTRA_LIBS=-lwinmm - -endif - - -OBJECTS = $(SOURCES:.c=.o) -EXECUTABLE = mvdparser - -$(EXECUTABLE): $(OBJECTS) - $(CC) $(INCLUDEDIRS) $(SOURCES) -o $(EXECUTABLE) $(CCFLAGS) $(EXTRA_LIBS) - -clean: - rm -f *.o - rm -f $(EXECUTABLE) - - + +ifeq "$(shell uname | cut -d _ -f1)" "CYGWIN" + OS=cygwin +else + OS=linux +endif + + +CC_LIN = gcc +CC_WIN = gcc +CCFLAGS = -lm +INCLUDEDIRS = + +ifeq "$(OS)" "linux" + SOURCES = src/frag_parser.c src/logger.c src/main.c src/mvd_parser.c src/net_msg.c src/netmsg_parser.c src/qw_protocol.c src/shared.c src/sys_linux.c + CC=$(CC_LIN) +else ## windows + SOURCES = src/frag_parser.c src/logger.c src/main.c src/mvd_parser.c src/net_msg.c src/netmsg_parser.c src/qw_protocol.c src/shared.c src/strptime.c src/sys_win.c + CC=$(CC_WIN) -mno-cygwin -L/lib/w32api + CCFLAGS+=-Wl,--allow-multiple-definition -Wl,--enable-auto-import + EXTRA_LIBS=-lwinmm + +endif + + +OBJECTS = $(SOURCES:.c=.o) +EXECUTABLE = mvdparser + +$(EXECUTABLE): $(OBJECTS) + $(CC) $(INCLUDEDIRS) $(SOURCES) -o $(EXECUTABLE) $(CCFLAGS) $(EXTRA_LIBS) + +clean: + rm -f src/*.o + rm -f $(EXECUTABLE) diff --git a/endian.h b/src/endian.h similarity index 100% rename from endian.h rename to src/endian.h diff --git a/frag_parser.c b/src/frag_parser.c similarity index 100% rename from frag_parser.c rename to src/frag_parser.c diff --git a/frag_parser.h b/src/frag_parser.h similarity index 100% rename from frag_parser.h rename to src/frag_parser.h diff --git a/fragfile.dat b/src/fragfile.dat similarity index 100% rename from fragfile.dat rename to src/fragfile.dat diff --git a/logger.c b/src/logger.c similarity index 100% rename from logger.c rename to src/logger.c diff --git a/logger.h b/src/logger.h similarity index 100% rename from logger.h rename to src/logger.h diff --git a/main.c b/src/main.c similarity index 100% rename from main.c rename to src/main.c diff --git a/maindef.h b/src/maindef.h similarity index 100% rename from maindef.h rename to src/maindef.h diff --git a/mvd_parser.c b/src/mvd_parser.c similarity index 100% rename from mvd_parser.c rename to src/mvd_parser.c diff --git a/mvd_parser.h b/src/mvd_parser.h similarity index 100% rename from mvd_parser.h rename to src/mvd_parser.h diff --git a/net_msg.c b/src/net_msg.c similarity index 100% rename from net_msg.c rename to src/net_msg.c diff --git a/net_msg.h b/src/net_msg.h similarity index 100% rename from net_msg.h rename to src/net_msg.h diff --git a/netmsg_parser.c b/src/netmsg_parser.c similarity index 95% rename from netmsg_parser.c rename to src/netmsg_parser.c index cbc8df6..71ff508 100644 --- a/netmsg_parser.c +++ b/src/netmsg_parser.c @@ -8,9 +8,7 @@ #include "frag_parser.h" #include "logger.h" -#ifdef WIN32 #include "strptime.h" -#endif // WIN32 // ======================================================================================== // HELPER FUNCTITONS diff --git a/netmsg_parser.h b/src/netmsg_parser.h similarity index 100% rename from netmsg_parser.h rename to src/netmsg_parser.h diff --git a/qw_protocol.c b/src/qw_protocol.c similarity index 100% rename from qw_protocol.c rename to src/qw_protocol.c diff --git a/qw_protocol.h b/src/qw_protocol.h similarity index 100% rename from qw_protocol.h rename to src/qw_protocol.h diff --git a/shared.c b/src/shared.c similarity index 100% rename from shared.c rename to src/shared.c diff --git a/stats.h b/src/stats.h similarity index 100% rename from stats.h rename to src/stats.h diff --git a/strptime.c b/src/strptime.c similarity index 100% rename from strptime.c rename to src/strptime.c diff --git a/strptime.h b/src/strptime.h similarity index 100% rename from strptime.h rename to src/strptime.h diff --git a/sys_linux.c b/src/sys_linux.c similarity index 93% rename from sys_linux.c rename to src/sys_linux.c index a554228..d36a251 100644 --- a/sys_linux.c +++ b/src/sys_linux.c @@ -26,6 +26,9 @@ #include #include +#include "maindef.h" + + /* needed for RTC timer */ #define RTC_RATE 1024.00 static int rtc_fd; /* file descriptor for rtc device */ diff --git a/sys_win.c b/src/sys_win.c similarity index 100% rename from sys_win.c rename to src/sys_win.c diff --git a/template.dat b/src/template.dat similarity index 100% rename from template.dat rename to src/template.dat diff --git a/mvdparser.sln b/tools/old_mvs_files/mvdparser.sln similarity index 100% rename from mvdparser.sln rename to tools/old_mvs_files/mvdparser.sln diff --git a/mvdparser.vcproj b/tools/old_mvs_files/mvdparser.vcproj similarity index 100% rename from mvdparser.vcproj rename to tools/old_mvs_files/mvdparser.vcproj diff --git a/mvdparser.vcxproj b/tools/old_mvs_files/mvdparser.vcxproj similarity index 100% rename from mvdparser.vcxproj rename to tools/old_mvs_files/mvdparser.vcxproj diff --git a/mvdparser.vcxproj.filters b/tools/old_mvs_files/mvdparser.vcxproj.filters similarity index 100% rename from mvdparser.vcxproj.filters rename to tools/old_mvs_files/mvdparser.vcxproj.filters From a13e124c7f2b3ef74b1a6ffeb77e4db6c82c5c62 Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 22:55:27 +0100 Subject: [PATCH 02/10] Added cmake build files --- .github/workflows/build-all-targets.yml | 34 ++++++++++ .github/workflows/build-targets-cmake.yml | 29 ++++++++ CMakeLists.txt | 80 +++++++++++++++++++++++ build_cmake.sh | 50 ++++++++++++++ tools/cross-cmake/linux-aarch64.cmake | 15 +++++ tools/cross-cmake/linux-amd64.cmake | 14 ++++ tools/cross-cmake/linux-armhf.cmake | 15 +++++ tools/cross-cmake/linux-i686.cmake | 16 +++++ tools/cross-cmake/windows-x64.cmake | 14 ++++ tools/cross-cmake/windows-x86.cmake | 16 +++++ tools/cross-compilation/linux-aarch64.txt | 8 +-- 11 files changed, 287 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build-all-targets.yml create mode 100644 .github/workflows/build-targets-cmake.yml create mode 100644 CMakeLists.txt create mode 100755 build_cmake.sh create mode 100644 tools/cross-cmake/linux-aarch64.cmake create mode 100644 tools/cross-cmake/linux-amd64.cmake create mode 100644 tools/cross-cmake/linux-armhf.cmake create mode 100644 tools/cross-cmake/linux-i686.cmake create mode 100644 tools/cross-cmake/windows-x64.cmake create mode 100644 tools/cross-cmake/windows-x86.cmake diff --git a/.github/workflows/build-all-targets.yml b/.github/workflows/build-all-targets.yml new file mode 100644 index 0000000..7e792ef --- /dev/null +++ b/.github/workflows/build-all-targets.yml @@ -0,0 +1,34 @@ +name: build-all-targets +on: [push, pull_request] +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: [linux-amd64, linux-i686, linux-armhf, linux-aarch64, windows-x64, windows-x86] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare Build Environemnt + run: | + sudo apt-get update + sudo apt-get -y install build-essential python3-virtualenv python3-dev python3-pip ninja-build cmake gcc-i686-linux-gnu + sudo apt-get -y install gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross + sudo apt-get -y install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 + virtualenv .venv --python=python3 + . .venv/bin/activate + pip3 install --upgrade pip + pip3 install -r requirements.txt + - name: Build + run: | + ./.venv/bin/meson build-${{ matrix.target }} --buildtype=release -Dwrap_mode=forcefallback --cross-file tools/cross-compilation/${{ matrix.target }}.txt + ninja -v -C build-${{ matrix.target }} + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.target }} + path: | + build-${{ matrix.target }}/mvdsv + build-${{ matrix.target }}/mvdsv.exe + if-no-files-found: ignore diff --git a/.github/workflows/build-targets-cmake.yml b/.github/workflows/build-targets-cmake.yml new file mode 100644 index 0000000..481bd37 --- /dev/null +++ b/.github/workflows/build-targets-cmake.yml @@ -0,0 +1,29 @@ +name: build all targets with cmake +on: [push, pull_request] +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + target: [linux-amd64, linux-i686, linux-armhf, linux-aarch64, windows-x64, windows-x86] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare Build Environemnt + run: | + sudo apt-get update + sudo apt-get -y install build-essential cmake gcc-i686-linux-gnu + sudo apt-get -y install gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross + sudo apt-get -y install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 + - name: Build + run: | + ./build_cmake.sh ${{ matrix.target }} + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.target }} + path: | + build/${{ matrix.target }}/mvdsv + build/${{ matrix.target }}/mvdsv.exe + if-no-files-found: ignore diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1f72a16 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,80 @@ +cmake_minimum_required(VERSION 3.4.0) + +set(CMAKE_VERBOSE_MAKEFILE ON) + +# Set project name and languge. +project(mvdparser C) + + +###################################################################################################### + +# Set where sources located. +set(DIR_SRC "src") + +# Add sources +set(SRC_COMMON + "${DIR_SRC}/frag_parser.c" + "${DIR_SRC}/logger.c" + "${DIR_SRC}/main.c" + "${DIR_SRC}/mvd_parser.c" + "${DIR_SRC}/net_msg.c" + "${DIR_SRC}/netmsg_parser.c" + "${DIR_SRC}/qw_protocol.c" + "${DIR_SRC}/shared.c" + ) + +# Check build target, and included sources +if(UNIX) + list(APPEND SRC_COMMON + "${DIR_SRC}/sys_linux.c" + ) +else() + list(APPEND SRC_COMMON + "${DIR_SRC}/strptime.c" + "${DIR_SRC}/sys_win.c" + ) +endif() + + +###################################################################################################### + +# Set base compiler flags +set(CFLAGS) +set(LFLAGS) + + +###################################################################################################### + +# Set target +add_executable(${PROJECT_NAME} ${SRC_COMMON}) +set_target_properties(${PROJECT_NAME} + PROPERTIES #PREFIX "" # Strip lib prefix. + C_VISIBILITY_PRESET hidden # Hide all symbols unless excplicitly marked to export. + ) + + +###################################################################################################### + +# Set include directories +target_include_directories(${PROJECT_NAME} PRIVATE) + + +###################################################################################################### + +# Check build target, and included sources and libs +if(UNIX) + target_link_libraries(${PROJECT_NAME} m) +else() + target_link_libraries(${PROJECT_NAME} winmm) + set(CFLAGS -mno-cygwin -L/lib/w32api -Wl --allow-multiple-definition --enable-auto-import) + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc") +endif() + + +###################################################################################################### + +# Assign compiler flags +target_compile_options(${PROJECT_NAME} PRIVATE ${CFLAGS}) + + +###################################################################################################### diff --git a/build_cmake.sh b/build_cmake.sh new file mode 100755 index 0000000..eb3d15d --- /dev/null +++ b/build_cmake.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Useful if you willing to stop on first error, also prints what is executed. +#set -ex + +BUILDIR="${BUILDIR:-build}" # Default build dir. + +# Define target platforms, feel free to comment out if you does not require some of it, +# or you can call this script with plaforms list you willing to build on the command line. +DEFAULT_PLATFORMS=( + linux-amd64 + linux-aarch64 + linux-armhf + linux-i686 + windows-x64 + windows-x86 +) +PLATFORMS=("${@:-${DEFAULT_PLATFORMS[@]}}") + + +# If V variable is not empty then provide -v argument to cmake --build command (verbose output). +V="${V:-}" +[ ! -z ${V} ] && V="-v" + +# Overwrite build type with B variable. +B="${B:-Release}" +[ ! -z ${B} ] && BUILD="-DCMAKE_BUILD_TYPE=${B}" + +# The maximum number of concurrent processes to use when building. +export CMAKE_BUILD_PARALLEL_LEVEL="${CMAKE_BUILD_PARALLEL_LEVEL:-8}" + +# Use specified (with G variable) CMake generator or use default generator (most of the time its make) or ninja if found. +G="${G:-}" +[ -z "${G}" ] && hash ninja >/dev/null 2>&1 && G="Ninja" +[ ! -z "${G}" ] && export CMAKE_GENERATOR="${G}" + +rm -rf ${BUILDIR} +mkdir -p ${BUILDIR} + +# Build platforms one by one. +for name in "${PLATFORMS[@]}"; do + P="${BUILDIR}/$name" + mkdir -p "${P}" + case "${name}" in + * ) # Build native library. + cmake -B "${P}" -S . ${BUILD} -DCMAKE_TOOLCHAIN_FILE="tools/cross-cmake/${name}.cmake" + cmake --build "${P}" ${V} + ;; + esac +done diff --git a/tools/cross-cmake/linux-aarch64.cmake b/tools/cross-cmake/linux-aarch64.cmake new file mode 100644 index 0000000..46e18c1 --- /dev/null +++ b/tools/cross-cmake/linux-aarch64.cmake @@ -0,0 +1,15 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm64) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/tools/cross-cmake/linux-amd64.cmake b/tools/cross-cmake/linux-amd64.cmake new file mode 100644 index 0000000..5221afe --- /dev/null +++ b/tools/cross-cmake/linux-amd64.cmake @@ -0,0 +1,14 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR amd64) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/tools/cross-cmake/linux-armhf.cmake b/tools/cross-cmake/linux-armhf.cmake new file mode 100644 index 0000000..4390219 --- /dev/null +++ b/tools/cross-cmake/linux-armhf.cmake @@ -0,0 +1,15 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +#set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/tools/cross-cmake/linux-i686.cmake b/tools/cross-cmake/linux-i686.cmake new file mode 100644 index 0000000..c6d3e25 --- /dev/null +++ b/tools/cross-cmake/linux-i686.cmake @@ -0,0 +1,16 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Linux) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER i686-linux-gnu-gcc) +# Turn off excess precision with -mfpmath=sse -msse2, otherwise KTX compiled with bots will hang. +set(CMAKE_C_FLAGS "-mfpmath=sse -msse2") +#set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++) +#set(CMAKE_CXX_FLAGS -m32) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/tools/cross-cmake/windows-x64.cmake b/tools/cross-cmake/windows-x64.cmake new file mode 100644 index 0000000..aa16bb2 --- /dev/null +++ b/tools/cross-cmake/windows-x64.cmake @@ -0,0 +1,14 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) +set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/tools/cross-cmake/windows-x86.cmake b/tools/cross-cmake/windows-x86.cmake new file mode 100644 index 0000000..27ab7d9 --- /dev/null +++ b/tools/cross-cmake/windows-x86.cmake @@ -0,0 +1,16 @@ +# the name of the target operating system +set(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +# Turn off excess precision with -mfpmath=sse -msse2, otherwise KTX compiled with bots will hang. +set(CMAKE_C_FLAGS "-mfpmath=sse -msse2") +set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) +set(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/tools/cross-compilation/linux-aarch64.txt b/tools/cross-compilation/linux-aarch64.txt index 931f043..f22f9a6 100644 --- a/tools/cross-compilation/linux-aarch64.txt +++ b/tools/cross-compilation/linux-aarch64.txt @@ -1,12 +1,12 @@ [binaries] c = 'aarch64-linux-gnu-gcc' -cpp = 'aarch64-linux-gnu-cpp' -ar = 'aarch64-linux-gnu-gcc' -strip = 'aarch64-linux-gnu-gcc' +cpp = 'aarch64-linux-gnu-c++' +ar = 'aarch64-linux-gnu-ar' +strip = 'aarch64-linux-gnu-strip' pkgconfig = 'aarch64-linux-gnu-pkg-config' [host_machine] system = 'linux' cpu_family = 'aarch64' cpu = 'aarch64' -endian = 'little' \ No newline at end of file +endian = 'little' From 10f0d214db81755e92e0195de27ed9540fbe448c Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 22:59:58 +0100 Subject: [PATCH 03/10] Fixing windows builds for cmake --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f72a16..7d7e40e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,7 @@ if(UNIX) target_link_libraries(${PROJECT_NAME} m) else() target_link_libraries(${PROJECT_NAME} winmm) - set(CFLAGS -mno-cygwin -L/lib/w32api -Wl --allow-multiple-definition --enable-auto-import) + set(CFLAGS --enable-auto-import) set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc") endif() From 21205196ea825c211cbb74d58606e77dc5c97f0a Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 23:04:37 +0100 Subject: [PATCH 04/10] Updated meson versions, plus fixing windows cmake build --- CMakeLists.txt | 1 - requirements.txt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d7e40e..f329c5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,6 @@ if(UNIX) target_link_libraries(${PROJECT_NAME} m) else() target_link_libraries(${PROJECT_NAME} winmm) - set(CFLAGS --enable-auto-import) set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc") endif() diff --git a/requirements.txt b/requirements.txt index 92f02b4..911d94b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -meson==0.41.2 -ninja==1.7.2.post2 +meson==0.58.0 +ninja==1.10.0.post2 scikit-build==0.6.1 From 584c6f9e0cacb1875f19fe95b7dce799e77e6dc4 Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 23:38:15 +0100 Subject: [PATCH 05/10] Fixed artifact for CI --- .github/workflows/build-all-targets.yml | 4 ++-- .github/workflows/build-targets-cmake.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-all-targets.yml b/.github/workflows/build-all-targets.yml index 7e792ef..bb40ce4 100644 --- a/.github/workflows/build-all-targets.yml +++ b/.github/workflows/build-all-targets.yml @@ -29,6 +29,6 @@ jobs: with: name: ${{ matrix.target }} path: | - build-${{ matrix.target }}/mvdsv - build-${{ matrix.target }}/mvdsv.exe + build-${{ matrix.target }}/mvdparser + build-${{ matrix.target }}/mvdparser.exe if-no-files-found: ignore diff --git a/.github/workflows/build-targets-cmake.yml b/.github/workflows/build-targets-cmake.yml index 481bd37..e275e27 100644 --- a/.github/workflows/build-targets-cmake.yml +++ b/.github/workflows/build-targets-cmake.yml @@ -24,6 +24,6 @@ jobs: with: name: ${{ matrix.target }} path: | - build/${{ matrix.target }}/mvdsv - build/${{ matrix.target }}/mvdsv.exe + build/${{ matrix.target }}/mvdparser + build/${{ matrix.target }}/mvdparser.exe if-no-files-found: ignore From 187d1e038a81b1f3d692eb5c9bd10bf683c4a01e Mon Sep 17 00:00:00 2001 From: tcsabina Date: Tue, 8 Feb 2022 23:46:10 +0100 Subject: [PATCH 06/10] Updated meson build after moving source to src directory --- meson.build | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/meson.build b/meson.build index 904197e..761cf7d 100644 --- a/meson.build +++ b/meson.build @@ -1,21 +1,21 @@ project('mvdparser', 'c') mvdparser_sources = [ - 'frag_parser.c', - 'logger.c', - 'main.c', - 'mvd_parser.c', - 'net_msg.c', - 'netmsg_parser.c', - 'qw_protocol.c', - 'shared.c', - 'strptime.c', + 'src/frag_parser.c', + 'src/logger.c', + 'src/main.c', + 'src/mvd_parser.c', + 'src/net_msg.c', + 'src/netmsg_parser.c', + 'src/qw_protocol.c', + 'src/shared.c', + 'src/strptime.c', ] if host_machine.system() == 'windows' - mvdparser_sources += 'sys_win.c' + mvdparser_sources += 'src/sys_win.c' elif host_machine.system() == 'linux' - mvdparser_sources += 'sys_linux.c' + mvdparser_sources += 'src/sys_linux.c' else # FIXME macOS / other platform support endif From 5438ebdddb8c412554f80c05e2310ceb3cf3e75a Mon Sep 17 00:00:00 2001 From: tcsabina Date: Wed, 9 Feb 2022 01:07:21 +0100 Subject: [PATCH 07/10] Fine tuned the cmake projects based on the meson build --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f329c5f..d64afbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ set(SRC_COMMON "${DIR_SRC}/netmsg_parser.c" "${DIR_SRC}/qw_protocol.c" "${DIR_SRC}/shared.c" + "${DIR_SRC}/strptime.c" ) # Check build target, and included sources @@ -30,7 +31,6 @@ if(UNIX) ) else() list(APPEND SRC_COMMON - "${DIR_SRC}/strptime.c" "${DIR_SRC}/sys_win.c" ) endif() @@ -39,7 +39,7 @@ endif() ###################################################################################################### # Set base compiler flags -set(CFLAGS) +set(CFLAGS -Wall) set(LFLAGS) From c134c9738a1ec5f1ed8111dd9d7b3dc2c932e9ed Mon Sep 17 00:00:00 2001 From: tcsabina Date: Wed, 9 Feb 2022 01:07:31 +0100 Subject: [PATCH 08/10] Added proper flags for x86 builds --- tools/cross-compilation/linux-i686.txt | 18 +++++++++--------- tools/cross-compilation/windows-x86.txt | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/tools/cross-compilation/linux-i686.txt b/tools/cross-compilation/linux-i686.txt index 5409baa..1ee33cf 100644 --- a/tools/cross-compilation/linux-i686.txt +++ b/tools/cross-compilation/linux-i686.txt @@ -1,16 +1,16 @@ [binaries] -c = 'x86_64-linux-gnu-gcc' -cpp = 'x86_64-linux-gnu-g++' -ar = 'x86_64-linux-gnu-ar' -strip = 'x86_64-linux-gnu-strip' -pkgconfig = 'x86_64-linux-gnu-pkg-config' +c = 'i686-linux-gnu-gcc' +cpp = 'i686-linux-gnu-g++' +ar = 'i686-linux-gnu-ar' +strip = 'i686-linux-gnu-strip' +pkgconfig = 'i686-linux-gnu-pkg-config' + +[properties] +c_args = ['-m32'] +c_link_args = ['-m32'] [host_machine] system = 'linux' cpu_family = 'x86' cpu = 'i686' endian = 'little' - -[properties] -c_args = ['-m32'] -c_link_args = ['-m32'] diff --git a/tools/cross-compilation/windows-x86.txt b/tools/cross-compilation/windows-x86.txt index 1fe4295..10799ce 100644 --- a/tools/cross-compilation/windows-x86.txt +++ b/tools/cross-compilation/windows-x86.txt @@ -6,6 +6,9 @@ strip = 'i686-w64-mingw32-strip' pkgconfig = 'i686-w64-mingw32-pkg-config' windres = 'i686-w64-mingw32-windres' +[properties] +c_args = ['-msse2', '-mfpmath=sse'] + [host_machine] system = 'windows' cpu_family = 'x86' From f927088bbd698c81a18e21b53b7a3427e1aefae8 Mon Sep 17 00:00:00 2001 From: tcsabina Date: Wed, 9 Feb 2022 22:43:08 +0100 Subject: [PATCH 09/10] Removed meson build files --- .github/workflows/build-all-targets.yml | 34 ----------------------- meson.build | 28 ------------------- requirements.txt | 3 -- tools/cross-compilation/linux-aarch64.txt | 12 -------- tools/cross-compilation/linux-amd64.txt | 12 -------- tools/cross-compilation/linux-armhf.txt | 12 -------- tools/cross-compilation/linux-i686.txt | 16 ----------- tools/cross-compilation/windows-x64.txt | 13 --------- tools/cross-compilation/windows-x86.txt | 16 ----------- 9 files changed, 146 deletions(-) delete mode 100644 .github/workflows/build-all-targets.yml delete mode 100644 meson.build delete mode 100644 requirements.txt delete mode 100644 tools/cross-compilation/linux-aarch64.txt delete mode 100644 tools/cross-compilation/linux-amd64.txt delete mode 100644 tools/cross-compilation/linux-armhf.txt delete mode 100644 tools/cross-compilation/linux-i686.txt delete mode 100644 tools/cross-compilation/windows-x64.txt delete mode 100644 tools/cross-compilation/windows-x86.txt diff --git a/.github/workflows/build-all-targets.yml b/.github/workflows/build-all-targets.yml deleted file mode 100644 index bb40ce4..0000000 --- a/.github/workflows/build-all-targets.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: build-all-targets -on: [push, pull_request] -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - target: [linux-amd64, linux-i686, linux-armhf, linux-aarch64, windows-x64, windows-x86] - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Prepare Build Environemnt - run: | - sudo apt-get update - sudo apt-get -y install build-essential python3-virtualenv python3-dev python3-pip ninja-build cmake gcc-i686-linux-gnu - sudo apt-get -y install gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross - sudo apt-get -y install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 - virtualenv .venv --python=python3 - . .venv/bin/activate - pip3 install --upgrade pip - pip3 install -r requirements.txt - - name: Build - run: | - ./.venv/bin/meson build-${{ matrix.target }} --buildtype=release -Dwrap_mode=forcefallback --cross-file tools/cross-compilation/${{ matrix.target }}.txt - ninja -v -C build-${{ matrix.target }} - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.target }} - path: | - build-${{ matrix.target }}/mvdparser - build-${{ matrix.target }}/mvdparser.exe - if-no-files-found: ignore diff --git a/meson.build b/meson.build deleted file mode 100644 index 761cf7d..0000000 --- a/meson.build +++ /dev/null @@ -1,28 +0,0 @@ -project('mvdparser', 'c') - -mvdparser_sources = [ - 'src/frag_parser.c', - 'src/logger.c', - 'src/main.c', - 'src/mvd_parser.c', - 'src/net_msg.c', - 'src/netmsg_parser.c', - 'src/qw_protocol.c', - 'src/shared.c', - 'src/strptime.c', -] - -if host_machine.system() == 'windows' - mvdparser_sources += 'src/sys_win.c' -elif host_machine.system() == 'linux' - mvdparser_sources += 'src/sys_linux.c' -else - # FIXME macOS / other platform support -endif - -executable('mvdparser', mvdparser_sources, - dependencies : [ - meson.get_compiler('c').find_library('m', required : false), - meson.get_compiler('c').find_library('winmm', required : false), - ], -) diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 911d94b..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -meson==0.58.0 -ninja==1.10.0.post2 -scikit-build==0.6.1 diff --git a/tools/cross-compilation/linux-aarch64.txt b/tools/cross-compilation/linux-aarch64.txt deleted file mode 100644 index f22f9a6..0000000 --- a/tools/cross-compilation/linux-aarch64.txt +++ /dev/null @@ -1,12 +0,0 @@ -[binaries] -c = 'aarch64-linux-gnu-gcc' -cpp = 'aarch64-linux-gnu-c++' -ar = 'aarch64-linux-gnu-ar' -strip = 'aarch64-linux-gnu-strip' -pkgconfig = 'aarch64-linux-gnu-pkg-config' - -[host_machine] -system = 'linux' -cpu_family = 'aarch64' -cpu = 'aarch64' -endian = 'little' diff --git a/tools/cross-compilation/linux-amd64.txt b/tools/cross-compilation/linux-amd64.txt deleted file mode 100644 index 682ed1d..0000000 --- a/tools/cross-compilation/linux-amd64.txt +++ /dev/null @@ -1,12 +0,0 @@ -[binaries] -c = 'gcc' -cpp = 'g++' -ar = 'ar' -strip = 'strip' -pkgconfig = 'pkg-config' - -[host_machine] -system = 'linux' -cpu_family = 'x86_64' -cpu = 'x86_64' -endian = 'little' diff --git a/tools/cross-compilation/linux-armhf.txt b/tools/cross-compilation/linux-armhf.txt deleted file mode 100644 index 5d74d71..0000000 --- a/tools/cross-compilation/linux-armhf.txt +++ /dev/null @@ -1,12 +0,0 @@ -[binaries] -c = 'arm-linux-gnueabihf-gcc' -cpp = 'arm-linux-gnueabihf-cpp' -ar = 'arm-linux-gnueabihf-ar' -strip = 'arm-linux-gnueabihf-strip' -pkgconfig = 'arm-linux-gnueabihf-pkg-config' - -[host_machine] -system = 'linux' -cpu_family = 'arm' -cpu = 'armv7hl' -endian = 'little' diff --git a/tools/cross-compilation/linux-i686.txt b/tools/cross-compilation/linux-i686.txt deleted file mode 100644 index 1ee33cf..0000000 --- a/tools/cross-compilation/linux-i686.txt +++ /dev/null @@ -1,16 +0,0 @@ -[binaries] -c = 'i686-linux-gnu-gcc' -cpp = 'i686-linux-gnu-g++' -ar = 'i686-linux-gnu-ar' -strip = 'i686-linux-gnu-strip' -pkgconfig = 'i686-linux-gnu-pkg-config' - -[properties] -c_args = ['-m32'] -c_link_args = ['-m32'] - -[host_machine] -system = 'linux' -cpu_family = 'x86' -cpu = 'i686' -endian = 'little' diff --git a/tools/cross-compilation/windows-x64.txt b/tools/cross-compilation/windows-x64.txt deleted file mode 100644 index 2e2f6df..0000000 --- a/tools/cross-compilation/windows-x64.txt +++ /dev/null @@ -1,13 +0,0 @@ -[binaries] -c = 'x86_64-w64-mingw32-gcc' -cpp = 'x86_64-w64-mingw32-g++' -ar = 'x86_64-w64-mingw32-ar' -strip = 'x86_64-w64-mingw32-strip' -pkgconfig = 'x86_64-w64-mingw32-pkg-config' -windres = 'x86_64-w64-mingw32-windres' - -[host_machine] -system = 'windows' -cpu_family = 'x86_64' -cpu = 'x86_64' -endian = 'little' diff --git a/tools/cross-compilation/windows-x86.txt b/tools/cross-compilation/windows-x86.txt deleted file mode 100644 index 10799ce..0000000 --- a/tools/cross-compilation/windows-x86.txt +++ /dev/null @@ -1,16 +0,0 @@ -[binaries] -c = 'i686-w64-mingw32-gcc' -cpp = 'i686-w64-mingw32-g++' -ar = 'i686-w64-mingw32-ar' -strip = 'i686-w64-mingw32-strip' -pkgconfig = 'i686-w64-mingw32-pkg-config' -windres = 'i686-w64-mingw32-windres' - -[properties] -c_args = ['-msse2', '-mfpmath=sse'] - -[host_machine] -system = 'windows' -cpu_family = 'x86' -cpu = 'i686' -endian = 'little' From 691be8a47af8da75d94b9a2012b90bc020c10c94 Mon Sep 17 00:00:00 2001 From: tcsabina Date: Wed, 9 Feb 2022 22:55:31 +0100 Subject: [PATCH 10/10] Previous merge restored some deleted files --- .github/workflows/build-all-targets.yml | 34 ------- .travis.yml | 115 ------------------------ 2 files changed, 149 deletions(-) delete mode 100644 .github/workflows/build-all-targets.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/build-all-targets.yml b/.github/workflows/build-all-targets.yml deleted file mode 100644 index bb40ce4..0000000 --- a/.github/workflows/build-all-targets.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: build-all-targets -on: [push, pull_request] -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - target: [linux-amd64, linux-i686, linux-armhf, linux-aarch64, windows-x64, windows-x86] - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Prepare Build Environemnt - run: | - sudo apt-get update - sudo apt-get -y install build-essential python3-virtualenv python3-dev python3-pip ninja-build cmake gcc-i686-linux-gnu - sudo apt-get -y install gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross - sudo apt-get -y install gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 - virtualenv .venv --python=python3 - . .venv/bin/activate - pip3 install --upgrade pip - pip3 install -r requirements.txt - - name: Build - run: | - ./.venv/bin/meson build-${{ matrix.target }} --buildtype=release -Dwrap_mode=forcefallback --cross-file tools/cross-compilation/${{ matrix.target }}.txt - ninja -v -C build-${{ matrix.target }} - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.target }} - path: | - build-${{ matrix.target }}/mvdparser - build-${{ matrix.target }}/mvdparser.exe - if-no-files-found: ignore diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7cb57f6..0000000 --- a/.travis.yml +++ /dev/null @@ -1,115 +0,0 @@ -dist: bionic - -os: - - linux - -compiler: - - gcc - -language: c - -env: - global: - DATETIME=$(date +%Y%m%d-%H%M%S) - DATE=${DATETIME%%-*} - TIME=${DATETIME##*-} - -jobs: - include: - - os: linux - env: - OS=linux - ARCH=amd64 - EXTENSION= - - os: linux - env: - OS=linux - ARCH=i686 - EXTENSION= - - os: linux - env: - OS=linux - ARCH=armhf - EXTENSION= - - os: linux - env: - OS=linux - ARCH=aarch64 - EXTENSION= - - os: linux - env: - OS=windows - ARCH=x64 - EXTENSION=.exe - addons: - apt: - packages: - - mingw-w64 - - os: linux - env: - OS=windows - ARCH=x86 - EXTENSION=.exe - addons: - apt: - packages: - - mingw-w64 - -addons: - apt: - update: true - packages: - build-essential - python-virtualenv - python3-dev - python3-pip - ninja-build - cmake - gcc-multilib - -before_install: - # install cross compiler tools if we are going to compile binares for arm (notice it will remove gcc-multilib and creates a dependency issue if we try to install those packages with the others) - - if [ -z "${ARCH##armhf}" ]; then sudo apt-get -y install gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross ;fi - - if [ -z "${ARCH##aarch64}" ]; then sudo apt-get -y install gcc-aarch64-linux-gnu linux-libc-dev-arm64-cross libc6-dev-arm64-cross ;fi - # activate virtualenv with python3, meson requires python3 - - virtualenv .venv --python=python3 - - . .venv/bin/activate - - pip3 install --upgrade pip - # install python packages like meson, ninja etc... - - pip3 install -r requirements.txt - -before_script: - # add current commit ref to include files for debugging ease - - sed -i "s/#define GIT_COMMIT.*$/$(git log -n 1 --format=format:"#define GIT_COMMIT \"%h\"" HEAD)/" maindef.h - -script: - # build binary - - meson build --buildtype=release --cross-file tools/cross-compilation/${OS}-${ARCH}.txt - - ninja -v -C build - -after_success: - - export BINARY=mvdparser${EXTENSION} - - export CHECKSUM=mvdparser.md5 - # print basic info about compiled files - - file build/${BINARY} - # create hash for download verification - - md5sum build/${BINARY} > build/${CHECKSUM} - # update snapshots links - - if [ -z "${TRAVIS_TAG}" ]; then mkdir -p upload/snapshots/${OS}/${ARCH} ;fi - - if [ -z "${TRAVIS_TAG}" ]; then mkdir -p upload/snapshots/latest/${OS}/${ARCH} ;fi - - if [ -z "${TRAVIS_TAG}" ]; then cp build/${BINARY} upload/snapshots/${OS}/${ARCH}/${DATETIME}_${TRAVIS_COMMIT:0:7}_${BINARY} ;fi - - if [ -z "${TRAVIS_TAG}" ]; then cp build/${CHECKSUM} upload/snapshots/${OS}/${ARCH}/${DATETIME}_${TRAVIS_COMMIT:0:7}_${CHECKSUM} ;fi - - if [ -z "${TRAVIS_TAG}" ]; then cp build/${BINARY} upload/snapshots/latest/${OS}/${ARCH}/${BINARY} ;fi - - if [ -z "${TRAVIS_TAG}" ]; then cp build/${CHECKSUM} upload/snapshots/latest/${OS}/${ARCH}/${CHECKSUM} ;fi - # update releases links - - if [ -n "${TRAVIS_TAG}" ]; then mkdir -p upload/releases/{latest,${TRAVIS_TAG}}/${OS}/${ARCH} ;fi - - if [ -n "${TRAVIS_TAG}" ]; then cp build/${BINARY} upload/releases/${TRAVIS_TAG}/${OS}/${ARCH}/${BINARY} ;fi - - if [ -n "${TRAVIS_TAG}" ]; then cp build/${CHECKSUM} upload/releases/${TRAVIS_TAG}/${OS}/${ARCH}/${CHECKSUM} ;fi - - if [ -n "${TRAVIS_TAG}" ]; then cp build/${BINARY} upload/releases/latest/${OS}/${ARCH}/${BINARY} ;fi - - if [ -n "${TRAVIS_TAG}" ]; then cp build/${CHECKSUM} upload/releases/latest/${OS}/${ARCH}/${CHECKSUM} ;fi - # add SFTP authentication key to the build environment - - openssl aes-256-cbc -K $encrypted_2be706a63e31_key -iv $encrypted_2be706a63e31_iv -in mvdparser_builds.key.enc -out mvdparser_builds.key -d - # set correct permissions on private key - - chmod 600 mvdparser_builds.key - # push built items to SFTP storage - - sftp -q -i mvdparser_builds.key -rp -o 'StrictHostKeyChecking no' -o 'UserKnownHostsFile /dev/null' -P ${SFTP_PORT} ${SFTP_USERNAME}@${SFTP_HOST}:/ <<< $'put -rp upload/*'