Aufgrund einer Konfigurationsänderung wird die GitLab Registry ab 10 Uhr nur Read Only zur Verfügung stehen. / Due to a configuration change, the GitLab Registry will be available for read-only access from 10am.

CMakeLists.txt 6.69 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
if( ITA_BASE_WITH_OLD_RAVEN_OPS )
155 156 157
	if( NOT ITA_BASE_WITH_CONFIG_OLD_IMPL )
		message( FATAL_ERROR "ITABase old RAVEN ops requires regular expressions and old config implementation. Please activate." )
	endif()
158 159
	set( ITABaseHeader "${ITABaseHeader}" "include/ITAOps.h" )
	set( ITABaseSources "${ITABaseSources}" "src/ITAOps.cpp" )
160
endif()
161

Jonas Stienen's avatar
Jonas Stienen committed
162 163
if( VPCRE_FOUND AND ITA_BASE_WITH_REGULAR_EXPRESSIONS )
	add_definitions( -DPCRE_STATIC )
164
	list( APPEND ITABaseSources "src/ITAStringUtilsPCRE.cpp" )
165 166 167
else()
	list( APPEND ITABaseSources "src/ITAStringUtils.cpp" )
endif()
Jonas Stienen's avatar
Jonas Stienen committed
168

Fabian Schlieper's avatar
Fabian Schlieper committed
169

Jonas Stienen's avatar
Jonas Stienen committed
170 171 172 173

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." )
174
	endif()
175 176
	list( APPEND ITABaseHeader "include/ITAConfigUtils.h" )
	list( APPEND ITABaseSources "src/ITAConfigUtils.cpp" "src/ITAConfigUtilsWin32Impl.cpp" )
177
endif()
Jonas Stienen's avatar
Jonas Stienen committed
178

179

180 181 182 183
# jst: necessary?
#if( ITA_VISTA_BUILD_STATIC )
#	add_definitions( -DVISTABASE_STATIC -DVISTAMATH_STATIC -DVISTAASPECTS_STATIC -DVISTATOOLS_STATIC -DVISTAINTERPROCCOMM_STATIC )
#endif()
184

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


Fabian Schlieper's avatar
Fabian Schlieper committed
193 194 195 196
if( NOT WIN32 )
	add_definitions( -std=gnu++11 )
endif()

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