You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdemultimedia/ConfigureChecks.cmake

300 lines
9.1 KiB

#################################################
#
# (C) 2012 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
#################################################
# required stuff
tde_setup_architecture_flags( )
include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)
tde_setup_largefiles( )
if( NOT CMAKE_ARCHITECTURE )
execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
OUTPUT_VARIABLE CMAKE_ARCHITECTURE
ERROR_VARIABLE CMAKE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE )
set( CMAKE_ARCHITECTURE "${CMAKE_ARCHITECTURE}" CACHE INTERNAL "" FORCE )
message( STATUS "Detected ${CMAKE_ARCHITECTURE} target architecture" )
endif( NOT CMAKE_ARCHITECTURE )
if( ${CMAKE_ARCHITECTURE} MATCHES "i.86" )
if( NOT ASM_COMPILER_VERSION )
message( STATUS "Checking binutils version" )
execute_process(
COMMAND echo
COMMAND as -v
OUTPUT_VARIABLE ASM_VERSION
ERROR_VARIABLE ASM_VERSION
)
string(REGEX REPLACE ".*version ([0-9][^ \n]*).*" "\\1" ASM_COMPILER_VERSION ${ASM_VERSION} )
set( ASM_COMPILER_VERSION "${ASM_COMPILER_VERSION}" CACHE INTERNAL "" FORCE )
message( STATUS "Checking binutils version - ${ASM_COMPILER_VERSION}" )
endif( NOT ASM_COMPILER_VERSION )
if( NOT MMX_SUPPORT )
message( STATUS "Performing test MMX_SUPPORT" )
if( ${ASM_COMPILER_VERSION} VERSION_LESS "2.10" )
message( STATUS "Performing test MMX_SUPPORT - Failed" )
else( )
message( STATUS "Performing test MMX_SUPPORT - Success" )
set( MMX_SUPPORT 1 CACHE INTERNAL "" FORCE )
endif( )
endif( NOT MMX_SUPPORT )
check_c_source_compiles( "
int main() {
#if defined(__GNUC__) && defined(__i386__)
__asm__(\"movups %xmm0, (%esp)\");
#else
#error Not gcc on x86
#endif
return 0; }"
HAVE_X86_SSE
)
endif( ${CMAKE_ARCHITECTURE} MATCHES "i.86" )
message( STATUS "Cheking system type - ${CMAKE_SYSTEM_NAME}" )
if( ${CMAKE_SYSTEM_NAME} MATCHES "AIX" )
set( OS_AIX 1 )
elseif( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
set( OS_Linux 1 )
elseif( ${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD|FreeBSD|DragonFly|NetBSD" )
set( OS_BSD 1 )
elseif( ${CMAKE_SYSTEM_NAME} MATCHES "SunOS" )
set( OS_SunOS 1 )
elseif( ${CMAKE_SYSTEM_NAME} MATCHES "IRIX" )
set( OS_IRIX 1 )
elseif( ${CMAKE_SYSTEM_NAME} MATCHES "HPUX" )
set( OS_HPUX 1 )
else( )
message( WARNING "Unknown system type!" )
endif( )
find_package( TQt )
find_package( TDE )
##### check headers #############################
check_include_file( stdint.h HAVE_STDINT_H )
check_include_file( inttypes.h HAVE_INTTYPES_H )
check_include_file( getopt.h HAVE_GETOPT_H )
check_include_file( pthread.h HAVE_LIBPTHREAD )
check_include_file( alsa/asoundlib.h HAVE_ALSA_ASOUNDLIB_H )
check_include_file( sys/asoundlib.h HAVE_SYS_ASOUNDLIB_H )
check_include_file( soundcard.h HAVE_SOUNDCARD_H )
check_include_file( sys/soundcard.h HAVE_SYS_SOUNDCARD_H )
check_include_file( machine/soundcard.h HAVE_MACHINE_SOUNDCARD_H )
##### check libraries ###########################
set( DL_LIBRARIES dl )
check_library_exists( ${DL_LIBRARIES} dlopen /lib HAVE_LIBDL )
if( NOT HAVE_LIBDL )
unset( DL_LIBRARIES )
check_function_exists( dlopen HAVE_DLOPEN )
if( HAVE_DLOPEN )
set( HAVE_LIBDL 1 )
endif( HAVE_DLOPEN )
endif( NOT HAVE_LIBDL )
# ALSA
if( WITH_ALSA )
pkg_check_modules( ALSA alsa>=0.5 )
if( NOT ALSA_FOUND )
tde_message_fatal( "ALSA support is requested, but was not found on your system" )
endif( NOT ALSA_FOUND )
if( NOT ALSA_VERSION VERSION_LESS "0.9" )
set( HAVE_LIBASOUND2 1 )
set( HAVE_ARTS_LIBASOUND2 1 )
else()
set( HAVE_ARTS_LIBASOUND 1 )
endif()
endif( WITH_ALSA )
# aRts
if( BUILD_ARTS OR BUILD_JUK OR BUILD_KABOODLE OR BUILD_KREC OR BUILD_NOATUN )
pkg_search_module( ARTS arts )
if( ARTS_FOUND )
set( ARTS_MCOPIDL_EXECUTABLE ${ARTS_PREFIX}/bin/mcopidl )
set( HAVE_ARTS 1 )
else( ARTS_FOUND )
tde_message_fatal( "aRts is required, but not found on your system" )
endif( ARTS_FOUND )
endif( BUILD_ARTS OR BUILD_JUK OR BUILD_KABOODLE OR BUILD_KREC OR BUILD_NOATUN )
if( BUILD_KAUDIOCREATOR OR BUILD_KREC OR BUILD_KSCD OR (BUILD_TDEIOSLAVE AND WITH_CDPARANOIA) )
pkg_search_module( ARTSC artsc )
if( NOT ARTSC_FOUND )
tde_message_fatal( "aRtsC is required, but not found on your system" )
endif( NOT ARTSC_FOUND )
endif( BUILD_KAUDIOCREATOR OR BUILD_KREC OR BUILD_KSCD OR (BUILD_TDEIOSLAVE AND WITH_CDPARANOIA) )
if( (BUILD_ARTS AND WITH_ARTS_AKODE) OR BUILD_JUK )
pkg_search_module( AKODE akode )
if( NOT AKODE_FOUND )
tde_message_fatal( "akode is required, but not found on your system" )
endif( )
set( HAVE_AKODE 1 )
endif( (BUILD_ARTS AND WITH_ARTS_AKODE) OR BUILD_JUK )
if( BUILD_ARTS )
pkg_search_module( GLIB2 glib-2.0 )
if( GLIB2_FOUND )
pkg_search_module( GTHREAD2 gthread-2.0 )
if( NOT GTHREAD2_FOUND )
tde_message_fatal( "gthread-2.0 are required, but not found on your system" )
endif( NOT GTHREAD2_FOUND )
else( GLIB2_FOUND )
tde_message_fatal( "glib-2.0 are required, but not found on your system" )
endif( GLIB2_FOUND )
if( WITH_ARTS_AUDIOFILE )
pkg_search_module( AUDIOFILE audiofile )
if( NOT AUDIOFILE_FOUND )
tde_message_fatal( "audifile is requested, but not found on your system" )
endif( )
endif( WITH_ARTS_AUDIOFILE )
if( WITH_ARTS_XINE )
pkg_search_module( XINE libxine )
pkg_search_module( XEXT xext )
if( NOT XINE_FOUND )
tde_message_fatal( "xine is requested, but not found on your system" )
endif( )
endif( WITH_ARTS_XINE )
endif( BUILD_ARTS )
# CDDA Paranoia
if( WITH_CDPARANOIA )
if( CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES )
set( CDPARANOIA_FOUND TRUE )
else( )
message( STATUS "Checking for CDParanonia" )
find_path( CDPARANOIA_INCLUDE_DIR cdda_interface.h PATH_SUFFIXES cdda )
find_library( CDPARANOIA_LIBRARY NAMES cdda_paranoia )
find_library( CDPARANOIA_IF_LIBRARY NAMES cdda_interface )
if( CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY )
set( CDPARANOIA_LIBRARIES ${CDPARANOIA_LIBRARY} ${CDPARANOIA_IF_LIBRARY} "m" CACHE INTERNAL "" FORCE )
endif( CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args( CDPARANOIA DEFAULT_MSG
CDPARANOIA_LIBRARIES
CDPARANOIA_INCLUDE_DIR )
if( CDPARANOIA_FOUND )
tde_save_and_set( CMAKE_REQUIRED_INCLUDES ${CDPARANOIA_INCLUDE_DIR} )
check_c_source_compiles( "
#include <cdda_interface.h>
int main() {
struct cdrom_drive device;
device.cdda_device_name = 0;
return 0;
}"
CDPARANOIA_DEVICE_NAME )
tde_restore( CMAKE_REQUIRED_INCLUDES )
if( NOT CDPARANOIA_DEVICE_NAME )
tde_message_fatal( "CDParanoia is too old and can not be used" )
endif( )
endif( CDPARANOIA_FOUND )
endif( )
if( NOT CDPARANOIA_FOUND )
tde_message_fatal( "CDParanoia is requested, but not found on your system" )
endif( NOT CDPARANOIA_FOUND )
set( CDDA_PARANOIA 1 )
endif( WITH_CDPARANOIA )
# FLAC
if( WITH_FLAC )
pkg_search_module( FLAC flac )
if( NOT FLAC_FOUND )
tde_message_fatal( "FLAC is requested, but not found on your system" )
endif( )
set( HAVE_LIBFLAC 1 )
endif( WITH_FLAC )
# OGG/Vorbis
if( WITH_VORBIS )
pkg_search_module( OGG ogg )
if( NOT OGG_FOUND )
tde_message_fatal( "Ogg/Vorbis support are requested, but `libogg` not found" )
endif( )
pkg_search_module( VORBIS vorbis )
if( NOT VORBIS_FOUND )
tde_message_fatal( "Ogg/Vorbis support are requested, but `libvorbis` not found" )
endif( )
pkg_search_module( VORBISFILE vorbisfile )
if( NOT VORBISFILE_FOUND )
tde_message_fatal( "Ogg/Vorbis support are requested, but `libvorbisfile` not found" )
endif( )
pkg_search_module( VORBISENC vorbisenc )
if( NOT VORBISENC_FOUND )
tde_message_fatal( "Ogg/Vorbis support are requested, but `libvorbisenc` not found" )
endif( )
check_library_exists( vorbis vorbis_bitrate_addblock "${VORBIS_LIBRARY_DIRS}" HAVE_VORBIS_2 )
if( HAVE_VORBIS_2 )
set( HAVE_VORBIS 2 )
else( )
set( HAVE_VORBIS 1 )
endif( )
set( OGG_VORBIS 1 )
endif( WITH_VORBIS )
# LAME
if( WITH_LAME )
check_include_file( lame/lame.h HAVE_LAME_H )
if( NOT HAVE_LAME_H )
tde_message_fatal( "lame is requested, but not found on your system" )
endif( )
check_library_exists( mp3lame lame_init "" HAVE_LAME )
if( NOT HAVE_LAME )
tde_message_fatal( "mp3lame is requested, but not found on your system" )
endif( )
set( LAME_LIBRARIES mp3lame CACHE INTERNAL "" FORCE )
endif( WITH_LAME )
# taglib
if( BUILD_JUK OR WITH_TAGLIB )
pkg_search_module( TAGLIB taglib )
if( NOT TAGLIB_FOUND )
tde_message_fatal( "taglib is required, but not found on your system" )
endif( NOT TAGLIB_FOUND )
tde_save_and_set( CMAKE_REQUIRED_INCLUDES ${TAGLIB_INCLUDE_DIRS} )
check_include_file_cxx( taglib/mpcfile.h HAVE_TAGLIB_MPC_H )
tde_restore( CMAKE_REQUIRED_INCLUDES )
endif( BUILD_JUK OR WITH_TAGLIB )