################################################# # # (C) 2010 Serghei Amelian # serghei (DOT) amelian (AT) gmail.com # # Improvements and feedback are welcome # # This file is released under GPL >= 2 # ################################################# cmake_minimum_required( VERSION 2.6 ) ##### project settings ########################## project( arts ) set( ARTS_MAJOR_VERSION 1 ) set( ARTS_MINOR_VERSION 5 ) set( ARTS_MICRO_VERSION 10 ) set( ARTS_VERSION "${ARTS_MAJOR_VERSION}.${ARTS_MINOR_VERSION}.${ARTS_MICRO_VERSION}" ) ##### user requested options #################### option( WITH_ALSA "Enable ALSA support" ON ) option( WITH_AUDIOFILE "Enable audiofile (wav) support" ON ) option( WITH_VORBIS "Enable Ogg/Vorbis support" ON ) option( WITH_MAD "Enable MAD mp3 decoder support" ON ) ##### paths setup ############################### if( NOT BIN_INSTALL_DIR ) set( BIN_INSTALL_DIR bin ) endif ( NOT BIN_INSTALL_DIR ) if( NOT LIB_INSTALL_DIR ) set( LIB_INSTALL_DIR lib ) endif( NOT LIB_INSTALL_DIR ) if( NOT INCLUDE_INSTALL_DIR ) set( INCLUDE_INSTALL_DIR include/${CMAKE_PROJECT_NAME} ) endif( NOT INCLUDE_INSTALL_DIR ) if( NOT PKGCONFIG_INSTALL_DIR ) set( PKGCONFIG_INSTALL_DIR lib/pkgconfig ) endif( NOT PKGCONFIG_INSTALL_DIR ) ##### check for include files ################### include( CheckIncludeFile ) check_include_file( "sys/time.h" HAVE_SYS_TIME_H ) check_include_file( "time.h" TIME_WITH_SYS_TIME ) check_include_file( "stdio.h" HAVE_STDIO_H ) check_include_file( "stdlib.h" HAVE_STDLIB_H ) check_include_file( "string.h" HAVE_STRING_H ) check_include_file( "strings.h" HAVE_STRINGS_H ) check_include_file( "ctype.h" HAVE_CTYPE_H ) check_include_file( "malloc.h" HAVE_MALLOC_H ) check_include_file( "memory.h" HAVE_MEMORY_H ) check_include_file( "dlfcn.h" HAVE_DLFCN_H ) ##### check for system libraries ################ include( CheckLibraryExists ) set( DL_LIBRARIES dl ) check_library_exists( ${DL_LIBRARIES} dlopen /lib HAVE_LIBDL ) if( NOT HAVE_LIBDL ) unset( DL_LIBRARIES ) endif( NOT HAVE_LIBDL ) find_package( Threads ) ##### check for functions ####################### include( CheckFunctionExists ) set( bak_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ) set( CMAKE_REQUIRED_LIBRARIES dl ) check_function_exists( dlerror HAVE_DLERROR ) check_function_exists( strcmp HAVE_STRCMP ) check_function_exists( strchr HAVE_STRCHR ) check_function_exists( index HAVE_INDEX ) check_function_exists( strrchr HAVE_STRRCHR ) check_function_exists( rindex HAVE_RINDEX ) check_function_exists( memcpy HAVE_MEMCPY ) check_function_exists( bcopy HAVE_BCOPY ) set( CMAKE_REQUIRED_LIBRARIES ${bak_CMAKE_REQUIRED_LIBRARIES} ) unset( bak_CMAKE_REQUIRED_LIBRARIES ) ##### check for modules ######################### include( FindPkgConfig ) ##### check for audiofile ####################### set( HAVE_LIBAUDIOFILE 0 ) if( WITH_AUDIOFILE ) pkg_search_module( AUDIOFILE audiofile ) if( AUDIOFILE_FOUND ) set( HAVE_LIBAUDIOFILE 1 ) else( AUDIOFILE_FOUND ) message(FATAL_ERROR "\naudiofile (wav) support are requested, but `libaudiofile` not found" ) endif( AUDIOFILE_FOUND ) endif( WITH_AUDIOFILE ) ##### check for alsa ############################ set( HAVE_LIBASOUND2 0 ) if( WITH_ALSA ) find_package( ALSA ) if( ALSA_FOUND ) # there is support only for ALSA 1.x set( HAVE_LIBASOUND2 1 ) set( ALSA_PCM_OLD_SW_PARAMS_API 1 ) set( ALSA_PCM_OLD_HW_PARAMS_API 1 ) check_include_file( "alsa/asoundlib.h" HAVE_ALSA_ASOUNDLIB_H ) if( NOT HAVE_ALSA_ASOUNDLIB_H ) check_include_file( "sys/asoundlib.h" HAVE_SYS_ASOUNDLIB_H ) endif( NOT HAVE_ALSA_ASOUNDLIB_H ) set( bak_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ) set( CMAKE_REQUIRED_LIBRARIES ${ALSA_LIBRARIES} ) check_function_exists( snd_pcm_resume HAVE_SND_PCM_RESUME ) set( CMAKE_REQUIRED_LIBRARIES ${bak_CMAKE_REQUIRED_LIBRARIES} ) unset( bak_CMAKE_REQUIRED_LIBRARIES ) else( ALSA_FOUND ) message(FATAL_ERROR "\nALSA support are requested, but not found on your system" ) endif( ALSA_FOUND ) endif( WITH_ALSA ) ##### check for glib/gthread modules ############ pkg_search_module( GLIB2 glib-2.0 ) if( GLIB2_FOUND ) pkg_search_module( GTHREAD2 gthread-2.0 ) if( NOT GTHREAD2_FOUND ) message(FATAL_ERROR "\ngthread-2.0 are required, but not found on your system" ) endif( NOT GTHREAD2_FOUND ) else( GLIB2_FOUND ) message(FATAL_ERROR "\nglib-2.0 are required, but not found on your system" ) endif( GLIB2_FOUND ) ##### check for Qt3 ############################# find_package( Qt3 ) if( NOT QT_FOUND ) message(FATAL_ERROR "\nQt3 are required, but not found on your system" ) endif( NOT QT_FOUND ) ##### check for TQt ############################# pkg_search_module( TQT TQt ) if( NOT TQT_FOUND ) message(FATAL_ERROR "\nTQt are required, but not found on your system" ) endif( NOT TQT_FOUND ) ##### write config.h file ####################### configure_file( config.h.cmake config.h @ONLY ) ##### write pkgconfig file ###################### configure_file( arts.pc.cmake arts.pc @ONLY ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/arts.pc DESTINATION ${PKGCONFIG_INSTALL_DIR} ) ##### global compiler settings ################## add_definitions( -DHAVE_CONFIG_H ) set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" ) ##### project subdirectories #################### add_subdirectory( libltdl ) add_subdirectory( mcop ) add_subdirectory( mcopidl ) add_subdirectory( flow ) add_subdirectory( mcop_mt ) add_subdirectory( soundserver ) add_subdirectory( artsc ) add_subdirectory( gmcop ) add_subdirectory( qtmcop )