cmake_minimum_required(VERSION 2.6)

get_filename_component(list_file_path ${CMAKE_CURRENT_LIST_FILE} PATH)
string(REGEX MATCH "[a-z0-9._-]*$" module_id ${list_file_path})

message("configuring vsxu module            " ${module_id})


set(AUDIO_LIBRARIES "")
set(WITH_MIDI FALSE)

if (WIN32)
    add_definitions(
      -D__WINDOWS_DS__
      -D_MBCS
    )
endif()

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
  find_package(PULSEAUDIO)
  if(PULSEAUDIO_FOUND)
    set( DEFINITIONS -D__LINUX_PULSE__)
    set( INCLUDE_DIRS ${PULSEAUDIO_INCLUDE_DIRS})
    set( AUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY} ${PULSEAUDIO_SIMPLE_LIBRARY})
  endif(PULSEAUDIO_FOUND)

  find_package(JACK)
  if(JACK_FOUND)
    set( DEFINITIONS ${DEFINITIONS} -D__LINUX_JACK__)
    set( WITH_MIDI TRUE )
    set( INCLUDE_DIRS ${INCLUDE_DIRS} ${JACK_INCLUDE_DIRS})
    set( AUDIO_LIBRARIES ${AUDIO_LIBRARIES} ${JACK_LIBRARY} )
  endif(JACK_FOUND)

  find_package(ALSA)
  if(ALSA_FOUND)
    set( DEFINITIONS ${DEFINITIONS} -D__LINUX_ALSA__)
    set( DEFINITIONS ${DEFINITIONS} -DWITH_MIDI )
    set( WITH_MIDI TRUE )
    set( INCLUDE_DIRS ${INCLUDE_DIRS} ${ALSA_INCLUDE_DIRS})
    set( AUDIO_LIBRARIES ${AUDIO_LIBRARIES} ${ALSA_LIBRARY} )
  endif(ALSA_FOUND)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")


if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
  find_library(COREAUDIO_LIBRARY CoreAudio)
  if(COREAUDIO_LIBRARY_FOUND)
    set( DEFINITIONS -D__MACOSX_CORE__)
    set( DEFINITIONS -D__OS_MACOSX__)
    set( AUDIO_LIBRARIES ${AUDIO_LIBRARIES} ${COREAUDIO_LIBRARY})
  endif(COREAUDIO_LIBRARY_FOUND)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")


if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
  set( DEFINITIONS -D__WINDOWS_DS__ -D__WINDOWS_MM__ -D__WINDOWS_WASAPI__)
  set( AUDIO_LIBRARIES ${AUDIO_LIBRARIES} winmm dsound)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")

message(${AUDIO_LIBRARIES})

#TODO: Add in the needed definitions for each Audio/Midi Library on each platform
if(AUDIO_LIBRARIES)
  project (${module_id})
  find_package(Threads)
  include (../cmake_globals.txt)
  set(INCLUDE_DIRS
    ${INCLUDE_DIRS}
    ${CMAKE_CURRENT_LIST_DIR}/lib/
    ${CMAKE_CURRENT_LIST_DIR}/fftreal/
  )
  include_directories (${INCLUDE_DIRS})
  add_definitions(${DEFINITIONS})

message("audio libraries:\n")
message(${AUDIO_LIBRARIES})
  # set defines for MOD_CM, MOD_DM, MOD_NM
  CREATE_STATIC_GLUE(${module_id})

  set(SOURCES
    ${CMAKE_CURRENT_LIST_DIR}/main_sound.rtaudio.cpp
    ${CMAKE_CURRENT_LIST_DIR}/fftreal/fftreal.cpp
    ${CMAKE_CURRENT_LIST_DIR}/lib/RtAudio/RtAudio.cpp
    ${CMAKE_CURRENT_LIST_DIR}/lib/RtMidi/RtMidi.cpp
  )
  file(GLOB_RECURSE HEADER_FILES *.h)

  #if(WITH_MIDI)
#    list(APPEND SOURCES input/input_audio_midi.cpp)
#  endif(WITH_MIDI)

  # actual compilation target
  CREATE_MODULE(${module_id})

  include(../cmake_suffix.txt)

  if(NOT (VSXU_STATIC EQUAL 1))
    target_link_libraries(${module_id} ${AUDIO_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
  endif()

#  set(LIBRARIES ${AUDIO_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})

endif(AUDIO_LIBRARIES)

