|
- #checking include/library paths
- message(STATUS "Checking Include Path" $ENV{CMAKE_INCLUDE_PATH} ${CMAKE_INCLUDE_PATH})
- message(STATUS "Checking Library Path" $ENV{CMAKE_LIBRARY_PATH} ${CMAKE_LIBRARY_PATH})
-
- #Dependency check
- 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)
- pkg_check_modules(JACK jack)
- pkg_check_modules(PORTAUDIO portaudio-2.0>=19)
- set(FLTK_SKIP_OPENGL true)
- pkg_check_modules(NTK ntk)
- pkg_check_modules(NTK_IMAGES ntk_images)
- find_package(FLTK)
- find_package(OpenGL) #for FLTK
- find_package(CxxTest)
- if(CXXTEST_FOUND)
- set(CXXTEST_USE_PYTHON TRUE)
- endif()
- # lash
- pkg_search_module(LASH lash-1.0)
- mark_as_advanced(LASH_LIBRARIES)
- pkg_search_module(DSSI dssi>=0.9.0)
- mark_as_advanced(DSSI_LIBRARIES)
- pkg_search_module(LIBLO liblo>=0.26)
- mark_as_advanced(LIBLO_LIBRARIES)
-
- ######### Settings ###########
- # 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 (GuiModule fltk CACHE STRING "GUI module, either fltk, ntk or off")
- SET (CompileTests ${CXXTEST_FOUND} CACHE BOOL "whether tests should be compiled in or not")
- SET (AlsaEnable ${ALSA_FOUND} CACHE BOOL
- "Enable support for Advanced Linux Sound Architecture")
- SET (JackEnable ${JACK_FOUND} CACHE BOOL
- "Enable support for JACK Audio Connection toolKit")
- SET (OssEnable ${OSS_FOUND} CACHE BOOL
- "Enable support for Open Sound System")
- SET (PaEnable ${PORTAUDIO_FOUND} CACHE BOOL
- "Enable support for Port Audio System")
- SET (LashEnable ${LASH_FOUND} CACHE BOOL
- "Enable LASH Audio Session Handler")
- SET (DssiEnable ${DSSI_FOUND} CACHE BOOL
- "Enable DSSI Plugin compilation")
- SET (LibloEnable ${LIBLO_FOUND} CACHE BOOL
- "Enable Liblo")
-
- # Now, handle the incoming settings and set define flags/variables based
- # on this
-
- # Add version information
- add_definitions(-DVERSION="${VERSION}")
-
- # Give a good guess on the best Input/Output default backends
- if (JackEnable)
- SET (DefaultOutput jack CACHE STRING
- "Default Output module: [null, alsa, oss, jack, portaudio]")
- # Override with perhaps more helpful midi backends
- if (AlsaEnable)
- SET (DefaultInput alsa CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- elseif (OssEnable)
- SET (DefaultInput oss CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- else ()
- SET (DefaultInput jack CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- endif ()
- elseif (AlsaEnable)
- SET (DefaultOutput alsa CACHE STRING
- "Default Output module: [null, alsa, oss, jack, portaudio]")
- SET (DefaultInput alsa CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- elseif (OssEnable)
- SET (DefaultOutput oss CACHE STRING
- "Default Output module: [null, alsa, oss, jack, portaudio]")
- SET (DefaultInput oss CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- else()
- SET (DefaultOutput null CACHE STRING
- "Default Output module: [null, alsa, oss, jack, portaudio]")
- SET (DefaultInput null CACHE STRING
- "Default Input module: [null, alsa, oss, jack]")
- endif()
-
-
-
- if (GuiModule STREQUAL qt AND QT_FOUND)
- set (QtGui TRUE)
- elseif(GuiModule STREQUAL ntk AND NTK_FOUND)
- set (NtkGui TRUE)
- elseif(GuiModule STREQUAL fltk AND FLTK_FOUND)
- set (FltkGui TRUE)
- elseif(GuiModule STREQUAL off)
- add_definitions(-DDISABLE_GUI)
- else ()
- set (GuiModule off CACHE STRING "GUI module, either fltk, qt or off")
- add_definitions(-DDISABLE_GUI)
- message(STATUS "GUI module defaulting to off")
- endif()
-
-
- #Build Flags
- option (BuildForAMD_X86_64 "Build for AMD x86_64 system" OFF)
- option (BuildForCore2_X86_64 "Build for Intel Core2 x86_64 system" OFF)
- option (BuildForDebug "Include gdb debugging support" OFF)
-
- set(CMAKE_BUILD_TYPE "Release")
-
- set (BuildOptions_x86_64AMD
- "-O3 -march=athlon64 -m64 -Wall -ffast-math -fno-finite-math-only -fomit-frame-pointer"
- CACHE STRING "X86_64 compiler options"
- )
-
- set (BuildOptions_X86_64Core2
- "-O3 -march=core2 -m64 -Wall -ffast-math -fno-finite-math-only -fomit-frame-pointer"
- CACHE STRING "X86_64 compiler options"
- )
-
- set (BuildOptionsBasic
- "-O3 -msse -msse2 -mfpmath=sse -ffast-math -fomit-frame-pointer"
- CACHE STRING "basic X86 complier options"
- )
-
- set (BuildOptionsDebug
- "-O0 -g3 -ggdb -Wall -Wpointer-arith" CACHE STRING "Debug build flags")
-
- ########### Settings dependant code ###########
- # From here on, the setting variables have been prepared so concentrate
- # on the actual compiling.
-
- if(AlsaEnable)
- list(APPEND AUDIO_LIBRARIES ${ASOUND_LIBRARY})
- list(APPEND AUDIO_LIBRARY_DIRS ${ASOUND_LIBRARY_DIRS})
- add_definitions(-DALSA=1)
- endif(AlsaEnable)
-
- if(JackEnable)
- list(APPEND AUDIO_LIBRARIES ${JACK_LIBRARIES})
- list(APPEND AUDIO_LIBRARY_DIRS ${JACK_LIBRARY_DIRS})
- add_definitions(-DJACK=1)
- endif(JackEnable)
-
- if(OssEnable)
- add_definitions(-DOSS=1)
- endif(OssEnable)
-
- if(PaEnable)
- include_directories(${PORTAUDIO_INCLUDE_DIR})
- add_definitions(-DPORTAUDIO=1)
- list(APPEND AUDIO_LIBRARIES ${PORTAUDIO_LIBRARIES})
- list(APPEND AUDIO_LIBRARY_DIRS ${PORTAUDIO_LIBRARY_DIRS})
- endif()
-
- if (CompileTests)
- ENABLE_TESTING()
- endif()
-
- if(LashEnable)
- include_directories(${LASH_INCLUDE_DIRS})
- add_definitions(-DLASH=1)
- list(APPEND AUDIO_LIBRARIES ${LASH_LIBRARIES})
- list(APPEND AUDIO_LIBRARY_DIRS ${LASH_LIBRARY_DIRS})
- message(STATUS "Compiling with lash")
- endif()
- if(LibloEnable)
- include_directories(${LIBLO_INCLUDE_DIRS})
- add_definitions(-DUSE_NSM=1)
- list(APPEND AUDIO_LIBRARIES ${LIBLO_LIBRARIES})
- list(APPEND AUDIO_LIBRARY_DIRS ${LIBLO_LIBRARY_DIRS})
- message(STATUS "Compiling with liblo")
- endif()
-
- # other include directories
- include_directories(${ZLIB_INCLUDE_DIRS} ${MXML_INCLUDE_DIRS})
-
- add_definitions(
- -DASM_F2I_YES
- -g #TODO #todo put in a better location
- -Wall
- -Wextra
- )
-
- if (BuildForDebug)
- set (CMAKE_BUILD_TYPE "Debug")
- set (CMAKE_CXX_FLAGS_DEBUG ${BuildOptionsDebug})
- message (STATUS "Building for ${CMAKE_BUILD_TYPE}, flags: ${CMAKE_CXX_FLAGS_DEBUG}")
- else (BuildForDebug)
- set (CMAKE_BUILD_TYPE "Release")
- if (BuildForAMD_X86_64)
- set (CMAKE_CXX_FLAGS_RELEASE ${BuildOptions_x86_64AMD})
- else (BuildForAMD_X86_64)
- if (BuildForCore2_X86_64)
- set (CMAKE_CXX_FLAGS_RELEASE ${BuildOptions_X86_64Core2})
- else (BuildForCore2_X86_64)
- set (CMAKE_CXX_FLAGS_RELEASE ${BuildOptionsBasic})
- endif (BuildForCore2_X86_64)
- endif (BuildForAMD_X86_64)
- message (STATUS "Building for ${CMAKE_BUILD_TYPE}, flags: ${CMAKE_CXX_FLAGS_RELEASE}")
- endif (BuildForDebug)
-
- add_definitions(-fPIC)
-
- if(FLTK_FOUND)
- mark_as_advanced(FORCE FLTK_BASE_LIBRARY)
- mark_as_advanced(FORCE FLTK_CONFIG_SCRIPT)
- mark_as_advanced(FORCE FLTK_DIR)
- mark_as_advanced(FORCE FLTK_FLUID_EXECUTABLE)
- mark_as_advanced(FORCE FLTK_FORMS_LIBRARY)
- mark_as_advanced(FORCE FLTK_GL_LIBRARY)
- mark_as_advanced(FORCE FLTK_IMAGES_LIBRARY)
- mark_as_advanced(FORCE FLTK_INCLUDE_DIR)
- mark_as_advanced(FORCE FLTK_MATH_LIBRARY)
- endif(FLTK_FOUND)
-
- if(NTK_FOUND)
- mark_as_advanced(FORCE NTK_BASE_LIBRARY)
- mark_as_advanced(FORCE NTK_CONFIG_SCRIPT)
- mark_as_advanced(FORCE NTK_DIR)
- mark_as_advanced(FORCE FLTK_FLUID_EXECUTABLE)
- mark_as_advanced(FORCE NTK_FORMS_LIBRARY)
- mark_as_advanced(FORCE NTK_GL_LIBRARY)
- mark_as_advanced(FORCE NTK_IMAGES_LIBRARY)
- mark_as_advanced(FORCE NTK_INCLUDE_DIR)
- mark_as_advanced(FORCE NTK_MATH_LIBRARY)
- endif(NTK_FOUND)
-
- if(FltkGui)
- #UGLY WORKAROUND
- find_program (FLTK_CONFIG fltk-config)
- if (FLTK_CONFIG)
- execute_process (COMMAND ${FLTK_CONFIG} --use-images --ldflags OUTPUT_VARIABLE FLTK_LDFLAGS)
- string(STRIP ${FLTK_LDFLAGS} FLTK_LIBRARIES)
- endif()
-
- message(STATUS ${FLTK_LDFLAGS})
-
-
- set(GUI_LIBRARIES ${FLTK_LIBRARIES} ${FLTK_LIBRARIES} ${OPENGL_LIBRARIES} zynaddsubfx_gui)
-
- add_definitions(-DFLTK_GUI)
- message(STATUS "Will build FLTK gui")
-
- include_directories(
- ${FLTK_INCLUDE_DIR}
- "${CMAKE_CURRENT_SOURCE_DIR}/UI"
- "${CMAKE_CURRENT_BINARY_DIR}/UI"
- )
-
- add_subdirectory(UI)
- endif()
-
- if(NtkGui)
-
- find_program( FLTK_FLUID_EXECUTABLE ntk-fluid)
-
- message(STATUS ${NTK_LDFLAGS} ${NTK_IMAGES_LDFLAGS})
-
- set(GUI_LIBRARIES ${NTK_LIBRARIES} ${NTK_IMAGES_LIBRARIES} ${OPENGL_LIBRARIES} zynaddsubfx_gui)
-
- add_definitions(-DNTK_GUI)
-
- message(STATUS "Will build NTK gui")
-
- include_directories(
- ${NTK_INCLUDE_DIRS}
- "${CMAKE_CURRENT_SOURCE_DIR}/UI"
- "${CMAKE_CURRENT_BINARY_DIR}/UI"
- )
-
- add_subdirectory(UI)
- endif()
-
- ########### General section ##############
- # Following this should be only general compilation code, and no mention
- # of module-specific variables
-
- link_directories(${AUDIO_LIBRARY_DIRS} ${ZLIB_LIBRARY_DIRS} ${FFTW_LIBRARY_DIRS} ${MXML_LIBRARY_DIRS} ${FLTK_LIBRARY_DIRS} ${NTK_LIBRARY_DIRS})
-
- include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}
- )
-
-
-
- set(NONGUI_LIBRARIES
- zynaddsubfx_misc
- zynaddsubfx_synth
- zynaddsubfx_effect
- zynaddsubfx_params
- zynaddsubfx_dsp
- zynaddsubfx_nio
- )
-
- add_subdirectory(Misc)
- add_subdirectory(Synth)
- add_subdirectory(Effects)
- add_subdirectory(Params)
- add_subdirectory(DSP)
- add_subdirectory(Nio)
-
- add_library(zynaddsubfx_core STATIC
- ${zynaddsubfx_dsp_SRCS}
- ${zynaddsubfx_effect_SRCS}
- ${zynaddsubfx_misc_SRCS}
- ${zynaddsubfx_params_SRCS}
- ${zynaddsubfx_synth_SRCS}
- )
-
- target_link_libraries(zynaddsubfx_core
- ${ZLIB_LIBRARIES}
- ${FFTW_LIBRARIES}
- ${MXML_LIBRARIES}
- ${OS_LIBRARIES}
- pthread)
-
- if(CompileTests)
- add_subdirectory(Tests)
- endif(CompileTests)
-
- message(STATUS "using link directories: ${AUDIO_LIBRARY_DIRS} ${ZLIB_LIBRARY_DIRS} ${FFTW_LIBRARY_DIRS} ${MXML_LIBRARY_DIRS} ${FLTK_LIBRARY_DIRS}")
-
-
- add_executable(zynaddsubfx main.cpp)
-
- target_link_libraries(zynaddsubfx
- zynaddsubfx_core
- zynaddsubfx_nio
- ${GUI_LIBRARIES}
- ${NIO_LIBRARIES}
- ${AUDIO_LIBRARIES}
- )
-
- if (DssiEnable)
- add_library(zynaddsubfx_dssi SHARED
- Output/DSSIaudiooutput.cpp
- )
-
- target_link_libraries(zynaddsubfx_dssi
- zynaddsubfx_core
- ${OS_LIBRARIES}
- )
- if (${CMAKE_SIZEOF_VOID_P} EQUAL "8")
- install(TARGETS zynaddsubfx_dssi LIBRARY DESTINATION lib64/dssi/)
- else ()
- install(TARGETS zynaddsubfx_dssi LIBRARY DESTINATION lib/dssi/)
- endif ()
- endif()
-
- message(STATUS "Link libraries: ${ZLIB_LIBRARY} ${FFTW_LIBRARY} ${MXML_LIBRARIES} ${AUDIO_LIBRARIES} ${OS_LIBRARIES}")
- install(TARGETS zynaddsubfx
- RUNTIME DESTINATION bin
- )
-
- if(NtkGui)
- install(DIRECTORY ../pixmaps DESTINATION share/zynaddsubfx)
- add_definitions(-DPIXMAP_PATH="${CMAKE_INSTALL_PREFIX}/share/zynaddsubfx/pixmaps/")
- add_definitions(-DSOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
- endif(NtkGui)
-
- include(CTest)
|