zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 3580584c33b7d1c32ff18470edd95127270a5b5f
parent 989cd1c65f6f3b2a3cd7ebb2e1c3f6657d9d2022
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Wed, 23 May 2012 23:02:10 -0400

Merge branch 'bugfix/arch-regressions'

Diffstat:
Dcmake/FindMXML.cmake | 17-----------------
Dcmake/FindPortAudio.cmake | 19-------------------
Dcmake/Findfftw.cmake | 17-----------------
Dcmake/LibFindMacros.cmake | 93-------------------------------------------------------------------------------
Msrc/CMakeLists.txt | 21++++++++++-----------
Msrc/Nio/CMakeLists.txt | 11++---------
Msrc/Nio/EngineMgr.cpp | 22+++-------------------
Msrc/Nio/Nio.cpp | 4++--
Msrc/Tests/CMakeLists.txt | 2+-
9 files changed, 18 insertions(+), 188 deletions(-)

diff --git a/cmake/FindMXML.cmake b/cmake/FindMXML.cmake @@ -1,17 +0,0 @@ -#Find mxml (mini xml library) - -include(LibFindMacros) -libfind_pkg_check_modules(MXML mxml) -find_path(MXML_INCLUDE_DIR - NAMES mxml.h - PATHS ${MXML_INCLUDE_DIRS} - ) - -find_library(MXML_LIBRARY - NAMES mxml - PATHS ${MXML_LIBRARY_DIRS} - ) - -set(MXML_PROCESS_INCLUDES MXML_INCLUDE_DIR) -set(MXML_PROCESS_LIBS MXML_LIBRARY) -libfind_process(MXML) diff --git a/cmake/FindPortAudio.cmake b/cmake/FindPortAudio.cmake @@ -1,19 +0,0 @@ -#Find Port Audio - - -include(LibFindMacros) -libfind_pkg_check_modules(PORTAUDIO portaudio-2.0>=19) - -find_path(PORTAUDIO_INCLUDE_DIR - NAMES portaudio.h - PATHS ${PortAudio_INCLUDE_DIRS} - ) - -find_library(PORTAUDIO_LIBRARY - NAMES portaudio - PATHS ${PortAudio_LIBRARY_DIRS} - ) - -set(PORTAUDIO_PROCESS_INCLUDES PORTAUDIO_INCLUDE_DIR) -set(PORTAUDIO_PROCESS_LIBS PORTAUDIO_LIBRARY) -libfind_process(PORTAUDIO) diff --git a/cmake/Findfftw.cmake b/cmake/Findfftw.cmake @@ -1,17 +0,0 @@ -#Find fftw (FFT algorithm library) - -include(LibFindMacros) -libfind_pkg_check_modules(FFTW fftw3) -find_path(FFTW_INCLUDE_DIR - NAMES fftw3.h - PATHS ${FFTW_INCLUDE_DIRS} - ) - -find_library(FFTW_LIBRARY - NAMES fftw3 - PATHS ${FFTW_LIBRARY_DIRS} - ) - -set(FFTW_PROCESS_INCLUDES FFTW_INCLUDE_DIR) -set(FFTW_PROCESS_LIBS FFTW_LIBRARY) -libfind_process(FFTW) diff --git a/cmake/LibFindMacros.cmake b/cmake/LibFindMacros.cmake @@ -1,93 +0,0 @@ -# Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments -# used for the current package. For this to work, the first parameter must be the -# prefix of the current package, then the prefix of the new package etc, which are -# passed to find_package. -macro (libfind_package PREFIX) - set (LIBFIND_PACKAGE_ARGS ${ARGN}) - if (${PREFIX}_FIND_QUIETLY) - set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET) - endif (${PREFIX}_FIND_QUIETLY) - if (${PREFIX}_FIND_REQUIRED) - set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED) - endif (${PREFIX}_FIND_REQUIRED) - find_package(${LIBFIND_PACKAGE_ARGS}) -endmacro (libfind_package) - -# CMake developers made the UsePkgConfig system deprecated in the same release (2.6) -# where they added pkg_check_modules. Consequently I need to support both in my scripts -# to avoid those deprecated warnings. Here's a helper that does just that. -# Works identically to pkg_check_modules, except that no checks are needed prior to use. -macro (libfind_pkg_check_modules PREFIX PKGNAME) - if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - include(UsePkgConfig) - pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS) - else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(${PREFIX} ${PKGNAME}) - endif (PKG_CONFIG_FOUND) - endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) -endmacro (libfind_pkg_check_modules) - -# Do the final processing once the paths have been detected. -# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain -# all the variables, each of which contain one include directory. -# Ditto for ${PREFIX}_PROCESS_LIBS and library files. -# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. -# Also handles errors in case library detection was required, etc. -macro (libfind_process PREFIX) - # Process all includes and set _FOUND to false if any are missing - foreach (i ${${PREFIX}_PROCESS_INCLUDES}) - if (${i}) - set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}}) - mark_as_advanced(${i}) - else (${i}) - set (${PREFIX}_FOUND FALSE) - endif (${i}) - endforeach (i) - - # Process all libraries and set _FOUND to false if any are missing - foreach (i ${${PREFIX}_PROCESS_LIBS}) - if (${i}) - set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}}) - mark_as_advanced(${i}) - else (${i}) - set (${PREFIX}_FOUND FALSE) - endif (${i}) - endforeach (i) - - # Print message and/or exit on fatal error - if (${PREFIX}_FOUND) - if (NOT ${PREFIX}_FIND_QUIETLY) - message (STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}") - endif (NOT ${PREFIX}_FIND_QUIETLY) - else (${PREFIX}_FOUND) - if (${PREFIX}_FIND_REQUIRED) - foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS}) - message("${i}=${${i}}") - endforeach (i) - message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.") - endif (${PREFIX}_FIND_REQUIRED) - endif (${PREFIX}_FOUND) -endmacro (libfind_process) - -macro(libfind_library PREFIX basename) - set(TMP "") - if(MSVC80) - set(TMP -vc80) - endif(MSVC80) - if(MSVC90) - set(TMP -vc90) - endif(MSVC90) - set(${PREFIX}_LIBNAMES ${basename}${TMP}) - if(${ARGC} GREATER 2) - set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2}) - string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES}) - set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP}) - endif(${ARGC} GREATER 2) - find_library(${PREFIX}_LIBRARY - NAMES ${${PREFIX}_LIBNAMES} - PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS} - ) -endmacro(libfind_library) - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt @@ -3,15 +3,15 @@ message(STATUS "Checking Include Path" $ENV{CMAKE_INCLUDE_PATH} ${CMAKE_INCLUDE_ message(STATUS "Checking Library Path" $ENV{CMAKE_LIBRARY_PATH} ${CMAKE_LIBRARY_PATH}) #Dependency check -find_package(zlib REQUIRED) -find_package(fftw REQUIRED) -find_package(MXML REQUIRED) find_package(PkgConfig REQUIRED) +find_package(zlib REQUIRED) +pkg_check_modules(FFTW REQUIRED fftw3) +pkg_check_modules(MXML REQUIRED mxml) find_package(Threads REQUIRED) find_package(OSS) find_package(Alsa) -find_package(JACK) -find_package(PortAudio) +pkg_check_modules(JACK jack) +pkg_check_modules(PORTAUDIO portaudio-2.0>=19) set(FLTK_SKIP_OPENGL true) find_package(FLTK) find_package(OpenGL) #for FLTK @@ -28,7 +28,9 @@ mark_as_advanced(LIBLO_LIBRARIES) # NOTE: These cache variables should normally not be changed in this # file, but either in in CMakeCache.txt before compile, or by passing # parameters directly into cmake using the -D flag. -SET (DefaultOutput oss CACHE STRING +SET (DefaultInput alsa CACHE STRING + "Default Input module: [null, alsa, oss, jack]") +SET (DefaultOutput jack CACHE STRING "Default Output module: [null, alsa, oss, jack, portaudio]") SET (GuiModule fltk CACHE STRING "GUI module, either fltk, qt or off") SET (CompileTests ${CXXTEST_FOUND} CACHE BOOL "whether tests should be compiled in or not") @@ -65,9 +67,6 @@ else () message(STATUS "GUI module defaulting to off") endif() -if(NOT PKG_CONFIG_FOUND) - message(FATAL_ERROR "pkg-config not found") -endif(NOT PKG_CONFIG_FOUND) #Build Flags option (BuildForAMD_X86_64 "Build for AMD x86_64 system" OFF) @@ -275,7 +274,7 @@ if (DssiEnable) ${NONGUI_LIBRARIES} ${ZLIB_LIBRARIES} ${FFTW_LIBRARY} - ${MXML_LIBRARY} + ${MXML_LIBRARIES} ${NIO_LIBRARIES} ${AUDIO_LIBRARIES} ${OS_LIBRARIES} @@ -287,7 +286,7 @@ if (DssiEnable) endif () endif() -message(STATUS "Link libraries: ${ZLIB_LIBRARY} ${FFTW_LIBRARY} ${MXML_LIBRARY} ${AUDIO_LIBRARIES} ${OS_LIBRARIES}") +message(STATUS "Link libraries: ${ZLIB_LIBRARY} ${FFTW_LIBRARY} ${MXML_LIBRARIES} ${AUDIO_LIBRARIES} ${OS_LIBRARIES}") install(TARGETS zynaddsubfx RUNTIME DESTINATION bin ) diff --git a/src/Nio/CMakeLists.txt b/src/Nio/CMakeLists.txt @@ -17,15 +17,8 @@ set(zynaddsubfx_nio_SRCS set(zynaddsubfx_nio_lib ) -if (DefaultOutput STREQUAL alsa) - add_definitions(-DALSA_DEFAULT=1) -elseif(DefaultOutput STREQUAL oss) - add_definitions(-DOSS_DEFAULT=1) -elseif(DefaultOutput STREQUAL jack) - add_definitions(-DJACK_DEFAULT=1) -elseif(DefaultOutput STREQUAL portaudio) - add_definitions(-DPORTAUDIO_DEFAULT=1) -endif() +add_definitions(-DOUT_DEFAULT="${DefaultOutput}") +add_definitions(-DIN_DEFAULT="${DefaultInput}") if(JackEnable) include_directories(${JACK_INCLUDE_DIR}) diff --git a/src/Nio/EngineMgr.cpp b/src/Nio/EngineMgr.cpp @@ -30,44 +30,28 @@ EngineMgr &EngineMgr::getInstance() EngineMgr::EngineMgr() { - Engine *defaultEng = NULL; + Engine *defaultEng = new NulEngine(); //conditional compiling mess (but contained) - engines.push_back(defaultEng = new NulEngine()); + engines.push_back(defaultEng); #if OSS -#if OSS_DEFAULT - engines.push_back(defaultEng = new OssEngine()); -#else engines.push_back(new OssEngine()); #endif -#endif #if ALSA -#if ALSA_DEFAULT - engines.push_back(defaultEng = new AlsaEngine()); -#else engines.push_back(new AlsaEngine()); #endif -#endif #if JACK -#if JACK_DEFAULT - engines.push_back(defaultEng = new JackEngine()); -#else engines.push_back(new JackEngine()); #endif -#endif #if PORTAUDIO -#if PORTAUDIO_DEFAULT - engines.push_back(defaultEng = new PaEngine()); -#else engines.push_back(new PaEngine()); #endif -#endif defaultOut = dynamic_cast<AudioOut *>(defaultEng); defaultIn = dynamic_cast<MidiIn *>(defaultEng); - //Accept command line options + //Accept command line/compile time options if(!Nio::defaultSink.empty()) setOutDefault(Nio::defaultSink); diff --git a/src/Nio/Nio.cpp b/src/Nio/Nio.cpp @@ -17,8 +17,8 @@ EngineMgr *eng = NULL; string postfix; bool Nio::autoConnect = false; -string Nio::defaultSource; -string Nio::defaultSink; +string Nio::defaultSource = IN_DEFAULT; +string Nio::defaultSink = OUT_DEFAULT; void Nio::init ( void ) { diff --git a/src/Tests/CMakeLists.txt b/src/Tests/CMakeLists.txt @@ -12,7 +12,7 @@ CXXTEST_ADD_TEST(SUBnoteTest SubNoteTest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/SubNote CXXTEST_ADD_TEST(OscilGenTest OscilGenTest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/OscilGenTest.h) CXXTEST_ADD_TEST(RandTest RandTest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/RandTest.h) -set(test_lib ${NONGUI_LIBRARIES} ${ZLIB_LIBRARY} ${FFTW_LIBRARY} ${MXML_LIBRARY} pthread) +set(test_lib ${NONGUI_LIBRARIES} ${ZLIB_LIBRARY} ${FFTW_LIBRARIES} ${MXML_LIBRARIES} pthread) message(STATUS "Linking tests with: ${test_lib}") target_link_libraries(ADnoteTest ${test_lib}) target_link_libraries(SUBnoteTest ${test_lib})