cmake_minimum_required( VERSION 2.8 ) project( ITABase ) list( APPEND CMAKE_MODULE_PATH "$ENV{VISTA_CMAKE_COMMON}" ) include( VistaCommon ) # dependencies vista_use_package( VistaCoreLibs REQUIRED FIND_DEPENDENCIES COMPONENTS VistaInterProcComm VistaTools ) vista_use_package( sndfile ) vista_use_package( IPP QUIET ) vista_use_package( PCRE QUIET ) vista_use_package( SimpleIni QUIET ) if( NOT DEFINED ITA_BASE_WITH_FASTMATH_IPP ) set( ITA_BASE_WITH_FASTMATH_IPP OFF CACHE BOOL "Build with IPP implementation of fast math ops" ) endif( NOT DEFINED ITA_BASE_WITH_FASTMATH_IPP ) if( NOT DEFINED ITA_BASE_WITH_FASTMATH_ASSEMBLER ) set( ITA_BASE_WITH_FASTMATH_ASSEMBLER OFF CACHE BOOL "Build with assembler implementation of fast math ops" ) endif( NOT DEFINED ITA_BASE_WITH_FASTMATH_ASSEMBLER ) if( NOT DEFINED ITA_BASE_WITH_SNDFILE ) set( ITA_BASE_WITH_SNDFILE ON CACHE BOOL "Build with libsndfile to read/write audio samples for ITASampleFrame" ) endif( NOT DEFINED ITA_BASE_WITH_SNDFILE ) if( NOT DEFINED ITA_BASE_WITH_OLD_ATOMICS ) set( ITA_BASE_WITH_OLD_ATOMICS OFF CACHE BOOL "Build with old atomic code for non-C++11 compatible compilers" ) endif( NOT DEFINED ITA_BASE_WITH_OLD_ATOMICS ) if( NOT DEFINED ITA_BASE_WITH_REGULAR_EXPRESSIONS ) set( ITA_BASE_WITH_REGULAR_EXPRESSIONS OFF CACHE BOOL "Build with old regular expressions code for string manipulation" ) endif( NOT DEFINED ITA_BASE_WITH_REGULAR_EXPRESSIONS ) if( NOT DEFINED ITA_BASE_WITH_CONFIG_OLD_IMPL ) set( ITA_BASE_WITH_CONFIG_OLD_IMPL OFF CACHE BOOL "Build with old INI file configuration implementation (uses legacy regular expressions)" ) endif( NOT DEFINED ITA_BASE_WITH_CONFIG_OLD_IMPL ) if( NOT DEFINED ITA_BASE_WITH_OLD_RAVEN_OPS ) set( ITA_BASE_WITH_OLD_RAVEN_OPS OFF CACHE BOOL "Build with old ITAOps helper functions implementation (legacy code for RAVEN compatibility)" ) endif( NOT DEFINED ITA_BASE_WITH_OLD_RAVEN_OPS ) # includes include_directories( "include" ) # files set( ITABaseHeader "include/ITAASCIITable.h" "include/ITABaseDefinitions.h" "include/ITABlockMath.h" "include/ITABufferedAudioFileWriter.h" "include/ITAClock.h" "include/ITAConstants.h" "include/ITACriticalSection.h" "include/ITADataLog.h" "include/ITADebug.h" "include/ITAEndianness.h" "include/ITAException.h" "include/ITAFade.h" "include/ITAFastMath.h" "include/ITAFileSystemUtils.h" "include/ITAHDFTSpectrum.h" "include/ITAFunctors.h" "include/ITAHPT.h" "include/ITALog.h" "include/ITAMutex.h" "include/ITANumericUtils.h" "include/ITASampleBuffer.h" "include/ITASampleFrame.h" "include/ITASampleTypeConversion.h" "include/ITASimpleConvolution.h" "include/ITAStopWatch.h" "include/ITAStringUtils.h" "include/ITATimer.h" "include/ITATimeSeriesAnalyzer.h" "include/ITATypes.h" "include/ITAUncopyable.h" "include/ITAWinPCClock.h" "include/spline.h" ) set( ITABaseSources "src/ITAASCIITable.cpp" "src/ITABlockMath.cpp" "src/ITABufferedAudioFileWriter.cpp" "src/ITAClock.cpp" "src/ITACriticalSection.cpp" "src/ITACriticalSectionImpl.h" "src/ITACriticalSectionPosixImpl.h" "src/ITACriticalSectionWin32Impl.h" "src/ITADebug.cpp" "src/ITAEndianness.cpp" "src/ITAException.cpp" "src/ITAFade.cpp" "src/ITAFileSystemUtils.cpp" "src/ITAHDFTSpectrum.cpp" "src/ITAHPT.cpp" "src/ITALog.cpp" "src/ITAMutex.cpp" "src/ITANumericUtils.cpp" "src/ITASampleBuffer.cpp" "src/ITASampleFrame.cpp" "src/ITASampleTypeConversion.cpp" "src/ITASimpleConvolution.cpp" "src/ITAStopWatch.cpp" "src/ITATimer.cpp" "src/ITAWinPCClock.cpp" "src/spline.cpp" ) if( VSNDFILE_FOUND AND ITA_BASE_WITH_SNDFILE ) set( ITABaseHeader "${ITABaseHeader}" "include/ITAAudiofileCommon.h" "include/ITAAudiofileReader.h" "include/ITAAudiofileWriter.h" ) set( ITABaseSources "${ITABaseSources}" "src/ITAAudiofileCommon.cpp" "src/ITAAudiofileReader.cpp" "src/ITAAudiofileWriter.cpp" "src/libsndfileAudiofileReader.cpp" "src/libsndfileAudiofileWriter.cpp" ) endif( VSNDFILE_FOUND AND ITA_BASE_WITH_SNDFILE ) if( VIPP_FOUND AND ITA_BASE_WITH_FASTMATH_IPP ) set( ITABaseSources "${ITABaseSources}" "src/ITAFastMathImplIPP.cpp" ) elseif( ITA_BASE_WITH_FASTMATH_ASSEMBLER ) set( ITABaseSources "${ITABaseSources}" "src/ITAFastMathImplAssembler.cpp" ) # not recommended else( VIPP_FOUND AND ITA_BASE_WITH_FASTMATH_IPP ) set( ITABaseSources "${ITABaseSources}" "src/ITAFastMathImpl.cpp" ) endif( VIPP_FOUND AND ITA_BASE_WITH_FASTMATH_IPP ) if( ITA_BASE_WITH_OLD_ATOMICS ) set( ITABaseHeader "${ITABaseHeader}" "include/ITAAtomicOps.h" "include/ITAAtomicPrimitives.h" ) if( WIN32 ) set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsWin32Impl.cpp" ) else( WIN32 ) set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsGCCBuiltinsImpl.cpp" ) endif( WIN32 ) endif( ITA_BASE_WITH_OLD_ATOMICS ) if( ITA_BASE_WITH_OLD_RAVEN_OPS ) set( ITABaseHeader "${ITABaseHeader}" "include/ITAOps.h" ) set( ITABaseSources "${ITABaseSources}" "src/ITAOps.cpp" ) endif( ITA_BASE_WITH_OLD_RAVEN_OPS ) if( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS ) list( APPEND ITABaseHeader "include/ITAConfigUtils.h" ) list( APPEND ITABaseSources "src/ITAConfigUtils.cpp" "src/ITAStringUtilsPCRE.cpp" ) add_definitions( -DPCRE_STATIC ) else( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS ) list( APPEND ITABaseSources "src/ITAStringUtils.cpp" ) endif( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS ) if( VSIMPLEINI_FOUND AND ITA_BASE_WITH_CONFIG_SIMPLE_INI ) if( NOT ITA_BASE_WITH_REGULAR_EXPRESSIONS ) message( FATAL_ERROR "ITABase old config implementation requires regular expressions. Please activate." ) endif( NOT ITA_BASE_WITH_REGULAR_EXPRESSIONS ) list( APPEND ITABaseSources "src/ITAConfigUtilsSimpleIniImpl.cpp" ) endif( VSIMPLEINI_FOUND AND ITA_BASE_WITH_CONFIG_SIMPLE_INI ) if( ITA_BASE_WITH_CONFIG_OLD_IMPL AND NOT ITA_BASE_WITH_CONFIG_SIMPLE_INI ) if( NOT ITA_BASE_WITH_REGULAR_EXPRESSIONS ) message( FATAL_ERROR "ITABase old config implementation requires regular expressions. Please activate." ) endif( NOT ITA_BASE_WITH_REGULAR_EXPRESSIONS ) list( APPEND ITABaseSources "src/ITAConfigUtilsWin32Impl.cpp" ) endif( ITA_BASE_WITH_CONFIG_OLD_IMPL AND NOT ITA_BASE_WITH_CONFIG_SIMPLE_INI ) # Windows DLL compiler flags if( WIN32 ) add_definitions( -DITA_BASE_DLL -DITA_BASE_EXPORT ) endif( WIN32) # linker add_library( ITABase SHARED ${ITABaseHeader} ${ITABaseSources} ) target_link_libraries( ITABase ${VISTA_USE_PACKAGE_LIBRARIES} ) # configure vista_configure_lib( ITABase ) vista_install( ITABase ) set( ITABASE_INCLUDE_OUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/include" ) vista_create_cmake_configs( ITABase ) vista_create_default_info_file( ITABase ) set_property( TARGET ITABase PROPERTY FOLDER "ITACoreLibs" ) # tests set( ITABASE_COMMON_BUILD TRUE ) add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/tests" )