cmake_minimum_required(VERSION 3.1) project(sbsmsx VERSION 2.3.0 LANGUAGES C CXX) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() set(CMAKE_CXX_FLAGS_DEBUG "-g") set(CMAKE_CXX_FLAGS_RELEASE "-O3") include( TestBigEndian ) test_big_endian( BIGENDIAN ) option(BUILD_SHARED_LIBS "Build dynamic library" OFF) add_library(sbsmsx src/mp3.cpp src/mp3tech.cpp src/import.cpp src/pcm.cpp src/audiobuffer.cpp src/convert.cpp src/audio.cpp ) target_compile_definitions(sbsmsx PRIVATE BIGENDIAN=1) include( CheckIncludeFile ) check_include_file(stdint.h HAVE_STDINT_H) if( HAVE_STDINT_H ) target_compile_definitions(sbsmsx PRIVATE HAVE_STDINT_H=1) endif() find_package( Threads ) if( Threads_FOUND AND CMAKE_USE_PTHREADS_INIT ) target_compile_definitions(sbsmsx PRIVATE MULTITHREADED=1) endif() include(FindPkgConfig) pkg_search_module(MAD REQUIRED mad) if( MAD_FOUND ) target_compile_definitions(sbsmsx PRIVATE HAVE_MAD=1) list( APPEND OPTIONS ${MAD_CFLAGS}) endif() pkg_search_module(SNDFILE REQUIRED sndfile) if( SNDFILE_FOUND ) target_compile_definitions(sbsmsx PRIVATE HAVE_SNDFILE=1) list( APPEND OPTIONS ${SNDFILE_CFLAGS}) endif() configure_file( src/config.h.in src/config.h ) list( APPEND OPTIONS PRIVATE $<$:-Wno-enum-compare> ${MMX_FLAG} ${SSE_FLAG} ) target_compile_options( sbsmsx PRIVATE ${OPTIONS} ) target_include_directories( sbsmsx PRIVATE ../include ) add_subdirectory("../" ${CMAKE_CURRENT_BINARY_DIR}/libsbsms) target_link_libraries( sbsmsx PRIVATE sbsms ${MAD_LINK_LIBRARIES} ${SNDFILE_LINK_LIBRARIES} ${PORTAUDIO_LINK_LIBRARIES} ) add_executable( sbsms-convert src/sbsms-convert.cpp ) target_compile_options( sbsms-convert PRIVATE ${OPTIONS} ) target_include_directories( sbsms-convert PRIVATE ../include ) target_link_libraries( sbsms-convert sbsmsx pthread) if( 0 ) # sbsms-play not included currently add_executable( sbsms-play src/sbsms-play.cpp src/audio.cpp ) pkg_search_module(PORTAUDIO REQUIRED portaudio-2.0) if( PORTAUDIO_FOUND ) target_compile_definitions(sbsms-play PRIVATE HAVE_PORTAUDIO=1) list( APPEND OPTIONS ${PORTAUDIO_CFLAGS}) endif() target_compile_options( sbsms-play PRIVATE ${OPTIONS} ) target_include_directories( sbsms-play PRIVATE ../include ) target_link_options( sbsms-play PRIVATE "-L../" ) target_link_libraries( sbsms-play sbsmsx ) endif()