Skip to content

Commit

Permalink
Merge branch 'release_1.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
christophe-calmejane committed Nov 21, 2019
2 parents 1018fa3 + 292d3f4 commit cd98301
Show file tree
Hide file tree
Showing 199 changed files with 24,093 additions and 7,003 deletions.
16 changes: 14 additions & 2 deletions .gitignore
Expand Up @@ -16,6 +16,18 @@ ehthumbs.db
# TMP "local" module
/3rdparty/avdecc-local

# Ignore .identity file
/.identity
# WinSparkle
/3rdparty/winsparkle/bin
/3rdparty/winsparkle/include
/3rdparty/winsparkle/lib

# Sparkle
/3rdparty/sparkle/Sparkle.framework
/3rdparty/sparkle/generate_keys
/3rdparty/sparkle/sign_update

# Ignore .hive_config file
/.hive_config

# Ignore PEM files
/resources/*.pem
2 changes: 1 addition & 1 deletion .gitmodules
@@ -1,6 +1,6 @@
[submodule "3rdparty/avdecc"]
path = 3rdparty/avdecc
url = https://github.com/L-Acoustics/avdecc.git
url = https://github.com/L-Acoustics/avdecc.git
[submodule "3rdparty/discount"]
path = 3rdparty/discount
url = https://github.com/christophe-calmejane/discount.git
11 changes: 11 additions & 0 deletions .hive_config.sample
@@ -0,0 +1,11 @@
# This is a sample configuration file for Hive Installer build
# Rename this file to .hive_config

# Signing identity to be used, defaults to "-" which let Xcode autodetect appropriate signing identity
identity=-

# Appcast URL for Hive Releases - Only use https URLs (except for debugging when using localhost)
appcast_releases=https://www.kikisoft.com/Hive/appcast-release.xml

# Appcast URL for Hive Betas - Only use https URLs (except for debugging when using localhost)
appcast_betas=https://www.kikisoft.com/Hive/appcast-beta.xml
2 changes: 1 addition & 1 deletion 3rdparty/avdecc
Submodule avdecc updated 137 files
4 changes: 4 additions & 0 deletions 3rdparty/sparkle/README.md
@@ -0,0 +1,4 @@
# Sparkle manual setup (if not using setup_fresh_env.sh script)
- Grab [Sparkle Version 1.22.0](https://github.com/sparkle-project/Sparkle/releases/download/1.22.0/Sparkle-1.22.0.tar.bz2) or search it from [Sparkle's official GitHub project page](https://github.com/sparkle-project/Sparkle/releases) if the link is broken
- Unzip the file
- Copy Sparkle.framework in this current directory
15 changes: 15 additions & 0 deletions 3rdparty/winsparkle/README.md
@@ -0,0 +1,15 @@
# WinSparkle manual setup (if not using setup_fresh_env.sh script)
- Grab [WinSparkle Version 0.6.0](https://github.com/vslavik/winsparkle/releases/download/v0.6.0/WinSparkle-0.6.0.zip) or search it from [WinSparkle's official GitHub project page](https://github.com/vslavik/winsparkle/releases) if the link is broken
- Unzip the file
- Create the following folders in this current directory:
- bin/x86
- bin/x64
- include
- lib/x86
- lib/x64
- Copy files from the unzipped archive to the newly created folders:
- WinSparkle.dll (32 bits) -> bin/x86
- WinSparkle.dll (64 bits) -> bin/x64
- winsparkle.h and winsparkle-version.h -> include
- WinSparkle.lib (32 bits) -> lib/x86
- WinSparkle.lib (64 bits) -> lib/x64
49 changes: 49 additions & 0 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,55 @@ All notable changes to Hive will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.2.1] - 2019-11-21
### Fixed
- Windows updater not ignoring winPcap reinstallation

## [1.2.0] - 2019-11-21
### Added
- Detection of arriving and departing network interfaces (and link status)
- [Collapse/Expand all buttons for connection matrix](https://github.com/christophe-calmejane/Hive/issues/51)
- [Sort connection matrix by EntityID](https://github.com/christophe-calmejane/Hive/issues/59)
- Major performance improvements
- Smart connections in Connection Matrix
- Support for drag&drop of json virtual entity files
- Color theme selection in Settings
- Controller Statistics (displayed in Entity Node)
- Utilities toolbar for quick access to Media Clock Management and Settings
- [WinPcap included in Windows Installer](https://github.com/christophe-calmejane/Hive/issues/14)
- Device Firmware Update multi-selection window
- Channel Based Routing (Alternate Connection Matrix), with CTRL-M shortcut to switch routing modes
- Main Menu shortcuts
- [_Error Counters_ now display the count since last acknowledge](https://github.com/christophe-calmejane/Hive/issues/62)
- [_Statistics Error Counters_ are displayed as errors](https://github.com/christophe-calmejane/Hive/issues/62)
- A few options to visually configure the connection matrix arrows
- [Display of StreamOutput _Streaming State_](https://github.com/christophe-calmejane/Hive/issues/66)
- [Display of SteramInput _Media Locked State_](https://github.com/christophe-calmejane/Hive/issues/66)
- Displaying the currently active ClockSource in the AEM Tree
- Considering MediaUnlocked StreamInput counter changes as errors (only when the stream is connected)
- [Detection for WinPcap driver to be installed and started](https://github.com/christophe-calmejane/Hive/issues/69)
- [Grey out stream input counters if there is no connection](https://github.com/christophe-calmejane/Hive/issues/57)
- Option to export the json EntityModel of a device (.aem file)
- Option to enumerate and display the full Static Model

### Changed
- Always reselecting the last selected Descriptor when reinspecting an Entity
- [Moved ProtocolInterface selection to the Settings](https://github.com/christophe-calmejane/Hive/issues/58)
- Automatically Locking the Entity when opening the Dynamic Mappings Editor
- All exported files are now using MessagePack (JSON binary) file format
- Using SHIFT modifier while choosing one of the Export feature will dump the file in readable JSON format
- Improved software update with automatic download and install
- Entities in a Full Network State dump are always sorted by descending EntityID

### Fixed
- [Splashscreen displayed on the same screen than Hive will be shown](https://github.com/christophe-calmejane/Hive/issues/20)
- Refresh issue when gPTP changes for some non-milan devices
- [Red text no longer applied when item is selected (fixed by using a colored box around the item)](https://github.com/christophe-calmejane/Hive/issues/68)
- [Possible crash when failed to properly enumerate a device](https://github.com/christophe-calmejane/Hive/issues/71)
- [_Arrow Settings_ immediately refresh the Connection Matrix when changed from the Settings Window](https://github.com/christophe-calmejane/Hive/issues/72)
- [WrongFormat error now has priority over InterfaceDown in Redundant Stream Pair Summary](https://github.com/christophe-calmejane/Hive/issues/73)
- _Device Details Dialog_ Receive/Transmit tab refresh issues

## [1.1.0] - 2019-05-21
### Added
- _Device Details Dialog_ for basic device configuration and information
Expand Down
98 changes: 86 additions & 12 deletions CMakeLists.txt
@@ -1,7 +1,7 @@
# Hive - Pro Audio Avdecc Controller
# Root CMake File for Hive

# Minimum CMake version
cmake_minimum_required(VERSION 3.12)
cmake_minimum_required(VERSION 3.13)

############ Versioning

Expand All @@ -10,24 +10,46 @@ cmake_minimum_required(VERSION 3.12)
# It should have 3 digits (x.y.z) on main branch, and 4 digits (x.y.z.w) on dev and task branches. The last digit being used as beta label.
# As soon as a new version begins, update the version number by following SemVer rules.
# Example: 1.5.0 is the upcoming release version (main branch) of current 1.5.0.3 devel version (dev/task) which will be labelled 1.5.0-beta3
set(HIVE_VERSION 1.1.0)
set(HIVE_VERSION 1.2.1)

############ Override from command line "CMake -D<OPTION>=TRUE/FALSE/0/1/ON/OFF"

# Build options
option(BUILD_HIVE_TESTS "Build Hive tests." TRUE)
option(BUILD_HIVE_APPLICATION "Build Hive main application." TRUE)
# Install options
option(ENABLE_HIVE_CPACK "Enable Hive installer generation target." TRUE)
# Signing options
option(ENABLE_HIVE_SIGNING "Enable binaries signing." FALSE)
# Enable features
option(ENABLE_HIVE_FEATURE_SPARKLE "Use Sparkle for Hive auto-update" TRUE)

############ Override from command line "CMake -D<PARAM>=<VALUE>"

# Configuration options
if(NOT HIVE_APPCAST_RELEASES_URL)
set(HIVE_APPCAST_RELEASES_URL "https://localhost/hive/appcast-release.xml" CACHE STRING "Appcast URL for Hive Releases" FORCE)
endif()
message(STATUS "Appcast URL for Hive Releases defined to: ${HIVE_APPCAST_RELEASES_URL}")
if(NOT HIVE_APPCAST_BETAS_URL)
set(HIVE_APPCAST_BETAS_URL "https://localhost/hive/appcast-beta.xml" CACHE STRING "Appcast URL for Hive Betas" FORCE)
endif()
message(STATUS "Appcast URL for Hive Betas defined to: ${HIVE_APPCAST_BETAS_URL}")
if(APPLE AND NOT HIVE_DSA_PUB_KEY)
message(FATAL_ERROR "DSA Public Key not set in HIVE_DSA_PUB_KEY CMake Variable")
endif()

############ CMake configuration
############ CMake Configuration

project(Hive)

# Using c++17 standard for all targets
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Default Component
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "Hive")

# Set minimum OSX version
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9 CACHE INTERNAL "Force the target to be at least a Mac OS X 10.9" FORCE)

Expand All @@ -45,12 +67,9 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Specifies the build type." FORCE)
endif()

# Add our cmake modules & packages
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)

# Find Qt dependencies
find_package(Qt5 COMPONENTS Widgets;Network REQUIRED)
# Include our internal macros
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) # Required to find_package 3rd party modules that don't provide their CMake Config files
include(cmake/TargetSetupDeploy.cmake)

# Avdecc project location
if(NOT AVDECC_BASE_FOLDER)
Expand Down Expand Up @@ -115,13 +134,14 @@ if(ENABLE_AVDECC_USE_FMTLIB)
set_target_properties(fmt PROPERTIES FOLDER "Libraries")
endif()

############ Define some variables (most to be removed when reworking cmake files and using setup_project macro)
############ Define some variables

string(TIMESTAMP CURRENT_YEAR "%Y")
set(PROJECT_COPYRIGHT_YEAR "2017-${CURRENT_YEAR}")
set(PROJECT_FULL_NAME "${PROJECT_NAME} - Pro Audio Avdecc Controller")
set(PROJECT_COMPANYNAME "KikiSoft")
set(PROJECT_AUTHORS "Emilien Vallot, Christophe Calmejane and other contributors")
set(PROJECT_CONTACT "christophe.calmejane@l-acoustics.com")
set(PROJECT_REVERSE_DOMAINNAME "fr.${PROJECT_COMPANYNAME}")
set(PROJECT_DOMAINNAME "${PROJECT_COMPANYNAME}.fr")
set(PROJECT_URL "https://github.com/christophe-calmejane/Hive")
Expand All @@ -133,13 +153,67 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(PROJECT_ARCH "64-bit")
endif()

# Split HIVE_VERSION string
string(REGEX MATCHALL "([0-9]+)" HIVE_VERSION_SPLIT "${HIVE_VERSION}")
list(LENGTH HIVE_VERSION_SPLIT HIVE_VERSION_SPLIT_LENGTH)
if(${HIVE_VERSION_SPLIT_LENGTH} LESS 3)
message(FATAL_ERROR "Cannot parse version string")
endif()
list(GET HIVE_VERSION_SPLIT 0 HIVE_VERSION_MAJOR)
list(GET HIVE_VERSION_SPLIT 1 HIVE_VERSION_MINOR)
list(GET HIVE_VERSION_SPLIT 2 HIVE_VERSION_PATCH)
if(${HIVE_VERSION_SPLIT_LENGTH} EQUAL 4)
list(GET HIVE_VERSION_SPLIT 3 HIVE_VERSION_BETA)
else()
set(HIVE_VERSION_BETA "0")
endif()

# Compute Marketing Version String (Visible)
if(NOT DEFINED MARKETING_VERSION_DIGITS)
set(MARKETING_VERSION_DIGITS 2)
endif()
set(HIVE_MARKETING_VERSION "")
if(${MARKETING_VERSION_DIGITS} GREATER 0)
set(HIVE_MARKETING_VERSION "${HIVE_VERSION_MAJOR}")
if(${MARKETING_VERSION_DIGITS} GREATER 1)
math(EXPR LOOP_COUNT "${MARKETING_VERSION_DIGITS} - 1")
foreach(index RANGE 1 ${LOOP_COUNT})
list(GET HIVE_VERSION_SPLIT ${index} LOOP_VERSION)
string(APPEND HIVE_MARKETING_VERSION ".${LOOP_VERSION}")
endforeach()
endif()
endif()
if(${MARKETING_VERSION_POSTFIX})
string(APPEND HIVE_MARKETING_VERSION "${MARKETING_VERSION_POSTFIX}")
endif()

# Compute Full Friendly Version String (Visible)
if(${HIVE_VERSION_BETA} STREQUAL "0")
set(HIVE_FRIENDLY_VERSION "${HIVE_VERSION_MAJOR}.${HIVE_VERSION_MINOR}.${HIVE_VERSION_PATCH}")
else()
set(HIVE_FRIENDLY_VERSION "${HIVE_VERSION_MAJOR}.${HIVE_VERSION_MINOR}.${HIVE_VERSION_PATCH}-beta${HIVE_VERSION_BETA}")
endif()

############ Add projects

# Add main project
add_subdirectory(src)

# Add tools
add_subdirectory(tools)

# Add tests
add_subdirectory(tests/src)
if(BUILD_HIVE_TESTS)
message(STATUS "Building Hive tests")
# Setup gtest options
set(gtest_force_shared_crt ON CACHE BOOL "For shared crt for gtest" FORCE)
set(BUILD_GMOCK OFF CACHE BOOL "Don't build the googlemock subproject" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" FORCE)
# Include gtest framework
add_subdirectory(${AVDECC_BASE_FOLDER}/externals/3rdparty/gtest)
# Include our unit tests
add_subdirectory(tests)
endif()

# Force Project as visual default target
set_directory_properties(PROPERTIES VS_STARTUP_PROJECT ${PROJECT_NAME})
Expand Down
7 changes: 4 additions & 3 deletions README.md
Expand Up @@ -12,9 +12,9 @@ Precompiled binaries for macOS and Windows [can be found here](http://www.kikiso

## Minimum requirements for compilation

- CMake 3.12
- Qt 5.12.0
- Visual Studio 2017 15.9 (using platform toolset v141, Windows SDK 8.1), Xcode 10, gcc 8.2.1
- CMake 3.13
- Qt 5.12.4
- Visual Studio 2019 16.3 (using platform toolset v142), Xcode 10, gcc 8.2.1

## Compilation

Expand Down Expand Up @@ -46,3 +46,4 @@ Hive uses the following 3rd party resources:
- [Material Icons](https://material.io/icons/)
- [Discount Markdown](http://www.pell.portland.or.us/~orc/Code/markdown/)
- [BugTrap](https://github.com/bchavez/BugTrap)
- [Sparkle](https://sparkle-project.org) and [WinSparkle](https://github.com/vslavik/winsparkle)

0 comments on commit cd98301

Please sign in to comment.