Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for package distribution #955

Merged
merged 11 commits into from
May 19, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
95 changes: 60 additions & 35 deletions .travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,39 +8,64 @@ echo "----"
echo "WORK DIR:$DIR"
DIR=$PWD

if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo apt-get update -qq || true
sudo apt-get install -qq -y --no-install-recommends libgtk-3-dev

echo "--> Building Debug..."
mkdir -p build/Debug && cd build/Debug
echo "-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -

echo "--> Building Release..."
mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -

# echo "--> Building Binary..."
# mkdir -p build/Binary && cd build/Binary
# cho "-DCMAKE_BUILD_TYPE=Binary -DCMAKE_INSTALL_PREFIX=$PWD/_install"
# cmake -DCMAKE_BUILD_TYPE=Binary -DCMAKE_TOOLCHAIN_FILE=./cmake/linux-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
# make && make package && cd -
else [ "$TRAVIS_OS_NAME" == "osx" ];
brew install libusb

echo "--> Building Debug..."
mkdir -p build/Debug && cd build/Debug
echo "-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -

echo "--> Building Release..."
mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -
if [ "$TRAVIS_JOB_NAME" == "linux-mingw" ]; then
echo "--> Building Release for Windows (x86-64) ..."
mkdir -p build-mingw && cd build-mingw
echo "-DCMAKE_SYSTEM_NAME=Windows -DTOOLCHAIN_PREFIX=x86_64-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=$PWD/../cmake/modules/set_toolchain.cmake -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR"
cmake -DCMAKE_SYSTEM_NAME=Windows -DTOOLCHAIN_PREFIX=x86_64-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=$PWD/../cmake/modules/set_toolchain.cmake -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && rm -rf build-mingw && cd -

echo "--> Building Release for Windows (i686) ..."
mkdir -p build-mingw && cd build-mingw
echo "-DCMAKE_SYSTEM_NAME=Windows -DTOOLCHAIN_PREFIX=i686-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=$PWD/../cmake/modules/set_toolchain.cmake -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR"
cmake -DCMAKE_SYSTEM_NAME=Windows -DTOOLCHAIN_PREFIX=i686-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=$PWD/../cmake/modules/set_toolchain.cmake -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && rm -rf build-mingw && cd -

elif [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo apt-get update -qq || true
sudo apt-get install -qq -y --no-install-recommends libgtk-3-dev

echo "--> Building Debug..."
mkdir -p build/Debug && cd build/Debug
echo "-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && make package && cd -

echo "--> Building Release..."
mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && make package && cd -

elif [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew install libusb

echo "--> Building Debug..."
mkdir -p build/Debug && cd build/Debug
echo "-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && make package && cd -

echo "--> Building Release..."
mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install $DIR
make && make package && cd -

else # local test-build
echo "--> Building Debug..."
mkdir -p build/Debug && cd build/Debug
echo "-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -

echo "--> Building Release..."
mkdir -p build/Release && cd build/Release
echo "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install"
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/_install ../../
make && make package && cd -
fi
101 changes: 60 additions & 41 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,98 +1,111 @@
language: c

matrix:
jobs:
include:
### 64-bit builds ###
### 64-bit builds on AMD64 ###
- os: linux
dist: bionic
env: BADGE=linux
arch: x64
compiler: gcc-5
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-5', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['gcc-5', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
- os: linux
dist: bionic
env: BADGE=linux
arch: x64
compiler: gcc-7
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-7', 'libusb-1.0.0-dev', 'libgtk-3-dev']
- os: linux
env: BADGE=linux
arch: x64
compiler: gcc-9
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-9', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['gcc-9', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
- os: linux
dist: xenial
env: BADGE=linux
arch: x64
compiler: clang-3.7
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-xenial-3.7']
packages: ['clang-3.7', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['clang-3.7', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
- os: linux
dist: bionic
env: BADGE=linux
arch: x64
compiler: clang-6.0
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-bionic-6.0']
packages: ['clang-6.0', 'libusb-1.0.0-dev', 'libgtk-3-dev']
# - os: linux
# arch: x64
# compiler: clang-6.0
# addons:
# apt:
# sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-bionic-6.0']
# packages: ['clang-6.0', 'libusb-1.0.0-dev', 'libgtk-3-dev']
# env: CFLAGS=-m32 LDFLAGS=-m32

### 32-bit builds ###
packages: ['clang-6.0', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
- os: linux
dist: bionic
env: BADGE=linux
arch: x86
compiler: gcc-5
compiler: clang-9
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['clang-9', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']

- os: linux
dist: bionic
env: BADGE=linux-mingw
name: linux-mingw
compiler: gcc-9
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-5', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['gcc-9', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm', 'mingw-w64']

### 32-bit builds on AMD64 ###
- os: linux
dist: bionic
env: BADGE=linux
arch: x86
compiler: gcc-7
compiler: gcc-5
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-7', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['gcc-5', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
before_install:
- CFLAGS="$CFLAGS -m32"; CXXFLAGS="$CXXFLAGS -m32"; LDFLAGS="$LDFLAGS -m32";
- os: linux
dist: bionic
env: BADGE=linux
arch: x86
compiler: gcc-9
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['gcc-9', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['gcc-9', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
before_install:
- CFLAGS="$CFLAGS -m32"; CXXFLAGS="$CXXFLAGS -m32"; LDFLAGS="$LDFLAGS -m32";
- os: linux
dist: xenial
env: BADGE=linux
arch: x86
compiler: clang-3.7
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-xenial-3.7']
packages: ['clang-3.7', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['clang-3.7', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
before_install:
- CFLAGS="$CFLAGS -m32"; CXXFLAGS="$CXXFLAGS -m32"; LDFLAGS="$LDFLAGS -m32";
- os: linux
dist: bionic
env: BADGE=linux
arch: x86
compiler: clang-6.0
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-bionic-6.0']
packages: ['clang-6.0', 'libusb-1.0.0-dev', 'libgtk-3-dev']
packages: ['clang-6.0', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
before_install:
- CFLAGS="$CFLAGS -m32"; CXXFLAGS="$CXXFLAGS -m32"; LDFLAGS="$LDFLAGS -m32";
- os: linux
dist: bionic
env: BADGE=linux
compiler: clang-9
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['clang-9', 'libusb-1.0.0-dev', 'libgtk-3-dev', 'rpm']
before_install:
- CFLAGS="$CFLAGS -m32"; CXXFLAGS="$CXXFLAGS -m32"; LDFLAGS="$LDFLAGS -m32";


### macOS ###
- os: osx
Expand All @@ -114,8 +127,14 @@ matrix:
- libusb
- gtk+3

### Windows ###
# - os: windows
# env: BADGE=windows
# compiler: gcc

script:
- git fetch --tags
- printenv
- cmake --version
- ./.travis.sh
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] || [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./.travis.sh; fi
# - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmd.exe /C 'mingw64-build.bat'; fi
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ package: build/Release
@$(MAKE) -C build/Release package

test: debug
@echo "[TEST]"
@echo "[TEST] Debug"
@$(MAKE) -C build/Debug test

build/Debug:
Expand Down
25 changes: 17 additions & 8 deletions cmake/modules/Findlibusb.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Findlibusb.cmake
# Find and install external libusb library

# Once done this will define
#
# LIBUSB_FOUND libusb present on system
Expand All @@ -8,7 +10,7 @@

include(FindPackageHandleStandardArgs)

if (APPLE) # macOS
if (APPLE) # macOS
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
HINTS /usr /usr/local /opt
Expand All @@ -25,7 +27,7 @@ if (APPLE) # macOS
message(FATAL_ERROR "No libusb library found on your system! Install libusb-1.0 from Homebrew or MacPorts")
endif ()

elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system
elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated into the system
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
HINTS /usr/include
Expand All @@ -41,15 +43,15 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") # FreeBSD; libusb is integrated
message(FATAL_ERROR "Expected libusb library not found on your system! Verify your system integrity.")
endif ()

elseif (WIN32) # Windows
elseif (WIN32 OR (EXISTS "/etc/debian_version" AND MINGW)) # Windows or MinGW-toolchain on Debian
# for MinGW/MSYS/MSVC: 64-bit or 32-bit?
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH 64)
else ()
set(ARCH 32)
endif ()

if (NOT EXISTS "/etc/debian_version")
if (WIN32 AND NOT EXISTS "/etc/debian_version") # Skip this for Debian...
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
HINTS /usr /usr/local /opt
Expand All @@ -71,12 +73,17 @@ elseif (WIN32) # Windows
endif ()
endif ()

if (NOT LIBUSB_FOUND OR EXISTS "/etc/debian_version")
if (NOT LIBUSB_FOUND)
# Preparations for installing libusb library
set(LIBUSB_WIN_VERSION 1.0.23) # set libusb version
set(LIBUSB_WIN_ARCHIVE libusb-${LIBUSB_WIN_VERSION}.7z)
set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_BINARY_DIR}/${LIBUSB_WIN_ARCHIVE})
set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_BINARY_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION})
if (WIN32 AND NOT EXISTS "/etc/debian_version") # ... on native Windows systems
set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_BINARY_DIR}/${LIBUSB_WIN_ARCHIVE})
set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_BINARY_DIR}/3rdparty/libusb-${LIBUSB_WIN_VERSION})
else (EXISTS "/etc/debian_version" AND MINGW) # ... only for cross-building on Debian
set(LIBUSB_WIN_ARCHIVE_PATH ${CMAKE_SOURCE_DIR}/build-mingw/${LIBUSB_WIN_ARCHIVE})
set(LIBUSB_WIN_OUTPUT_FOLDER ${CMAKE_SOURCE_DIR}/build-mingw/3rdparty/libusb-${LIBUSB_WIN_VERSION})
endif ()

# Get libusb package
if (EXISTS ${LIBUSB_WIN_ARCHIVE_PATH}) # ... should the package be already there (for whatever reason)
Expand Down Expand Up @@ -107,6 +114,7 @@ elseif (WIN32) # Windows
)

if (MINGW OR MSYS)
set(LIBUSB_NAME usb-1.0)
find_library(
LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
HINTS ${LIBUSB_WIN_OUTPUT_FOLDER}/MinGW${ARCH}/static
Expand All @@ -115,6 +123,7 @@ elseif (WIN32) # Windows
)

else (MSVC)
set(LIBUSB_NAME libusb-1.0.lib)
find_library(
LIBUSB_LIBRARY NAMES ${LIBUSB_NAME}
HINTS ${LIBUSB_WIN_OUTPUT_FOLDER}/MS${ARCH}/dll
Expand All @@ -127,7 +136,7 @@ elseif (WIN32) # Windows
FIND_PACKAGE_HANDLE_STANDARD_ARGS(libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR)
mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY)

else () # all other OS (unix-based)
else () # all other OS (unix-based)
FIND_PATH(
LIBUSB_INCLUDE_DIR NAMES libusb.h
HINTS /usr /usr/local /opt
Expand Down
3 changes: 3 additions & 0 deletions cmake/modules/c_flags.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# c_flags.cmake
# Configure C compiler flags

include(CheckCCompilerFlag)

function(add_cflag_if_supported flag)
Expand Down
8 changes: 4 additions & 4 deletions cmake/modules/get_version.cmake
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Determine project version
# * Using Git
# * Local .version file
# get_version.cmake
# Determine project version by using Git or a local .version file

set(__detect_version 0)

Expand Down Expand Up @@ -77,13 +76,14 @@ if (GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
endif(GIT_DESCRIBE_RESULT EQUAL 0)
endif ()

##
# Failure to read version via git
# Possible cases:
# -> git is not found or
# -> /.git does not exist or
# -> GIT_DESCRIBE failed or
# -> version string is of invalid format

##
if (NOT GIT_FOUND OR NOT EXISTS "${PROJECT_SOURCE_DIR}/.git" OR ERROR_FLAG EQUAL 1)
message(STATUS "Git and/or repository not found.") # e.g. when building from source package
message(STATUS "Try to detect version from \"${PROJECT_SOURCE_DIR}/.version\" file instead...")
Expand Down