CMakeLists.txt 6.52 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 15 16
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" )
17
endif()
Jonas Stienen's avatar
Jonas Stienen committed
18 19 20

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" )
21
endif()
Jonas Stienen's avatar
Jonas Stienen committed
22 23 24

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" )
25
endif()
Jonas Stienen's avatar
Jonas Stienen committed
26 27

if( NOT DEFINED ITA_BASE_WITH_OLD_ATOMICS )
28
	set( ITA_BASE_WITH_OLD_ATOMICS OFF CACHE BOOL "Build with old atomic code for non-C++11 compatible compilers" )
29
endif()
Jonas Stienen's avatar
Jonas Stienen committed
30 31

if( NOT DEFINED ITA_BASE_WITH_REGULAR_EXPRESSIONS )
32
	set( ITA_BASE_WITH_REGULAR_EXPRESSIONS OFF CACHE BOOL "Build with old regular expressions code for string manipulation" )
33
endif()
Jonas Stienen's avatar
Jonas Stienen committed
34 35

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

39 40
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)" )
41
endif()
42

Jonas Stienen's avatar
Jonas Stienen committed
43 44 45 46 47 48 49 50 51

# includes
include_directories( "include" )


# files
set( ITABaseHeader
	"include/ITAASCIITable.h"
	"include/ITABaseDefinitions.h"
52
	"include/ITABlockMath.h"
Jonas Stienen's avatar
Jonas Stienen committed
53 54 55 56 57
	"include/ITABufferedAudioFileWriter.h"
	"include/ITAClock.h"
	"include/ITAConstants.h"
	"include/ITACriticalSection.h"
	"include/ITADataLog.h"
58
	"include/ITADebug.h"
Jonas Stienen's avatar
Jonas Stienen committed
59 60 61 62 63
	"include/ITAEndianness.h"
	"include/ITAException.h"
	"include/ITAFade.h"
	"include/ITAFastMath.h"
	"include/ITAFileSystemUtils.h"
64
	"include/ITAHDFTSpectra.h"
Jonas Stienen's avatar
Jonas Stienen committed
65 66
	"include/ITAHDFTSpectrum.h"
	"include/ITAFunctors.h"
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
67
	"include/ITALog.h"
Jonas Stienen's avatar
Jonas Stienen committed
68 69 70 71
	"include/ITANumericUtils.h"
	"include/ITASampleBuffer.h"
	"include/ITASampleFrame.h"
	"include/ITASampleTypeConversion.h"
72
	"include/ITASimpleConvolution.h"
Jonas Stienen's avatar
Jonas Stienen committed
73 74 75 76 77 78 79 80 81 82
	"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"
83
	"src/ITABlockMath.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
84 85 86 87 88 89
	"src/ITABufferedAudioFileWriter.cpp"
	"src/ITAClock.cpp"
	"src/ITACriticalSection.cpp"
	"src/ITACriticalSectionImpl.h"
	"src/ITACriticalSectionPosixImpl.h"
	"src/ITACriticalSectionWin32Impl.h"
90
	"src/ITADebug.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
91 92 93 94
	"src/ITAEndianness.cpp"
	"src/ITAException.cpp"
	"src/ITAFade.cpp"
	"src/ITAFileSystemUtils.cpp"
95
	"src/ITAHDFTSpectra.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
96
	"src/ITAHDFTSpectrum.cpp"
Dipl.-Ing. Jonas Stienen's avatar
Dipl.-Ing. Jonas Stienen committed
97
	"src/ITALog.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
98 99 100 101
	"src/ITANumericUtils.cpp"
	"src/ITASampleBuffer.cpp"
	"src/ITASampleFrame.cpp"
	"src/ITASampleTypeConversion.cpp"
102
	"src/ITASimpleConvolution.cpp"
Jonas Stienen's avatar
Jonas Stienen committed
103 104 105 106 107
	"src/ITAStopWatch.cpp"
	"src/ITAWinPCClock.cpp"
	"src/spline.cpp"
	)

js908001's avatar
js908001 committed
108 109 110

# Win32 implementations
if( WIN32 )
Jonas Stienen's avatar
Jonas Stienen committed
111 112
	list( APPEND ITABaseHeader "include/ITAHPT.h" "include/ITAMutex.h" "include/ITATimer.h" )
	list( APPEND ITABaseSources "src/ITAHPT.cpp" "src/ITAMutex.cpp" "src/ITATimer.cpp" )
113
else()
Fabian Schlieper's avatar
Fabian Schlieper committed
114 115 116
	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" )
117
endif()
js908001's avatar
js908001 committed
118

Jonas Stienen's avatar
Jonas Stienen committed
119

Jonas Stienen's avatar
Jonas Stienen committed
120 121 122 123 124 125 126 127 128 129 130 131 132
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"
		)
133
		add_definitions( -DITABASE_WITH_SNDFILE )
134
endif()
Jonas Stienen's avatar
Jonas Stienen committed
135 136 137 138 139 140


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
141
else()
Jonas Stienen's avatar
Jonas Stienen committed
142
	set( ITABaseSources "${ITABaseSources}" "src/ITAFastMathImpl.cpp" )
143
endif()
Jonas Stienen's avatar
Jonas Stienen committed
144 145

if( ITA_BASE_WITH_OLD_ATOMICS )
146
	set( ITABaseHeader "${ITABaseHeader}" "include/ITAAtomicOps.h" "include/ITAAtomicPrimitives.h" )
Jonas Stienen's avatar
Jonas Stienen committed
147 148 149 150 151
	if( WIN32 )
		set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsWin32Impl.cpp" )
	else( WIN32 )
		set( ITABaseSources "${ITABaseSources}" "src/ITAAtomicOpsGCCBuiltinsImpl.cpp" )
	endif( WIN32 )
152
endif()
Jonas Stienen's avatar
Jonas Stienen committed
153

154 155 156
if( ITA_BASE_WITH_OLD_RAVEN_OPS )
	set( ITABaseHeader "${ITABaseHeader}" "include/ITAOps.h" )
	set( ITABaseSources "${ITABaseSources}" "src/ITAOps.cpp" )
157
endif()
158

Jonas Stienen's avatar
Jonas Stienen committed
159 160
if( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS )
	add_definitions( -DPCRE_STATIC )
161 162 163 164 165
	list( APPEND ITABaseHeader "include/ITAConfigUtils.h" )
	list( APPEND ITABaseSources "src/ITAStringUtilsPCRE.cpp" "src/ITAConfigUtils.cpp" )
else()
	list( APPEND ITABaseSources "src/ITAStringUtils.cpp" )
endif()
Jonas Stienen's avatar
Jonas Stienen committed
166

Fabian Schlieper's avatar
Fabian Schlieper committed
167

Jonas Stienen's avatar
Jonas Stienen committed
168 169 170 171

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." )
172
	endif()
Jonas Stienen's avatar
Jonas Stienen committed
173
	list( APPEND ITABaseSources "src/ITAConfigUtilsWin32Impl.cpp" )
174
endif()
Jonas Stienen's avatar
Jonas Stienen committed
175

176

177 178 179 180
# jst: necessary?
#if( ITA_VISTA_BUILD_STATIC )
#	add_definitions( -DVISTABASE_STATIC -DVISTAMATH_STATIC -DVISTAASPECTS_STATIC -DVISTATOOLS_STATIC -DVISTAINTERPROCCOMM_STATIC )
#endif()
181

182
# ITA defaults to shared library build mode, so extra definition is required if you want to build against a static library
183
if( NOT ITA_CORE_LIBS_BUILD_STATIC )
184
	add_definitions( -DITA_BASE_EXPORT )
185
else()
186
	add_definitions( -DITA_BASE_STATIC )
187
endif()
Jonas Stienen's avatar
Jonas Stienen committed
188 189


Fabian Schlieper's avatar
Fabian Schlieper committed
190 191 192 193
if( NOT WIN32 )
	add_definitions( -std=gnu++11 )
endif()

Jonas Stienen's avatar
Jonas Stienen committed
194
# linker
195
add_library( ITABase ${ITABaseHeader} ${ITABaseSources} )
Jonas Stienen's avatar
Jonas Stienen committed
196 197 198 199 200 201 202 203 204 205 206 207 208 209
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
210 211 212 213
if( ITA_CORE_LIBS_WITH_TESTS )
	set( ITABASE_COMMON_BUILD TRUE )
	add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/tests" )
endif()