CMakeLists.txt 7.88 KB
Newer Older
Jonas Stienen's avatar
Jonas Stienen committed
1 2 3 4 5 6 7 8
cmake_minimum_required( VERSION 2.8 )

project( ITABase )

list( APPEND CMAKE_MODULE_PATH "$ENV{VISTA_CMAKE_COMMON}" )
include( VistaCommon )

# dependencies
9
vista_use_package( VistaCoreLibs REQUIRED COMPONENTS VistaBase VistaInterProcComm VistaTools FIND_DEPENDENCIES )
Jonas Stienen's avatar
Jonas Stienen committed
10 11 12 13 14
vista_use_package( sndfile )
vista_use_package( IPP QUIET )
vista_use_package( PCRE QUIET )
vista_use_package( SimpleIni QUIET )

15 16 17 18
if( NOT DEFINED ITA_CORE_LIBS_BUILD_STATIC )
	set( ITA_CORE_LIBS_BUILD_STATIC OFF CACHE BOOL "Build all ITA core libs in static mode" )
endif( NOT DEFINED ITA_CORE_LIBS_BUILD_STATIC )

19 20 21 22
if( NOT DEFINED ITA_VISTA_BUILD_STATIC )
	set( ITA_VISTA_BUILD_STATIC OFF CACHE BOOL "Build against static ViSTA libraries" )
endif( NOT DEFINED ITA_VISTA_BUILD_STATIC )

Jonas Stienen's avatar
Jonas Stienen committed
23 24 25 26 27 28 29 30 31 32 33 34 35
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 )
36
	set( ITA_BASE_WITH_OLD_ATOMICS OFF CACHE BOOL "Build with old atomic code for non-C++11 compatible compilers" )
Jonas Stienen's avatar
Jonas Stienen committed
37 38 39
endif( NOT DEFINED ITA_BASE_WITH_OLD_ATOMICS )

if( NOT DEFINED ITA_BASE_WITH_REGULAR_EXPRESSIONS )
40
	set( ITA_BASE_WITH_REGULAR_EXPRESSIONS OFF CACHE BOOL "Build with old regular expressions code for string manipulation" )
Jonas Stienen's avatar
Jonas Stienen committed
41 42 43
endif( NOT DEFINED ITA_BASE_WITH_REGULAR_EXPRESSIONS )

if( NOT DEFINED ITA_BASE_WITH_CONFIG_OLD_IMPL )
44
	set( ITA_BASE_WITH_CONFIG_OLD_IMPL OFF CACHE BOOL "Build with old INI file configuration implementation (uses legacy regular expressions)" )
Jonas Stienen's avatar
Jonas Stienen committed
45 46
endif( NOT DEFINED ITA_BASE_WITH_CONFIG_OLD_IMPL )

47 48 49 50
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 )

Jonas Stienen's avatar
Jonas Stienen committed
51 52 53 54 55 56 57 58 59

# includes
include_directories( "include" )


# files
set( ITABaseHeader
	"include/ITAASCIITable.h"
	"include/ITABaseDefinitions.h"
60
	"include/ITABlockMath.h"
Jonas Stienen's avatar
Jonas Stienen committed
61 62 63 64 65
	"include/ITABufferedAudioFileWriter.h"
	"include/ITAClock.h"
	"include/ITAConstants.h"
	"include/ITACriticalSection.h"
	"include/ITADataLog.h"
66
	"include/ITADebug.h"
Jonas Stienen's avatar
Jonas Stienen committed
67 68 69 70 71
	"include/ITAEndianness.h"
	"include/ITAException.h"
	"include/ITAFade.h"
	"include/ITAFastMath.h"
	"include/ITAFileSystemUtils.h"
72
	"include/ITAHDFTSpectra.h"
Jonas Stienen's avatar
Jonas Stienen committed
73 74
	"include/ITAHDFTSpectrum.h"
	"include/ITAFunctors.h"
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
75
	"include/ITALog.h"
Jonas Stienen's avatar
Jonas Stienen committed
76 77 78 79
	"include/ITANumericUtils.h"
	"include/ITASampleBuffer.h"
	"include/ITASampleFrame.h"
	"include/ITASampleTypeConversion.h"
80
	"include/ITASimpleConvolution.h"
Jonas Stienen's avatar
Jonas Stienen committed
81 82 83 84 85 86 87 88 89 90
	"include/ITAStopWatch.h"
	"include/ITAStringUtils.h"
	"include/ITATimeSeriesAnalyzer.h"
	"include/ITATypes.h"
	"include/ITAUncopyable.h"
	"include/ITAWinPCClock.h"
	"include/spline.h"
	)
set( ITABaseSources
	"src/ITAASCIITable.cpp"
91
	"src/ITABlockMath.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
92 93 94 95 96 97
	"src/ITABufferedAudioFileWriter.cpp"
	"src/ITAClock.cpp"
	"src/ITACriticalSection.cpp"
	"src/ITACriticalSectionImpl.h"
	"src/ITACriticalSectionPosixImpl.h"
	"src/ITACriticalSectionWin32Impl.h"
98
	"src/ITADebug.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
99 100 101 102
	"src/ITAEndianness.cpp"
	"src/ITAException.cpp"
	"src/ITAFade.cpp"
	"src/ITAFileSystemUtils.cpp"
103
	"src/ITAHDFTSpectra.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
104
	"src/ITAHDFTSpectrum.cpp"
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
105
	"src/ITALog.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
106 107 108 109
	"src/ITANumericUtils.cpp"
	"src/ITASampleBuffer.cpp"
	"src/ITASampleFrame.cpp"
	"src/ITASampleTypeConversion.cpp"
110
	"src/ITASimpleConvolution.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
111 112 113 114 115
	"src/ITAStopWatch.cpp"
	"src/ITAWinPCClock.cpp"
	"src/spline.cpp"
	)

js908001's avatar
js908001 committed
116 117 118

# Win32 implementations
if( WIN32 )
Jonas Stienen's avatar
Jonas Stienen committed
119 120
	list( APPEND ITABaseHeader "include/ITAHPT.h" "include/ITAMutex.h" "include/ITATimer.h" )
	list( APPEND ITABaseSources "src/ITAHPT.cpp" "src/ITAMutex.cpp" "src/ITATimer.cpp" )
Fabian Schlieper's avatar
Fabian Schlieper committed
121 122 123 124
else( WIN32)
	add_definitions( -DUSE_SIMPLEINI )
	list( APPEND ITABaseSources "src/ITAPosixRealtimeClock.cpp" "src/simpleini/SimpleIni.h" "src/simpleini/ConvertUTF.h" "src/simpleini/ConvertUTF.c"  )
	list( APPEND ITABaseSources "src/ITAConfigUtilsSimpleIniImpl.cpp" )
js908001's avatar
js908001 committed
125 126
endif( WIN32 )

Jonas Stienen's avatar
Jonas Stienen committed
127

Jonas Stienen's avatar
Jonas Stienen committed
128 129 130 131 132 133 134 135 136 137 138 139 140
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"
		)
141
		add_definitions( -DITABASE_WITH_SNDFILE )
Jonas Stienen's avatar
Jonas Stienen committed
142 143 144 145 146 147 148 149 150 151 152 153
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 )
154
	set( ITABaseHeader "${ITABaseHeader}" "include/ITAAtomicOps.h" "include/ITAAtomicPrimitives.h" )
Jonas Stienen's avatar
Jonas Stienen committed
155 156 157 158 159 160 161
	if( WIN32 )
		set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsWin32Impl.cpp" )
	else( WIN32 )
		set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsGCCBuiltinsImpl.cpp" )
	endif( WIN32 )
endif( ITA_BASE_WITH_OLD_ATOMICS )

162 163 164 165 166
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 )

Jonas Stienen's avatar
Jonas Stienen committed
167 168 169 170 171
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 )
Fabian Schlieper's avatar
Fabian Schlieper committed
172
	list( APPEND ITABaseSources "src/ITAConfigUtils.cpp" "src/ITAStringUtils.cpp" )
Jonas Stienen's avatar
Jonas Stienen committed
173 174
endif( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS )

Fabian Schlieper's avatar
Fabian Schlieper committed
175

Jonas Stienen's avatar
Jonas Stienen committed
176 177 178 179 180 181 182 183

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 )

184

185 186 187 188
if( ITA_VISTA_BUILD_STATIC )
	add_definitions( -DVISTABASE_STATIC -DVISTAMATH_STATIC -DVISTAASPECTS_STATIC -DVISTATOOLS_STATIC -DVISTAINTERPROCCOMM_STATIC )
endif( ITA_VISTA_BUILD_STATIC )

189
# ITA defaults to shared library build mode, so extra definition is required if you want to build against a static library
190
if( NOT ITA_CORE_LIBS_BUILD_STATIC )
191
	add_definitions( -DITA_BASE_EXPORT )
192
else( NOT ITA_CORE_LIBS_BUILD_STATIC )
193
	add_definitions( -DITA_BASE_STATIC )
194 195 196 197 198
	set( BUILD_SHARED_LIBS_TEMP ${BUILD_SHARED_LIBS} )
	if( BUILD_SHARED_LIBS )
		set( BUILD_SHARED_LIBS OFF )
		message( "Ignoring activated BUILD_SHARED_LIBS temporary because static ITA core libs requested" )
	endif( BUILD_SHARED_LIBS )
199
endif( NOT ITA_CORE_LIBS_BUILD_STATIC )
Jonas Stienen's avatar
Jonas Stienen committed
200 201


Fabian Schlieper's avatar
Fabian Schlieper committed
202 203 204 205
if( NOT WIN32 )
	add_definitions( -std=gnu++11 )
endif()

Jonas Stienen's avatar
Jonas Stienen committed
206
# linker
207
add_library( ITABase ${ITABaseHeader} ${ITABaseSources} )
Jonas Stienen's avatar
Jonas Stienen committed
208 209
target_link_libraries( ITABase ${VISTA_USE_PACKAGE_LIBRARIES} )

210 211
set( BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_TEMP} )

Jonas Stienen's avatar
Jonas Stienen committed
212 213 214 215 216 217 218 219 220 221 222 223 224 225

# 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" )