summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
blob: d0426a75c9a306f4dacd9419a5f3ab8f58707dc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
###########################################
#                                         #
#  (C) 2010 Serghei Amelian               #
#  serghei (DOT) amelian (AT) gmail.com   #
#                                         #
#  Improvements and feedback are welcome  #
#                                         #
#  This file is released under GPL >= 2   #
#                                         #
###########################################

cmake_minimum_required( VERSION 2.8.12 )


##### general package setup

project( arts )

set( ARTS_MAJOR_VERSION 1 )
set( ARTS_MINOR_VERSION 5 )
set( ARTS_MICRO_VERSION 10 )
set( ARTS_VERSION "${ARTS_MAJOR_VERSION}.${ARTS_MINOR_VERSION}.${ARTS_MICRO_VERSION}" )


##### include essential cmake modules

include( FindPkgConfig            )
include( CheckFunctionExists      )
include( CheckSymbolExists        )
include( CheckIncludeFile         )
include( CheckIncludeFiles        )
include( CheckLibraryExists       )
include( CheckPrototypeDefinition )
include( CheckCSourceCompiles     )

##### include our cmake modules

set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" )
include( TDEMacros )


##### setup install paths

tde_setup_install_path( EXEC_INSTALL_PREFIX   "${CMAKE_INSTALL_PREFIX}" )
tde_setup_install_path( BIN_INSTALL_DIR       "${EXEC_INSTALL_PREFIX}/bin"  )
tde_setup_install_path( LIB_INSTALL_DIR       "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" )
tde_setup_install_path( INCLUDE_INSTALL_DIR   "${CMAKE_INSTALL_PREFIX}/include/${CMAKE_PROJECT_NAME}" )
tde_setup_install_path( PKGCONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/pkgconfig" )


##### optional stuff

option( WITH_ALL_OPTIONS    "Enable all optional support" ON )
option( WITH_GCC_VISIBILITY "Enable fvisibility and fvisibility-inlines-hidden" ${WITH_ALL_OPTIONS} )
option( WITH_ALSA           "Enable ALSA support"                               ${WITH_ALL_OPTIONS} )
option( WITH_AUDIOFILE      "Enable audiofile (wav) support"                    ${WITH_ALL_OPTIONS} )
option( WITH_VORBIS         "Enable Ogg/Vorbis support"                         ${WITH_ALL_OPTIONS} )
option( WITH_MAD            "Enable MAD mp3 decoder support"                    ${WITH_ALL_OPTIONS} )
option( WITH_ESOUND         "Enable ESOUND support"                             ${WITH_ALL_OPTIONS} )
option( WITH_JACK           "Enable JACK support"                               ${WITH_ALL_OPTIONS} )
option( WITH_SNDIO          "Enable SNDIO support"                              OFF )
option( WITH_NAS            "Enable Network Audio System support"               ${WITH_ALL_OPTIONS} )
option( WITH_OSS            "Enable Open Sound System support"                  OFF )
option( WITH_TOSS           "Enable Threaded Open Sound System support"         OFF )


##### user requested modules

option( BUILD_ALL          "Build all" ON )
option( BUILD_DOC          "Build documentation" ${BUILD_ALL} )
option( BUILD_TRANSLATIONS "Build translations"  ${BUILD_ALL} )


##### configure checks

include( ConfigureChecks.cmake )


###### global compiler settings 

add_definitions( -DHAVE_CONFIG_H )

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" )
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" )


##### directories

add_subdirectory( libltdl     )
add_subdirectory( mcop        )
add_subdirectory( mcopidl     )
add_subdirectory( flow        )
#add_subdirectory( mcop_mt     )
#add_subdirectory( soundserver )
#add_subdirectory( artsc       )
#add_subdirectory( gmcop       )
#add_subdirectory( qtmcop      )

tde_conditional_add_subdirectory( BUILD_DOC doc )
#tde_conditional_add_subdirectory( BUILD_TRANSLATIONS translations )


##### write configure files

configure_file( config.h.cmake config.h @ONLY )


##### write pkgconfig file ######################

set( PC_LIB_REQUIRE "" )
if( WITH_ALSA )
  list( APPEND PC_LIB_REQUIRE "alsa" )
endif( WITH_ALSA )
if( WITH_AUDIOFILE )
  list( APPEND PC_LIB_REQUIRE "audiofile" )
endif( WITH_AUDIOFILE )
if( WITH_VORBIS )
  list( APPEND PC_LIB_REQUIRE "vorbis" )
  list( APPEND PC_LIB_REQUIRE "vorbisfile" )
endif( WITH_VORBIS )
if( WITH_MAD )
  list( APPEND PC_LIB_REQUIRE "mad" )
endif( WITH_MAD )
if( WITH_ESOUND )
  list( APPEND PC_LIB_REQUIRE "esound" )
endif( WITH_ESOUND )
if( WITH_JACK )
  list( APPEND PC_LIB_REQUIRE "jack" )
endif( WITH_JACK )

list( LENGTH PC_LIB_REQUIRE PC_LIB_REQUIRES_FOUND )
if( PC_LIB_REQUIRES_FOUND GREATER 0 )
  string( REPLACE ";" " " PC_LIB_REQUIRES "Requires: ${PC_LIB_REQUIRE}" )
else( )
  set( PC_LIB_REQUIRES "" )
endif( )

string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_EXEC_PREFIX ${EXEC_INSTALL_PREFIX} )
string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_INCLUDE_DIR ${INCLUDE_INSTALL_DIR} )
string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_LIB_DIR ${LIB_INSTALL_DIR} )
configure_file( arts.pc.cmake arts.pc @ONLY )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/arts.pc DESTINATION ${PKGCONFIG_INSTALL_DIR} )