shithub: sox

ref: 42db1b4a5ac01b702f8cb399a48f10e483d5c432
dir: /CMakeLists.txt/

View raw version
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckLibraryExists)

macro(optional variable header library function source)
  check_include_files(${header} ${variable}1)
  if (${variable}1)
    check_library_exists(${library} ${function} "" ${variable})
    if (${variable})
      set(optional_srcs ${optional_srcs} ${source})
      set(optional_libs ${optional_libs} ${library})
    endif (${variable})
  endif (${variable}1)
endmacro(optional)

macro(optional3 variable header library1 function1 library2 function2 library3 function3 source)
  check_include_files(${header} ${variable}1)
  if (${variable}1)
    check_library_exists(${library1} ${function1} "" ${variable}2)
    if (${variable}2)
      check_library_exists(${library2} ${function2} "" ${variable}3)
      if (${variable}3)
	check_library_exists(${library3} ${function3} "" ${variable})
        if (${variable})
          set(optional_srcs ${optional_srcs} ${source})
          set(optional_libs ${optional_libs} ${library1} ${library2} ${library3})
        endif (${variable})
      endif (${variable}3)
    endif (${variable}2)
  endif (${variable}1)
endmacro(optional3)
project(sox)

if(CMAKE_COMPILER_IS_GNUCC)
  add_definitions(-D_FORTIFY_SOURCE=2 -Wall -W -Wmissing-prototypes -Wstrict-prototypes -pedantic)
endif(CMAKE_COMPILER_IS_GNUCC)

include(TestBigEndian)

check_include_files("byteswap.h"         HAVE_BYTESWAP_H)
check_include_files("inttypes.h"         HAVE_INTTYPES_H)
check_include_files("io.h"               HAVE_IO_H)
#check_include_files("ltdl.h"             HAVE_LTDL_H) # no plug-ins as yet
check_include_files("stdint.h"           HAVE_STDINT_H)
check_include_files("string.h"           HAVE_STRING_H)
check_include_files("strings.h"          HAVE_STRINGS_H)
check_include_files("sys/time.h"         HAVE_SYS_TIME_H)
check_include_files("sys/timeb.h"        HAVE_SYS_TIMEB_H)
check_include_files("unistd.h"           HAVE_UNISTD_H)

check_function_exists("fseeko"           HAVE_FSEEKO)
check_function_exists("gettimeofday"     HAVE_GETTIMEOFDAY)
check_function_exists("popen"            HAVE_POPEN)
check_function_exists("strcasecmp"       HAVE_STRCASECMP)
check_function_exists("strdup"           HAVE_STRDUP)
check_function_exists("strrstr"          HAVE_STRRSTR)
check_function_exists("vsnprintf"        HAVE_VSNPRINTF)

test_big_endian(WORDS_BIGENDIAN)

optional(NEED_LIBM math.h m pow "")
if(NEED_LIBM)
  set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} -lm)
endif(NEED_LIBM)
optional(EXTERNAL_GSM gsm/gsm.h gsm gsm_create "")
optional(HAVE_ALSA alsa/asoundlib.h asound snd_pcm_open alsa)
optional(HAVE_AMRNB amrnb/sp_dec.h amrnb Decoder_Interface_init amr-nb)
optional(HAVE_AMRWB amrwb/dec.h amrwb D_IF_init amr-wb)
optional(HAVE_ID3TAG id3tag.h id3tag id3_file_open "")
optional(HAVE_LIBAO ao/ao.h ao ao_play ao)
optional(HAVE_FLAC FLAC/all.h FLAC FLAC__stream_encoder_new flac)
optional(HAVE_MAD_H mad.h mad mad_stream_buffer mp3)
optional(HAVE_LAME_LAME_H lame/lame.h mp3lame lame_init mp3)
if (NOT HAVE_LAME_LAME_H)
  optional(HAVE_LAME_LAME_H lame.h mp3lame lame_init mp3)
endif (NOT HAVE_LAME_LAME_H)
optional(HAVE_SAMPLERATE_H samplerate.h samplerate src_simple rabbit)
optional(HAVE_SNDFILE_H sndfile.h sndfile sf_open sndfile)
optional(HAVE_SNDFILE_1_0_12 sndfile.h sndfile sf_open_virtual "")
optional(HAVE_SUN_AUDIOIO_H sun/audioio.h c ioctl sunaudio)
if (NOT HAVE_SUN_AUDIOIO_H)
  optional(HAVE_SYS_AUDIOIO_H sys/audioio.h c ioctl sunaudio)
endif (NOT HAVE_SUN_AUDIOIO_H)
optional(HAVE_SYS_SOUNDCARD_H sys/soundcard.h c ioctl oss)
if (NOT HAVE_SYS_SOUNDCARD_H)
  optional(HAVE_MACHINE_SOUNDCARD_H machine/soundcard.h ossaudio _oss_ioctl oss)
endif (NOT HAVE_SYS_SOUNDCARD_H)
optional3(HAVE_OGG_VORBIS vorbis/codec.h vorbis vorbis_analysis_headerout vorbisfile ov_clear vorbisenc vorbis_encode_init_vbr vorbis)
optional3(HAVE_FFMPEG ffmpeg/avformat.h avformat av_open_input_file avutil av_rescale_q avcodec avcodec_decode_audio2 ffmpeg)

subdirs(src lpc10)

if (NOT EXTERNAL_GSM)
  add_subdirectory(libgsm)
endif (NOT EXTERNAL_GSM)