Skip to content

Commit 173c259

Browse files
committed
Merge remote-tracking branch 'origin/osx-playback' into osx-playback
2 parents 78362ca + fb38b08 commit 173c259

38 files changed

+1425
-418
lines changed

.jenkinsfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,8 @@ pipeline {
424424
}
425425
environment {
426426
HL_OS = "Linux"
427-
HL_DOX_UNDOCUMENTED_LIMIT = 25
427+
// 25 + 40: To ignore the HulaAudioError macros that are uncommented
428+
HL_DOX_UNDOCUMENTED_LIMIT = 65
428429
}
429430

430431
steps {

CMakeLists.txt

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ cmake_minimum_required (VERSION 3.5)
44

55
set (CMAKE_CXX_STANDARD 14)
66

7-
include (cmake/Qt5.cmake)
8-
include (cmake/Utility.cmake)
7+
# Make sure we can find our Find<package>.cmake files
8+
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
9+
10+
include (${CMAKE_CURRENT_LIST_DIR}/cmake/Qt5.cmake)
11+
include (${CMAKE_CURRENT_LIST_DIR}/cmake/Utility.cmake)
912

1013
# Version
1114
set (HL_VERSION_MAJOR 0)
@@ -36,18 +39,8 @@ if (WIN32 AND CMAKE_GENERATOR_PLATFORM MATCHES "x64")
3639
set (64BIT TRUE)
3740
endif ()
3841

39-
set (HL_PACKAGE_TYPE ".tar.gz")
40-
if (WIN32 AND 64BIT)
41-
set (HL_PACKAGE_TYPE "win64.exe")
42-
elseif (WIN32 AND NOT 64BIT)
43-
set (HL_PACKAGE_TYPE "win32.exe")
44-
elseif (OSX)
45-
set (HL_PACKAGE_TYPE ".dmg")
46-
elseif (EXISTS "/etc/debian_version")
47-
set (HL_PACKAGE_TYPE ".deb")
48-
elseif (EXISTS "/etc/redhat-release")
49-
set (HL_PACKAGE_TYPE ".rpm")
50-
endif ()
42+
# Configuration code for installers
43+
include (${CMAKE_CURRENT_LIST_DIR}/cmake/HulaInstall.cmake)
5144

5245
# Global build options
5346
option (HL_BUILD_ONLY_AUDIO "Build only the audio library." OFF)
@@ -80,13 +73,6 @@ foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
8073
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/lib/lib)
8174
endforeach ()
8275

83-
# Set output for libs compiled with --target install
84-
# Allow override via -DCMAKE_INSTALL_PREFIX=blah
85-
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND CMAKE_BUILD_TYPE MATCHES "Debug")
86-
set (CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/lib CACHE PATH "Installation path" FORCE)
87-
set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "" FORCE) # Should this be here?
88-
endif ()
89-
9076
message (STATUS "System Platform: ${CMAKE_SYSTEM_NAME} ${CMAKE_GENERATOR_PLATFORM}")
9177
message (STATUS "Install Prefix: ${CMAKE_INSTALL_PREFIX}\n")
9278

@@ -99,9 +85,6 @@ if (WIN32)
9985
list (APPEND HL_LIBRARIES winmm.lib ) # TODO: Add required windows libraries
10086
endif ()
10187

102-
# Make sure we can find our Find<package>.cmake files
103-
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
104-
10588

10689

10790

@@ -226,13 +209,21 @@ if (NOT HL_BUILD_ONLY_AUDIO)
226209
endif ()
227210

228211
add_subdirectory (${PROJECT_SOURCE_DIR}/res/translations)
229-
include (cmake/Translation.cmake)
212+
include (${CMAKE_CURRENT_LIST_DIR}/cmake/Translation.cmake)
230213

231214
if (HL_BUILD_EXAMPLES)
232215
add_subdirectory (examples)
233216
endif ()
234217
endif ()
235218

219+
install (
220+
DIRECTORY ${CMAKE_BINARY_DIR}/bin
221+
DESTINATION .
222+
USE_SOURCE_PERMISSIONS
223+
PATTERN "*.ilk" EXCLUDE
224+
PATTERN "*.pdb" EXCLUDE
225+
)
226+
236227

237228

238229

@@ -243,7 +234,7 @@ endif ()
243234
# Build settings for DEBUG builds only
244235
if (CMAKE_BUILD_TYPE MATCHES "Debug")
245236

246-
include (cmake/Testing.cmake)
237+
include (${CMAKE_CURRENT_LIST_DIR}/cmake/Testing.cmake)
247238

248239
# Test that only rely on the audio library
249240
create_test ("src/test/TestOSAudio.cpp" "" 3 FALSE FALSE)

README.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![Jenkins Server Status](https://img.shields.io/badge/dynamic/json.svg?label=Jenkins%20Server&url=http%3A%2F%2Fwww.symboxtra.tk%2Fstatus.php%3Fservers%3Djenkins&query=%24..jenkins&colorB=0b7cbd)](http://jenkins.symboxtra.dynu.net "Jenkins Server Status")
22
[![](https://jenkins.symboxtra.dynu.net/job/HulaLoop/job/master/badge/icon)](https://jenkins.symboxtra.dynu.net/job/HulaLoop/job/master/ "Jenkins Build Status")
3-
[![codecov](https://codecov.io/gh/jmcker/HulaLoop/branch/master/graph/badge.svg?token=okLfIHMeEf)](https://codecov.io/gh/jmcker/HulaLoop "Code Coverage Status")
4-
[![CodeFactor](https://www.codefactor.io/repository/github/jmcker/hulaloop/badge)](https://www.codefactor.io/repository/github/jmcker/hulaloop "Code Factor Grade")
3+
[![codecov](https://codecov.io/gh/symboxtra/HulaLoop/branch/master/graph/badge.svg?token=okLfIHMeEf)](https://codecov.io/gh/symboxtra/HulaLoop "Code Coverage Status")
4+
[![CodeFactor](https://www.codefactor.io/repository/github/symboxtra/hulaloop/badge)](https://www.codefactor.io/repository/github/symboxtra/hulaloop "Code Factor Grade")
55
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.opensource.org/licenses/GPL-3.0)
66

77
# HulaLoop #
@@ -24,12 +24,21 @@ git submodule update --remote --merge
2424

2525

2626
#### Debian-based Linux ####
27-
Required:
27+
Check which version of Debian you have by running
2828
```bash
29-
sudo apt install g++ build-essential cmake libgl1-mesa-dev libasound2-dev libsndfile-dev pavucontrol
29+
cat /etc/debian_version
3030
```
3131

32-
**IMPORTANT:** This application requires Qt 5.10+. This typically has to be installed using the Qt GUI installer since ```apt``` does not backport a recent enough version. Be sure to install the extra **Qt Charts** package as the GUI relies on it.
32+
If running Debian Stretch:
33+
```bash
34+
sudo apt install build-essential cmake libgl1-mesa-dev libasound2-dev libsndfile-dev pavucontrol
35+
```
36+
**IMPORTANT:** This application requires Qt 5.9.5+. This typically has to be installed using the Qt GUI installer since ```apt``` on Debian Stretch does not backport an up-to-date version. Be sure to install the extra **Qt Charts** package as the GUI relies on it.
37+
38+
If running Debian Buster:
39+
```bash
40+
sudo apt install build-essential cmake libgl1-mesa-dev libasound2 libasound2-dev pavucontrol qt5-default libqt5charts5 libqt5quickcontrols2-5
41+
```
3342

3443
If using GNOME (fixes system tray icons and notifications):
3544
```bash
@@ -42,10 +51,10 @@ sudo apt install python-sphinx doxygen graphviz help2man
4251
python -m pip install --user recommonmark
4352
```
4453

45-
#### RPM-based Linux ####
54+
#### Redhat-based Linux ####
4655
Required:
4756
```bash
48-
sudo dnf install gcc-c++ make cmake qt5-devel qt5-qtquickcontrols2-devel alsa-lib alsa-lib-devel
57+
sudo dnf install gcc-c++ make cmake qt5-devel qt5-qtcharts qt5-qtquickcontrols2-devel alsa-lib alsa-lib-devel
4958
```
5059

5160
To enable the system tray icon and notifications the ```Topicons plus``` extension must be installed via ```dnf``` and enabled under *Tweaks->Extensions*.
@@ -59,6 +68,11 @@ sudo dnf install python-sphinx doxygen graphviz help2man
5968
python -m pip install --user recommonmark
6069
```
6170

71+
If you want to generate RPM packages:
72+
```bash
73+
sudo dnf install rpm-build
74+
```
75+
6276
#### OSX ####
6377
Install ```brew```:
6478
```bash

cmake/HulaInstall.cmake

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
set (CPACK_PACKAGE_NAME "HulaLoop")
2+
set (CPACK_PACKAGE_VENDOR "Symboxtra Software")
3+
set (CPACK_PACKAGE_CONTACT "[email protected]")
4+
set (CPACK_PACKAGE_HOMEPAGE_URL "https://hulaloop.readthedocs.io/")
5+
6+
set (CPACK_PACKAGE_VERSION ${HL_VERSION_STR})
7+
set (CPACK_PACKAGE_FILE_NAME "hulaloop-setup-${HL_VERSION_STR}")
8+
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple cross-platform audio loopback and recording.")
9+
set (CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/res/eula.txt)
10+
11+
set (HL_PACKAGE_TYPE ".tar.gz")
12+
if (WIN32 OR OSX)
13+
14+
set (CPACK_GENERATOR "IFW")
15+
set (CPACK_IFW_VERBOSE ON)
16+
17+
if (WIN32 AND 64BIT)
18+
set (HL_PACKAGE_TYPE "win64.exe")
19+
set (CPACK_IFW_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.ico)
20+
set (CPACK_PACKAGE_FILE_NAME "hulaloop-setup-${HL_VERSION_STR}-win64")
21+
elseif (WIN32 AND NOT 64BIT)
22+
set (HL_PACKAGE_TYPE "win32.exe")
23+
set (CPACK_IFW_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.ico)
24+
set (CPACK_PACKAGE_FILE_NAME "hulaloop-setup-${HL_VERSION_STR}-win32")
25+
elseif (OSX)
26+
set (HL_PACKAGE_TYPE ".dmg")
27+
set (CPACK_IFW_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.icns)
28+
endif ()
29+
30+
set (CPACK_IFW_PACKAGE_TITLE "HulaLoop")
31+
set (CPACK_IFW_PACKAGE_WIZARD_STYLE "Modern")
32+
set (CPACK_IFW_PACKAGE_WINDOW_ICON ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.png)
33+
set (CPACK_IFW_PACKAGE_WATERMARK ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-header-small.png)
34+
set (CPACK_IFW_PACKAGE_TITLE_COLOR "#f75c26")
35+
36+
set (CPACK_IFW_PACKAGE_START_MENU_DIRECTORY "HulaLoop")
37+
set (CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/HulaLoop")
38+
set (CPACK_IFW_ADMIN_TARGET_DIRECTORY "@HomeDir@/HulaLoop")
39+
40+
set (CPACK_IFW_PACKAGE_CONTROL_SCRIPT ${PROJECT_SOURCE_DIR}/res/installer/ifwscript.qs)
41+
set (CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME "hulaloop-uninstaller")
42+
set (CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE "hulaloop-uninstaller")
43+
44+
set (CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS OFF)
45+
46+
elseif (EXISTS "/etc/debian_version")
47+
48+
set (HL_PACKAGE_TYPE ".deb")
49+
set (CPACK_GENERATOR "DEB")
50+
51+
set (CPACK_DEBIAN_PACKAGE_DEPENDS "g++, build-essential, cmake, libgl1-mesa-dev, libasound2, libasound2-dev, pavucontrol, qt5-default, libqt5charts5, libqt5quickcontrols2-5")
52+
53+
# Install logo file and the desktop shortcut
54+
configure_file (
55+
"${PROJECT_SOURCE_DIR}/res/installer/hulaloop.desktop.in"
56+
"${CMAKE_BINARY_DIR}/hulaloop.desktop"
57+
)
58+
install (FILES ${CMAKE_BINARY_DIR}/hulaloop.desktop DESTINATION /usr/share/applications)
59+
install (FILES ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.svg DESTINATION /usr/share/icons/hicolor/scalable/apps)
60+
61+
elseif (EXISTS "/etc/redhat-release")
62+
63+
set (HL_PACKAGE_TYPE ".rpm")
64+
set (CPACK_GENERATOR "RPM")
65+
66+
set (CPACK_RPM_PACKAGE_REQUIRES "gcc-c++, make, cmake, qt5-devel, qt5-qtcharts, qt5-qtquickcontrols2-devel, alsa-lib, alsa-lib-devel")
67+
68+
# Install logo file and the desktop shortcut
69+
configure_file (
70+
"${PROJECT_SOURCE_DIR}/res/installer/hulaloop.desktop.in"
71+
"${CMAKE_BINARY_DIR}/hulaloop.desktop"
72+
)
73+
install (FILES ${CMAKE_BINARY_DIR}/hulaloop.desktop DESTINATION /usr/share/applications)
74+
install (FILES ${PROJECT_SOURCE_DIR}/res/logo/hulaloop-logo.svg DESTINATION /usr/share/icons/hicolor/scalable/apps)
75+
76+
endif ()
77+
78+
include (CPack)

cmake/Qt5.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,15 @@ macro (qt5_post_build_windeployqt APP QMLDIR)
2121
message (FATAL_ERROR "\nCould not find windeployqt.\n")
2222
endif ()
2323

24+
set (TYPEDLL "")
25+
# if (CMAKE_BUILD_TYPE MATCHES "Debug")
26+
# set (TYPEDLL "--debug")
27+
# elseif (CMAKE_BUILD_TYPE MATCHES "Release")
28+
# set (TYPEDLL "--release")
29+
# endif ()
30+
2431
add_custom_command (TARGET ${APP} POST_BUILD
25-
COMMAND ${WINDEPLOYQT_EXECUTABLE} --verbose 0 -qmldir ${QMLDIR} $<TARGET_FILE:${APP}>
32+
COMMAND ${WINDEPLOYQT_EXECUTABLE} -verbose=0 -qmldir ${QMLDIR} ${TYPEDLL} $<TARGET_FILE:${APP}>
2633
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
2734
)
2835

cmake/Utility.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ function (add_library_target _name _src_files)
5151

5252
# Copy the include directory
5353
install (DIRECTORY include/${_name}
54-
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
54+
DESTINATION include
5555
)
5656

5757
# Copy the library
5858
install (TARGETS ${_name}
59-
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin # DLLs
60-
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib # Static libs
61-
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib # Shared libs (non-DLL)
62-
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${_name} # Headers
59+
RUNTIME DESTINATION bin # DLLs
60+
ARCHIVE DESTINATION lib # Static libs
61+
LIBRARY DESTINATION lib # Shared libs (non-DLL)
62+
PUBLIC_HEADER DESTINATION include/${_name} # Headers
6363
COMPONENT library
6464
)
6565

docs/read-the-docs/source/readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[![Jenkins Server Status](https://img.shields.io/badge/dynamic/json.svg?label=Jenkins%20Server&url=http%3A%2F%2Fwww.symboxtra.tk%2Fstatus.php%3Fservers%3Djenkins&query=%24..jenkins&colorB=0b7cbd)](http://jenkins.symboxtra.dynu.net "Jenkins Server Status")
22
[![](https://jenkins.symboxtra.dynu.net/job/HulaLoop/job/master/badge/icon)](https://jenkins.symboxtra.dynu.net/job/HulaLoop/job/master/ "Jenkins Build Status")
3-
[![codecov](https://codecov.io/gh/jmcker/HulaLoop/branch/master/graph/badge.svg?token=okLfIHMeEf)](https://codecov.io/gh/jmcker/HulaLoop "Code Coverage Status")
4-
[![CodeFactor](https://www.codefactor.io/repository/github/jmcker/hulaloop/badge)](https://www.codefactor.io/repository/github/jmcker/hulaloop "Code Factor Grade")
3+
[![codecov](https://codecov.io/gh/symboxtra/HulaLoop/branch/master/graph/badge.svg?token=okLfIHMeEf)](https://codecov.io/gh/symboxtra/HulaLoop "Code Coverage Status")
4+
[![CodeFactor](https://www.codefactor.io/repository/github/symboxtra/hulaloop/badge)](https://www.codefactor.io/repository/github/symboxtra/hulaloop "Code Factor Grade")
55
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.opensource.org/licenses/GPL-3.0)
66

77
# HulaLoop #

install.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
mkdir build
3+
cd build
4+
cmake .. -DGEN_INSTALL=true -DCMAKE_BUILD_TYPE=Release
5+
make -j
6+
cpack ..
7+
sudo dpkg -i HulaLoop.deb
8+
rm HulaLoop.deb
9+
cd ..

0 commit comments

Comments
 (0)