diff --git a/.travis.yml b/.travis.yml
index 96c405a6..c94553c2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: cpp
-matrix:
+jobs:
include:
- os: linux
dist: xenial
@@ -19,11 +19,6 @@ addons:
- doxygen
- graphviz
- homebrew:
- update: true
- packages:
- - gcc
-
script:
- mkdir -p build; cd build;
- cmake -DCMAKE_INSTALL_PREFIX:PATH="$TRAVIS_OS_NAME-x64" -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_CXX_FLAGS_DEBUG="-Wall -Wpedantic" ../
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ef3bebe..5af92fa2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,9 +40,8 @@ For more information, please visit .
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules")
################ PROJECT VERSION ####################
-set(PROJECT_VERSION_FULL "0.1.9")
+set(PROJECT_VERSION_FULL "0.2.0")
set(PROJECT_SO_VERSION 7)
-set(HEX_VERSION_OVERRIDE "0x109") # For CMake < 3.13
# Remove the dash and anything following, to get the #.#.# version for project()
STRING(REGEX REPLACE "\-.*$" "" VERSION_NUM "${PROJECT_VERSION_FULL}")
@@ -57,13 +56,31 @@ STRING(REGEX REPLACE "\-.*$" "" VERSION_NUM "${PROJECT_VERSION_FULL}")
PROJECT(libopenshot-audio LANGUAGES C CXX VERSION ${VERSION_NUM})
# JuceHeader.h needs a hexadecimal version number for the project
-if(CMAKE_VERSION VERSION_LESS 3.13)
- set(PROJECT_VERSION_HEX ${HEX_VERSION_OVERRIDE}) # Ugly hardcoding
+if(CMAKE_VERSION VERSION_GREATER 3.13)
+ math(EXPR PROJECT_VERSION_HEX
+ "(${PROJECT_VERSION_MAJOR} << 16) + \
+ (${PROJECT_VERSION_MINOR} << 8) + \
+ (${PROJECT_VERSION_PATCH})" OUTPUT_FORMAT HEXADECIMAL )
else()
- math(EXPR PROJECT_VERSION_HEX
- "(${PROJECT_VERSION_MAJOR} << 16) + \
- (${PROJECT_VERSION_MINOR} << 8) + \
- (${PROJECT_VERSION_PATCH})" OUTPUT_FORMAT HEXADECIMAL )
+ # Compile and run a C++ program to generate the hex version
+ set(HEX_COMPILE_DEFINITIONS
+ -DVERSION_MAJOR=${PROJECT_VERSION_MAJOR}
+ -DVERSION_MINOR=${PROJECT_VERSION_MINOR}
+ -DVERSION_PATCH=${PROJECT_VERSION_PATCH}
+ )
+ try_run(HEX_VERSION_RUN HEX_VERSION_BUILD
+ ${CMAKE_CURRENT_BINARY_DIR}/hex_version
+ ${PROJECT_SOURCE_DIR}/src/hex_version.cpp
+ COMPILE_DEFINITIONS ${HEX_COMPILE_DEFINITIONS}
+ RUN_OUTPUT_VARIABLE HEX_VERSION_OUTPUT
+ )
+ if (NOT HEX_VERSION_BUILD)
+ message(ERROR "Failed to compile hex-version utility!")
+ elseif(HEX_VERSION_RUN STREQUAL FAILED_TO_RUN)
+ message(ERROR "Could not execute hex-version utility!")
+ else()
+ set(PROJECT_VERSION_HEX ${HEX_VERSION_OUTPUT})
+ endif()
endif()
message("\
diff --git a/src/Main.cpp b/src/Main.cpp
index 26f6cd59..dfb206ff 100644
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -1,92 +1,86 @@
-/**
- * @file
- * @brief Source code to play a test sound
- * @author Jonathan Thomas
- *
- * @section LICENSE
- *
- * Copyright (c) 2008-2016 OpenShot Studios, LLC
- * . This file is part of OpenShot Audio
- * Library (libopenshot-audio), an open-source project dedicated to delivering
- * high quality audio editing and playback solutions to the world. For more
- * information visit .
- *
- * OpenShot Audio Library (libopenshot-audio) 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.
- *
- * OpenShot Audio Library (libopenshot-audio) 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 OpenShot Library. If not, see .
- *
- * @mainpage OpenShot Audio Library C++ API
- *
- * Welcome to the OpenShot Audio Library C++ API. This library is used by libopenshot to enable audio
- * features, which powers the OpenShot Video Editor application.
- */
-
-#include
-#include
-#include "../JuceLibraryCode/JuceHeader.h"
-
-#if JUCE_MINGW
-#define sleep(a) Sleep(a * 1000)
-#include
-#endif
-
-using namespace std;
-
-//==============================================================================
-int main()
-{
-
- // Initialize audio devices
- cout << "Begin init" << endl;
- AudioDeviceManager deviceManager;
- String error = deviceManager.initialise ( 0, /* number of input channels */
- 2, /* number of output channels */
- 0, /* no XML settings.. */
- true /* select default device on failure */);
-
- // Output error (if any)
- if (error.isNotEmpty()) {
- cout << "Error on initialise(): " << error.toStdString() << endl;
- }
-
- // Play test sound
- cout << "Playing sound now" << endl;
- deviceManager.playTestSound();
- for (int x = 1; x <= 5; x++) {
- cout << "... " << x << endl;
- sleep(1);
- }
-
- cout << "before device loop" << endl;
- for (int i = 0; i < deviceManager.getAvailableDeviceTypes().size(); ++i)
- {
- const AudioIODeviceType* t = deviceManager.getAvailableDeviceTypes()[i];
- const StringArray deviceNames = t->getDeviceNames ();
-
- for (int j = 0; j < deviceNames.size (); ++j )
- {
- const String deviceName = deviceNames[j];
- String menuName;
-
- menuName << deviceName << " (" << t->getTypeName() << ")";
- cout << menuName << endl;
- }
- }
- cout << "after device loop" << endl;
-
- // Stop audio devices
- deviceManager.closeAudioDevice();
- deviceManager.removeAllChangeListeners();
- deviceManager.dispatchPendingMessages();
-
- return 0;
-}
+/**
+ * @file
+ * @brief Source code to play a test sound
+ * @author Jonathan Thomas
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2008-2016 OpenShot Studios, LLC
+ * . This file is part of OpenShot Audio
+ * Library (libopenshot-audio), an open-source project dedicated to delivering
+ * high quality audio editing and playback solutions to the world. For more
+ * information visit .
+ *
+ * OpenShot Audio Library (libopenshot-audio) 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.
+ *
+ * OpenShot Audio Library (libopenshot-audio) 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 OpenShot Library. If not, see .
+ *
+ * @mainpage OpenShot Audio Library C++ API
+ *
+ * Welcome to the OpenShot Audio Library C++ API. This library is used by libopenshot to enable audio
+ * features, which powers the OpenShot Video Editor application.
+ */
+
+#include
+#include "../JuceLibraryCode/JuceHeader.h"
+
+//==============================================================================
+int main()
+{
+
+ // Initialize audio devices
+ std::cout << "Begin init" << std::endl;
+ AudioDeviceManager deviceManager;
+ String error = deviceManager.initialise (
+ 0, /* number of input channels */
+ 2, /* number of output channels */
+ 0, /* no XML settings.. */
+ true /* select default device on failure */
+ );
+
+ // Output error (if any)
+ if (error.isNotEmpty()) {
+ std::cout << "Error on initialise(): " << error.toStdString() << std::endl;
+ }
+
+ // Play test sound
+ std::cout << "Playing sound now" << std::endl;
+ deviceManager.playTestSound();
+ for (int x = 1; x <= 5; x++) {
+ std::cout << "... " << x << std::endl;
+ juce::Thread::sleep(1000);
+ }
+
+ std::cout << "before device loop" << std::endl;
+ for (int i = 0; i < deviceManager.getAvailableDeviceTypes().size(); ++i)
+ {
+ const AudioIODeviceType* t = deviceManager.getAvailableDeviceTypes()[i];
+ const StringArray deviceNames = t->getDeviceNames ();
+
+ for (int j = 0; j < deviceNames.size (); ++j )
+ {
+ const String deviceName = deviceNames[j];
+ String menuName;
+
+ menuName << deviceName << " (" << t->getTypeName() << ")";
+ std::cout << menuName << std::endl;
+ }
+ }
+ std::cout << "after device loop" << std::endl;
+
+ // Stop audio devices
+ deviceManager.closeAudioDevice();
+ deviceManager.removeAllChangeListeners();
+ deviceManager.dispatchPendingMessages();
+
+ return 0;
+}
diff --git a/src/hex_version.cpp b/src/hex_version.cpp
new file mode 100644
index 00000000..e0574228
--- /dev/null
+++ b/src/hex_version.cpp
@@ -0,0 +1,51 @@
+/**
+ * @file
+ * @brief Build utility program to generate hex-format version numbers
+ * @author FeRD (Frank Dana)
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2008-2020 OpenShot Studios, LLC
+ * . This file is part of OpenShot Audio
+ * Library (libopenshot-audio), an open-source project dedicated to delivering
+ * high quality audio editing and playback solutions to the world. For more
+ * information visit .
+ *
+ * OpenShot Audio Library (libopenshot-audio) 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.
+ *
+ * OpenShot Audio Library (libopenshot-audio) 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 OpenShot Library. If not, see .
+ *
+ * @mainpage OpenShot Audio Library C++ API
+ *
+ * Welcome to the OpenShot Audio Library C++ API. This library is used by libopenshot to enable audio
+ * features, which powers the OpenShot Video Editor application.
+ */
+
+ #include
+ #include
+
+// The following values must be defined at compile time:
+// VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH
+
+#if !defined(VERSION_MAJOR) || !defined(VERSION_MINOR) || !defined(VERSION_PATCH)
+ #pragma error "Define version components on compiler command line!"
+#endif
+
+int main()
+{
+
+ int hex_version = (VERSION_MAJOR << 16) +
+ (VERSION_MINOR << 8) +
+ (VERSION_PATCH);
+
+ std::cout << std::hex << "0x" << hex_version;
+}