Merge lp:~vibhavp/ubuntu/saucy/csound/merge-from-debian into lp:ubuntu/saucy/csound

Proposed by Vibhav Pant
Status: Merged
Merge reported by: Sebastien Bacher
Merged at revision: not available
Proposed branch: lp:~vibhavp/ubuntu/saucy/csound/merge-from-debian
Merge into: lp:ubuntu/saucy/csound
Diff against target: 5640 lines (+48/-5348)
24 files modified
.pc/0000-backported-cmake-additions.diff/Opcodes/CMakeLists.txt (+0/-161)
.pc/0003-csoundac.patch/frontends/CsoundAC/CMakeLists.txt (+0/-132)
.pc/0004-swig-java-package.patch/interfaces/CMakeLists.txt (+0/-148)
.pc/1000-csoundac-cmake-bugfix.patch/frontends/CsoundAC/CMakeLists.txt (+0/-134)
.pc/2000-avoid-nonfree-scansyn-plugin.diff/Opcodes/CMakeLists.txt (+0/-160)
.pc/2001-lua-link.diff/frontends/CsoundAC/CMakeLists.txt (+0/-133)
.pc/2001-lua-link.diff/interfaces/CMakeLists.txt (+0/-149)
.pc/2004-fix-gettext.diff/Top/getstring.c (+0/-168)
.pc/2007-apidoc-dotpath.patch/Doxyfile (+0/-1522)
.pc/2008-apidoc-listings-pkg.patch/refman_header.tex (+0/-158)
.pc/2013-no-rawwave-defined.diff/Opcodes/stk/stkOpcodes.cpp (+0/-723)
.pc/2014-cmake-libsndfile-hack.patch/CMakeLists.txt (+0/-856)
.pc/2020-libpthread-underlinkage.patch/CMakeLists.txt (+0/-864)
.pc/applied-patches (+0/-12)
CMakeLists.txt (+1/-9)
Doxyfile (+1/-1)
Opcodes/CMakeLists.txt (+6/-1)
Opcodes/stk/stkOpcodes.cpp (+13/-7)
Top/getstring.c (+4/-1)
debian/changelog (+13/-0)
debian/rules (+4/-0)
frontends/CsoundAC/CMakeLists.txt (+4/-5)
interfaces/CMakeLists.txt (+2/-3)
refman_header.tex (+0/-1)
To merge this branch: bzr merge lp:~vibhavp/ubuntu/saucy/csound/merge-from-debian
Reviewer Review Type Date Requested Status
Sebastien Bacher Approve
Ubuntu branches Pending
Review via email: mp+162768@code.launchpad.net
To post a comment you must log in.
30. By Vibhav Pant

* Merge from Debian unstable. Remaining Changes:
  - Added missing pthread lib to link, fixing FTBFS.

Revision history for this message
Sebastien Bacher (seb128) wrote :

thanks for your work

review: Approve
Revision history for this message
Sebastien Bacher (seb128) wrote :

could you also maybe send that patch/diff to debian so we could sync with them again later on?

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed directory '.pc/0000-backported-cmake-additions.diff'
=== removed directory '.pc/0000-backported-cmake-additions.diff/Opcodes'
=== removed file '.pc/0000-backported-cmake-additions.diff/Opcodes/CMakeLists.txt'
--- .pc/0000-backported-cmake-additions.diff/Opcodes/CMakeLists.txt 2012-06-16 10:01:58 +0000
+++ .pc/0000-backported-cmake-additions.diff/Opcodes/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,161 +0,0 @@
1option(BUILD_CHUA_OPCODES "Build the chua opcodes (requires boost)" ON)
2option(BUILD_DSSI_OPCODES "Build the DSSI opcodes" ON)
3option(BUILD_FLUID_OPCODES "Build the fluidsynth opcodes" ON)
4option(BUILD_JACK_OPCODES "Build the JACK related opcodes" ON)
5option(BUILD_LINEAR_ALGEBRA_OPCODES "Build the Linear Algebra Opcodes" ON)
6option(BUILD_OSC_OPCODES "Build the OSC Opcodes" ON)
7option(BUILD_IMAGE_OPCODES "Build the image opcodes" ON)
8option(BUILD_PYTHON_OPCODES "Build the Python opcodes" ON)
9option(BUILD_LUA_OPCODES "Build the Lua opcodes" ON)
10option(BUILD_WIIMOTE_OPCODES "Build the Lua opcodes" ON)
11
12find_package(Boost)
13check_include_file(ladspa.h LADSPA_H)
14check_include_file(fluidsynth.h FLUIDSYNTH_H)
15find_library(JACK_LIBRARY jack)
16find_library(JACKDMP_LIBRARY jackdmp)
17check_include_file(jack/jack.h JACK_HEADER)
18check_include_file_cxx(gmm/gmm.h GMM_HEADER)
19check_include_file(lo/lo.h OSC_HEADER)
20find_package(PNG)
21find_package(PythonLibs)
22find_package(Lua51)
23check_include_file(wiiuse.h WIIUSE_H)
24find_library(WIIUSE_LIB wiiuse)
25
26## OPCODE LIBS WITH NO EXTERNAL DEPENDENCIES ##
27
28make_plugin(mixer mixer.cpp)
29make_plugin(signalflowgraph signalflowgraph.cpp)
30
31make_plugin(ampmidid ampmidid.cpp)
32make_plugin(cs_date date.c)
33make_plugin(system_call system_call.c)
34make_plugin(doppler doppler.cpp)
35make_plugin(fractalnoise tl/fractalnoise.cpp)
36
37make_plugin(fareygen fareygen.c)
38
39make_plugin(cellular cellular.c)
40
41# temporarily do not build on Windows until these opcodes are fixed
42# to compile
43if(NOT WIN32)
44 make_plugin(udprecv sockrecv.c)
45 make_plugin(udpsend socksend.c)
46
47endif()
48
49set(scansyn_SRCS
50 scansyn.c scansynx.c)
51make_plugin(scansyn "${scansyn_SRCS}" m)
52
53if(UNIX)
54 make_plugin(control control.c)
55endif()
56
57if(LINUX)
58 make_plugin(urandom urandom.c)
59endif()
60
61## OPCODES WITH EXTERNAL DEPENDENCIES ##
62
63check_deps(BUILD_CHUA_OPCODES Boost_FOUND)
64if(BUILD_CHUA_OPCODES)
65 include_directories(${Boost_INCLUDE_DIRS})
66 make_plugin(chua chua/ChuaOscillator.cpp)
67endif()
68
69check_deps(BUILD_DSSI_OPCODES LADSPA_H)
70if(BUILD_DSSI_OPCODES)
71 set(dssi_SRC dssi4cs/src/load.c dssi4cs/src/dssi4cs.c)
72 make_plugin(dssi4cs "${dssi_SRC}" dl)
73endif()
74
75check_deps(BUILD_FLUID_OPCODES FLUIDSYNTH_H)
76if(BUILD_FLUID_OPCODES)
77 make_plugin(fluidOpcodes fluidOpcodes/fluidOpcodes.cpp fluidsynth)
78endif()
79
80set(JACK_LIB (JACK_LIBRARY OR JACKDMP_LIBRARY))
81check_deps(BUILD_JACK_OPCODES JACK_HEADER JACK_LIB)
82if(BUILD_JACK_OPCODES)
83 set(jack_LIBS ${PTHREAD_LIBRARY})
84 if(JACKDMP_LIBRARY)
85 list(APPEND jack_LIBS ${JACKDMP_LIBRARY})
86 else()
87 list(APPEND jack_LIBS ${JACK_LIBRARY})
88 endif()
89 make_plugin(jacko jacko.cpp "${jack_LIBS}")
90 make_plugin(jackTransport jackTransport.c "${jack_LIBS}")
91endif()
92
93check_deps(BUILD_LINEAR_ALGEBRA_OPCODES GMM_HEADER)
94if(BUILD_LINEAR_ALGEBRA_OPCODES)
95 make_plugin(linear_algebra linear_algebra.cpp)
96endif()
97
98check_deps(BUILD_OSC_OPCODES OSC_HEADER)
99if(BUILD_OSC_OPCODES)
100 make_plugin(osc OSC.c)
101 target_link_libraries(osc lo pthread)
102endif()
103
104check_deps(BUILD_IMAGE_OPCODES PNG_FOUND)
105if(BUILD_IMAGE_OPCODES)
106 include_directories(${PNG_INCLUDE_DIR})
107 make_plugin(image imageOpcodes.c "${PNG_LIBRARIES}")
108 set_target_properties(image
109 PROPERTIES COMPILER_FLAGS "${PNG_DEFINITIONS}")
110endif()
111
112check_deps(BUILD_PYTHON_OPCODES PYTHONLIBS_FOUND)
113if(BUILD_PYTHON_OPCODES)
114 include_directories(${PYTHON_INCLUDE_DIRS})
115 make_plugin(py py/pythonopcodes.c ${PYTHON_LIBRARIES})
116endif()
117
118check_deps(BUILD_LUA_OPCODES LUA51_FOUND)
119if(BUILD_LUA_OPCODES)
120 include_directories(${LUA_INCLUDE_DIR})
121 make_plugin(LuaCsound LuaCsound.cpp ${LUA_LIBRARIES})
122endif()
123
124check_deps(BUILD_WIIMOTE_OPCODES WIIUSE_H)
125if(BUILD_WIIMOTE_OPCODES)
126 make_plugin(wiimote wiimote.c ${WIIUSE_LIB})
127endif()
128
129
130# OGG Opcode previously was built only for OLPC
131#if(VORBISFILE_LIBRARY)
132# set(vorbis_LIBS ${libcsound_LIBS} ${VORBISFILE_LIBRARY})
133# make_plugin(ogg ogg.c "${vorbis_LIBS}")
134#endif()
135
136
137
138#set(sfont_FLAGS "")
139
140#if(CMAKE_C_COMPILER MATCHES "gcc")
141# set(sfont_FLAGS ${sfont_FLAGS} -fno-strict-aliasing)
142#endif()
143#if(BIG_ENDIAN)
144# set(sfont_FLAGS ${sfont_FLAGS} -DWORDS_BIGENDIAN)
145#endif()
146#message(STATUS "Compiler flags used for sfont lib: ${sfont_FLAGS}")
147#make_plugin(sfont sfont.c m)
148#set_target_properties(sfont
149# PROPERTIES COMPILER_FLAGS "${sfont_FLAGS}")
150
151
152
153
154#if wiifound==1:
155# WiiEnvironment = pluginEnvironment.Clone()
156# makePlugin(WiiEnvironment, 'wiimote', ['wiimote.c'])
157#if p5gfound==1:
158# P5GEnvironment = pluginEnvironment.Clone()
159# makePlugin(P5GEnvironment, 'p5g', ['p5glove.c'])
160
161add_subdirectory(stk)
1620
=== removed directory '.pc/0003-csoundac.patch'
=== removed directory '.pc/0003-csoundac.patch/frontends'
=== removed directory '.pc/0003-csoundac.patch/frontends/CsoundAC'
=== removed file '.pc/0003-csoundac.patch/frontends/CsoundAC/CMakeLists.txt'
--- .pc/0003-csoundac.patch/frontends/CsoundAC/CMakeLists.txt 2012-06-16 10:01:58 +0000
+++ .pc/0003-csoundac.patch/frontends/CsoundAC/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,132 +0,0 @@
1# Build CsoundAC
2
3option(BUILD_CSOUND_AC "Build CsoundAC extension module for Csound with algorithmic composition (needs C++ interface)" ON)
4option(BUILD_CSOUND_AC_PYTHON_INTERFACE "Build the Csound AC Python interface" ON)
5option(BUILD_CSOUND_AC_LUA_INTERFACE "Build the Csound AC Lua interface" ON)
6
7
8find_package(Boost)
9find_library(MUSICXML_LIBRARY musicxml2)
10find_package(FLTK)
11find_package(SWIG)
12find_package(PythonLibs)
13find_package(Lua51)
14
15check_deps(BUILD_CSOUND_AC Boost_FOUND BUILD_CXX_INTERFACE FLTK_FOUND LIBSNDFILE_LIBRARY)
16check_deps(BUILD_CSOUND_AC_PYTHON_INTERFACE SWIG_FOUND PYTHONLIBS_FOUND)
17check_deps(BUILD_CSOUND_AC_LUA_INTERFACE SWIG_FOUND LUA51_FOUND)
18
19if(BUILD_CSOUND_AC)
20 include_directories(${CMAKE_HOME_DIRECTORY}/interfaces)
21 include_directories(${Boost_INCLUDE_DIRS})
22 include_directories(${FLTK_INCLUDE_DIR})
23 set(libcsoundac_SRCS
24 allegro.cpp
25 allegrord.cpp
26 allegroserial.cpp
27 allegrosmfrd.cpp
28 allegrosmfwr.cpp
29 allegrowr.cpp
30 Cell.cpp
31 ChordLindenmayer.cpp
32 cmake_install.cmake
33 Composition.cpp
34 Conversions.cpp
35 Counterpoint.cpp
36 CounterpointMain.cpp
37 CounterpointNode.cpp
38 Event.cpp
39 Hocket.cpp
40 ImageToScore.cpp
41 Lindenmayer.cpp
42 MCRM.cpp
43 mfmidi.cpp
44 Midifile.cpp
45 MusicModel.cpp
46 Node.cpp
47 Random.cpp
48 Rescale.cpp
49 Score.cpp
50 ScoreModel.cpp
51 ScoreNode.cpp
52 Sequence.cpp
53 Shell.cpp
54 Soundfile.cpp
55 StrangeAttractor.cpp
56 strparse.cpp
57 System.cpp
58 trace.cpp
59 Voicelead.cpp
60 VoiceleadingNode.cpp)
61
62 add_library(libCsoundAC SHARED ${libcsoundac_SRCS})
63 set_target_properties(libCsoundAC PROPERTIES
64 LINK_INTERFACE_LIBRARIES ""
65 SOVERSION ${APIVERSION}
66 OUTPUT_NAME CsoundAC
67 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
68 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
69 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
70 )
71 target_link_libraries(libCsoundAC libcsnd ${FLTK_LIBRARIES} ${LIBSNDFILE_LIBRARY})
72
73 if(MUSICXML_LIBRARY)
74 target_link_libraries(CsoundAC MUSICXML_LIBRARY)
75 endif()
76
77 install(TARGETS libCsoundAC
78 LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
79 ARCHIVE DESTINATION ${LIBRARY_INSTALL_DIR})
80
81 if(SWIG_FOUND)
82 include(${SWIG_USE_FILE})
83 set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
84 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
85 list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
86 endif()
87
88 if(BUILD_CSOUND_AC_PYTHON_INTERFACE)
89 message(STATUS "Building CsoundAC Python interface")
90 find_package(PythonLibs)
91 include_directories(${PYTHON_INCLUDE_PATH})
92 set_source_files_properties(CsoundAC.i
93 PROPERTIES CPLUSPLUS ON
94 SWIG_MODULE_NAME CsoundAC)
95 swig_add_module(CsoundAC python CsoundAC.i)
96 swig_link_libraries(CsoundAC libCsoundAC ${PYTHON_LIBRARIES})
97
98 set_target_properties(${SWIG_MODULE_CsoundAC_REAL_NAME} PROPERTIES
99 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
100 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
101 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
102
103 install(TARGETS ${SWIG_MODULE_CsoundAC_REAL_NAME}
104 LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
105 ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
106 install(FILES ${BUILD_LIB_DIR}/CsoundAC.py
107 DESTINATION ${PYTHON_MODULE_INSTALL_DIR})
108 endif()
109
110 if(BUILD_CSOUND_AC_LUA_INTERFACE)
111 message(STATUS "Building CsoundAC Lua interface")
112 find_package(Lua51)
113 include_directories(${LUA_INCLUDE_DIR})
114
115 SET_SOURCE_FILES_PROPERTIES(luaCsoundAC.i
116 PROPERTIES CPLUSPLUS ON
117 SWIG_MODULE_NAME luaCsoundAC)
118 SWIG_ADD_MODULE(luaCsoundAC lua luaCsoundAC.i)
119 SWIG_LINK_LIBRARIES(luaCsoundAC libCsoundAC ${LUA_LIBRARIES})
120
121 set_target_properties(${SWIG_MODULE_luaCsoundAC_REAL_NAME} PROPERTIES
122 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
123 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
124 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
125 PREFIX "")
126
127 install(TARGETS luaCsoundAC
128 LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
129 ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")
130 endif()
131
132endif()
1330
=== removed directory '.pc/0004-swig-java-package.patch'
=== removed directory '.pc/0004-swig-java-package.patch/interfaces'
=== removed file '.pc/0004-swig-java-package.patch/interfaces/CMakeLists.txt'
--- .pc/0004-swig-java-package.patch/interfaces/CMakeLists.txt 2012-09-28 18:56:24 +0000
+++ .pc/0004-swig-java-package.patch/interfaces/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,148 +0,0 @@
1## Language bindings ##
2
3# C++ INTERFACE LIBRARY
4
5option(BUILD_CXX_INTERFACE "Build the C++ interface library" ON)
6option(BUILD_PYTHON_INTERFACE "Build the Python interface (needs BUILD_CXX_INTERFACE)" ON)
7option(BUILD_JAVA_INTERFACE "Build the Java interface (needs BUILD_CXX_INTERFACE)" ON)
8option(BUILD_LUA_INTERFACE "Build the Lua interface (needs BUILD_CXX_INTERFACE)" ON)
9
10if(BUILD_CXX_INTERFACE)
11 message(STATUS "Building C++ interface library")
12 set(libcsnd_SRCS
13 CppSound.cpp
14 CsoundFile.cpp
15 Soundfile.cpp
16 csPerfThread.cpp
17 cs_glue.cpp
18 filebuilding.cpp)
19 set(libcsnd_LIBS ${LIBSNDFILE_LIBRARY})
20 set(libcsnd_CFLAGS "")
21 list(APPEND libcsnd_LIBS ${CSOUNDLIB})
22
23 add_library(libcsnd SHARED ${libcsnd_SRCS})
24 target_link_libraries(libcsnd ${libcsnd_LIBS})
25 set_target_properties(libcsnd PROPERTIES
26 LINK_INTERFACE_LIBRARIES ""
27 SOVERSION ${APIVERSION}
28 OUTPUT_NAME csnd
29 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
30 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
31 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
32 )
33 if(${libcsnd_CFLAGS})
34 add_compiler_flags(${libcsnd_CFLAGS} TARGETS libcsnd)
35 endif()
36
37 install(TARGETS libcsnd
38 LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
39 ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
40
41endif()
42
43
44# SWIG INTERFACES
45FIND_PACKAGE(SWIG)
46FIND_PACKAGE(PythonLibs)
47FIND_PACKAGE(JNI)
48FIND_PACKAGE(Java)
49FIND_PACKAGE(Lua51)
50
51check_deps(BUILD_PYTHON_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE PYTHONLIBS_FOUND)
52check_deps(BUILD_JAVA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE JNI_FOUND JAVA_FOUND)
53check_deps(BUILD_LUA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE LUA51_FOUND)
54
55if(BUILD_PYTHON_INTERFACE OR BUILD_JAVA_INTERFACE OR BUILD_LUA_INTERFACE)
56
57 include(${SWIG_USE_FILE})
58
59 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
60
61 set(CMAKE_SWIG_FLAGS ${libcsound_CFLAGS})
62 list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
63
64 if(USE_DOUBLE)
65 list(APPEND CMAKE_SWIG_FLAGS "-DUSE_DOUBLE")
66 endif(USE_DOUBLE)
67
68 set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
69
70 if(BUILD_PYTHON_INTERFACE)
71 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
72
73 set(swigpython_LIBS ${PYTHON_LIBRARIES} ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd)
74
75 SET_SOURCE_FILES_PROPERTIES(python_interface.i
76 PROPERTIES CPLUSPLUS ON
77 SWIG_MODULE_NAME csnd)
78 SWIG_ADD_MODULE(csnd python python_interface.i)
79 SWIG_LINK_LIBRARIES(csnd ${swigpython_LIBS})
80
81 set_target_properties(${SWIG_MODULE_csnd_REAL_NAME} PROPERTIES
82 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
83 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
84 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
85
86 install(TARGETS ${SWIG_MODULE_csnd_REAL_NAME}
87 LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
88 ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
89 install(FILES ${BUILD_LIB_DIR}/csnd.py
90 DESTINATION ${PYTHON_MODULE_INSTALL_DIR})
91
92 endif()
93
94 if(BUILD_JAVA_INTERFACE)
95 # The java package needs this unset or it will litter us with .java files
96 unset(CMAKE_SWIG_OUTDIR)
97 INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS})
98 set(swigjava_LIBS ${JNI_LIBRARIES} ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd)
99
100 SET_SOURCE_FILES_PROPERTIES(java_interface.i PROPERTIES CPLUSPLUS ON)
101 SET_SOURCE_FILES_PROPERTIES(java_interface.i SWIG_FLAGS "-package" "csnd")
102 SWIG_ADD_MODULE(_jcsound java java_interface.i)
103 SWIG_LINK_LIBRARIES(_jcsound ${swigjava_LIBS})
104
105 ADD_CUSTOM_COMMAND(TARGET _jcsound
106 POST_BUILD
107 COMMAND cmake -E make_directory ./csnd
108 COMMAND ${JAVA_COMPILE} *.java -d ./csnd
109 COMMAND ${JAVA_ARCHIVE} cf ../csnd.jar csnd
110 COMMENT "Building JAVA package csnd.jar")
111
112 set_target_properties(_jcsound PROPERTIES
113 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
114 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
115 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
116
117 install(TARGETS _jcsound
118 LIBRARY DESTINATION "${JAVA_MODULE_INSTALL_DIR}"
119 ARCHIVE DESTINATION "${JAVA_MODULE_INSTALL_DIR}")
120 install(FILES ${BUILD_LIB_DIR}/csnd.jar
121 DESTINATION ${JAVA_MODULE_INSTALL_DIR})
122
123 endif()
124
125 if(BUILD_LUA_INTERFACE)
126 INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
127
128 set(swiglua_LIBS ${LUA_LIBRARIES} ${CSOUNDLIB} libcsnd)
129
130 SET_SOURCE_FILES_PROPERTIES(lua_interface.i
131 PROPERTIES CPLUSPLUS ON
132 SWIG_MODULE_NAME luaCsnd)
133 SWIG_ADD_MODULE(luaCsnd lua lua_interface.i)
134 SWIG_LINK_LIBRARIES(luaCsnd ${swiglua_LIBS})
135
136 set_target_properties(${SWIG_MODULE_luaCsnd_REAL_NAME} PROPERTIES
137 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
138 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
139 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
140 PREFIX "")
141
142 install(TARGETS luaCsnd
143 LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
144 ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")
145
146 endif()
147
148endif()
1490
=== removed directory '.pc/1000-csoundac-cmake-bugfix.patch'
=== removed directory '.pc/1000-csoundac-cmake-bugfix.patch/frontends'
=== removed directory '.pc/1000-csoundac-cmake-bugfix.patch/frontends/CsoundAC'
=== removed file '.pc/1000-csoundac-cmake-bugfix.patch/frontends/CsoundAC/CMakeLists.txt'
--- .pc/1000-csoundac-cmake-bugfix.patch/frontends/CsoundAC/CMakeLists.txt 2012-06-16 10:01:58 +0000
+++ .pc/1000-csoundac-cmake-bugfix.patch/frontends/CsoundAC/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,134 +0,0 @@
1# Build CsoundAC
2
3option(BUILD_CSOUND_AC "Build CsoundAC extension module for Csound with algorithmic composition (needs C++ interface)" ON)
4option(BUILD_CSOUND_AC_PYTHON_INTERFACE "Build the Csound AC Python interface" ON)
5option(BUILD_CSOUND_AC_LUA_INTERFACE "Build the Csound AC Lua interface" ON)
6
7
8find_package(Boost)
9find_library(MUSICXML_LIBRARY musicxml2)
10find_package(FLTK)
11find_package(SWIG)
12find_package(PythonLibs)
13find_package(Lua51)
14
15check_deps(BUILD_CSOUND_AC Boost_FOUND BUILD_CXX_INTERFACE FLTK_FOUND LIBSNDFILE_LIBRARY)
16check_deps(BUILD_CSOUND_AC_PYTHON_INTERFACE SWIG_FOUND PYTHONLIBS_FOUND)
17check_deps(BUILD_CSOUND_AC_LUA_INTERFACE SWIG_FOUND LUA51_FOUND)
18
19if(BUILD_CSOUND_AC)
20 include_directories(${CMAKE_HOME_DIRECTORY}/interfaces)
21 include_directories(${Boost_INCLUDE_DIRS})
22 include_directories(${FLTK_INCLUDE_DIR})
23 set(libcsoundac_SRCS
24 allegro.cpp
25 allegrord.cpp
26 allegroserial.cpp
27 allegrosmfrd.cpp
28 allegrosmfwr.cpp
29 allegrowr.cpp
30 Cell.cpp
31 ChordLindenmayer.cpp
32 cmake_install.cmake
33 Composition.cpp
34 Conversions.cpp
35 Counterpoint.cpp
36 CounterpointMain.cpp
37 CounterpointNode.cpp
38 Event.cpp
39 Hocket.cpp
40 ImageToScore.cpp
41 Lindenmayer.cpp
42 MCRM.cpp
43 mfmidi.cpp
44 Midifile.cpp
45 MusicModel.cpp
46 Node.cpp
47 Random.cpp
48 Rescale.cpp
49 Score.cpp
50 ScoreModel.cpp
51 ScoreNode.cpp
52 Sequence.cpp
53 Shell.cpp
54 Soundfile.cpp
55 StrangeAttractor.cpp
56 strparse.cpp
57 System.cpp
58 trace.cpp
59 Voicelead.cpp
60 VoiceleadingNode.cpp)
61
62 add_library(libCsoundAC SHARED ${libcsoundac_SRCS})
63 set_target_properties(libCsoundAC PROPERTIES
64 LINK_INTERFACE_LIBRARIES ""
65 SOVERSION ${APIVERSION}
66 OUTPUT_NAME CsoundAC
67 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
68 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
69 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
70 )
71 target_link_libraries(libCsoundAC libcsnd ${FLTK_LIBRARIES} ${LIBSNDFILE_LIBRARY} ${CSOUNDLIB})
72 add_compiler_flags(-pthread TARGETS libCsoundAC)
73 add_compiler_flags(-pthread TARGETS libCsoundAC LINKER)
74
75 if(MUSICXML_LIBRARY)
76 target_link_libraries(CsoundAC MUSICXML_LIBRARY)
77 endif()
78
79 install(TARGETS libCsoundAC
80 LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
81 ARCHIVE DESTINATION ${LIBRARY_INSTALL_DIR})
82
83 if(SWIG_FOUND)
84 include(${SWIG_USE_FILE})
85 set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
86 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
87 list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
88 endif()
89
90 if(BUILD_CSOUND_AC_PYTHON_INTERFACE)
91 message(STATUS "Building CsoundAC Python interface")
92 find_package(PythonLibs)
93 include_directories(${PYTHON_INCLUDE_PATH})
94 set_source_files_properties(CsoundAC.i
95 PROPERTIES CPLUSPLUS ON
96 SWIG_MODULE_NAME CsoundAC)
97 swig_add_module(CsoundAC python CsoundAC.i)
98 swig_link_libraries(CsoundAC libCsoundAC ${PYTHON_LIBRARIES} libcsnd ${CSOUNDLIB})
99
100 set_target_properties(${SWIG_MODULE_CsoundAC_REAL_NAME} PROPERTIES
101 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
102 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
103 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
104
105 install(TARGETS ${SWIG_MODULE_CsoundAC_REAL_NAME}
106 LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
107 ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
108 install(FILES ${BUILD_LIB_DIR}/CsoundAC.py
109 DESTINATION ${PYTHON_MODULE_INSTALL_DIR})
110 endif()
111
112 if(BUILD_CSOUND_AC_LUA_INTERFACE)
113 message(STATUS "Building CsoundAC Lua interface")
114 find_package(Lua51)
115 include_directories(${LUA_INCLUDE_DIR})
116
117 SET_SOURCE_FILES_PROPERTIES(luaCsoundAC.i
118 PROPERTIES CPLUSPLUS ON
119 SWIG_MODULE_NAME luaCsoundAC)
120 SWIG_ADD_MODULE(luaCsoundAC lua luaCsoundAC.i)
121 SWIG_LINK_LIBRARIES(luaCsoundAC libCsoundAC ${LUA_LIBRARIES})
122
123 set_target_properties(${SWIG_MODULE_luaCsoundAC_REAL_NAME} PROPERTIES
124 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
125 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
126 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
127 PREFIX "")
128
129 install(TARGETS luaCsoundAC
130 LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
131 ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")
132 endif()
133
134endif()
1350
=== removed directory '.pc/2000-avoid-nonfree-scansyn-plugin.diff'
=== removed directory '.pc/2000-avoid-nonfree-scansyn-plugin.diff/Opcodes'
=== removed file '.pc/2000-avoid-nonfree-scansyn-plugin.diff/Opcodes/CMakeLists.txt'
--- .pc/2000-avoid-nonfree-scansyn-plugin.diff/Opcodes/CMakeLists.txt 2012-04-19 09:26:46 +0000
+++ .pc/2000-avoid-nonfree-scansyn-plugin.diff/Opcodes/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,160 +0,0 @@
1option(BUILD_CHUA_OPCODES "Build the chua opcodes (requires boost)" ON)
2option(BUILD_DSSI_OPCODES "Build the DSSI opcodes" ON)
3option(BUILD_FLUID_OPCODES "Build the fluidsynth opcodes" ON)
4option(BUILD_JACK_OPCODES "Build the JACK related opcodes" ON)
5option(BUILD_LINEAR_ALGEBRA_OPCODES "Build the Linear Algebra Opcodes" ON)
6option(BUILD_OSC_OPCODES "Build the OSC Opcodes" ON)
7option(BUILD_IMAGE_OPCODES "Build the image opcodes" ON)
8option(BUILD_PYTHON_OPCODES "Build the Python opcodes" ON)
9option(BUILD_LUA_OPCODES "Build the Lua opcodes" ON)
10option(BUILD_WIIMOTE_OPCODES "Build the Lua opcodes" ON)
11
12find_package(Boost)
13check_include_file(ladspa.h LADSPA_H)
14check_include_file(fluidsynth.h FLUIDSYNTH_H)
15find_library(JACK_LIBRARY jack)
16find_library(JACKDMP_LIBRARY jackdmp)
17check_include_file(jack/jack.h JACK_HEADER)
18check_include_file_cxx(gmm/gmm.h GMM_HEADER)
19check_include_file(lo/lo.h OSC_HEADER)
20find_package(PNG)
21find_package(PythonLibs)
22find_package(Lua51)
23check_include_file(wiiuse.h WIIUSE_H)
24find_library(WIIUSE_LIB wiiuse)
25
26## OPCODE LIBS WITH NO EXTERNAL DEPENDENCIES ##
27
28make_plugin(mixer mixer.cpp)
29make_plugin(signalflowgraph signalflowgraph.cpp)
30
31make_plugin(ampmidid ampmidid.cpp)
32make_plugin(cs_date date.c)
33make_plugin(system_call system_call.c)
34make_plugin(doppler doppler.cpp)
35make_plugin(fractalnoise tl/fractalnoise.cpp)
36
37make_plugin(fareygen fareygen.c)
38
39make_plugin(cellular cellular.c)
40
41# temporarily do not build on Windows until these opcodes are fixed
42# to compile
43if(NOT WIN32)
44 make_plugin(udprecv sockrecv.c)
45 make_plugin(udpsend socksend.c)
46
47endif()
48
49set(scansyn_SRCS
50 scansyn.c scansynx.c)
51make_plugin(scansyn "${scansyn_SRCS}" m)
52
53if(UNIX)
54 make_plugin(control control.c)
55endif()
56
57if(LINUX)
58 make_plugin(urandom urandom.c)
59endif()
60
61## OPCODES WITH EXTERNAL DEPENDENCIES ##
62
63check_deps(BUILD_CHUA_OPCODES Boost_FOUND)
64if(BUILD_CHUA_OPCODES)
65 include_directories(${Boost_INCLUDE_DIRS})
66 make_plugin(chua chua/ChuaOscillator.cpp)
67endif()
68
69check_deps(BUILD_DSSI_OPCODES LADSPA_H)
70if(BUILD_DSSI_OPCODES)
71 set(dssi_SRC dssi4cs/src/load.c dssi4cs/src/dssi4cs.c)
72 make_plugin(dssi4cs "${dssi_SRC}" dl)
73endif()
74
75check_deps(BUILD_FLUID_OPCODES FLUIDSYNTH_H)
76if(BUILD_FLUID_OPCODES)
77 make_plugin(fluidOpcodes fluidOpcodes/fluidOpcodes.cpp fluidsynth)
78endif()
79
80set(JACK_LIB (JACK_LIBRARY OR JACKDMP_LIBRARY))
81check_deps(BUILD_JACK_OPCODES JACK_HEADER JACK_LIB)
82if(BUILD_JACK_OPCODES)
83 set(jack_LIBS ${PTHREAD_LIBRARY})
84 if(JACKDMP_LIBRARY)
85 list(APPEND jack_LIBS ${JACKDMP_LIBRARY})
86 else()
87 list(APPEND jack_LIBS ${JACK_LIBRARY})
88 endif()
89 make_plugin(jacko jacko.cpp "${jack_LIBS}")
90 make_plugin(jackTransport jackTransport.c "${jack_LIBS}")
91endif()
92
93check_deps(BUILD_LINEAR_ALGEBRA_OPCODES GMM_HEADER)
94if(BUILD_LINEAR_ALGEBRA_OPCODES)
95 make_plugin(linear_algebra linear_algebra.cpp)
96endif()
97
98check_deps(BUILD_OSC_OPCODES OSC_HEADER)
99if(BUILD_OSC_OPCODES)
100 make_plugin(osc OSC.c)
101 target_link_libraries(osc lo pthread)
102endif()
103
104check_deps(BUILD_IMAGE_OPCODES PNG_FOUND)
105if(BUILD_IMAGE_OPCODES)
106 include_directories(${PNG_INCLUDE_DIR})
107 make_plugin(image imageOpcodes.c "${PNG_LIBRARIES}")
108 add_compiler_flags(${PNG_DEFINITIONS} TARGETS image)
109endif()
110
111check_deps(BUILD_PYTHON_OPCODES PYTHONLIBS_FOUND)
112if(BUILD_PYTHON_OPCODES)
113 include_directories(${PYTHON_INCLUDE_DIRS})
114 make_plugin(py py/pythonopcodes.c ${PYTHON_LIBRARIES})
115endif()
116
117check_deps(BUILD_LUA_OPCODES LUA51_FOUND)
118if(BUILD_LUA_OPCODES)
119 include_directories(${LUA_INCLUDE_DIR})
120 make_plugin(LuaCsound LuaCsound.cpp ${LUA_LIBRARIES})
121endif()
122
123check_deps(BUILD_WIIMOTE_OPCODES WIIUSE_H)
124if(BUILD_WIIMOTE_OPCODES)
125 make_plugin(wiimote wiimote.c ${WIIUSE_LIB})
126endif()
127
128
129# OGG Opcode previously was built only for OLPC
130#if(VORBISFILE_LIBRARY)
131# set(vorbis_LIBS ${libcsound_LIBS} ${VORBISFILE_LIBRARY})
132# make_plugin(ogg ogg.c "${vorbis_LIBS}")
133#endif()
134
135
136
137#set(sfont_FLAGS "")
138
139#if(CMAKE_C_COMPILER MATCHES "gcc")
140# set(sfont_FLAGS ${sfont_FLAGS} -fno-strict-aliasing)
141#endif()
142#if(BIG_ENDIAN)
143# set(sfont_FLAGS ${sfont_FLAGS} -DWORDS_BIGENDIAN)
144#endif()
145#message(STATUS "Compiler flags used for sfont lib: ${sfont_FLAGS}")
146#make_plugin(sfont sfont.c m)
147#set_target_properties(sfont
148# PROPERTIES COMPILER_FLAGS "${sfont_FLAGS}")
149
150
151
152
153#if wiifound==1:
154# WiiEnvironment = pluginEnvironment.Clone()
155# makePlugin(WiiEnvironment, 'wiimote', ['wiimote.c'])
156#if p5gfound==1:
157# P5GEnvironment = pluginEnvironment.Clone()
158# makePlugin(P5GEnvironment, 'p5g', ['p5glove.c'])
159
160add_subdirectory(stk)
1610
=== removed directory '.pc/2001-lua-link.diff'
=== removed directory '.pc/2001-lua-link.diff/frontends'
=== removed directory '.pc/2001-lua-link.diff/frontends/CsoundAC'
=== removed file '.pc/2001-lua-link.diff/frontends/CsoundAC/CMakeLists.txt'
--- .pc/2001-lua-link.diff/frontends/CsoundAC/CMakeLists.txt 2012-06-16 10:01:58 +0000
+++ .pc/2001-lua-link.diff/frontends/CsoundAC/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,133 +0,0 @@
1# Build CsoundAC
2
3option(BUILD_CSOUND_AC "Build CsoundAC extension module for Csound with algorithmic composition (needs C++ interface)" ON)
4option(BUILD_CSOUND_AC_PYTHON_INTERFACE "Build the Csound AC Python interface" ON)
5option(BUILD_CSOUND_AC_LUA_INTERFACE "Build the Csound AC Lua interface" ON)
6
7
8find_package(Boost)
9find_library(MUSICXML_LIBRARY musicxml2)
10find_package(FLTK)
11find_package(SWIG)
12find_package(PythonLibs)
13find_package(Lua51)
14
15check_deps(BUILD_CSOUND_AC Boost_FOUND BUILD_CXX_INTERFACE FLTK_FOUND LIBSNDFILE_LIBRARY)
16check_deps(BUILD_CSOUND_AC_PYTHON_INTERFACE SWIG_FOUND PYTHONLIBS_FOUND)
17check_deps(BUILD_CSOUND_AC_LUA_INTERFACE SWIG_FOUND LUA51_FOUND)
18
19if(BUILD_CSOUND_AC)
20 include_directories(${CMAKE_HOME_DIRECTORY}/interfaces)
21 include_directories(${Boost_INCLUDE_DIRS})
22 include_directories(${FLTK_INCLUDE_DIR})
23 set(libcsoundac_SRCS
24 allegro.cpp
25 allegrord.cpp
26 allegroserial.cpp
27 allegrosmfrd.cpp
28 allegrosmfwr.cpp
29 allegrowr.cpp
30 Cell.cpp
31 ChordLindenmayer.cpp
32 Composition.cpp
33 Conversions.cpp
34 Counterpoint.cpp
35 CounterpointMain.cpp
36 CounterpointNode.cpp
37 Event.cpp
38 Hocket.cpp
39 ImageToScore.cpp
40 Lindenmayer.cpp
41 MCRM.cpp
42 mfmidi.cpp
43 Midifile.cpp
44 MusicModel.cpp
45 Node.cpp
46 Random.cpp
47 Rescale.cpp
48 Score.cpp
49 ScoreModel.cpp
50 ScoreNode.cpp
51 Sequence.cpp
52 Shell.cpp
53 Soundfile.cpp
54 StrangeAttractor.cpp
55 strparse.cpp
56 System.cpp
57 trace.cpp
58 Voicelead.cpp
59 VoiceleadingNode.cpp)
60
61 add_library(libCsoundAC SHARED ${libcsoundac_SRCS})
62 set_target_properties(libCsoundAC PROPERTIES
63 LINK_INTERFACE_LIBRARIES ""
64 SOVERSION ${APIVERSION}
65 OUTPUT_NAME CsoundAC
66 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
67 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
68 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
69 )
70 target_link_libraries(libCsoundAC libcsnd ${FLTK_LIBRARIES} ${LIBSNDFILE_LIBRARY} ${CSOUNDLIB})
71 add_compiler_flags(-pthread TARGETS libCsoundAC)
72 add_compiler_flags(-pthread TARGETS libCsoundAC LINKER)
73
74 if(MUSICXML_LIBRARY)
75 target_link_libraries(CsoundAC MUSICXML_LIBRARY)
76 endif()
77
78 install(TARGETS libCsoundAC
79 LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
80 ARCHIVE DESTINATION ${LIBRARY_INSTALL_DIR})
81
82 if(SWIG_FOUND)
83 include(${SWIG_USE_FILE})
84 set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
85 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
86 list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
87 endif()
88
89 if(BUILD_CSOUND_AC_PYTHON_INTERFACE)
90 message(STATUS "Building CsoundAC Python interface")
91 find_package(PythonLibs)
92 include_directories(${PYTHON_INCLUDE_PATH})
93 set_source_files_properties(CsoundAC.i
94 PROPERTIES CPLUSPLUS ON
95 SWIG_MODULE_NAME CsoundAC)
96 swig_add_module(CsoundAC python CsoundAC.i)
97 swig_link_libraries(CsoundAC libCsoundAC ${PYTHON_LIBRARIES} libcsnd ${CSOUNDLIB})
98
99 set_target_properties(${SWIG_MODULE_CsoundAC_REAL_NAME} PROPERTIES
100 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
101 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
102 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
103
104 install(TARGETS ${SWIG_MODULE_CsoundAC_REAL_NAME}
105 LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
106 ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
107 install(FILES ${BUILD_LIB_DIR}/CsoundAC.py
108 DESTINATION ${PYTHON_MODULE_INSTALL_DIR})
109 endif()
110
111 if(BUILD_CSOUND_AC_LUA_INTERFACE)
112 message(STATUS "Building CsoundAC Lua interface")
113 find_package(Lua51)
114 include_directories(${LUA_INCLUDE_DIR})
115
116 SET_SOURCE_FILES_PROPERTIES(luaCsoundAC.i
117 PROPERTIES CPLUSPLUS ON
118 SWIG_MODULE_NAME luaCsoundAC)
119 SWIG_ADD_MODULE(luaCsoundAC lua luaCsoundAC.i)
120 SWIG_LINK_LIBRARIES(luaCsoundAC libCsoundAC ${LUA_LIBRARIES})
121
122 set_target_properties(${SWIG_MODULE_luaCsoundAC_REAL_NAME} PROPERTIES
123 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
124 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
125 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
126 PREFIX "")
127
128 install(TARGETS luaCsoundAC
129 LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
130 ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")
131 endif()
132
133endif()
1340
=== removed directory '.pc/2001-lua-link.diff/interfaces'
=== removed file '.pc/2001-lua-link.diff/interfaces/CMakeLists.txt'
--- .pc/2001-lua-link.diff/interfaces/CMakeLists.txt 2012-09-28 18:56:24 +0000
+++ .pc/2001-lua-link.diff/interfaces/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,149 +0,0 @@
1## Language bindings ##
2
3# C++ INTERFACE LIBRARY
4
5option(BUILD_CXX_INTERFACE "Build the C++ interface library" ON)
6option(BUILD_PYTHON_INTERFACE "Build the Python interface (needs BUILD_CXX_INTERFACE)" ON)
7option(BUILD_JAVA_INTERFACE "Build the Java interface (needs BUILD_CXX_INTERFACE)" ON)
8option(BUILD_LUA_INTERFACE "Build the Lua interface (needs BUILD_CXX_INTERFACE)" ON)
9
10if(BUILD_CXX_INTERFACE)
11 message(STATUS "Building C++ interface library")
12 set(libcsnd_SRCS
13 CppSound.cpp
14 CsoundFile.cpp
15 Soundfile.cpp
16 csPerfThread.cpp
17 cs_glue.cpp
18 filebuilding.cpp)
19 set(libcsnd_LIBS ${LIBSNDFILE_LIBRARY})
20 set(libcsnd_CFLAGS "")
21 list(APPEND libcsnd_LIBS ${CSOUNDLIB})
22
23 add_library(libcsnd SHARED ${libcsnd_SRCS})
24 target_link_libraries(libcsnd ${libcsnd_LIBS})
25 set_target_properties(libcsnd PROPERTIES
26 LINK_INTERFACE_LIBRARIES ""
27 SOVERSION ${APIVERSION}
28 OUTPUT_NAME csnd
29 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
30 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
31 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
32 )
33 if(${libcsnd_CFLAGS})
34 add_compiler_flags(${libcsnd_CFLAGS} TARGETS libcsnd)
35 endif()
36
37 install(TARGETS libcsnd
38 LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
39 ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
40
41endif()
42
43
44# SWIG INTERFACES
45FIND_PACKAGE(SWIG)
46FIND_PACKAGE(PythonLibs)
47FIND_PACKAGE(JNI)
48FIND_PACKAGE(Java)
49FIND_PACKAGE(Lua51)
50
51check_deps(BUILD_PYTHON_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE PYTHONLIBS_FOUND)
52check_deps(BUILD_JAVA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE JNI_FOUND JAVA_FOUND)
53check_deps(BUILD_LUA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE LUA51_FOUND)
54
55if(BUILD_PYTHON_INTERFACE OR BUILD_JAVA_INTERFACE OR BUILD_LUA_INTERFACE)
56
57 include(${SWIG_USE_FILE})
58
59 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
60
61 set(CMAKE_SWIG_FLAGS ${libcsound_CFLAGS})
62 list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
63
64 if(USE_DOUBLE)
65 list(APPEND CMAKE_SWIG_FLAGS "-DUSE_DOUBLE")
66 endif(USE_DOUBLE)
67
68 set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
69
70 if(BUILD_PYTHON_INTERFACE)
71 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
72
73 set(swigpython_LIBS ${PYTHON_LIBRARIES} ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd)
74
75 SET_SOURCE_FILES_PROPERTIES(python_interface.i
76 PROPERTIES CPLUSPLUS ON
77 SWIG_MODULE_NAME csnd)
78 SWIG_ADD_MODULE(csnd python python_interface.i)
79 SWIG_LINK_LIBRARIES(csnd ${swigpython_LIBS})
80
81 set_target_properties(${SWIG_MODULE_csnd_REAL_NAME} PROPERTIES
82 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
83 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
84 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
85
86 install(TARGETS ${SWIG_MODULE_csnd_REAL_NAME}
87 LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
88 ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
89 install(FILES ${BUILD_LIB_DIR}/csnd.py
90 DESTINATION ${PYTHON_MODULE_INSTALL_DIR})
91
92 endif()
93
94 if(BUILD_JAVA_INTERFACE)
95 # The java package needs this unset or it will litter us with .java files
96 unset(CMAKE_SWIG_OUTDIR)
97 INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS})
98 set(swigjava_LIBS ${JNI_LIBRARIES} ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd)
99
100 list(APPEND javaSwigOptions -package csnd)
101 SET_SOURCE_FILES_PROPERTIES(java_interface.i PROPERTIES CPLUSPLUS ON)
102 SET_SOURCE_FILES_PROPERTIES(java_interface.i PROPERTIES SWIG_FLAGS "${javaSwigOptions}")
103 SWIG_ADD_MODULE(_jcsound java java_interface.i)
104 SWIG_LINK_LIBRARIES(_jcsound ${swigjava_LIBS})
105
106 ADD_CUSTOM_COMMAND(TARGET _jcsound
107 POST_BUILD
108 COMMAND cmake -E make_directory ./csnd
109 COMMAND ${JAVA_COMPILE} *.java -d ./csnd
110 COMMAND ${JAVA_ARCHIVE} cf ../csnd.jar csnd
111 COMMENT "Building JAVA package csnd.jar")
112
113 set_target_properties(_jcsound PROPERTIES
114 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
115 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
116 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
117
118 install(TARGETS _jcsound
119 LIBRARY DESTINATION "${JAVA_MODULE_INSTALL_DIR}"
120 ARCHIVE DESTINATION "${JAVA_MODULE_INSTALL_DIR}")
121 install(FILES ${BUILD_LIB_DIR}/csnd.jar
122 DESTINATION ${JAVA_MODULE_INSTALL_DIR})
123
124 endif()
125
126 if(BUILD_LUA_INTERFACE)
127 INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
128
129 set(swiglua_LIBS ${LUA_LIBRARIES} ${CSOUNDLIB} libcsnd)
130
131 SET_SOURCE_FILES_PROPERTIES(lua_interface.i
132 PROPERTIES CPLUSPLUS ON
133 SWIG_MODULE_NAME luaCsnd)
134 SWIG_ADD_MODULE(luaCsnd lua lua_interface.i)
135 SWIG_LINK_LIBRARIES(luaCsnd ${swiglua_LIBS})
136
137 set_target_properties(${SWIG_MODULE_luaCsnd_REAL_NAME} PROPERTIES
138 RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
139 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
140 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
141 PREFIX "")
142
143 install(TARGETS luaCsnd
144 LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
145 ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")
146
147 endif()
148
149endif()
1500
=== removed directory '.pc/2004-fix-gettext.diff'
=== removed directory '.pc/2004-fix-gettext.diff/Top'
=== removed file '.pc/2004-fix-gettext.diff/Top/getstring.c'
--- .pc/2004-fix-gettext.diff/Top/getstring.c 2012-04-19 09:26:46 +0000
+++ .pc/2004-fix-gettext.diff/Top/getstring.c 1970-01-01 00:00:00 +0000
@@ -1,168 +0,0 @@
1/*
2 getstring.c:
3
4 Copyright (C) 1999 John ffitch
5 Jan 27 2005: replaced with new implementation by Istvan Varga
6 Dec 25 2007: added GNU gettext implementation as alternative -- John ffitch
7
8 This file is part of Csound.
9
10 The Csound Library is free software; you can redistribute it
11 and/or modify it under the terms of the GNU Lesser General Public
12 License as published by the Free Software Foundation; either
13 version 2.1 of the License, or (at your option) any later version.
14
15 Csound is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public
21 License along with Csound; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
23 02111-1307 USA
24*/
25
26#include "csoundCore.h"
27
28#ifdef HAVE_DIRENT_H
29# include <sys/types.h>
30# include <dirent.h>
31# if 0 && defined(__MACH__)
32typedef void* DIR;
33DIR opendir(const char *);
34struct dirent *readdir(DIR*);
35int closedir(DIR*);
36# endif
37#endif
38
39#include "namedins.h"
40
41#define CSSTRNGS_VERSION 0x2000
42#include <locale.h>
43#ifndef GNU_GETTEXT
44void init_getstring(void)
45{
46 setlocale(LC_NUMERIC, "C"); /* Ensure C syntax */
47}
48PUBLIC char *csoundLocalizeString(const char *s)
49{
50 return (char*)s;
51}
52/* This stub is needed for backwards compatibility */
53PUBLIC void csoundSetLanguage(cslanguage_t lang_code)
54{
55 return;
56}
57#else
58void init_getstring(void)
59{
60/* s = csoundGetEnv(NULL, "CS_LANG"); */
61/* if (s == NULL) /\* Default locale *\/ */
62/* setlocale (LC_MESSAGES, ""); */
63/* else */
64/* setlocale (LC_MESSAGES, s); /\* Set to particular value *\/ */
65/* textdomain("csound5"); */ /* This is not needed when using dgettext */
66 /* bind_textdomain_codeset("csound5", "UTF-8"); */
67#ifdef never
68 /* This is experimental; where should these be?? */
69 bindtextdomain("csound5", "/home/jpff/Sourceforge/csound/csound5/po");
70#endif
71 setlocale(LC_NUMERIC, "C"); /* Ensure C syntax */
72}
73
74PUBLIC char *csoundLocalizeString(const char *s)
75{
76 return dgettext("csound5", s);
77}
78
79static const char *language_names[] = {"", /* Default */
80 "af", /* CSLANGUAGE_AFRIKAANS */
81 "sq", /* CSLANGUAGE_ALBANIAN */
82 "ar", /* CSLANGUAGE_ARABIC */
83 "hy", /* CSLANGUAGE_ARMENIAN */
84 "as", /* CSLANGUAGE_ASSAMESE */
85 "az", /* CSLANGUAGE_AZERI */
86 "eu", /* CSLANGUAGE_BASQUE */
87 "be", /* CSLANGUAGE_BELARUSIAN */
88 "bn", /* CSLANGUAGE_BENGALI */
89 "bg", /* CSLANGUAGE_BULGARIAN */
90 "ca", /* CSLANGUAGE_CATALAN */
91 "zh", /* CSLANGUAGE_CHINESE */
92 "hr", /* CSLANGUAGE_CROATIAN */
93 "cs", /* CSLANGUAGE_CZECH */
94 "da", /* CSLANGUAGE_DANISH */
95 "nl", /* CSLANGUAGE_DUTCH */
96 "en_GB",
97 "en_US",
98 "et", /* CSLANGUAGE_ESTONIAN */
99 "fo", /* CSLANGUAGE_FAEROESE */
100 "fa", /* CSLANGUAGE_FARSI */
101 "fi", /* CSLANGUAGE_FINNISH */
102 "fr",
103 "ka", /* CSLANGUAGE_GEORGIAN */
104 "de",
105 "el", /* CSLANGUAGE_GREEK */
106 "gu", /* CSLANGUAGE_GUJARATI */
107 "he", /* CSLANGUAGE_HEBREW */
108 "hi", /* CSLANGUAGE_HINDI */
109 "hu", /* CSLANGUAGE_HUNGARIAN */
110 "is", /* CSLANGUAGE_ICELANDIC */
111 "id", /* CSLANGUAGE_INDONESIAN */
112 "it", /* CSLANGUAGE_ITALIAN */
113 "ja", /* CSLANGUAGE_JAPANESE */
114 "kn", /* CSLANGUAGE_KANNADA */
115 "ks", /* CSLANGUAGE_KASHMIRI */
116 "kk", /* CSLANGUAGE_KAZAK */
117 "kok", /* CSLANGUAGE_KONKANI */
118 "ko", /* CSLANGUAGE_KOREAN */
119 "lv", /* CSLANGUAGE_LATVIAN */
120 "lt", /* CSLANGUAGE_LITHUANIAN */
121 "mk", /* CSLANGUAGE_MACEDONIAN */
122 "ms", /* CSLANGUAGE_MALAY */
123 "ml", /* CSLANGUAGE_MALAYALAM */
124 "mni", /* CSLANGUAGE_MANIPURI */
125 "mr", /* CSLANGUAGE_MARATHI */
126 "ne", /* CSLANGUAGE_NEPALI */
127 "no", /* CSLANGUAGE_NORWEGIAN */
128 "or", /* CSLANGUAGE_ORIYA */
129 "pl", /* CSLANGUAGE_POLISH */
130 "pt", /* CSLANGUAGE_PORTUGUESE */
131 "pa", /* CSLANGUAGE_PUNJABI */
132 "ro",
133 "ru", /* CSLANGUAGE_RUSSIAN */
134 "sa", /* CSLANGUAGE_SANSKRIT */
135 "sr", /* CSLANGUAGE_SERBIAN */
136 "sd", /* CSLANGUAGE_SINDHI */
137 "sk", /* CSLANGUAGE_SLOVAK */
138 "sl", /* CSLANGUAGE_SLOVENIAN */
139 "es",
140 "sw", /* CSLANGUAGE_SWAHILI */
141 "sv", /* CSLANGUAGE_SWEDISH */
142 "ta", /* CSLANGUAGE_TAMIL */
143 "tt", /* CSLANGUAGE_TATAR */
144 "te", /* CSLANGUAGE_TELUGU */
145 "th", /* CSLANGUAGE_THAI */
146 "tr", /* CSLANGUAGE_TURKISH */
147 "uk", /* CSLANGUAGE_UKRAINIAN */
148 "ur", /* CSLANGUAGE_URDU */
149 "uz", /* CSLANGUAGE_UZBEK */
150 "vi", /* CSLANGUAGE_VIETNAMES */
151 "es_CO", /* COLUMBIAN */
152 };
153
154PUBLIC void csoundSetLanguage(cslanguage_t lang_code)
155{
156 const char *name;
157 if (lang_code == CSLANGUAGE_DEFAULT)
158 fprintf(stderr, "Localisation of messages is disabled, using "
159 "default language.\n");
160 else {
161 fprintf(stderr, "Setting language of messages to %s ...\n",
162 name=language_names[(int) lang_code]);
163 setlocale(LC_MESSAGES, name);
164 }
165 return;
166}
167#endif
168
1690
=== removed directory '.pc/2007-apidoc-dotpath.patch'
=== removed file '.pc/2007-apidoc-dotpath.patch/Doxyfile'
--- .pc/2007-apidoc-dotpath.patch/Doxyfile 2012-04-19 09:26:46 +0000
+++ .pc/2007-apidoc-dotpath.patch/Doxyfile 1970-01-01 00:00:00 +0000
@@ -1,1522 +0,0 @@
1# Doxyfile 1.5.8
2
3# This file describes the settings to be used by the documentation system
4# doxygen (www.doxygen.org) for a project
5#
6# All text after a hash (#) is considered a comment and will be ignored
7# The format is:
8# TAG = value [value, ...]
9# For lists items can also be appended using:
10# TAG += value [value, ...]
11# Values that contain spaces should be placed between quotes (" ")
12
13#---------------------------------------------------------------------------
14# Project related configuration options
15#---------------------------------------------------------------------------
16
17# This tag specifies the encoding used for all characters in the config file
18# that follow. The default is UTF-8 which is also the encoding used for all
19# text before the first occurrence of this tag. Doxygen uses libiconv (or the
20# iconv built into libc) for the transcoding. See
21# http://www.gnu.org/software/libiconv for the list of possible encodings.
22
23DOXYFILE_ENCODING = UTF-8
24
25# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
26# by quotes) that should identify the project.
27
28PROJECT_NAME = "Csound and CsoundAC API"
29
30# The PROJECT_NUMBER tag can be used to enter a project or revision number.
31# This could be handy for archiving the generated documentation or
32# if some version control system is used.
33
34PROJECT_NUMBER = 5.17
35
36# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
37# base path where the generated documentation will be put.
38# If a relative path is entered, it will be relative to the location
39# where doxygen was started. If left blank the current directory will be used.
40
41OUTPUT_DIRECTORY = doc
42
43# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
44# 4096 sub-directories (in 2 levels) under the output directory of each output
45# format and will distribute the generated files over these directories.
46# Enabling this option can be useful when feeding doxygen a huge amount of
47# source files, where putting all generated files in the same directory would
48# otherwise cause performance problems for the file system.
49
50CREATE_SUBDIRS = NO
51
52# The OUTPUT_LANGUAGE tag is used to specify the language in which all
53# documentation generated by doxygen is written. Doxygen will use this
54# information to generate all constant output in the proper language.
55# The default language is English, other supported languages are:
56# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
57# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
58# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
59# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
60# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
61# Spanish, Swedish, and Ukrainian.
62
63OUTPUT_LANGUAGE = English
64
65# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
66# include brief member descriptions after the members that are listed in
67# the file and class documentation (similar to JavaDoc).
68# Set to NO to disable this.
69
70BRIEF_MEMBER_DESC = YES
71
72# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
73# the brief description of a member or function before the detailed description.
74# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
75# brief descriptions will be completely suppressed.
76
77REPEAT_BRIEF = YES
78
79# This tag implements a quasi-intelligent brief description abbreviator
80# that is used to form the text in various listings. Each string
81# in this list, if found as the leading text of the brief description, will be
82# stripped from the text and the result after processing the whole list, is
83# used as the annotated text. Otherwise, the brief description is used as-is.
84# If left blank, the following values are used ("$name" is automatically
85# replaced with the name of the entity): "The $name class" "The $name widget"
86# "The $name file" "is" "provides" "specifies" "contains"
87# "represents" "a" "an" "the"
88
89ABBREVIATE_BRIEF = NO
90
91# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
92# Doxygen will generate a detailed section even if there is only a brief
93# description.
94
95ALWAYS_DETAILED_SEC = YES
96
97# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
98# inherited members of a class in the documentation of that class as if those
99# members were ordinary class members. Constructors, destructors and assignment
100# operators of the base classes will not be shown.
101
102INLINE_INHERITED_MEMB = YES
103
104# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
105# path before files name in the file list and in the header files. If set
106# to NO the shortest path that makes the file name unique will be used.
107
108FULL_PATH_NAMES = YES
109
110# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
111# can be used to strip a user-defined part of the path. Stripping is
112# only done if one of the specified strings matches the left-hand part of
113# the path. The tag can be used to show relative paths in the file list.
114# If left blank the directory from which doxygen is run is used as the
115# path to strip.
116
117STRIP_FROM_PATH =
118
119# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
120# the path mentioned in the documentation of a class, which tells
121# the reader which header file to include in order to use a class.
122# If left blank only the name of the header file containing the class
123# definition is used. Otherwise one should specify the include paths that
124# are normally passed to the compiler using the -I flag.
125
126STRIP_FROM_INC_PATH =
127
128# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
129# (but less readable) file names. This can be useful is your file systems
130# doesn't support long names like on DOS, Mac, or CD-ROM.
131
132SHORT_NAMES = NO
133
134# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
135# will interpret the first line (until the first dot) of a JavaDoc-style
136# comment as the brief description. If set to NO, the JavaDoc
137# comments will behave just like regular Qt-style comments
138# (thus requiring an explicit @brief command for a brief description.)
139
140JAVADOC_AUTOBRIEF = YES
141
142# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
143# interpret the first line (until the first dot) of a Qt-style
144# comment as the brief description. If set to NO, the comments
145# will behave just like regular Qt-style comments (thus requiring
146# an explicit \brief command for a brief description.)
147
148QT_AUTOBRIEF = NO
149
150# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
151# treat a multi-line C++ special comment block (i.e. a block of //! or ///
152# comments) as a brief description. This used to be the default behaviour.
153# The new default is to treat a multi-line C++ comment block as a detailed
154# description. Set this tag to YES if you prefer the old behaviour instead.
155
156MULTILINE_CPP_IS_BRIEF = NO
157
158# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
159# member inherits the documentation from any documented member that it
160# re-implements.
161
162INHERIT_DOCS = YES
163
164# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
165# a new page for each member. If set to NO, the documentation of a member will
166# be part of the file/class/namespace that contains it.
167
168SEPARATE_MEMBER_PAGES = NO
169
170# The TAB_SIZE tag can be used to set the number of spaces in a tab.
171# Doxygen uses this value to replace tabs by spaces in code fragments.
172
173TAB_SIZE = 4
174
175# This tag can be used to specify a number of aliases that acts
176# as commands in the documentation. An alias has the form "name=value".
177# For example adding "sideeffect=\par Side Effects:\n" will allow you to
178# put the command \sideeffect (or @sideeffect) in the documentation, which
179# will result in a user-defined paragraph with heading "Side Effects:".
180# You can put \n's in the value part of an alias to insert newlines.
181
182ALIASES =
183
184# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
185# sources only. Doxygen will then generate output that is more tailored for C.
186# For instance, some of the names that are used will be different. The list
187# of all members will be omitted, etc.
188
189OPTIMIZE_OUTPUT_FOR_C = YES
190
191# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
192# sources only. Doxygen will then generate output that is more tailored for
193# Java. For instance, namespaces will be presented as packages, qualified
194# scopes will look different, etc.
195
196OPTIMIZE_OUTPUT_JAVA = NO
197
198# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
199# sources only. Doxygen will then generate output that is more tailored for
200# Fortran.
201
202OPTIMIZE_FOR_FORTRAN = NO
203
204# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
205# sources. Doxygen will then generate output that is tailored for
206# VHDL.
207
208OPTIMIZE_OUTPUT_VHDL = NO
209
210# Doxygen selects the parser to use depending on the extension of the files it parses.
211# With this tag you can assign which parser to use for a given extension.
212# Doxygen has a built-in mapping, but you can override or extend it using this tag.
213# The format is ext=language, where ext is a file extension, and language is one of
214# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
215# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
216# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
217# use: inc=Fortran f=C
218
219EXTENSION_MAPPING = YES
220
221# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
222# to include (a tag file for) the STL sources as input, then you should
223# set this tag to YES in order to let doxygen match functions declarations and
224# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
225# func(std::string) {}). This also make the inheritance and collaboration
226# diagrams that involve STL classes more complete and accurate.
227
228BUILTIN_STL_SUPPORT = YES
229
230# If you use Microsoft's C++/CLI language, you should set this option to YES to
231# enable parsing support.
232
233CPP_CLI_SUPPORT = NO
234
235# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
236# Doxygen will parse them like normal C++ but will assume all classes use public
237# instead of private inheritance when no explicit protection keyword is present.
238
239SIP_SUPPORT = NO
240
241# For Microsoft's IDL there are propget and propput attributes to indicate getter
242# and setter methods for a property. Setting this option to YES (the default)
243# will make doxygen to replace the get and set methods by a property in the
244# documentation. This will only work if the methods are indeed getting or
245# setting a simple type. If this is not the case, or you want to show the
246# methods anyway, you should set this option to NO.
247
248IDL_PROPERTY_SUPPORT = YES
249
250# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
251# tag is set to YES, then doxygen will reuse the documentation of the first
252# member in the group (if any) for the other members of the group. By default
253# all members of a group must be documented explicitly.
254
255DISTRIBUTE_GROUP_DOC = NO
256
257# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
258# the same type (for instance a group of public functions) to be put as a
259# subgroup of that type (e.g. under the Public Functions section). Set it to
260# NO to prevent subgrouping. Alternatively, this can be done per class using
261# the \nosubgrouping command.
262
263SUBGROUPING = YES
264
265# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
266# is documented as struct, union, or enum with the name of the typedef. So
267# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
268# with name TypeT. When disabled the typedef will appear as a member of a file,
269# namespace, or class. And the struct will be named TypeS. This can typically
270# be useful for C code in case the coding convention dictates that all compound
271# types are typedef'ed and only the typedef is referenced, never the tag name.
272
273TYPEDEF_HIDES_STRUCT = NO
274
275# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
276# determine which symbols to keep in memory and which to flush to disk.
277# When the cache is full, less often used symbols will be written to disk.
278# For small to medium size projects (<1000 input files) the default value is
279# probably good enough. For larger projects a too small cache size can cause
280# doxygen to be busy swapping symbols to and from disk most of the time
281# causing a significant performance penality.
282# If the system has enough physical memory increasing the cache will improve the
283# performance by keeping more symbols in memory. Note that the value works on
284# a logarithmic scale so increasing the size by one will rougly double the
285# memory usage. The cache size is given by this formula:
286# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
287# corresponding to a cache size of 2^16 = 65536 symbols
288
289SYMBOL_CACHE_SIZE = 0
290
291#---------------------------------------------------------------------------
292# Build related configuration options
293#---------------------------------------------------------------------------
294
295# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
296# documentation are documented, even if no documentation was available.
297# Private class members and static file members will be hidden unless
298# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
299
300EXTRACT_ALL = YES
301
302# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
303# will be included in the documentation.
304
305EXTRACT_PRIVATE = YES
306
307# If the EXTRACT_STATIC tag is set to YES all static members of a file
308# will be included in the documentation.
309
310EXTRACT_STATIC = YES
311
312# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
313# defined locally in source files will be included in the documentation.
314# If set to NO only classes defined in header files are included.
315
316EXTRACT_LOCAL_CLASSES = YES
317
318# This flag is only useful for Objective-C code. When set to YES local
319# methods, which are defined in the implementation section but not in
320# the interface are included in the documentation.
321# If set to NO (the default) only methods in the interface are included.
322
323EXTRACT_LOCAL_METHODS = NO
324
325# If this flag is set to YES, the members of anonymous namespaces will be
326# extracted and appear in the documentation as a namespace called
327# 'anonymous_namespace{file}', where file will be replaced with the base
328# name of the file that contains the anonymous namespace. By default
329# anonymous namespace are hidden.
330
331EXTRACT_ANON_NSPACES = NO
332
333# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
334# undocumented members of documented classes, files or namespaces.
335# If set to NO (the default) these members will be included in the
336# various overviews, but no documentation section is generated.
337# This option has no effect if EXTRACT_ALL is enabled.
338
339HIDE_UNDOC_MEMBERS = NO
340
341# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
342# undocumented classes that are normally visible in the class hierarchy.
343# If set to NO (the default) these classes will be included in the various
344# overviews. This option has no effect if EXTRACT_ALL is enabled.
345
346HIDE_UNDOC_CLASSES = NO
347
348# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
349# friend (class|struct|union) declarations.
350# If set to NO (the default) these declarations will be included in the
351# documentation.
352
353HIDE_FRIEND_COMPOUNDS = NO
354
355# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
356# documentation blocks found inside the body of a function.
357# If set to NO (the default) these blocks will be appended to the
358# function's detailed documentation block.
359
360HIDE_IN_BODY_DOCS = NO
361
362# The INTERNAL_DOCS tag determines if documentation
363# that is typed after a \internal command is included. If the tag is set
364# to NO (the default) then the documentation will be excluded.
365# Set it to YES to include the internal documentation.
366
367INTERNAL_DOCS = NO
368
369# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
370# file names in lower-case letters. If set to YES upper-case letters are also
371# allowed. This is useful if you have classes or files whose names only differ
372# in case and if your file system supports case sensitive file names. Windows
373# and Mac users are advised to set this option to NO.
374
375CASE_SENSE_NAMES = YES
376
377# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
378# will show members with their full class and namespace scopes in the
379# documentation. If set to YES the scope will be hidden.
380
381HIDE_SCOPE_NAMES = NO
382
383# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
384# will put a list of the files that are included by a file in the documentation
385# of that file.
386
387SHOW_INCLUDE_FILES = YES
388
389# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
390# is inserted in the documentation for inline members.
391
392INLINE_INFO = YES
393
394# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
395# will sort the (detailed) documentation of file and class members
396# alphabetically by member name. If set to NO the members will appear in
397# declaration order.
398
399SORT_MEMBER_DOCS = YES
400
401# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
402# brief documentation of file, namespace and class members alphabetically
403# by member name. If set to NO (the default) the members will appear in
404# declaration order.
405
406SORT_BRIEF_DOCS = YES
407
408# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
409# hierarchy of group names into alphabetical order. If set to NO (the default)
410# the group names will appear in their defined order.
411
412SORT_GROUP_NAMES = YES
413
414# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
415# sorted by fully-qualified names, including namespaces. If set to
416# NO (the default), the class list will be sorted only by class name,
417# not including the namespace part.
418# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
419# Note: This option applies only to the class list, not to the
420# alphabetical list.
421
422SORT_BY_SCOPE_NAME = YES
423
424# The GENERATE_TODOLIST tag can be used to enable (YES) or
425# disable (NO) the todo list. This list is created by putting \todo
426# commands in the documentation.
427
428GENERATE_TODOLIST = YES
429
430# The GENERATE_TESTLIST tag can be used to enable (YES) or
431# disable (NO) the test list. This list is created by putting \test
432# commands in the documentation.
433
434GENERATE_TESTLIST = YES
435
436# The GENERATE_BUGLIST tag can be used to enable (YES) or
437# disable (NO) the bug list. This list is created by putting \bug
438# commands in the documentation.
439
440GENERATE_BUGLIST = YES
441
442# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
443# disable (NO) the deprecated list. This list is created by putting
444# \deprecated commands in the documentation.
445
446GENERATE_DEPRECATEDLIST= YES
447
448# The ENABLED_SECTIONS tag can be used to enable conditional
449# documentation sections, marked by \if sectionname ... \endif.
450
451ENABLED_SECTIONS =
452
453# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
454# the initial value of a variable or define consists of for it to appear in
455# the documentation. If the initializer consists of more lines than specified
456# here it will be hidden. Use a value of 0 to hide initializers completely.
457# The appearance of the initializer of individual variables and defines in the
458# documentation can be controlled using \showinitializer or \hideinitializer
459# command in the documentation regardless of this setting.
460
461MAX_INITIALIZER_LINES = 30
462
463# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
464# at the bottom of the documentation of classes and structs. If set to YES the
465# list will mention the files that were used to generate the documentation.
466
467SHOW_USED_FILES = NO
468
469# If the sources in your project are distributed over multiple directories
470# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
471# in the documentation. The default is NO.
472
473SHOW_DIRECTORIES = YES
474
475# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
476# This will remove the Files entry from the Quick Index and from the
477# Folder Tree View (if specified). The default is YES.
478
479SHOW_FILES = YES
480
481# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
482# Namespaces page.
483# This will remove the Namespaces entry from the Quick Index
484# and from the Folder Tree View (if specified). The default is YES.
485
486SHOW_NAMESPACES = YES
487
488# The FILE_VERSION_FILTER tag can be used to specify a program or script that
489# doxygen should invoke to get the current version for each file (typically from
490# the version control system). Doxygen will invoke the program by executing (via
491# popen()) the command <command> <input-file>, where <command> is the value of
492# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
493# provided by doxygen. Whatever the program writes to standard output
494# is used as the file version. See the manual for examples.
495
496FILE_VERSION_FILTER =
497
498# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
499# doxygen. The layout file controls the global structure of the generated output files
500# in an output format independent way. The create the layout file that represents
501# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
502# file name after the option, if omitted DoxygenLayout.xml will be used as the name
503# of the layout file.
504
505LAYOUT_FILE =
506
507#---------------------------------------------------------------------------
508# configuration options related to warning and progress messages
509#---------------------------------------------------------------------------
510
511# The QUIET tag can be used to turn on/off the messages that are generated
512# by doxygen. Possible values are YES and NO. If left blank NO is used.
513
514QUIET = NO
515
516# The WARNINGS tag can be used to turn on/off the warning messages that are
517# generated by doxygen. Possible values are YES and NO. If left blank
518# NO is used.
519
520WARNINGS = YES
521
522# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
523# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
524# automatically be disabled.
525
526WARN_IF_UNDOCUMENTED = YES
527
528# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
529# potential errors in the documentation, such as not documenting some
530# parameters in a documented function, or documenting parameters that
531# don't exist or using markup commands wrongly.
532
533WARN_IF_DOC_ERROR = YES
534
535# This WARN_NO_PARAMDOC option can be abled to get warnings for
536# functions that are documented, but have no documentation for their parameters
537# or return value. If set to NO (the default) doxygen will only warn about
538# wrong or incomplete parameter documentation, but not about the absence of
539# documentation.
540
541WARN_NO_PARAMDOC = NO
542
543# The WARN_FORMAT tag determines the format of the warning messages that
544# doxygen can produce. The string should contain the $file, $line, and $text
545# tags, which will be replaced by the file and line number from which the
546# warning originated and the warning text. Optionally the format may contain
547# $version, which will be replaced by the version of the file (if it could
548# be obtained via FILE_VERSION_FILTER)
549
550WARN_FORMAT = "$file:$line: $text"
551
552# The WARN_LOGFILE tag can be used to specify a file to which warning
553# and error messages should be written. If left blank the output is written
554# to stderr.
555
556WARN_LOGFILE =
557
558#---------------------------------------------------------------------------
559# configuration options related to the input files
560#---------------------------------------------------------------------------
561
562# The INPUT tag can be used to specify the files and/or directories that contain
563# documented source files. You may enter file names like "myfile.cpp" or
564# directories like "/usr/src/myproject". Separate the files or directories
565# with spaces.
566
567INPUT = H \
568 interfaces \
569 frontends/CsoundVST \
570 frontends/CsoundAC \
571 frontends/tclcsound
572
573# This tag can be used to specify the character encoding of the source files
574# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
575# also the default input encoding. Doxygen uses libiconv (or the iconv built
576# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
577# the list of possible encodings.
578
579INPUT_ENCODING = UTF-8
580
581# If the value of the INPUT tag contains directories, you can use the
582# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
583# and *.h) to filter out the source-files in the directories. If left
584# blank the following patterns are tested:
585# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
586# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
587
588FILE_PATTERNS = *.h \
589 *.hh \
590 *.hxx \
591 *.hpp \
592 *.h++
593
594# The RECURSIVE tag can be used to turn specify whether or not subdirectories
595# should be searched for input files as well. Possible values are YES and NO.
596# If left blank NO is used.
597
598RECURSIVE = NO
599
600# The EXCLUDE tag can be used to specify files and/or directories that should
601# excluded from the INPUT source files. This way you can easily exclude a
602# subdirectory from a directory tree whose root is specified with the INPUT tag.
603
604EXCLUDE =
605
606# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
607# directories that are symbolic links (a Unix filesystem feature) are excluded
608# from the input.
609
610EXCLUDE_SYMLINKS = NO
611
612# If the value of the INPUT tag contains directories, you can use the
613# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
614# certain files from those directories. Note that the wildcards are matched
615# against the file with absolute path, so to exclude all test directories
616# for example use the pattern */test/*
617
618EXCLUDE_PATTERNS = AEff* \
619 aeff* \
620 AudioEff* \
621 audioeff* \
622 *wrap*
623
624# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
625# (namespaces, classes, functions, etc.) that should be excluded from the
626# output. The symbol name can be a fully qualified name, a word, or if the
627# wildcard * is used, a substring. Examples: ANamespace, AClass,
628# AClass::ANamespace, ANamespace::*Test
629
630EXCLUDE_SYMBOLS =
631
632# The EXAMPLE_PATH tag can be used to specify one or more files or
633# directories that contain example code fragments that are included (see
634# the \include command).
635
636EXAMPLE_PATH =
637
638# If the value of the EXAMPLE_PATH tag contains directories, you can use the
639# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
640# and *.h) to filter out the source-files in the directories. If left
641# blank all files are included.
642
643EXAMPLE_PATTERNS =
644
645# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
646# searched for input files to be used with the \include or \dontinclude
647# commands irrespective of the value of the RECURSIVE tag.
648# Possible values are YES and NO. If left blank NO is used.
649
650EXAMPLE_RECURSIVE = NO
651
652# The IMAGE_PATH tag can be used to specify one or more files or
653# directories that contain image that are included in the documentation (see
654# the \image command).
655
656IMAGE_PATH =
657
658# The INPUT_FILTER tag can be used to specify a program that doxygen should
659# invoke to filter for each input file. Doxygen will invoke the filter program
660# by executing (via popen()) the command <filter> <input-file>, where <filter>
661# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
662# input file. Doxygen will then use the output that the filter program writes
663# to standard output.
664# If FILTER_PATTERNS is specified, this tag will be
665# ignored.
666
667INPUT_FILTER =
668
669# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
670# basis.
671# Doxygen will compare the file name with each pattern and apply the
672# filter if there is a match.
673# The filters are a list of the form:
674# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
675# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
676# is applied to all files.
677
678FILTER_PATTERNS =
679
680# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
681# INPUT_FILTER) will be used to filter the input files when producing source
682# files to browse (i.e. when SOURCE_BROWSER is set to YES).
683
684FILTER_SOURCE_FILES = NO
685
686#---------------------------------------------------------------------------
687# configuration options related to source browsing
688#---------------------------------------------------------------------------
689
690# If the SOURCE_BROWSER tag is set to YES then a list of source files will
691# be generated. Documented entities will be cross-referenced with these sources.
692# Note: To get rid of all source code in the generated output, make sure also
693# VERBATIM_HEADERS is set to NO.
694
695SOURCE_BROWSER = NO
696
697# Setting the INLINE_SOURCES tag to YES will include the body
698# of functions and classes directly in the documentation.
699
700INLINE_SOURCES = NO
701
702# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
703# doxygen to hide any special comment blocks from generated source code
704# fragments. Normal C and C++ comments will always remain visible.
705
706STRIP_CODE_COMMENTS = YES
707
708# If the REFERENCED_BY_RELATION tag is set to YES
709# then for each documented function all documented
710# functions referencing it will be listed.
711
712REFERENCED_BY_RELATION = YES
713
714# If the REFERENCES_RELATION tag is set to YES
715# then for each documented function all documented entities
716# called/used by that function will be listed.
717
718REFERENCES_RELATION = YES
719
720# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
721# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
722# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
723# link to the source code.
724# Otherwise they will link to the documentation.
725
726REFERENCES_LINK_SOURCE = YES
727
728# If the USE_HTAGS tag is set to YES then the references to source code
729# will point to the HTML generated by the htags(1) tool instead of doxygen
730# built-in source browser. The htags tool is part of GNU's global source
731# tagging system (see http://www.gnu.org/software/global/global.html). You
732# will need version 4.8.6 or higher.
733
734USE_HTAGS = NO
735
736# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
737# will generate a verbatim copy of the header file for each class for
738# which an include is specified. Set to NO to disable this.
739
740VERBATIM_HEADERS = NO
741
742#---------------------------------------------------------------------------
743# configuration options related to the alphabetical class index
744#---------------------------------------------------------------------------
745
746# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
747# of all compounds will be generated. Enable this if the project
748# contains a lot of classes, structs, unions or interfaces.
749
750ALPHABETICAL_INDEX = YES
751
752# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
753# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
754# in which this list will be split (can be a number in the range [1..20])
755
756COLS_IN_ALPHA_INDEX = 5
757
758# In case all classes in a project start with a common prefix, all
759# classes will be put under the same header in the alphabetical index.
760# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
761# should be ignored while generating the index headers.
762
763IGNORE_PREFIX =
764
765#---------------------------------------------------------------------------
766# configuration options related to the HTML output
767#---------------------------------------------------------------------------
768
769# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
770# generate HTML output.
771
772GENERATE_HTML = YES
773
774# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
775# If a relative path is entered the value of OUTPUT_DIRECTORY will be
776# put in front of it. If left blank `html' will be used as the default path.
777
778HTML_OUTPUT = html
779
780# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
781# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
782# doxygen will generate files with .html extension.
783
784HTML_FILE_EXTENSION = .html
785
786# The HTML_HEADER tag can be used to specify a personal HTML header for
787# each generated HTML page. If it is left blank doxygen will generate a
788# standard header.
789
790HTML_HEADER =
791
792# The HTML_FOOTER tag can be used to specify a personal HTML footer for
793# each generated HTML page. If it is left blank doxygen will generate a
794# standard footer.
795
796HTML_FOOTER =
797
798# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
799# style sheet that is used by each HTML page. It can be used to
800# fine-tune the look of the HTML output. If the tag is left blank doxygen
801# will generate a default style sheet. Note that doxygen will try to copy
802# the style sheet file to the HTML output directory, so don't put your own
803# stylesheet in the HTML output directory as well, or it will be erased!
804
805HTML_STYLESHEET =
806
807# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
808# files or namespaces will be aligned in HTML using tables. If set to
809# NO a bullet list will be used.
810
811HTML_ALIGN_MEMBERS = YES
812
813# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
814# documentation will contain sections that can be hidden and shown after the
815# page has loaded. For this to work a browser that supports
816# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
817# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
818
819HTML_DYNAMIC_SECTIONS = YES
820
821# If the GENERATE_DOCSET tag is set to YES, additional index files
822# will be generated that can be used as input for Apple's Xcode 3
823# integrated development environment, introduced with OSX 10.5 (Leopard).
824# To create a documentation set, doxygen will generate a Makefile in the
825# HTML output directory. Running make will produce the docset in that
826# directory and running "make install" will install the docset in
827# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
828# it at startup.
829# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
830
831GENERATE_DOCSET = NO
832
833# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
834# feed. A documentation feed provides an umbrella under which multiple
835# documentation sets from a single provider (such as a company or product suite)
836# can be grouped.
837
838DOCSET_FEEDNAME = "Doxygen generated docs"
839
840# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
841# should uniquely identify the documentation set bundle. This should be a
842# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
843# will append .docset to the name.
844
845DOCSET_BUNDLE_ID = org.doxygen.Project
846
847# If the GENERATE_HTMLHELP tag is set to YES, additional index files
848# will be generated that can be used as input for tools like the
849# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
850# of the generated HTML documentation.
851
852GENERATE_HTMLHELP = NO
853
854# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
855# be used to specify the file name of the resulting .chm file. You
856# can add a path in front of the file if the result should not be
857# written to the html output directory.
858
859CHM_FILE =
860
861# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
862# be used to specify the location (absolute path including file name) of
863# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
864# the HTML help compiler on the generated index.hhp.
865
866HHC_LOCATION =
867
868# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
869# controls if a separate .chi index file is generated (YES) or that
870# it should be included in the master .chm file (NO).
871
872GENERATE_CHI = NO
873
874# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
875# is used to encode HtmlHelp index (hhk), content (hhc) and project file
876# content.
877
878CHM_INDEX_ENCODING =
879
880# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
881# controls whether a binary table of contents is generated (YES) or a
882# normal table of contents (NO) in the .chm file.
883
884BINARY_TOC = NO
885
886# The TOC_EXPAND flag can be set to YES to add extra items for group members
887# to the contents of the HTML help documentation and to the tree view.
888
889TOC_EXPAND = NO
890
891# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
892# are set, an additional index file will be generated that can be used as input for
893# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
894# HTML documentation.
895
896GENERATE_QHP = NO
897
898# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
899# be used to specify the file name of the resulting .qch file.
900# The path specified is relative to the HTML output folder.
901
902QCH_FILE =
903
904# The QHP_NAMESPACE tag specifies the namespace to use when generating
905# Qt Help Project output. For more information please see
906# http://doc.trolltech.com/qthelpproject.html#namespace
907
908QHP_NAMESPACE =
909
910# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
911# Qt Help Project output. For more information please see
912# http://doc.trolltech.com/qthelpproject.html#virtual-folders
913
914QHP_VIRTUAL_FOLDER = doc
915
916# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
917# For more information please see
918# http://doc.trolltech.com/qthelpproject.html#custom-filters
919
920QHP_CUST_FILTER_NAME =
921
922# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
923# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
924
925QHP_CUST_FILTER_ATTRS =
926
927# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
928# filter section matches.
929# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
930
931QHP_SECT_FILTER_ATTRS =
932
933# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
934# be used to specify the location of Qt's qhelpgenerator.
935# If non-empty doxygen will try to run qhelpgenerator on the generated
936# .qhp file.
937
938QHG_LOCATION =
939
940# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
941# top of each HTML page. The value NO (the default) enables the index and
942# the value YES disables it.
943
944DISABLE_INDEX = NO
945
946# This tag can be used to set the number of enum values (range [1..20])
947# that doxygen will group on one line in the generated HTML documentation.
948
949ENUM_VALUES_PER_LINE = 4
950
951# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
952# structure should be generated to display hierarchical information.
953# If the tag value is set to FRAME, a side panel will be generated
954# containing a tree-like index structure (just like the one that
955# is generated for HTML Help). For this to work a browser that supports
956# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
957# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
958# probably better off using the HTML help feature. Other possible values
959# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
960# and Class Hierarchy pages using a tree view instead of an ordered list;
961# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
962# disables this behavior completely. For backwards compatibility with previous
963# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
964# respectively.
965
966GENERATE_TREEVIEW = NO
967
968# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
969# used to set the initial width (in pixels) of the frame in which the tree
970# is shown.
971
972TREEVIEW_WIDTH = 250
973
974# Use this tag to change the font size of Latex formulas included
975# as images in the HTML documentation. The default is 10. Note that
976# when you change the font size after a successful doxygen run you need
977# to manually remove any form_*.png images from the HTML output directory
978# to force them to be regenerated.
979
980FORMULA_FONTSIZE = 10
981
982#---------------------------------------------------------------------------
983# configuration options related to the LaTeX output
984#---------------------------------------------------------------------------
985
986# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
987# generate Latex output.
988
989GENERATE_LATEX = NO
990
991# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
992# If a relative path is entered the value of OUTPUT_DIRECTORY will be
993# put in front of it. If left blank `latex' will be used as the default path.
994
995LATEX_OUTPUT = latex
996
997# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
998# invoked. If left blank `latex' will be used as the default command name.
999
1000LATEX_CMD_NAME = pdflatex
1001
1002# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
1003# generate index for LaTeX. If left blank `makeindex' will be used as the
1004# default command name.
1005
1006MAKEINDEX_CMD_NAME = makeindex
1007
1008# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
1009# LaTeX documents. This may be useful for small projects and may help to
1010# save some trees in general.
1011
1012COMPACT_LATEX = NO
1013
1014# The PAPER_TYPE tag can be used to set the paper type that is used
1015# by the printer. Possible values are: a4, a4wide, letter, legal and
1016# executive. If left blank a4wide will be used.
1017
1018PAPER_TYPE = letter
1019
1020# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
1021# packages that should be included in the LaTeX output.
1022
1023EXTRA_PACKAGES =
1024
1025# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
1026# the generated latex document. The header should contain everything until
1027# the first chapter. If it is left blank doxygen will generate a
1028# standard header. Notice: only use this tag if you know what you are doing!
1029
1030LATEX_HEADER = refman_header.tex
1031
1032# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
1033# is prepared for conversion to pdf (using ps2pdf). The pdf file will
1034# contain links (just like the HTML output) instead of page references
1035# This makes the output suitable for online browsing using a pdf viewer.
1036
1037PDF_HYPERLINKS = YES
1038
1039# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
1040# plain latex in the generated Makefile. Set this option to YES to get a
1041# higher quality PDF documentation.
1042
1043USE_PDFLATEX = YES
1044
1045# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
1046# command to the generated LaTeX files. This will instruct LaTeX to keep
1047# running if errors occur, instead of asking the user for help.
1048# This option is also used when generating formulas in HTML.
1049
1050LATEX_BATCHMODE = YES
1051
1052# If LATEX_HIDE_INDICES is set to YES then doxygen will not
1053# include the index chapters (such as File Index, Compound Index, etc.)
1054# in the output.
1055
1056LATEX_HIDE_INDICES = NO
1057
1058#---------------------------------------------------------------------------
1059# configuration options related to the RTF output
1060#---------------------------------------------------------------------------
1061
1062# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
1063# The RTF output is optimized for Word 97 and may not look very pretty with
1064# other RTF readers or editors.
1065
1066GENERATE_RTF = NO
1067
1068# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
1069# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1070# put in front of it. If left blank `rtf' will be used as the default path.
1071
1072RTF_OUTPUT = rtf
1073
1074# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
1075# RTF documents. This may be useful for small projects and may help to
1076# save some trees in general.
1077
1078COMPACT_RTF = NO
1079
1080# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
1081# will contain hyperlink fields. The RTF file will
1082# contain links (just like the HTML output) instead of page references.
1083# This makes the output suitable for online browsing using WORD or other
1084# programs which support those fields.
1085# Note: wordpad (write) and others do not support links.
1086
1087RTF_HYPERLINKS = NO
1088
1089# Load stylesheet definitions from file. Syntax is similar to doxygen's
1090# config file, i.e. a series of assignments. You only have to provide
1091# replacements, missing definitions are set to their default value.
1092
1093RTF_STYLESHEET_FILE =
1094
1095# Set optional variables used in the generation of an rtf document.
1096# Syntax is similar to doxygen's config file.
1097
1098RTF_EXTENSIONS_FILE =
1099
1100#---------------------------------------------------------------------------
1101# configuration options related to the man page output
1102#---------------------------------------------------------------------------
1103
1104# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
1105# generate man pages
1106
1107GENERATE_MAN = NO
1108
1109# The MAN_OUTPUT tag is used to specify where the man pages will be put.
1110# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1111# put in front of it. If left blank `man' will be used as the default path.
1112
1113MAN_OUTPUT = man
1114
1115# The MAN_EXTENSION tag determines the extension that is added to
1116# the generated man pages (default is the subroutine's section .3)
1117
1118MAN_EXTENSION = .3
1119
1120# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
1121# then it will generate one additional man file for each entity
1122# documented in the real man page(s). These additional files
1123# only source the real man page, but without them the man command
1124# would be unable to find the correct page. The default is NO.
1125
1126MAN_LINKS = NO
1127
1128#---------------------------------------------------------------------------
1129# configuration options related to the XML output
1130#---------------------------------------------------------------------------
1131
1132# If the GENERATE_XML tag is set to YES Doxygen will
1133# generate an XML file that captures the structure of
1134# the code including all documentation.
1135
1136GENERATE_XML = NO
1137
1138# The XML_OUTPUT tag is used to specify where the XML pages will be put.
1139# If a relative path is entered the value of OUTPUT_DIRECTORY will be
1140# put in front of it. If left blank `xml' will be used as the default path.
1141
1142XML_OUTPUT = xml
1143
1144# The XML_SCHEMA tag can be used to specify an XML schema,
1145# which can be used by a validating XML parser to check the
1146# syntax of the XML files.
1147
1148XML_SCHEMA =
1149
1150# The XML_DTD tag can be used to specify an XML DTD,
1151# which can be used by a validating XML parser to check the
1152# syntax of the XML files.
1153
1154XML_DTD =
1155
1156# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
1157# dump the program listings (including syntax highlighting
1158# and cross-referencing information) to the XML output. Note that
1159# enabling this will significantly increase the size of the XML output.
1160
1161XML_PROGRAMLISTING = YES
1162
1163#---------------------------------------------------------------------------
1164# configuration options for the AutoGen Definitions output
1165#---------------------------------------------------------------------------
1166
1167# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
1168# generate an AutoGen Definitions (see autogen.sf.net) file
1169# that captures the structure of the code including all
1170# documentation. Note that this feature is still experimental
1171# and incomplete at the moment.
1172
1173GENERATE_AUTOGEN_DEF = NO
1174
1175#---------------------------------------------------------------------------
1176# configuration options related to the Perl module output
1177#---------------------------------------------------------------------------
1178
1179# If the GENERATE_PERLMOD tag is set to YES Doxygen will
1180# generate a Perl module file that captures the structure of
1181# the code including all documentation. Note that this
1182# feature is still experimental and incomplete at the
1183# moment.
1184
1185GENERATE_PERLMOD = NO
1186
1187# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
1188# the necessary Makefile rules, Perl scripts and LaTeX code to be able
1189# to generate PDF and DVI output from the Perl module output.
1190
1191PERLMOD_LATEX = NO
1192
1193# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
1194# nicely formatted so it can be parsed by a human reader.
1195# This is useful
1196# if you want to understand what is going on.
1197# On the other hand, if this
1198# tag is set to NO the size of the Perl module output will be much smaller
1199# and Perl will parse it just the same.
1200
1201PERLMOD_PRETTY = YES
1202
1203# The names of the make variables in the generated doxyrules.make file
1204# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
1205# This is useful so different doxyrules.make files included by the same
1206# Makefile don't overwrite each other's variables.
1207
1208PERLMOD_MAKEVAR_PREFIX =
1209
1210#---------------------------------------------------------------------------
1211# Configuration options related to the preprocessor
1212#---------------------------------------------------------------------------
1213
1214# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
1215# evaluate all C-preprocessor directives found in the sources and include
1216# files.
1217
1218ENABLE_PREPROCESSING = YES
1219
1220# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
1221# names in the source code. If set to NO (the default) only conditional
1222# compilation will be performed. Macro expansion can be done in a controlled
1223# way by setting EXPAND_ONLY_PREDEF to YES.
1224
1225MACRO_EXPANSION = NO
1226
1227# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
1228# then the macro expansion is limited to the macros specified with the
1229# PREDEFINED and EXPAND_AS_DEFINED tags.
1230
1231EXPAND_ONLY_PREDEF = NO
1232
1233# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
1234# in the INCLUDE_PATH (see below) will be search if a #include is found.
1235
1236SEARCH_INCLUDES = YES
1237
1238# The INCLUDE_PATH tag can be used to specify one or more directories that
1239# contain include files that are not input files but should be processed by
1240# the preprocessor.
1241
1242INCLUDE_PATH =
1243
1244# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1245# patterns (like *.h and *.hpp) to filter out the header-files in the
1246# directories. If left blank, the patterns specified with FILE_PATTERNS will
1247# be used.
1248
1249INCLUDE_FILE_PATTERNS =
1250
1251# The PREDEFINED tag can be used to specify one or more macro names that
1252# are defined before the preprocessor is started (similar to the -D option of
1253# gcc). The argument of the tag is a list of macros of the form: name
1254# or name=definition (no spaces). If the definition and the = are
1255# omitted =1 is assumed. To prevent a macro definition from being
1256# undefined via #undef or recursively expanded use the := operator
1257# instead of the = operator.
1258
1259PREDEFINED =
1260
1261# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1262# this tag can be used to specify a list of macro names that should be expanded.
1263# The macro definition that is found in the sources will be used.
1264# Use the PREDEFINED tag if you want to use a different macro definition.
1265
1266EXPAND_AS_DEFINED =
1267
1268# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1269# doxygen's preprocessor will remove all function-like macros that are alone
1270# on a line, have an all uppercase name, and do not end with a semicolon. Such
1271# function macros are typically used for boiler-plate code, and will confuse
1272# the parser if not removed.
1273
1274SKIP_FUNCTION_MACROS = YES
1275
1276#---------------------------------------------------------------------------
1277# Configuration::additions related to external references
1278#---------------------------------------------------------------------------
1279
1280# The TAGFILES option can be used to specify one or more tagfiles.
1281# Optionally an initial location of the external documentation
1282# can be added for each tagfile. The format of a tag file without
1283# this location is as follows:
1284#
1285# TAGFILES = file1 file2 ...
1286# Adding location for the tag files is done as follows:
1287#
1288# TAGFILES = file1=loc1 "file2 = loc2" ...
1289# where "loc1" and "loc2" can be relative or absolute paths or
1290# URLs. If a location is present for each tag, the installdox tool
1291# does not have to be run to correct the links.
1292# Note that each tag file must have a unique name
1293# (where the name does NOT include the path)
1294# If a tag file is not located in the directory in which doxygen
1295# is run, you must also specify the path to the tagfile here.
1296
1297TAGFILES =
1298
1299# When a file name is specified after GENERATE_TAGFILE, doxygen will create
1300# a tag file that is based on the input files it reads.
1301
1302GENERATE_TAGFILE =
1303
1304# If the ALLEXTERNALS tag is set to YES all external classes will be listed
1305# in the class index. If set to NO only the inherited external classes
1306# will be listed.
1307
1308ALLEXTERNALS = NO
1309
1310# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1311# in the modules index. If set to NO, only the current project's groups will
1312# be listed.
1313
1314EXTERNAL_GROUPS = YES
1315
1316# The PERL_PATH should be the absolute path and name of the perl script
1317# interpreter (i.e. the result of `which perl').
1318
1319PERL_PATH = /usr/bin/perl
1320
1321#---------------------------------------------------------------------------
1322# Configuration options related to the dot tool
1323#---------------------------------------------------------------------------
1324
1325# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1326# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1327# or super classes. Setting the tag to NO turns the diagrams off. Note that
1328# this option is superseded by the HAVE_DOT option below. This is only a
1329# fallback. It is recommended to install and use dot, since it yields more
1330# powerful graphs.
1331
1332CLASS_DIAGRAMS = NO
1333
1334# You can define message sequence charts within doxygen comments using the \msc
1335# command. Doxygen will then run the mscgen tool (see
1336# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
1337# documentation. The MSCGEN_PATH tag allows you to specify the directory where
1338# the mscgen tool resides. If left empty the tool is assumed to be found in the
1339# default search path.
1340
1341MSCGEN_PATH =
1342
1343# If set to YES, the inheritance and collaboration graphs will hide
1344# inheritance and usage relations if the target is undocumented
1345# or is not a class.
1346
1347HIDE_UNDOC_RELATIONS = YES
1348
1349# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1350# available from the path. This tool is part of Graphviz, a graph visualization
1351# toolkit from AT&T and Lucent Bell Labs. The other options in this section
1352# have no effect if this option is set to NO (the default)
1353
1354HAVE_DOT = YES
1355
1356# By default doxygen will write a font called FreeSans.ttf to the output
1357# directory and reference it in all dot files that doxygen generates. This
1358# font does not include all possible unicode characters however, so when you need
1359# these (or just want a differently looking font) you can specify the font name
1360# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
1361# which can be done by putting it in a standard location or by setting the
1362# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
1363# containing the font.
1364
1365DOT_FONTNAME = FreeSans
1366
1367# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
1368# The default size is 10pt.
1369
1370DOT_FONTSIZE = 10
1371
1372# By default doxygen will tell dot to use the output directory to look for the
1373# FreeSans.ttf font (which doxygen will put there itself). If you specify a
1374# different font using DOT_FONTNAME you can set the path where dot
1375# can find it using this tag.
1376
1377DOT_FONTPATH =
1378
1379# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1380# will generate a graph for each documented class showing the direct and
1381# indirect inheritance relations. Setting this tag to YES will force the
1382# the CLASS_DIAGRAMS tag to NO.
1383
1384CLASS_GRAPH = YES
1385
1386# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1387# will generate a graph for each documented class showing the direct and
1388# indirect implementation dependencies (inheritance, containment, and
1389# class references variables) of the class with other documented classes.
1390
1391COLLABORATION_GRAPH = NO
1392
1393# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1394# will generate a graph for groups, showing the direct groups dependencies
1395
1396GROUP_GRAPHS = NO
1397
1398# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1399# collaboration diagrams in a style similar to the OMG's Unified Modeling
1400# Language.
1401
1402UML_LOOK = NO
1403
1404# If set to YES, the inheritance and collaboration graphs will show the
1405# relations between templates and their instances.
1406
1407TEMPLATE_RELATIONS = YES
1408
1409# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1410# tags are set to YES then doxygen will generate a graph for each documented
1411# file showing the direct and indirect include dependencies of the file with
1412# other documented files.
1413
1414INCLUDE_GRAPH = NO
1415
1416# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1417# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1418# documented header file showing the documented files that directly or
1419# indirectly include this file.
1420
1421INCLUDED_BY_GRAPH = NO
1422
1423# If the CALL_GRAPH and HAVE_DOT options are set to YES then
1424# doxygen will generate a call dependency graph for every global function
1425# or class method. Note that enabling this option will significantly increase
1426# the time of a run. So in most cases it will be better to enable call graphs
1427# for selected functions only using the \callgraph command.
1428
1429CALL_GRAPH = NO
1430
1431# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
1432# doxygen will generate a caller dependency graph for every global function
1433# or class method. Note that enabling this option will significantly increase
1434# the time of a run. So in most cases it will be better to enable caller
1435# graphs for selected functions only using the \callergraph command.
1436
1437CALLER_GRAPH = NO
1438
1439# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1440# will graphical hierarchy of all classes instead of a textual one.
1441
1442GRAPHICAL_HIERARCHY = YES
1443
1444# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
1445# then doxygen will show the dependencies a directory has on other directories
1446# in a graphical way. The dependency relations are determined by the #include
1447# relations between the files in the directories.
1448
1449DIRECTORY_GRAPH = YES
1450
1451# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1452# generated by dot. Possible values are png, jpg, or gif
1453# If left blank png will be used.
1454
1455DOT_IMAGE_FORMAT = png
1456
1457# The tag DOT_PATH can be used to specify the path where the dot tool can be
1458# found. If left blank, it is assumed the dot tool can be found in the path.
1459
1460DOT_PATH = D:\utah\opt\ATT\Graphviz\bin
1461
1462# The DOTFILE_DIRS tag can be used to specify one or more directories that
1463# contain dot files that are included in the documentation (see the
1464# \dotfile command).
1465
1466DOTFILE_DIRS =
1467
1468# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
1469# nodes that will be shown in the graph. If the number of nodes in a graph
1470# becomes larger than this value, doxygen will truncate the graph, which is
1471# visualized by representing a node as a red box. Note that doxygen if the
1472# number of direct children of the root node in a graph is already larger than
1473# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
1474# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
1475
1476DOT_GRAPH_MAX_NODES = 50
1477
1478# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1479# graphs generated by dot. A depth value of 3 means that only nodes reachable
1480# from the root by following a path via at most 3 edges will be shown. Nodes
1481# that lay further from the root node will be omitted. Note that setting this
1482# option to 1 or 2 may greatly reduce the computation time needed for large
1483# code bases. Also note that the size of a graph can be further restricted by
1484# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
1485
1486MAX_DOT_GRAPH_DEPTH = 0
1487
1488# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1489# background. This is disabled by default, because dot on Windows does not
1490# seem to support this out of the box. Warning: Depending on the platform used,
1491# enabling this option may lead to badly anti-aliased labels on the edges of
1492# a graph (i.e. they become hard to read).
1493
1494DOT_TRANSPARENT = YES
1495
1496# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1497# files in one run (i.e. multiple -o and -T options on the command line). This
1498# makes dot run faster, but since only newer versions of dot (>1.8.10)
1499# support this, this feature is disabled by default.
1500
1501DOT_MULTI_TARGETS = YES
1502
1503# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1504# generate a legend page explaining the meaning of the various boxes and
1505# arrows in the dot generated graphs.
1506
1507GENERATE_LEGEND = NO
1508
1509# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1510# remove the intermediate dot files that are used to generate
1511# the various graphs.
1512
1513DOT_CLEANUP = YES
1514
1515#---------------------------------------------------------------------------
1516# Options related to the search engine
1517#---------------------------------------------------------------------------
1518
1519# The SEARCHENGINE tag specifies whether or not a search engine should be
1520# used. If set to NO the values of all tags below this one will be ignored.
1521
1522SEARCHENGINE = NO
15230
=== removed directory '.pc/2008-apidoc-listings-pkg.patch'
=== removed file '.pc/2008-apidoc-listings-pkg.patch/refman_header.tex'
--- .pc/2008-apidoc-listings-pkg.patch/refman_header.tex 2010-03-01 01:31:25 +0000
+++ .pc/2008-apidoc-listings-pkg.patch/refman_header.tex 1970-01-01 00:00:00 +0000
@@ -1,158 +0,0 @@
1% C S O U N D 5 A P I R E F E R E N C E M A N U A L
2% The manual is produced from 2 sources: this header document for new features and users' guide,
3% and autogenerated Doxygen LaTeX files for Csound API reference documentation. To produce the entire manual:
4% 1. Run Doxygen in the csound5 directory. It will produce LaTeX output that includes the contents of this file,
5% as well as API documentation automatically generated from various Csound and CsoundVST header files.
6% 2. Doxygen will produce a doc/csound/latex/refman.tex file. Run pdflatex on this file to generate csound.pdf. You can
7% also run tex4ht on this file to produce an HTML form of the manual. Be sure to run in a mode that skips right on past
8% all the hundreds of LaTeX errors!
9% 3. Steps 1 and 3 are automated in SConstruct with the generatePdf=1 option.
10\batchmode
11\documentclass[letterpaper]{book}
12\usepackage{makeidx}
13\usepackage{fancyhdr}
14\usepackage{graphicx}
15\usepackage{multicol}
16\usepackage{float}
17\usepackage{textcomp}
18\usepackage{alltt}
19\usepackage{times}
20\usepackage{ifpdf}
21\ifpdf
22\usepackage[pdftex,
23 pagebackref=true,
24 colorlinks=true,
25 linkcolor=blue,
26 unicode
27 ]{hyperref}
28\else
29\usepackage[ps2pdf,
30 pagebackref=true,
31 colorlinks=true,
32 linkcolor=blue,
33 unicode
34 ]{hyperref}
35\usepackage{pspicture}
36\fi
37\usepackage[utf8]{inputenc}
38\usepackage{doxygen}
39\makeindex
40\setcounter{tocdepth}{1}
41\renewcommand{\footrulewidth}{0.4pt}
42\begin{document}
43\begin{titlepage}
44\vspace*{7cm}
45\begin{center}
46{\Large Csound and CsoundAC API Reference}\\
47\vspace*{1cm}
48{\large Generated by Doxygen 1.5.5}\\
49\vspace*{0.5cm}
50{\small Sat Mar 1 22:26:05 2008}\\
51\end{center}
52\end{titlepage}
53\clearemptydoublepage
54\pagenumbering{roman}
55\tableofcontents
56\clearemptydoublepage
57\pagenumbering{arabic}
58\part{Licenses}
59\chapter{Csound, CsoundAC, and CsoundVST}
60
61Csound is \copyright 1991--2003 by Barry Vercoe and John ffitch.
62
63CsoundAC and CsoundVST are \copyright 2001--2007 by Michael Gogins.
64
65Csound and CsoundAC are free software; you can redistribute them and/or modify them under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
66
67Csound and CsoundAC are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
68
69You should have received a copy of the GNU Lesser General Public License along with Csound and CsoundAC; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
70
71\chapter{Manual}
72
73Permission is granted to copy, distribute and/or modify this document under the terms of the
74GNU Free Documentation License, Version 1.2 or any later version published by the Free Software
75Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
76
77\part{Outline of the API}
78
79\chapter{The Csound Application Programming Interfaces}
80
81The Csound Application Programming Interface (API) reference is contained in the chapters following this one. The Csound API actually consists of several APIs:
82
83\begin{itemize}
84
85\item \emph{The basic Csound C API.} Include \texttt{csound.h} (page \pageref{csound_8h}) and link with \texttt{libcsound.a}. This also includes the Cscore API (see below).
86
87\item \emph{The basic Csound C++ API.} Include \texttt{csound.hpp} (page \pageref{csound_8hpp}) and link with \texttt{libcsound.a}.
88
89\item \emph{The extended Csound C++ API.} Include \texttt{CppSound.hpp} (page \pageref{CppSound_8hpp}) and \texttt{CppSound.hpp} (page \pageref{CsoundFile_8hpp}) and link with \verb|libcsound.a| and \verb|lib_csnd.a|, which adds to the Csound C++ API a CsoundFile class (\ref{classCsoundFile}) for loading, saving, and editing Csound orchestra and score files.
90
91\item \emph{The CsoundAC C++ API.} Include \texttt{CsoundAC.hpp} (page \pageref{CsoundAC_8hpp}) and link with \verb|libcsound.a|, \verb|lib_csnd.a|, and \verb|libCsoundAC.a|. The \texttt{CsoundAC} class (\ref{classCsoundAC}) contains an instance of the \texttt{CppSound} class (\ref{classCppSound}), which adds to the Csound a basic graphical user interface for editing Csound files and running Csound, and provides a class hierarchy for doing algorithmic composition using Michael Gogins' concept of music graphs (also known as Silence).
92
93\item \emph{The Csound Python API.} Import the \texttt{csnd} Python extension module. This provides a complete Python wrapper for \texttt{csound.hpp} (page \pageref{csound_8hpp}), \texttt{CppSound} (\ref{classCppSound}), and \texttt{CsoundFile} (\ref{classCsoundFile}). The Python API provides a complete Python wrapper for the entire Csound C++ API, and the Csound C++ API reference also serves as a reference to the Python API.
94
95\item \emph{The CsoundAC Python API.} Import the \texttt{CsoundAC} Python extension module. The Python API provides a complete Python wrapper for the entire CsoundAC C++ API, including Silence, and the CsoundAC C++ API reference also serves as a reference to the Python API.
96
97\item \emph{An experimental LISP API.}
98
99\end{itemize}
100
101\section{An Example Using the Csound API}
102
103The Csound command--line program is itself built using the Csound API. Its code reads in full as follows:
104
105\begin{lstlisting}
106#include "csound.h"
107
108int main(int argc, char **argv)
109{
110 // Create Csound.
111 void *csound = csoundCreate(0);
112 // One complete performance cycle.
113 int result = csoundCompile(csound, argc, argv);
114 if(!result)
115 {
116 while(csoundPerformKsmps(csound) == 0){}
117 csoundCleanup(csound);
118 }
119 // Destroy Csound.
120 csoundDestroy(csound);
121 return result;
122}
123\end{lstlisting}
124
125\section{An Example Using the CsoundAC C++ API}
126
127CsoundAC extends the Csound API with C++. There is a C++ class for the Csound API proper, another C++ class for manipulating Csound files in code, and additional classes for algorithmic composition based on music space. All these C++ classes also have a Python interface in the \texttt{CsoundAC} Python extension module.
128
129You can build CsoundAC into your own software using the \texttt{CsoundAC} shared library and \texttt{CsoundAC.hpp} header file.
130
131\section{Cscore}
132
133Beginning with Csound 5, all of the Cscore functions described in the
134manual are now part of the Csound API, and they can be called from a program
135that calls the Csound library.
136
137All of the CScore functions are renamed in the Csound API. For example, \texttt{createv()} is now
138\texttt{cscoreCreateEvent()}, and \texttt{lcopy()} is now \texttt{cscoreListCopy()}. In addition, each
139function takes an additional first parameter that is a pointer to a \texttt{CSOUND}
140instance. You can find the details in the header file, \url{cscore.h}, which may
141be included with your Csound distribution, or if not, can be found in Csound CVS on SourceForge.
142
143Before you can use any of the Cscore API functions, you must create a \texttt{CSOUND}
144instance and initialize Cscore by calling \texttt{csoundInitializeCscore()} -- see
145\url{csound.h} for an explanation. An example main program that does all of this
146can be found in Csound CVS on SourceForge in \url{Top/cscormai.c}. You should add a
147function called \texttt{cscore()} with your own score-processing code. An example
148that does nothing except write the score back out unchanged can be found in the file
149\url{Top/cscore_internal.c}.
150
151To create your own standalone Cscore program, you must
152compile \url{cscormai.c} (or your own main program) and the file containing your
153\texttt{cscore()} function, and link them with the Csound API library.
154
155Everything that can be done using C as in the above examples can also be done in a similar manner in Python or any of the other Csound API languages.
156
157\part{API Reference}
158
1590
=== removed directory '.pc/2013-no-rawwave-defined.diff'
=== removed directory '.pc/2013-no-rawwave-defined.diff/Opcodes'
=== removed directory '.pc/2013-no-rawwave-defined.diff/Opcodes/stk'
=== removed file '.pc/2013-no-rawwave-defined.diff/Opcodes/stk/stkOpcodes.cpp'
--- .pc/2013-no-rawwave-defined.diff/Opcodes/stk/stkOpcodes.cpp 2011-01-17 22:56:00 +0000
+++ .pc/2013-no-rawwave-defined.diff/Opcodes/stk/stkOpcodes.cpp 1970-01-01 00:00:00 +0000
@@ -1,723 +0,0 @@
1/*
2 This file is part of Csound.
3
4 The Csound Library is free software; you can redistribute it
5 and/or modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 Csound is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with Csound; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA
18*/
19/*
20 * CSOUND 5 OPCODES FOR PERRY COOK'S SYNTHESIS TOOLKIT IN C++ (STK) INSTRUMENT
21 *
22 * This code is copyright (C) 2005 by Michael Gogins. It is licensed under the
23 * same terms as the Synthesis Tookit in C++ by Perry R. Cook and Gary P. Scavone.
24 *
25 * To compile these opcodes, copy the STK include, src, and rawwaves directories
26 * to the csound5/Opcodes/stk directory as follows:
27 *
28 * csound5/Opcodes/stk/include
29 * csound5/Opcodes/stk/src
30 * csound5/Opcodes/stk/rawwaves
31 *
32 * Also, specify buildStkOpcodes=1 for SCons.
33 *
34 * To use these opcodes, define a RAWWAVE_PATH environment variable that points
35 * to your rawwaves directory, which contains raw soundfiles with function table
36 * data.
37 *
38 * All these opcodes are named "STK" + the STK classname,
39 * e.g. "STKBowed" for the Bowed instrument.
40 *
41 * All the STK opcodes have the same signature:
42 *
43 * aout STKName ifrequency igain {kcontroller0, kvalue1,...,kcontroller3, kvalue3}
44 *
45 * They take a frequency in Hertz and a gain parameter in the range [0, 1],
46 * plus up to four optional krate controller-value pairs, and return an arate
47 * signal that should be more or less in the range [-1, +1].
48 * See the STK class documentation to determine the controller numbers
49 * used by each instrument.
50 */
51#include <Stk.h>
52#include <BandedWG.h>
53#include <BeeThree.h>
54#include <BlowBotl.h>
55#include <BlowHole.h>
56#include <Bowed.h>
57#include <Brass.h>
58#include <Clarinet.h>
59#include <Drummer.h>
60#include <Flute.h>
61#include <FMVoices.h>
62#include <HevyMetl.h>
63#include <Mandolin.h>
64//#include <Mesh2D.h>
65#include <ModalBar.h>
66#include <Moog.h>
67#include <PercFlut.h>
68#include <Plucked.h>
69#include <Resonate.h>
70#include <Rhodey.h>
71#include <Saxofony.h>
72#include <Shakers.h>
73#include <Simple.h>
74#include <Sitar.h>
75#include <StifKarp.h>
76#include <TubeBell.h>
77#include <VoicForm.h>
78#include <Whistle.h>
79#include <Wurley.h>
80
81using namespace stk;
82
83#include <cstdlib>
84#include <cstdio>
85#include <string>
86#include <map>
87#include <vector>
88
89using namespace std;
90
91#include <OpcodeBase.hpp>
92
93#include "csGblMtx.h"
94
95static std::map<CSOUND *, std::vector<Instrmnt *> > &getStkInstances()
96{
97 static std::map<CSOUND *, std::vector<Instrmnt *> > stkInstances;
98 return stkInstances;
99}
100
101template<typename T>
102class STKInstrumentAdapter : public OpcodeBase< STKInstrumentAdapter<T> >
103{
104public:
105 // Outputs.
106 MYFLT *aoutput;
107 // Inputs.
108 MYFLT *ifrequency;
109 MYFLT *igain;
110 MYFLT *kcontroller0;
111 MYFLT *kvalue0;
112 MYFLT *kcontroller1;
113 MYFLT *kvalue1;
114 MYFLT *kcontroller2;
115 MYFLT *kvalue2;
116 MYFLT *kcontroller3;
117 MYFLT *kvalue3;
118 MYFLT *kcontroller4;
119 MYFLT *kvalue4;
120 MYFLT *kcontroller5;
121 MYFLT *kvalue5;
122 MYFLT *kcontroller6;
123 MYFLT *kvalue6;
124 MYFLT *kcontroller7;
125 MYFLT *kvalue7;
126 // State.
127 T *instrument;
128 size_t ksmps;
129 bool released;
130 MYFLT oldkcontroller0;
131 MYFLT oldkvalue0;
132 MYFLT oldkcontroller1;
133 MYFLT oldkvalue1;
134 MYFLT oldkcontroller2;
135 MYFLT oldkvalue2;
136 MYFLT oldkcontroller3;
137 MYFLT oldkvalue3;
138 MYFLT oldkcontroller4;
139 MYFLT oldkvalue4;
140 MYFLT oldkcontroller5;
141 MYFLT oldkvalue5;
142 MYFLT oldkcontroller6;
143 MYFLT oldkvalue6;
144 MYFLT oldkcontroller7;
145 MYFLT oldkvalue7;
146 STKInstrumentAdapter() : instrument(0) {}
147 int init(CSOUND *csound)
148 {
149 if(!instrument)
150 {
151 Stk::setSampleRate(csound->esr);
152 instrument = new T();
153 getStkInstances()[csound].push_back(instrument);
154 }
155 ksmps = csound->ksmps;
156 instrument->noteOn(*ifrequency, *igain);
157 released = false;
158 oldkcontroller0 = -1.0;
159 oldkvalue0 = -1.0;
160 oldkcontroller1 = -1.0;
161 oldkvalue1 = -1.0;
162 oldkcontroller2 = -1.0;
163 oldkvalue2 = -1.0;
164 oldkcontroller3 = -1.0;
165 oldkvalue3 = -1.0;
166 oldkcontroller4 = -1.0;
167 oldkvalue4 = -1.0;
168 oldkcontroller5 = -1.0;
169 oldkvalue5 = -1.0;
170 oldkcontroller6 = -1.0;
171 oldkvalue6 = -1.0;
172 oldkcontroller7 = -1.0;
173 oldkvalue7 = -1.0;
174 return OK;
175 }
176 int kontrol(CSOUND *csound)
177 {
178 if(!released)
179 {
180 if(*kcontroller0 != oldkcontroller0 || *kvalue0 != oldkvalue0)
181 {
182 instrument->controlChange(static_cast<int>(*kcontroller0), *kvalue0);
183 oldkcontroller0 = *kcontroller0;
184 oldkvalue0 = *kvalue0;
185 }
186 if(*kcontroller1 != oldkcontroller1 || *kvalue1 != oldkvalue1)
187 {
188 instrument->controlChange(static_cast<int>(*kcontroller1), *kvalue1);
189 oldkcontroller1 = *kcontroller1;
190 oldkvalue1 = *kvalue1;
191 }
192 if(*kcontroller2 != oldkcontroller2 || *kvalue2 != oldkvalue2)
193 {
194 instrument->controlChange(static_cast<int>(*kcontroller2), *kvalue2);
195 oldkcontroller2 = *kcontroller2;
196 oldkvalue2 = *kvalue2;
197 }
198 if(*kcontroller3 != oldkcontroller3 || *kvalue3 != oldkvalue3)
199 {
200 instrument->controlChange(static_cast<int>(*kcontroller3), *kvalue3);
201 oldkcontroller3 = *kcontroller3;
202 oldkvalue3 = *kvalue3;
203 }
204 if(*kcontroller4 != oldkcontroller4 || *kvalue4 != oldkvalue4)
205 {
206 instrument->controlChange(static_cast<int>(*kcontroller4), *kvalue4);
207 oldkcontroller4 = *kcontroller4;
208 oldkvalue4 = *kvalue4;
209 }
210 if(*kcontroller5 != oldkcontroller5 || *kvalue5 != oldkvalue5)
211 {
212 instrument->controlChange(static_cast<int>(*kcontroller5), *kvalue5);
213 oldkcontroller5 = *kcontroller5;
214 oldkvalue5 = *kvalue5;
215 }
216 if(*kcontroller6 != oldkcontroller6 || *kvalue6 != oldkvalue6)
217 {
218 instrument->controlChange(static_cast<int>(*kcontroller6), *kvalue6);
219 oldkcontroller6 = *kcontroller6;
220 oldkvalue6 = *kvalue6;
221 }
222 if(*kcontroller7 != oldkcontroller7 || *kvalue7 != oldkvalue7)
223 {
224 instrument->controlChange(static_cast<int>(*kcontroller7), *kvalue7);
225 oldkcontroller7 = *kcontroller7;
226 oldkvalue7 = *kvalue7;
227 }
228 for(size_t i = 0; i < ksmps; i++)
229 {
230 aoutput[i] = instrument->tick();
231 }
232 }
233 else
234 {
235 // memset(aoutput, 0, ksmps*sizeof(MYFLT));
236 for(size_t i = 0; i < ksmps; i++)
237 {
238 aoutput[i] = 0;
239 }
240 }
241 return OK;
242 }
243};
244
245template<typename T>
246class STKInstrumentAdapter1 : public OpcodeBase< STKInstrumentAdapter1<T> >
247{
248public:
249 // Outputs.
250 MYFLT *aoutput;
251 // Inputs.
252 MYFLT *ifrequency;
253 MYFLT *igain;
254 MYFLT *kcontroller0;
255 MYFLT *kvalue0;
256 MYFLT *kcontroller1;
257 MYFLT *kvalue1;
258 MYFLT *kcontroller2;
259 MYFLT *kvalue2;
260 MYFLT *kcontroller3;
261 MYFLT *kvalue3;
262 MYFLT *kcontroller4;
263 MYFLT *kvalue4;
264 MYFLT *kcontroller5;
265 MYFLT *kvalue5;
266 MYFLT *kcontroller6;
267 MYFLT *kvalue6;
268 MYFLT *kcontroller7;
269 MYFLT *kvalue7;
270 // State.
271 T *instrument;
272 size_t ksmps;
273 bool released;
274 MYFLT oldkcontroller0;
275 MYFLT oldkvalue0;
276 MYFLT oldkcontroller1;
277 MYFLT oldkvalue1;
278 MYFLT oldkcontroller2;
279 MYFLT oldkvalue2;
280 MYFLT oldkcontroller3;
281 MYFLT oldkvalue3;
282 MYFLT oldkcontroller4;
283 MYFLT oldkvalue4;
284 MYFLT oldkcontroller5;
285 MYFLT oldkvalue5;
286 MYFLT oldkcontroller6;
287 MYFLT oldkvalue6;
288 MYFLT oldkcontroller7;
289 MYFLT oldkvalue7;
290 STKInstrumentAdapter1() : instrument(0) {}
291 int init(CSOUND *csound)
292 {
293 if(!instrument) {
294 Stk::setSampleRate(csound->esr);
295 instrument = new T((StkFloat) 10.0);
296 getStkInstances()[csound].push_back(instrument);
297 }
298 ksmps = csound->ksmps;
299 instrument->noteOn(*ifrequency, *igain);
300 released = false;
301 oldkcontroller0 = -1.0;
302 oldkvalue0 = -1.0;
303 oldkcontroller1 = -1.0;
304 oldkvalue1 = -1.0;
305 oldkcontroller2 = -1.0;
306 oldkvalue2 = -1.0;
307 oldkcontroller3 = -1.0;
308 oldkvalue3 = -1.0;
309 oldkcontroller4 = -1.0;
310 oldkvalue4 = -1.0;
311 oldkcontroller5 = -1.0;
312 oldkvalue5 = -1.0;
313 oldkcontroller6 = -1.0;
314 oldkvalue6 = -1.0;
315 oldkcontroller7 = -1.0;
316 oldkvalue7 = -1.0;
317 return OK;
318 }
319 int kontrol(CSOUND *csound)
320 {
321 if(!released)
322 {
323 if(*kcontroller0 != oldkcontroller0 || *kvalue0 != oldkvalue0)
324 {
325 instrument->controlChange(static_cast<int>(*kcontroller0), *kvalue0);
326 oldkcontroller0 = *kcontroller0;
327 oldkvalue0 = *kvalue0;
328 }
329 if(*kcontroller1 != oldkcontroller1 || *kvalue1 != oldkvalue1)
330 {
331 instrument->controlChange(static_cast<int>(*kcontroller1), *kvalue1);
332 oldkcontroller1 = *kcontroller1;
333 oldkvalue1 = *kvalue1;
334 }
335 if(*kcontroller2 != oldkcontroller2 || *kvalue2 != oldkvalue2)
336 {
337 instrument->controlChange(static_cast<int>(*kcontroller2), *kvalue2);
338 oldkcontroller2 = *kcontroller2;
339 oldkvalue2 = *kvalue2;
340 }
341 if(*kcontroller3 != oldkcontroller3 || *kvalue3 != oldkvalue3)
342 {
343 instrument->controlChange(static_cast<int>(*kcontroller3), *kvalue3);
344 oldkcontroller3 = *kcontroller3;
345 oldkvalue3 = *kvalue3;
346 }
347 if(*kcontroller4 != oldkcontroller4 || *kvalue4 != oldkvalue4)
348 {
349 instrument->controlChange(static_cast<int>(*kcontroller4), *kvalue4);
350 oldkcontroller4 = *kcontroller4;
351 oldkvalue4 = *kvalue4;
352 }
353 if(*kcontroller5 != oldkcontroller5 || *kvalue5 != oldkvalue5)
354 {
355 instrument->controlChange(static_cast<int>(*kcontroller5), *kvalue5);
356 oldkcontroller5 = *kcontroller5;
357 oldkvalue5 = *kvalue5;
358 }
359 if(*kcontroller6 != oldkcontroller6 || *kvalue6 != oldkvalue6)
360 {
361 instrument->controlChange(static_cast<int>(*kcontroller6), *kvalue6);
362 oldkcontroller6 = *kcontroller6;
363 oldkvalue6 = *kvalue6;
364 }
365 if(*kcontroller7 != oldkcontroller7 || *kvalue7 != oldkvalue7)
366 {
367 instrument->controlChange(static_cast<int>(*kcontroller7), *kvalue7);
368 oldkcontroller7 = *kcontroller7;
369 oldkvalue7 = *kvalue7;
370 }
371 for(size_t i = 0; i < ksmps; i++)
372 {
373 aoutput[i] = instrument->tick();
374 }
375 }
376 else
377 {
378 // memset(aoutput, 0, ksmps*sizef(MYFLT));
379 for(size_t i = 0; i < ksmps; i++)
380 {
381 aoutput[i] = 0;
382 }
383 }
384 return OK;
385 }
386};
387
388extern "C"
389{
390 OENTRY oentries[] =
391 {
392 {
393 (char*)"STKBandedWG",
394 sizeof(STKInstrumentAdapter<BandedWG>),
395 3,
396 (char*)"a",
397 (char*)"iiJJJJJJJJJJJJJJJJ",
398 (SUBR) STKInstrumentAdapter<BandedWG>::init_,
399 (SUBR) STKInstrumentAdapter<BandedWG>::kontrol_,
400 0,
401 },
402 {
403 (char*)"STKBeeThree",
404 sizeof(STKInstrumentAdapter<BeeThree>),
405 3,
406 (char*)"a",
407 (char*)"iiJJJJJJJJJJJJJJJJ",
408 (SUBR) STKInstrumentAdapter<BeeThree>::init_,
409 (SUBR) STKInstrumentAdapter<BeeThree>::kontrol_,
410 0,
411 },
412 {
413 (char*)"STKBlowBotl",
414 sizeof(STKInstrumentAdapter<BlowBotl>),
415 3,
416 (char*)"a",
417 (char*)"iiJJJJJJJJJJJJJJJJ",
418 (SUBR) STKInstrumentAdapter<BlowBotl>::init_,
419 (SUBR) STKInstrumentAdapter<BlowBotl>::kontrol_,
420 0,
421 },
422 {
423 (char*)"STKBlowHole",
424 sizeof(STKInstrumentAdapter1<BlowHole>),
425 3,
426 (char*)"a",
427 (char*)"iiJJJJJJJJJJJJJJJJ",
428 (SUBR) STKInstrumentAdapter1<BlowHole>::init_,
429 (SUBR) STKInstrumentAdapter1<BlowHole>::kontrol_,
430 0,
431 },
432 {
433 (char*)"STKBowed",
434 sizeof(STKInstrumentAdapter1<Bowed>),
435 3,
436 (char*)"a",
437 (char*)"iiJJJJJJJJJJJJJJJJ",
438 (SUBR) STKInstrumentAdapter1<Bowed>::init_,
439 (SUBR) STKInstrumentAdapter1<Bowed>::kontrol_,
440 0,
441 },
442 {
443 (char*)"STKBrass",
444 sizeof(STKInstrumentAdapter1<Brass>),
445 3,
446 (char*)"a",
447 (char*)"iiJJJJJJJJJJJJJJJJ",
448 (SUBR) STKInstrumentAdapter1<Brass>::init_,
449 (SUBR) STKInstrumentAdapter1<Brass>::kontrol_,
450 0,
451 },
452 {
453 (char*)"STKClarinet",
454 sizeof(STKInstrumentAdapter1<Clarinet>),
455 3,
456 (char*)"a",
457 (char*)"iiJJJJJJJJJJJJJJJJ",
458 (SUBR) STKInstrumentAdapter1<Clarinet>::init_,
459 (SUBR) STKInstrumentAdapter1<Clarinet>::kontrol_,
460 0,
461 },
462 {
463 (char*)"STKDrummer",
464 sizeof(STKInstrumentAdapter<Drummer>),
465 3,
466 (char*)"a",
467 (char*)"iiJJJJJJJJJJJJJJJJ",
468 (SUBR) STKInstrumentAdapter<Drummer>::init_,
469 (SUBR) STKInstrumentAdapter<Drummer>::kontrol_,
470 0,
471 },
472 {
473 (char*)"STKFlute",
474 sizeof(STKInstrumentAdapter1<Flute>),
475 3,
476 (char*)"a",
477 (char*)"iiJJJJJJJJJJJJJJJJ",
478 (SUBR) STKInstrumentAdapter1<Flute>::init_,
479 (SUBR) STKInstrumentAdapter1<Flute>::kontrol_,
480 0,
481 },
482 {
483 (char*)"STKFMVoices",
484 sizeof(STKInstrumentAdapter<FMVoices>),
485 3,
486 (char*)"a",
487 (char*)"iiJJJJJJJJJJJJJJJJ",
488 (SUBR) STKInstrumentAdapter<FMVoices>::init_,
489 (SUBR) STKInstrumentAdapter<FMVoices>::kontrol_,
490 0,
491 },
492 {
493 (char*)"STKHevyMetl",
494 sizeof(STKInstrumentAdapter<HevyMetl>),
495 3,
496 (char*)"a",
497 (char*)"iiJJJJJJJJJJJJJJJJ",
498 (SUBR) STKInstrumentAdapter<HevyMetl>::init_,
499 (SUBR) STKInstrumentAdapter<HevyMetl>::kontrol_,
500 0,
501 },
502 {
503 (char*)"STKMandolin",
504 sizeof(STKInstrumentAdapter1<Mandolin>),
505 3,
506 (char*)"a",
507 (char*)"iiJJJJJJJJJJJJJJJJ",
508 (SUBR) STKInstrumentAdapter1<Mandolin>::init_,
509 (SUBR) STKInstrumentAdapter1<Mandolin>::kontrol_,
510 0,
511 },
512 {
513 (char*)"STKModalBar",
514 sizeof(STKInstrumentAdapter<ModalBar>),
515 3,
516 (char*)"a",
517 (char*)"iiJJJJJJJJJJJJJJJJ",
518 (SUBR) STKInstrumentAdapter<ModalBar>::init_,
519 (SUBR) STKInstrumentAdapter<ModalBar>::kontrol_,
520 0,
521 },
522 {
523 (char*)"STKMoog",
524 sizeof(STKInstrumentAdapter<Moog>),
525 3,
526 (char*)"a",
527 (char*)"iiJJJJJJJJJJJJJJJJ",
528 (SUBR) STKInstrumentAdapter<Moog>::init_,
529 (SUBR) STKInstrumentAdapter<Moog>::kontrol_,
530 0,
531 },
532 {
533 (char*)"STKPercFlut",
534 sizeof(STKInstrumentAdapter<PercFlut>),
535 3,
536 (char*)"a",
537 (char*)"iiJJJJJJJJJJJJJJJJ",
538 (SUBR) STKInstrumentAdapter<PercFlut>::init_,
539 (SUBR) STKInstrumentAdapter<PercFlut>::kontrol_,
540 0,
541 },
542 {
543 (char*)"STKPlucked",
544 sizeof(STKInstrumentAdapter1<Plucked>),
545 3,
546 (char*)"a",
547 (char*)"iiJJJJJJJJJJJJJJJJ",
548 (SUBR) STKInstrumentAdapter1<Plucked>::init_,
549 (SUBR) STKInstrumentAdapter1<Plucked>::kontrol_,
550 0,
551 },
552 {
553 (char*)"STKResonate",
554 sizeof(STKInstrumentAdapter<Resonate>),
555 3,
556 (char*)"a",
557 (char*)"iiJJJJJJJJJJJJJJJJ",
558 (SUBR) STKInstrumentAdapter<Resonate>::init_,
559 (SUBR) STKInstrumentAdapter<Resonate>::kontrol_,
560 0,
561 },
562 {
563 (char*)"STKRhodey",
564 sizeof(STKInstrumentAdapter<Rhodey>),
565 3,
566 (char*)"a",
567 (char*)"iiJJJJJJJJJJJJJJJJ",
568 (SUBR) STKInstrumentAdapter<Rhodey>::init_,
569 (SUBR) STKInstrumentAdapter<Rhodey>::kontrol_,
570 0,
571 },
572 {
573 (char*)"STKSaxofony",
574 sizeof(STKInstrumentAdapter1<Saxofony>),
575 3,
576 (char*)"a",
577 (char*)"iiJJJJJJJJJJJJJJJJ",
578 (SUBR) STKInstrumentAdapter1<Saxofony>::init_,
579 (SUBR) STKInstrumentAdapter1<Saxofony>::kontrol_,
580 0,
581 },
582 {
583 (char*)"STKShakers",
584 sizeof(STKInstrumentAdapter<Shakers>),
585 3,
586 (char*)"a",
587 (char*)"iiJJJJJJJJJJJJJJJJ",
588 (SUBR) STKInstrumentAdapter<Shakers>::init_,
589 (SUBR) STKInstrumentAdapter<Shakers>::kontrol_,
590 0,
591 },
592 {
593 (char*)"STKSimple",
594 sizeof(STKInstrumentAdapter<Simple>),
595 3,
596 (char*)"a",
597 (char*)"iiJJJJJJJJJJJJJJJJ",
598 (SUBR) STKInstrumentAdapter<Simple>::init_,
599 (SUBR) STKInstrumentAdapter<Simple>::kontrol_,
600 0,
601 },
602 {
603 (char*)"STKSitar",
604 sizeof(STKInstrumentAdapter<Sitar>),
605 3,
606 (char*)"a",
607 (char*)"iiJJJJJJJJJJJJJJJJ",
608 (SUBR) STKInstrumentAdapter<Sitar>::init_,
609 (SUBR) STKInstrumentAdapter<Sitar>::kontrol_,
610 0,
611 },
612 {
613 (char*)"STKStifKarp",
614 sizeof(STKInstrumentAdapter1<StifKarp>),
615 3,
616 (char*)"a",
617 (char*)"iiJJJJJJJJJJJJJJJJ",
618 (SUBR) STKInstrumentAdapter1<StifKarp>::init_,
619 (SUBR) STKInstrumentAdapter1<StifKarp>::kontrol_,
620 0,
621 },
622 {
623 (char*)"STKTubeBell",
624 sizeof(STKInstrumentAdapter<TubeBell>),
625 3,
626 (char*)"a",
627 (char*)"iiJJJJJJJJJJJJJJJJ",
628 (SUBR) STKInstrumentAdapter<TubeBell>::init_,
629 (SUBR) STKInstrumentAdapter<TubeBell>::kontrol_,
630 0,
631 },
632 {
633 (char*)"STKVoicForm",
634 sizeof(STKInstrumentAdapter<VoicForm>),
635 3,
636 (char*)"a",
637 (char*)"iiJJJJJJJJJJJJJJJJ",
638 (SUBR) STKInstrumentAdapter<VoicForm>::init_,
639 (SUBR) STKInstrumentAdapter<VoicForm>::kontrol_,
640 0,
641 },
642 {
643 (char*)"STKWhistle",
644 sizeof(STKInstrumentAdapter<Whistle>),
645 3,
646 (char*)"a",
647 (char*)"iiJJJJJJJJJJJJJJJJ",
648 (SUBR) STKInstrumentAdapter<Whistle>::init_,
649 (SUBR) STKInstrumentAdapter<Whistle>::kontrol_,
650 0,
651 },
652 {
653 (char*)"STKWurley",
654 sizeof(STKInstrumentAdapter<Wurley>),
655 3,
656 (char*)"a",
657 (char*)"iiJJJJJJJJJJJJJJJJ",
658 (SUBR) STKInstrumentAdapter<Wurley>::init_,
659 (SUBR) STKInstrumentAdapter<Wurley>::kontrol_,
660 0,
661 },
662 {
663 0,
664 0,
665 0,
666 0,
667 0,
668 0,
669 0,
670 0,
671 }
672 };
673
674 PUBLIC int csoundModuleCreate(CSOUND *csound)
675 {
676 return 0;
677 }
678
679 PUBLIC int csoundModuleInit(CSOUND *csound)
680 {
681 const char *path = csound->GetEnv(csound, "RAWWAVE_PATH");
682 if(!path)
683 {
684 csound->ErrorMsg(csound,
685 Str("Error: define environment variable RAWWAVE_PATH\n"
686 "(points to rawwaves directory) to use STK opcodes."));
687 return 0;
688 }
689 else
690 {
691 csound_global_mutex_lock();
692 Stk::setRawwavePath(path);
693 csound_global_mutex_unlock();
694 csound->Message(csound,
695 Str("RAWWAVE_PATH: %s\n"), Stk::rawwavePath().c_str());
696 }
697 int status = 0;
698 for(OENTRY *oentry = &oentries[0]; oentry->opname; oentry++)
699 {
700 status |= csound->AppendOpcode(csound, oentry->opname,
701 oentry->dsblksiz, oentry->thread,
702 oentry->outypes, oentry->intypes,
703 (int (*)(CSOUND*,void*)) oentry->iopadr,
704 (int (*)(CSOUND*,void*)) oentry->kopadr,
705 (int (*)(CSOUND*,void*)) oentry->aopadr);
706 }
707 return status;
708 }
709
710 PUBLIC int csoundModuleDestroy(CSOUND *csound)
711 {
712 if (getStkInstances().find(csound) != getStkInstances().end()) {
713 for(size_t i = 0, n = getStkInstances()[csound].size(); i < n; ++i) {
714 delete getStkInstances()[csound][i];
715 }
716 getStkInstances()[csound].clear();
717 getStkInstances().erase(csound);
718 }
719 return 0;
720 }
721
722}
723
7240
=== removed directory '.pc/2014-cmake-libsndfile-hack.patch'
=== removed file '.pc/2014-cmake-libsndfile-hack.patch/CMakeLists.txt'
--- .pc/2014-cmake-libsndfile-hack.patch/CMakeLists.txt 2012-06-16 10:01:58 +0000
+++ .pc/2014-cmake-libsndfile-hack.patch/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,856 +0,0 @@
1cmake_minimum_required(VERSION 2.6)
2
3project (Csound)
4
5message(STATUS "${CMAKE_HOME_DIRECTORY}")
6
7# Project definitions
8set(APIVERSION "5.2")
9
10# Relative install paths
11set(EXECUTABLE_INSTALL_DIR "bin")
12set(LIBRARY_INSTALL_DIR "lib")
13if(USE_DOUBLE)
14 set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins64-${APIVERSION}")
15else()
16 set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins-${APIVERSION}")
17endif()
18set(PYTHON_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
19set(JAVA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
20set(LUA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
21set(LOCALE_INSTALL_DIR "share/locale")
22set(HEADER_INSTALL_DIR "include/csound")
23
24include(TestBigEndian)
25include(CheckFunctionExists)
26include(CheckIncludeFile)
27include(CheckIncludeFileCXX)
28include(CheckLibraryExists)
29include(CMakeParseArguments)
30
31# Utility function to make plugins. All plugin targets should use this as it
32# sets up output directory set in top-level CmakeLists.txt
33# and adds the appropriate install target
34#
35# libname - name of library to produce
36# srcs - list of src files (must be quoted if a list)
37# extralibs (OPTIONAL) - extra libraries to link the plugin to
38#
39function(make_plugin libname srcs)
40 if(APPLE)
41 add_library(${libname} SHARED ${srcs})
42 else()
43 add_library(${libname} MODULE ${srcs})
44 endif()
45
46 set(i 2)
47 while( ${i} LESS ${ARGC} )
48 if(NOT MSVC OR NOT("${ARGV${i}}" MATCHES "m"))
49 target_link_libraries(${libname} ${ARGV${i}})
50 endif()
51 math(EXPR i "${i}+1")
52 endwhile()
53
54 set_target_properties(${libname} PROPERTIES
55 RUNTIME_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
56 LIBRARY_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
57 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR})
58
59 install(TARGETS ${libname}
60 LIBRARY DESTINATION "${PLUGIN_INSTALL_DIR}" )
61endfunction(make_plugin)
62# Utility function to make executables. All plugin targets should use this as it
63# sets up output directory set in top-level CmakeLists.txt
64# and adds an appropriate install target
65#
66# name - name of executable to produce
67# srcs - list of src files
68# libs - list of library files to link to
69# output_name (OPTIONAL) - overide the name of the generated executable
70#
71function(make_executable name srcs libs)
72 add_executable(${name} ${srcs})
73 target_link_libraries (${name} ${libs})
74 set_target_properties(${name} PROPERTIES
75 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR})
76
77 if(${ARGC} EQUAL 4)
78 set_target_properties(${name} PROPERTIES
79 OUTPUT_NAME ${ARGV3})
80 endif()
81 install(TARGETS ${name}
82 RUNTIME DESTINATION "${EXECUTABLE_INSTALL_DIR}" )
83endfunction(make_executable)
84
85
86# Utility function to make a utility executable
87#
88# name - name of executable to produce
89# srcs - list of src files
90
91function(make_utility name srcs)
92 make_executable(${name} "${srcs}" "${CSOUNDLIB}")
93 add_dependencies(${name} ${CSOUNDLIB})
94endfunction()
95
96
97# Expands a list into a space-separated string (outvar element1 ....)
98# Why do I have to do this? Cmake, you just lost one point
99function(expand_list out)
100 set(i 1)
101 set(tmp "")
102 while( ${i} LESS ${ARGC} )
103 set(tmp "${tmp} ${ARGV${i}}")
104 math(EXPR i "${i}+1")
105 endwhile()
106 set(${out} "${tmp}" PARENT_SCOPE)
107endfunction(expand_list)
108
109# Checks if dependencies for an enabled target are fulfilled.
110# If FAIL_MISSING is true and the dependencies are not fulfilled,
111# it will abort the cmake run.
112# If FAIL_MISSING is false, it will set the option to OFF.
113# If the target is not enabled, it will do nothing.
114# example: check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
115function(check_deps option)
116 if(${option})
117 set(i 1)
118 while( ${i} LESS ${ARGC} )
119 set(dep ${ARGV${i}})
120 if(NOT ${dep})
121 if(FAIL_MISSING)
122 message(FATAL_ERROR
123 "${option} is enabled, but ${dep}=\"${${dep}}\"")
124 else()
125 message(STATUS "${dep}=\"${${dep}}\", so disabling ${option}")
126 set(${option} OFF PARENT_SCOPE)
127 # Set it in the local scope too
128 set(${option} OFF)
129 endif()
130 endif()
131 math(EXPR i "${i}+1")
132 endwhile()
133 endif()
134 if(${option})
135 message(STATUS "${option} is enabled")
136 else()
137 message(STATUS "${option} is disabled")
138 endif()
139endfunction(check_deps)
140
141# Shortcut to add compiler flags
142# Mandatory arguments: the flags to add, should be passed before optional keywords, can be
143# passed as lists or space-separated
144# Optional keywords:
145# LINKER: add to linker instead of compile flags (LDFLAGS vs CFLAGS)
146# TARGETS <target1> <target2> ...
147# if specified, will add the flags to a target instead
148# of the global namespace
149function(add_compiler_flags)
150 set(bool_options LINKER)
151 set(multi_val_args TARGETS)
152 cmake_parse_arguments(FLAGS "${bool_options}" "" "${multi_val_args}" ${ARGN})
153
154 expand_list(FLAGS ${FLAGS_UNPARSED_ARGUMENTS})
155
156 if(FLAGS_TARGETS)
157 foreach(target ${FLAGS_TARGETS})
158 if(NOT FLAGS_LINKER)
159 set(property "COMPILE_FLAGS")
160 else()
161 set(property "LINK_FLAGS")
162 endif()
163 get_target_property(propval ${target} ${property})
164 if(NOT propval)
165 set(propval "")
166 endif()
167 set_target_properties(${target} PROPERTIES
168 ${property} "${propval} ${FLAGS}")
169 endforeach()
170 else()
171 if(FLAGS_LINKER)
172 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS}")
173 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAGS}")
174 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAGS}")
175 else()
176 add_definitions("${FLAGS}")
177 endif()
178 endif()
179endfunction(add_compiler_flags)
180
181
182# Include this after the install path definitions so we can override them here.
183# Also after function definitions so we can use them there
184find_file(CUSTOM_CMAKE "Custom.cmake" HINTS ${CMAKE_HOME_DIRECTORY})
185if(CUSTOM_CMAKE)
186 message(STATUS "Including Custom.cmake file: ${CUSTOM_CMAKE}")
187 include(${CUSTOM_CMAKE})
188endif()
189
190
191if(WIN32 AND NOT MSVC)
192 if(EXISTS "C:/MinGW/include")
193 include_directories(C:/MinGW/include)
194 else()
195 MESSAGE(STATUS "MinGW include dir not found")
196 endif()
197endif()
198
199if(WIN32)
200 set(CMAKE_SHARED_LIBRARY_PREFIX "")
201 set(CMAKE_SHARED_MODULE_PREFIX "")
202
203 set(CSOUND_WINDOWS_LIBRARIES
204 advapi32
205 comctl32
206 comdlg32
207 glu32
208 kernel32
209 msvcrt
210 odbc32
211 odbccp32
212 ole32
213 oleaut32
214 shell32
215 user32
216 uuid
217 winmm
218 winspool
219 ws2_32
220 wsock32
221 advapi32
222 comctl32
223 comdlg32
224 glu32
225 kernel32
226 odbc32
227 odbccp32
228 ole32
229 oleaut32
230 shell32
231 user32
232 uuid
233 winmm
234 winspool
235 ws2_32
236 wsock32
237 pthread)
238
239endif(WIN32)
240
241if(CMAKE_SYSTEM_NAME MATCHES "Linux")
242 set(LINUX YES)
243else()
244 set(LINUX NO)
245endif()
246
247## USER OPTIONS ##
248
249option(USE_DOUBLE "Set to use double-precision floating point for audio samples." ON)
250option(BUILD_UTILITIES "Build stand-alone executables for utilities that can also be used with -U" ON)
251
252option(BUILD_NEW_PARSER "Enable building new parser (requires Flex/Bison)" ON)
253option(NEW_PARSER_DEBUG "Enable tracing of new parser" OFF)
254
255option(BUILD_MULTI_CORE "Enable building for multicore system (requires BUILD_NEW_PARSER)" ON)
256
257option(FAIL_MISSING "Fail when a required external dependency is not present (useful for packagers)" OFF)
258
259option(USE_GETTEXT "Use the Gettext internationalization library" ON)
260
261option(BUILD_STATIC_LIBRARY "Also build a static version of the csound library" OFF)
262
263option(USE_OPEN_MP "Use OpenMP for Parallel Performance" ON)
264option(USE_LRINT "Use lrint/lrintf for converting floating point values to integers." ON)
265option(BUILD_RELEASE "Build for release" ON)
266# Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
267
268
269set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
270
271# This needs to be here since _everybody_ needs this flag
272if(USE_DOUBLE)
273 add_definitions("-DUSE_DOUBLE")
274endif(USE_DOUBLE)
275if(${CMAKE_C_COMPILER} MATCHES "gcc" AND LINUX)
276 add_compiler_flags("-fvisibility=hidden")
277 add_compiler_flags("-fvisibility=hidden" LINKER)
278endif()
279
280if(BUILD_RELEASE)
281 add_definitions("-D_CSOUND_RELEASE_")
282 if(LINUX)
283 set(DEFAULT_OPCODEDIR "${CMAKE_INSTALL_PREFIX}/${PLUGIN_INSTALL_DIR}")
284 add_definitions("-DCS_DEFAULT_PLUGINDIR=\"${DEFAULT_OPCODEDIR}\"")
285 endif()
286else()
287 add_definitions("-DBETA")
288endif()
289
290if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
291 add_definitions("-Wno-format")
292 add_compiler_flags("-g")
293endif()
294
295#if(USE_DOUBLE)
296# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins64)
297#else()
298# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins)
299#endif()
300
301set(BUILD_PLUGINS_DIR ${BUILD_DIR})
302set(BUILD_BIN_DIR ${BUILD_DIR})
303set(BUILD_LIB_DIR ${BUILD_DIR})
304
305message(STATUS "BUILD_BIN_DIR set to ${BUILD_BIN_DIR}")
306message(STATUS "BUILD_LIB_DIR set to ${BUILD_LIB_DIR}")
307message(STATUS "BUILD_PLUGINS_DIR set to ${BUILD_PLUGINS_DIR}")
308
309# OS specific checks
310
311TEST_BIG_ENDIAN(BIG_ENDIAN)
312
313## CONFIGURATION ##
314
315SET(BUILD_SHARED_LIBS ON)
316
317## HEADER/LIBRARY/OTHER CHECKS ##
318
319find_package(OpenMP)
320
321# First, required stuff
322find_library(LIBSNDFILE_LIBRARY sndfile)
323
324if(NOT LIBSNDFILE_LIBRARY AND WIN32)
325find_library(LIBSNDFILE_LIBRARY sndfile-1)
326endif()
327
328if(NOT LIBSNDFILE_LIBRARY)
329 message(FATAL_ERROR "Csound requires the sndfile library")
330endif()
331
332find_path(SNDFILE_H_PATH sndfile.h)
333if(SNDFILE_H_PATH)
334 include_directories(${SNDFILE_H_PATH})
335else()
336 message(FATAL_ERROR "Could not find sndfile.h")
337endif()
338
339find_library(PTHREAD_LIBRARY pthread)
340
341if(NOT PTHREAD_LIBRARY AND WIN32)
342 find_library(PTHREAD_LIBRARY pthreadGC2)
343endif()
344
345if(NOT PTHREAD_LIBRARY)
346 message(FATAL_ERROR "Csound requires the pthread library")
347endif()
348
349set(CMAKE_REQUIRED_INCLUDES pthread.h)
350set(CMAKE_REQUIRED_LIBRARIES pthread)
351
352# Now, non required library searches #
353
354find_library(VORBISFILE_LIBRARY vorbisfile)
355check_include_file(libintl.h LIBINTL_HEADER)
356find_library(LIBINTL_LIBRARY intl)
357find_package(Gettext)
358check_library_exists(m lrint "" HAVE_LRINT)
359
360set(HEADERS_TO_CHECK
361 unistd.h io.h fcntl.h stdint.h
362 sys/time.h sys/types.h termios.h
363 values.h winsock.h sys/socket.h
364 dirent.h)
365
366foreach(header ${HEADERS_TO_CHECK})
367 # Convert to uppercase and replace [./] with _
368 string(TOUPPER ${header} tmp)
369 string(REGEX REPLACE [./] "_" upper_header ${tmp})
370 check_include_file(${header} HAVE_${upper_header})
371endforeach()
372
373check_deps(USE_LRINT HAVE_LRINT)
374if(USE_LRINT)
375 add_definitions("-DUSE_LRINT")
376endif()
377
378# Flex/Bison for the new parser
379if(BUILD_NEW_PARSER)
380 find_package(FLEX)
381 find_package(BISON)
382endif()
383
384## MAIN TARGETS ##
385
386set(libcsound_CFLAGS -D__BUILDING_LIBCSOUND)
387
388include_directories(./H)
389include_directories(./Engine)
390
391#adding this for files that #include SDIF/sdif*
392include_directories(./)
393
394#checking pthread functions
395check_function_exists(pthread_spin_lock PTHREAD_SPIN_LOCK_EXISTS)
396check_function_exists(pthread_barrier_init PTHREAD_BARRIER_INIT_EXISTS)
397
398if(PTHREAD_SPIN_LOCK_EXISTS)
399 list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_SPIN_LOCK)
400endif()
401
402if(PTHREAD_BARRIER_INIT_EXISTS)
403 list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_BARRIER_INIT)
404endif()
405
406
407check_deps(USE_OPEN_MP OPENMP_FOUND PTHREAD_BARRIER_INIT_EXISTS)
408if(USE_OPEN_MP)
409 list(APPEND libcsound_CFLAGS -DUSE_OPENMP)
410 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
411 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
412
413 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
414 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
415
416endif()
417
418
419#if(WIN32)
420 include_directories(${LIBSNDFILE_INCLUDE_DIRECTORY})
421#endif(WIN32)
422
423
424# The csound library
425set(libcsound_SRCS
426 Engine/auxfd.c
427 Engine/cfgvar.c
428 Engine/corfiles.c
429 Engine/entry1.c
430 Engine/envvar.c
431 Engine/express.c
432 Engine/extract.c
433 Engine/fgens.c
434 Engine/insert.c
435 Engine/linevent.c
436 Engine/memalloc.c
437 Engine/memfiles.c
438 Engine/musmon.c
439 Engine/namedins.c
440 Engine/otran.c
441 Engine/rdorch.c
442 Engine/rdscor.c
443 Engine/scsort.c
444 Engine/scxtract.c
445 Engine/sort.c
446 Engine/sread.c
447 Engine/swrite.c
448 Engine/swritestr.c
449 Engine/twarp.c
450 InOut/libsnd.c
451 InOut/libsnd_u.c
452 InOut/midifile.c
453 InOut/midirecv.c
454 InOut/midisend.c
455 InOut/winascii.c
456 InOut/windin.c
457 InOut/window.c
458 InOut/winEPS.c
459 OOps/aops.c
460 OOps/bus.c
461 OOps/cmath.c
462 OOps/diskin.c
463 OOps/diskin2.c
464 OOps/disprep.c
465 OOps/dumpf.c
466 OOps/fftlib.c
467 OOps/goto_ops.c
468 OOps/midiinterop.c
469 OOps/midiops.c
470 OOps/midiout.c
471 OOps/mxfft.c
472 OOps/oscils.c
473 OOps/pstream.c
474 OOps/pvfileio.c
475 OOps/pvsanal.c
476 OOps/random.c
477 OOps/remote.c
478 OOps/schedule.c
479 OOps/sndinfUG.c
480 OOps/str_ops.c
481 OOps/ugens1.c
482 OOps/ugens2.c
483 OOps/ugens2a.c
484 OOps/ugens3.c
485 OOps/ugens4.c
486 OOps/ugens5.c
487 OOps/ugens6.c
488 OOps/ugrw1.c
489 OOps/ugrw2.c
490 OOps/vdelay.c
491 Opcodes/babo.c
492 Opcodes/bilbar.c
493 Opcodes/compress.c
494 Opcodes/eqfil.c
495 Opcodes/Vosim.c
496 Opcodes/pitch.c
497 Opcodes/pitch0.c
498 Opcodes/spectra.c
499 Opcodes/ambicode1.c
500 Opcodes/sfont.c
501 Opcodes/grain4.c
502 Opcodes/hrtferX.c
503 Opcodes/loscilx.c
504 Opcodes/minmax.c
505 Opcodes/pan2.c
506 Opcodes/tabvars.c
507 Opcodes/phisem.c
508 Opcodes/hrtfopcodes.c
509 Opcodes/stackops.c
510 Opcodes/vbap.c
511 Opcodes/vbap_eight.c
512 Opcodes/vbap_four.c
513 Opcodes/vbap_sixteen.c
514 Opcodes/vbap_zak.c
515 Opcodes/vaops.c
516 Opcodes/ugakbari.c
517 Opcodes/harmon.c
518 Opcodes/pitchtrack.c
519 Opcodes/partikkel.c
520 Opcodes/shape.c
521 Opcodes/tabsum.c
522 Opcodes/crossfm.c
523 Opcodes/pvlock.c
524 Opcodes/fareyseq.c
525 Opcodes/modmatrix.c
526 Opcodes/scoreline.c
527 Opcodes/modal4.c
528 Opcodes/physutil.c
529 Opcodes/physmod.c
530 Opcodes/mandolin.c
531 Opcodes/singwave.c
532 Opcodes/fm4op.c
533 Opcodes/moog1.c
534 Opcodes/shaker.c
535 Opcodes/bowedbar.c
536 Opcodes/gab/tabmorph.c
537 Opcodes/gab/hvs.c
538 Opcodes/gab/sliderTable.c
539 Opcodes/gab/newgabopc.c
540 Opcodes/ftest.c
541 Opcodes/hrtfearly.c
542 Opcodes/hrtfreverb.c
543 Opcodes/cpumeter.c
544 Opcodes/gendy.c
545 Opcodes/tl/sc_noise.c
546 Top/argdecode.c
547 Top/cscore_internal.c
548 Top/cscorfns.c
549 Top/csmodule.c
550 Top/csound.c
551 Top/getstring.c
552 Top/main.c
553 Top/new_opts.c
554 Top/one_file.c
555 Top/opcode.c
556 Top/threads.c
557 Top/utility.c)
558
559set(stdopcod_SRCS
560 Opcodes/ambicode.c
561 Opcodes/bbcut.c
562 Opcodes/biquad.c
563 Opcodes/butter.c
564 Opcodes/clfilt.c
565 Opcodes/cross2.c
566 Opcodes/dam.c
567 Opcodes/dcblockr.c
568 Opcodes/filter.c
569 Opcodes/flanger.c
570 Opcodes/follow.c
571 Opcodes/fout.c
572 Opcodes/freeverb.c
573 Opcodes/ftconv.c
574 Opcodes/ftgen.c
575 Opcodes/gab/gab.c
576 Opcodes/gab/vectorial.c
577 Opcodes/grain.c
578 Opcodes/locsig.c
579 Opcodes/lowpassr.c
580 Opcodes/metro.c
581 Opcodes/midiops2.c
582 Opcodes/midiops3.c
583 Opcodes/newfils.c
584 Opcodes/nlfilt.c
585 Opcodes/oscbnk.c
586 Opcodes/pluck.c
587 Opcodes/repluck.c
588 Opcodes/reverbsc.c
589 Opcodes/seqtime.c
590 Opcodes/sndloop.c
591 Opcodes/sndwarp.c
592 Opcodes/space.c
593 Opcodes/spat3d.c
594 Opcodes/syncgrain.c
595 Opcodes/ugens7.c
596 Opcodes/ugens9.c
597 Opcodes/ugensa.c
598 Opcodes/uggab.c
599 Opcodes/ugmoss.c
600 Opcodes/ugnorman.c
601 Opcodes/ugsc.c
602 Opcodes/wave-terrain.c
603 Opcodes/stdopcod.c)
604
605set(cs_pvs_ops_SRCS
606 Opcodes/ifd.c
607 Opcodes/partials.c
608 Opcodes/psynth.c
609 Opcodes/pvsbasic.c
610 Opcodes/pvscent.c
611 Opcodes/pvsdemix.c
612 Opcodes/pvs_ops.c
613 Opcodes/pvsband.c
614 Opcodes/pvsbuffer.c)
615
616set(oldpvoc_SRCS
617 Opcodes/dsputil.c
618 Opcodes/pvadd.c
619 Opcodes/pvinterp.c
620 Opcodes/pvocext.c
621 Opcodes/pvread.c
622 Opcodes/ugens8.c
623 Opcodes/vpvoc.c
624 Opcodes/pvoc.c)
625
626set(mp3in_SRCS
627 Opcodes/mp3in.c
628 InOut/libmpadec/layer1.c
629 InOut/libmpadec/layer2.c
630 InOut/libmpadec/layer3.c
631 InOut/libmpadec/synth.c
632 InOut/libmpadec/tables.c
633 InOut/libmpadec/mpadec.c
634 InOut/libmpadec/mp3dec.c)
635
636
637list(APPEND libcsound_SRCS ${stdopcod_SRCS} ${cs_pvs_ops_SRCS} ${oldpvoc_SRCS} ${mp3in_SRCS})
638
639# Handling New Parser
640
641check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
642if(BUILD_NEW_PARSER)
643 add_custom_target(NewParser echo "Creating parser.c")
644
645 set(YACC_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_orc.y)
646 set(YACC_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_orcparse.c)
647
648 set(LEX_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_orc.l)
649 set(LEX_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_orclex.c)
650
651 set(PRELEX_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Engine/csound_pre.lex)
652 set(PRELEX_OUT ${CMAKE_CURRENT_BINARY_DIR}/csound_prelex.c)
653
654 add_custom_command(
655 SOURCE ${LEX_SRC}
656 COMMAND ${FLEX_EXECUTABLE} ARGS -B -t ${LEX_SRC} > ${LEX_OUT}
657 TARGET NewParser
658 OUTPUTS ${LEX_OUT})
659
660 add_custom_command(
661 SOURCE ${PRELEX_SRC}
662 COMMAND ${FLEX_EXECUTABLE} ARGS -B ${PRELEX_SRC} > ${PRELEX_OUT}
663 TARGET NewParser
664 OUTPUTS ${PRELEX_OUT})
665
666 add_custom_command(
667 SOURCE ${YACC_SRC}
668 COMMAND ${BISON_EXECUTABLE}
669 ARGS -pcsound_orc -d --report=itemset -o ${YACC_OUT} ${YACC_SRC}
670 TARGET NewParser
671 DEPENDS ${LEX_OUT}
672 OUTPUTS ${YACC_OUT})
673
674 list(APPEND libcsound_SRCS
675 ${LEX_OUT} ${YACC_OUT} ${PRELEX_OUT}
676 Engine/csound_orc_semantics.c
677 Engine/csound_orc_expressions.c
678 Engine/csound_orc_optimize.c
679 Engine/csound_orc_compile.c
680 Engine/new_orc_parser.c
681 Engine/symbtab.c)
682
683 set_source_files_properties(${YACC_OUT} GENERATED)
684 set_source_files_properties(${LEX_OUT} GENERATED)
685
686 include_directories(${CMAKE_CURRENT_BINARY_DIR})
687
688 list(APPEND libcsound_CFLAGS -DENABLE_NEW_PARSER)
689
690 if(NEW_PARSER_DEBUG)
691 message(STATUS "Building with new parser debugging")
692 list(APPEND libcsound_CFLAGS -DPARSER_DEBUG=1)
693 else()
694 message(STATUS "Not building with new parser debugging")
695 endif()
696
697 if(BUILD_MULTI_CORE)
698 message(STATUS "Building with multicore")
699
700 list(APPEND libcsound_SRCS
701 Engine/cs_par_base.c
702 Engine/cs_par_orc_semantic_analysis.c
703 Engine/cs_par_dispatch.c)
704
705 list(APPEND libcsound_CFLAGS -DPARCS)
706
707 else()
708 message(STATUS "Not building with multicore")
709 endif()
710
711endif()
712
713
714if(USE_DOUBLE)
715 set(CSOUNDLIB "csound64")
716else()
717 set(CSOUNDLIB "csound")
718endif()
719
720set(CSOUNDLIB_STATIC "${CSOUNDLIB}-static")
721
722
723add_library(${CSOUNDLIB} SHARED ${libcsound_SRCS})
724set_target_properties(${CSOUNDLIB} PROPERTIES
725 # Do not pull extra libs when linking against shared libcsound
726 # The shared library loader will do that for us
727 LINK_INTERFACE_LIBRARIES ""
728 SOVERSION ${APIVERSION})
729
730# Add the install target
731install(TARGETS ${CSOUNDLIB}
732 LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
733 ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
734
735set(libcsound_LIBS
736 ${LIBSNDFILE_LIBRARY}
737 ${PTHREAD_LIBRARY})
738
739if(WIN32)
740 list(APPEND libcsound_LIBS "${CSOUND_WINDOWS_LIBRARIES}")
741endif()
742
743# Linux does not have a separate libintl, it is part of libc
744set(LIBINTL_AVAIL (LIBINTL_LIBRARY OR LINUX))
745check_deps(USE_GETTEXT LIBINTL_HEADER LIBINTL_AVAIL GETTEXT_MSGFMT_EXECUTABLE)
746if(USE_GETTEXT)
747 message(STATUS "Using GNU Gettext")
748 if(NOT LINUX)
749 list(APPEND libcsound_LIBS ${LIBINTL_LIBRARY})
750 endif()
751 list(APPEND libcsound_CFLAGS -DGNU_GETTEXT)
752else()
753 message(STATUS "Not using localization")
754endif()
755
756
757if(LINUX)
758 message(STATUS "Building on Linux")
759 add_definitions(-DLINUX)
760 list(APPEND libcsound_LIBS m dl)
761endif()
762
763if(APPLE)
764 message(STATUS "Building on OSX")
765 add_definitions(-DMACOSX -DPIPES)
766 list(APPEND libcsound_LIBS m dl)
767endif()
768
769if(WIN32)
770 add_definitions(-DWIN32)
771endif()
772
773
774
775# Pass flags according to system capabilities
776
777if(HAVE_WINSOCK_H OR HAVE_SYS_SOCKETS_H)
778 list(APPEND libcsound_CFLAGS -DHAVE_SOCKETS)
779endif()
780if(HAVE_DIRENT_H)
781 list(APPEND libcsound_CFLAGS -DHAVE_DIRENT_H)
782endif()
783if(HAVE_FCNTL_H)
784 list(APPEND libcsound_CFLAGS -DHAVE_FCNTL_H)
785endif()
786if(HAVE_UNISTD_H)
787 list(APPEND libcsound_CFLAGS -DHAVE_UNISTD_H)
788endif()
789if(HAVE_STDINT_H)
790 list(APPEND libcsound_CFLAGS -DHAVE_STDINT_H)
791endif()
792if(HAVE_SYS_TIME_H)
793 list(APPEND libcsound_CFLAGS -DHAVE_SYS_TIME_H)
794endif()
795if(HAVE_SYS_TYPES_H)
796 list(APPEND libcsound_CFLAGS -DHAVE_SYS_TYPES_H)
797endif()
798if(HAVE_TERMIOS_H)
799 list(APPEND libcsound_CFLAGS -DHAVE_TERMIOS_H)
800endif()
801if(HAVE_VALUES_H)
802 list(APPEND libcsound_CFLAGS -DHAVE_VALUES_H)
803endif()
804#if(CMAKE_C_COMPILER MATCHES "gcc")
805# list(APPEND libcsound_CFLAGS -fno-strict-aliasing)
806#endif()
807if(BIG_ENDIAN)
808 list(APPEND libcsound_CFLAGS -DWORDS_BIGENDIAN)
809endif()
810
811add_compiler_flags(${libcsound_CFLAGS} TARGETS ${CSOUNDLIB})
812
813target_link_libraries(${CSOUNDLIB} ${libcsound_LIBS})
814
815set_target_properties(${CSOUNDLIB} PROPERTIES
816 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
817 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
818 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
819
820if(BUILD_STATIC_LIBRARY)
821 add_library(${CSOUNDLIB_STATIC} STATIC ${libcsound_SRCS})
822 SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES OUTPUT_NAME ${CSOUNDLIB})
823 SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES PREFIX "lib")
824 add_compiler_flags(${libcsound_CFLAGS} TARGETS ${CSOUNDLIB_STATIC})
825
826 target_link_libraries(${CSOUNDLIB_STATIC} ${libcsound_LIBS})
827
828 set_target_properties(${CSOUNDLIB_STATIC} PROPERTIES
829 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
830 LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
831 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
832
833 # Add the install target
834 install(TARGETS ${CSOUNDLIB_STATIC}
835 LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
836 ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
837endif()
838
839option(BUILD_CATALOG "Build the opcode/library catalog" OFF)
840check_deps(BUILD_CATALOG)
841if(BUILD_CATALOG)
842
843make_executable(mkdb "mkdb" "dl")
844set_target_properties(mkdb PROPERTIES LINKER_LANGUAGE C)
845endif()
846
847
848add_subdirectory(Opcodes)
849add_subdirectory(InOut)
850add_subdirectory(interfaces)
851add_subdirectory(frontends)
852add_subdirectory(util)
853add_subdirectory(util1)
854add_subdirectory(SDIF)
855add_subdirectory(po)
856add_subdirectory(H)
8570
=== removed directory '.pc/2020-libpthread-underlinkage.patch'
=== removed file '.pc/2020-libpthread-underlinkage.patch/CMakeLists.txt'
--- .pc/2020-libpthread-underlinkage.patch/CMakeLists.txt 2013-04-06 14:01:34 +0000
+++ .pc/2020-libpthread-underlinkage.patch/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,864 +0,0 @@
1cmake_minimum_required(VERSION 2.6)
2
3project (Csound)
4
5message(STATUS "${CMAKE_HOME_DIRECTORY}")
6
7# Project definitions
8set(APIVERSION "5.2")
9
10# Relative install paths
11set(EXECUTABLE_INSTALL_DIR "bin")
12set(LIBRARY_INSTALL_DIR "lib")
13if(USE_DOUBLE)
14 set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins64-${APIVERSION}")
15else()
16 set(PLUGIN_INSTALL_DIR "${LIBRARY_INSTALL_DIR}/csound/plugins-${APIVERSION}")
17endif()
18set(PYTHON_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
19set(JAVA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
20set(LUA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR})
21set(LOCALE_INSTALL_DIR "share/locale")
22set(HEADER_INSTALL_DIR "include/csound")
23
24include(TestBigEndian)
25include(CheckFunctionExists)
26include(CheckIncludeFile)
27include(CheckIncludeFileCXX)
28include(CheckLibraryExists)
29include(CMakeParseArguments)
30
31# Utility function to make plugins. All plugin targets should use this as it
32# sets up output directory set in top-level CmakeLists.txt
33# and adds the appropriate install target
34#
35# libname - name of library to produce
36# srcs - list of src files (must be quoted if a list)
37# extralibs (OPTIONAL) - extra libraries to link the plugin to
38#
39function(make_plugin libname srcs)
40 if(APPLE)
41 add_library(${libname} SHARED ${srcs})
42 else()
43 add_library(${libname} MODULE ${srcs})
44 endif()
45
46 set(i 2)
47 while( ${i} LESS ${ARGC} )
48 if(NOT MSVC OR NOT("${ARGV${i}}" MATCHES "m"))
49 target_link_libraries(${libname} ${ARGV${i}})
50 endif()
51 math(EXPR i "${i}+1")
52 endwhile()
53
54 set_target_properties(${libname} PROPERTIES
55 RUNTIME_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
56 LIBRARY_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR}
57 ARCHIVE_OUTPUT_DIRECTORY ${BUILD_PLUGINS_DIR})
58
59 install(TARGETS ${libname}
60 LIBRARY DESTINATION "${PLUGIN_INSTALL_DIR}" )
61endfunction(make_plugin)
62# Utility function to make executables. All plugin targets should use this as it
63# sets up output directory set in top-level CmakeLists.txt
64# and adds an appropriate install target
65#
66# name - name of executable to produce
67# srcs - list of src files
68# libs - list of library files to link to
69# output_name (OPTIONAL) - overide the name of the generated executable
70#
71function(make_executable name srcs libs)
72 add_executable(${name} ${srcs})
73 target_link_libraries (${name} ${libs})
74 set_target_properties(${name} PROPERTIES
75 RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR})
76
77 if(${ARGC} EQUAL 4)
78 set_target_properties(${name} PROPERTIES
79 OUTPUT_NAME ${ARGV3})
80 endif()
81 install(TARGETS ${name}
82 RUNTIME DESTINATION "${EXECUTABLE_INSTALL_DIR}" )
83endfunction(make_executable)
84
85
86# Utility function to make a utility executable
87#
88# name - name of executable to produce
89# srcs - list of src files
90
91function(make_utility name srcs)
92 make_executable(${name} "${srcs}" "${CSOUNDLIB}")
93 add_dependencies(${name} ${CSOUNDLIB})
94endfunction()
95
96
97# Expands a list into a space-separated string (outvar element1 ....)
98# Why do I have to do this? Cmake, you just lost one point
99function(expand_list out)
100 set(i 1)
101 set(tmp "")
102 while( ${i} LESS ${ARGC} )
103 set(tmp "${tmp} ${ARGV${i}}")
104 math(EXPR i "${i}+1")
105 endwhile()
106 set(${out} "${tmp}" PARENT_SCOPE)
107endfunction(expand_list)
108
109# Checks if dependencies for an enabled target are fulfilled.
110# If FAIL_MISSING is true and the dependencies are not fulfilled,
111# it will abort the cmake run.
112# If FAIL_MISSING is false, it will set the option to OFF.
113# If the target is not enabled, it will do nothing.
114# example: check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
115function(check_deps option)
116 if(${option})
117 set(i 1)
118 while( ${i} LESS ${ARGC} )
119 set(dep ${ARGV${i}})
120 if(NOT ${dep})
121 if(FAIL_MISSING)
122 message(FATAL_ERROR
123 "${option} is enabled, but ${dep}=\"${${dep}}\"")
124 else()
125 message(STATUS "${dep}=\"${${dep}}\", so disabling ${option}")
126 set(${option} OFF PARENT_SCOPE)
127 # Set it in the local scope too
128 set(${option} OFF)
129 endif()
130 endif()
131 math(EXPR i "${i}+1")
132 endwhile()
133 endif()
134 if(${option})
135 message(STATUS "${option} is enabled")
136 else()
137 message(STATUS "${option} is disabled")
138 endif()
139endfunction(check_deps)
140
141# Shortcut to add compiler flags
142# Mandatory arguments: the flags to add, should be passed before optional keywords, can be
143# passed as lists or space-separated
144# Optional keywords:
145# LINKER: add to linker instead of compile flags (LDFLAGS vs CFLAGS)
146# TARGETS <target1> <target2> ...
147# if specified, will add the flags to a target instead
148# of the global namespace
149function(add_compiler_flags)
150 set(bool_options LINKER)
151 set(multi_val_args TARGETS)
152 cmake_parse_arguments(FLAGS "${bool_options}" "" "${multi_val_args}" ${ARGN})
153
154 expand_list(FLAGS ${FLAGS_UNPARSED_ARGUMENTS})
155
156 if(FLAGS_TARGETS)
157 foreach(target ${FLAGS_TARGETS})
158 if(NOT FLAGS_LINKER)
159 set(property "COMPILE_FLAGS")
160 else()
161 set(property "LINK_FLAGS")
162 endif()
163 get_target_property(propval ${target} ${property})
164 if(NOT propval)
165 set(propval "")
166 endif()
167 set_target_properties(${target} PROPERTIES
168 ${property} "${propval} ${FLAGS}")
169 endforeach()
170 else()
171 if(FLAGS_LINKER)
172 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAGS}")
173 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAGS}")
174 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAGS}")
175 else()
176 add_definitions("${FLAGS}")
177 endif()
178 endif()
179endfunction(add_compiler_flags)
180
181
182# Include this after the install path definitions so we can override them here.
183# Also after function definitions so we can use them there
184find_file(CUSTOM_CMAKE "Custom.cmake" HINTS ${CMAKE_HOME_DIRECTORY})
185if(CUSTOM_CMAKE)
186 message(STATUS "Including Custom.cmake file: ${CUSTOM_CMAKE}")
187 include(${CUSTOM_CMAKE})
188endif()
189
190
191if(WIN32 AND NOT MSVC)
192 if(EXISTS "C:/MinGW/include")
193 include_directories(C:/MinGW/include)
194 else()
195 MESSAGE(STATUS "MinGW include dir not found")
196 endif()
197endif()
198
199if(WIN32)
200 set(CMAKE_SHARED_LIBRARY_PREFIX "")
201 set(CMAKE_SHARED_MODULE_PREFIX "")
202
203 set(CSOUND_WINDOWS_LIBRARIES
204 advapi32
205 comctl32
206 comdlg32
207 glu32
208 kernel32
209 msvcrt
210 odbc32
211 odbccp32
212 ole32
213 oleaut32
214 shell32
215 user32
216 uuid
217 winmm
218 winspool
219 ws2_32
220 wsock32
221 advapi32
222 comctl32
223 comdlg32
224 glu32
225 kernel32
226 odbc32
227 odbccp32
228 ole32
229 oleaut32
230 shell32
231 user32
232 uuid
233 winmm
234 winspool
235 ws2_32
236 wsock32
237 pthread)
238
239endif(WIN32)
240
241if(CMAKE_SYSTEM_NAME MATCHES "Linux")
242 set(LINUX YES)
243else()
244 set(LINUX NO)
245endif()
246
247## USER OPTIONS ##
248
249option(USE_DOUBLE "Set to use double-precision floating point for audio samples." ON)
250option(BUILD_UTILITIES "Build stand-alone executables for utilities that can also be used with -U" ON)
251
252option(BUILD_NEW_PARSER "Enable building new parser (requires Flex/Bison)" ON)
253option(NEW_PARSER_DEBUG "Enable tracing of new parser" OFF)
254
255option(BUILD_MULTI_CORE "Enable building for multicore system (requires BUILD_NEW_PARSER)" ON)
256
257option(FAIL_MISSING "Fail when a required external dependency is not present (useful for packagers)" OFF)
258
259option(USE_GETTEXT "Use the Gettext internationalization library" ON)
260
261option(BUILD_STATIC_LIBRARY "Also build a static version of the csound library" OFF)
262
263option(USE_OPEN_MP "Use OpenMP for Parallel Performance" ON)
264option(USE_LRINT "Use lrint/lrintf for converting floating point values to integers." ON)
265option(BUILD_RELEASE "Build for release" ON)
266# Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
267
268
269set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
270
271# This needs to be here since _everybody_ needs this flag
272if(USE_DOUBLE)
273 add_definitions("-DUSE_DOUBLE")
274endif(USE_DOUBLE)
275if(${CMAKE_C_COMPILER} MATCHES "gcc" AND LINUX)
276 add_compiler_flags("-fvisibility=hidden")
277 add_compiler_flags("-fvisibility=hidden" LINKER)
278endif()
279
280if(BUILD_RELEASE)
281 add_definitions("-D_CSOUND_RELEASE_")
282 if(LINUX)
283 set(DEFAULT_OPCODEDIR "${CMAKE_INSTALL_PREFIX}/${PLUGIN_INSTALL_DIR}")
284 add_definitions("-DCS_DEFAULT_PLUGINDIR=\"${DEFAULT_OPCODEDIR}\"")
285 endif()
286else()
287 add_definitions("-DBETA")
288endif()
289
290if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
291 add_definitions("-Wno-format")
292 add_compiler_flags("-g")
293endif()
294
295#if(USE_DOUBLE)
296# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins64)
297#else()
298# set(BUILD_PLUGINS_DIR ${BUILD_DIR}/plugins)
299#endif()
300
301set(BUILD_PLUGINS_DIR ${BUILD_DIR})
302set(BUILD_BIN_DIR ${BUILD_DIR})
303set(BUILD_LIB_DIR ${BUILD_DIR})
304
305message(STATUS "BUILD_BIN_DIR set to ${BUILD_BIN_DIR}")
306message(STATUS "BUILD_LIB_DIR set to ${BUILD_LIB_DIR}")
307message(STATUS "BUILD_PLUGINS_DIR set to ${BUILD_PLUGINS_DIR}")
308
309# OS specific checks
310
311TEST_BIG_ENDIAN(BIG_ENDIAN)
312
313## CONFIGURATION ##
314
315SET(BUILD_SHARED_LIBS ON)
316
317## HEADER/LIBRARY/OTHER CHECKS ##
318
319find_package(OpenMP)
320
321# First, required stuff
322find_library(LIBSNDFILE_LIBRARY sndfile)
323
324if(NOT LIBSNDFILE_LIBRARY AND WIN32)
325find_library(LIBSNDFILE_LIBRARY sndfile-1)
326endif()
327
328if(NOT LIBSNDFILE_LIBRARY)
329 message(FATAL_ERROR "Csound requires the sndfile library")
330endif()
331
332find_path(SNDFILE_H_PATH sndfile.h)
333if(SNDFILE_H_PATH)
334 include_directories(${SNDFILE_H_PATH})
335else()
336 message(FATAL_ERROR "Could not find sndfile.h")
337endif()
338
339find_library(PTHREAD_LIBRARY pthread)
340
341if(NOT PTHREAD_LIBRARY AND WIN32)
342 find_library(PTHREAD_LIBRARY pthreadGC2)
343endif()
344
345if(NOT PTHREAD_LIBRARY)
346 message(FATAL_ERROR "Csound requires the pthread library")
347endif()
348
349set(CMAKE_REQUIRED_INCLUDES pthread.h)
350set(CMAKE_REQUIRED_LIBRARIES pthread)
351
352# Now, non required library searches #
353
354find_library(VORBISFILE_LIBRARY vorbisfile)
355check_include_file(libintl.h LIBINTL_HEADER)
356find_library(LIBINTL_LIBRARY intl)
357find_package(Gettext)
358check_library_exists(m lrint "" HAVE_LRINT)
359
360set(HEADERS_TO_CHECK
361 unistd.h io.h fcntl.h stdint.h
362 sys/time.h sys/types.h termios.h
363 values.h winsock.h sys/socket.h
364 dirent.h)
365
366foreach(header ${HEADERS_TO_CHECK})
367 # Convert to uppercase and replace [./] with _
368 string(TOUPPER ${header} tmp)
369 string(REGEX REPLACE [./] "_" upper_header ${tmp})
370 check_include_file(${header} HAVE_${upper_header})
371endforeach()
372
373check_deps(USE_LRINT HAVE_LRINT)
374if(USE_LRINT)
375 add_definitions("-DUSE_LRINT")
376endif()
377
378# Flex/Bison for the new parser
379if(BUILD_NEW_PARSER)
380 find_package(FLEX)
381 find_package(BISON)
382endif()
383
384## MAIN TARGETS ##
385
386set(libcsound_CFLAGS -D__BUILDING_LIBCSOUND)
387
388include_directories(./H)
389include_directories(./Engine)
390
391#adding this for files that #include SDIF/sdif*
392include_directories(./)
393
394#checking pthread functions
395check_function_exists(pthread_spin_lock PTHREAD_SPIN_LOCK_EXISTS)
396check_function_exists(pthread_barrier_init PTHREAD_BARRIER_INIT_EXISTS)
397
398if(PTHREAD_SPIN_LOCK_EXISTS)
399 list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_SPIN_LOCK)
400endif()
401
402if(PTHREAD_BARRIER_INIT_EXISTS)
403 list(APPEND libcsound_CFLAGS -DHAVE_PTHREAD_BARRIER_INIT)
404endif()
405
406
407check_deps(USE_OPEN_MP OPENMP_FOUND PTHREAD_BARRIER_INIT_EXISTS)
408if(USE_OPEN_MP)
409 list(APPEND libcsound_CFLAGS -DUSE_OPENMP)
410 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
411 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
412
413 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
414 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
415
416endif()
417
418
419#if(WIN32)
420 include_directories(${LIBSNDFILE_INCLUDE_DIRECTORY})
421#endif(WIN32)
422
423
424# The csound library
425set(libcsound_SRCS
426 Engine/auxfd.c
427 Engine/cfgvar.c
428 Engine/corfiles.c
429 Engine/entry1.c
430 Engine/envvar.c
431 Engine/express.c
432 Engine/extract.c
433 Engine/fgens.c
434 Engine/insert.c
435 Engine/linevent.c
436 Engine/memalloc.c
437 Engine/memfiles.c
438 Engine/musmon.c
439 Engine/namedins.c
440 Engine/otran.c
441 Engine/rdorch.c
442 Engine/rdscor.c
443 Engine/scsort.c
444 Engine/scxtract.c
445 Engine/sort.c
446 Engine/sread.c
447 Engine/swrite.c
448 Engine/swritestr.c
449 Engine/twarp.c
450 InOut/libsnd.c
451 InOut/libsnd_u.c
452 InOut/midifile.c
453 InOut/midirecv.c
454 InOut/midisend.c
455 InOut/winascii.c
456 InOut/windin.c
457 InOut/window.c
458 InOut/winEPS.c
459 OOps/aops.c
460 OOps/bus.c
461 OOps/cmath.c
462 OOps/diskin.c
463 OOps/diskin2.c
464 OOps/disprep.c
465 OOps/dumpf.c
466 OOps/fftlib.c
467 OOps/goto_ops.c
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: