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; +}