File: CMakeLists.txt

package info (click to toggle)
csound 1%3A6.18.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 63,220 kB
  • sloc: ansic: 192,643; cpp: 14,149; javascript: 9,654; objc: 9,181; python: 3,376; java: 3,337; sh: 1,840; yacc: 1,255; xml: 985; perl: 635; lisp: 411; tcl: 341; lex: 217; makefile: 128
file content (262 lines) | stat: -rw-r--r-- 9,313 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
## Language bindings ##

# C++ INTERFACE LIBRARY

option(BUILD_CXX_INTERFACE "Build the C++ interface library" ON)
option(BUILD_JAVA_INTERFACE "Build the Java interface (needs BUILD_CXX_INTERFACE)" ON)
option(BUILD_LUA_INTERFACE "Build the Lua interface (needs
BUILD_CXX_INTERFACE)" ON)

if(BUILD_CXX_INTERFACE)
    message(STATUS "Building C++ interface library.")
    set(libcsnd6_SRCS
        CppSound.cpp
        CsoundFile.cpp
        Soundfile.cpp
        csPerfThread.cpp
        cs_glue.cpp
        filebuilding.cpp)

    add_library(libcsnd6 SHARED ${libcsnd6_SRCS})

    if(MSVC)
        set(libcsnd6_LIBS SndFile::sndfile)
    else()
        set(libcsnd6_LIBS ${LIBSNDFILE_LIBRARY})
    endif()

    if(WIN32)
      list(APPEND libcsnd6_LIBS "${LIBSNDFILE_SUPPORT_LIBS}")
      # mingw64 needs this to create a valid .pyd.

      if(NOT MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8)
        target_compile_definitions(libcsnd6 PRIVATE -DMS_WIN64)
      endif()
    endif()

    set(libcsnd6_CFLAGS "")
    list(APPEND libcsnd6_LIBS ${CSOUNDLIB})

    target_link_libraries(libcsnd6 ${libcsnd6_LIBS})
    # users of this lib will need this dir included
    target_include_directories(libcsnd6 INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
    set_target_properties(libcsnd6 PROPERTIES
        SOVERSION ${APIVERSION}
        OUTPUT_NAME csnd6
        RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
        LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
        ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
        )

   if(APPLE)
    target_compile_options(libcsnd6 PRIVATE "-std=c++11")
   endif()

    if(${libcsnd6_CFLAGS})
        target_compile_options(libcsnd6 PRIVATE ${libcsnd6_CFLAGS})
    endif()



    install(TARGETS libcsnd6
        LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
        ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")

if(BUILD_STATIC_LIBRARY)
   add_library(libcsnd6-static STATIC ${libcsnd6_SRCS})
    SET_TARGET_PROPERTIES(libcsnd6-static PROPERTIES OUTPUT_NAME csnd6)
    SET_TARGET_PROPERTIES(libcsnd6-static PROPERTIES PREFIX "lib")
    target_compile_options(libcsnd6-static PRIVATE ${libcsnd6_CFLAGS})
    
      if(APPLE)
       target_compile_options(libcsnd6-static PRIVATE "-std=c++11")
      endif()

    set_target_properties(libcsnd6-static  PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
        LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
        ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})

    # Add the install target
    install(TARGETS libcsnd6-static
        LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
        ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
endif()



else()
 message(STATUS "NOT Building C++ interface library.")
endif()


# SWIG INTERFACES
find_package(SWIG 2.0)
find_package(JNI)
find_package(Java)

# This is for Lua 5.1, it may also be possible to change 
# this to use current Lua 5.2.
find_library(LUA_LIBRARY lua5.1)
if(NOT LUA_LIBRARY AND WIN32)
    find_library(LUA_LIBRARY lua51)
endif()
find_path(LUA_H_PATH lua.h PATH_SUFFIXES lua5.1)


check_deps(BUILD_JAVA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE JNI_FOUND JAVA_FOUND)
check_deps(BUILD_LUA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE
LUA_LIBRARY LUA_H_PATH)


if(NOT APPLE)
      execute_process (
           COMMAND python3 -c
           "import site, sys; sys.stdout.write(site.getsitepackages()[0])"
           OUTPUT_VARIABLE PYTHON3_SITE_PACKAGES
         )
      SET(PYTHON3_MODULE_INSTALL_DIR ${PYTHON3_SITE_PACKAGES} CACHE
       PATH "Python3 module install dir")
       
      if (PYTHON3_MODULE_INSTALL_DIR)
         message(STATUS "PYTHON3 MODULE INSTALL DIR: ${PYTHON3_MODULE_INSTALL_DIR}" )
        install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ctcsound.py
            DESTINATION ${PYTHON3_MODULE_INSTALL_DIR})
      endif()
endif(NOT APPLE)


if(BUILD_JAVA_INTERFACE OR BUILD_LUA_INTERFACE)
    message(STATUS "SWIG_USE_FILE: " ${SWIG_USE_FILE})
    include(${SWIG_USE_FILE})
    set(CMAKE_SWIG_FLAGS ${libcsound_CFLAGS})
    list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
    if(USE_DOUBLE)
        list(APPEND CMAKE_SWIG_FLAGS "-DUSE_DOUBLE")
    endif(USE_DOUBLE)
    set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
   
    if(BUILD_JAVA_INTERFACE)
         # The java package needs this unset or it will litter us with .java files
          unset(CMAKE_SWIG_OUTDIR)

         if(APPLE) 
             get_filename_component(JAVA_MODULE_INSTALL_DIR_DEFAULT "~/Library/Java/Extensions" ABSOLUTE)
        else()
            set(JAVA_MODULE_INSTALL_DIR_DEFAULT ${LIBRARY_INSTALL_DIR})
        endif()
         set(JAVA_MODULE_INSTALL_DIR ${JAVA_MODULE_INSTALL_DIR_DEFAULT} CACHE PATH "Java module install
         dir")
         message(STATUS "JAVA_MODULE_INSTALL_DIR: ${JAVA_MODULE_INSTALL_DIR}")
         message(STATUS "JNI INCLUDE set to ${JNI_INCLUDE_DIRS}.")

        if(WIN32)
             set(swigjava_LIBS ${JNI_LIBRARIES} ${CSOUNDLIB}
               ${LIBSNDFILE_LIBRARY} ${LIBSNDFILE_SUPPORT_LIBS} libcsnd6)
        elseif(APPLE)
             set(swigjava_LIBS  ${JAVA_VM_LIBRARY} ${CSOUNDLIB}
                     ${LIBSNDFILE_LIBRARY} libcsnd6)
        else()
             set(swigjava_LIBS ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd6)
        endif()

        list(APPEND javaSwigOptions -package csnd6 -includeall)
        SET_SOURCE_FILES_PROPERTIES(java_interface.i PROPERTIES CPLUSPLUS ON)
        SET_SOURCE_FILES_PROPERTIES(java_interface.i PROPERTIES SWIG_FLAGS "${javaSwigOptions}")

        set(SWIG_MODULE__jcsound6_EXTRA_DEPS ../include/csound.h ../include/cfgvar.h ../include/csound.hpp
                                        cs_glue.hpp csPerfThread.hpp CsoundFile.hpp
                                        CppSound.hpp filebuilding.h Soundfile.hpp)

        if(COMMAND SWIG_ADD_LIBRARY)
            SWIG_ADD_LIBRARY(_jcsound6 
                TYPE MODULE 
                LANGUAGE java 
                SOURCES java_interface.i)
 	    else()
	        SWIG_ADD_MODULE(_jcsound6 java java_interface.i)
	    endif()
        SWIG_LINK_LIBRARIES(_jcsound6 ${swigjava_LIBS})
        target_include_directories(${SWIG_MODULE__jcsound6_REAL_NAME}
        PRIVATE ${JNI_INCLUDE_DIRS})
        if(LINUX)
        set_target_properties(${SWIG_MODULE__jcsound6_REAL_NAME}
            PROPERTIES COMPILE_FLAGS "-Wno-unused-function"
            LINK_FLAGS "-Wl,-soname,lib_jcsound.so.1"
            )
         message(STATUS "Setting soname")   
         endif()
         if (APPLE)
          set_target_properties(${SWIG_MODULE__jcsound6_REAL_NAME}
            PROPERTIES COMPILE_FLAGS "-Wno-unused-function" )
         endif()

        ADD_CUSTOM_COMMAND(TARGET _jcsound6
            POST_BUILD
            COMMAND cmake -E make_directory ./csnd6
            COMMAND ${JAVA_COMPILE} *.java -source 1.8 -target 1.8 -d .
            COMMAND ${JAVA_ARCHIVE} cf ../csnd6.jar csnd6
            COMMENT "Building JAVA package csnd6.jar")

        set_target_properties(_jcsound6 PROPERTIES
            RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
        if(${CMAKE_COMPILER_IS_GNUCC})
            message(STATUS "setting compile options for lib_jcsound")
            target_compile_options(_jcsound6 PRIVATE "-Wno-error")
         endif()

        install(TARGETS _jcsound6
            LIBRARY DESTINATION "${JAVA_MODULE_INSTALL_DIR}"
            ARCHIVE DESTINATION "${JAVA_MODULE_INSTALL_DIR}")
        install(FILES ${BUILD_LIB_DIR}/csnd6.jar
            DESTINATION ${JAVA_MODULE_INSTALL_DIR})

    endif()

    if(BUILD_LUA_INTERFACE)
        set(LUA_MODULE_INSTALL_DIR ${LIBRARY_INSTALL_DIR} CACHE PATH "Lua  module install dir")
        set(swiglua_LIBS ${CSOUNDLIB} libcsnd6)

        SET_SOURCE_FILES_PROPERTIES(lua_interface.i
            PROPERTIES CPLUSPLUS ON
            SWIG_MODULE_NAME luaCsnd6)
            
        set(SWIG_MODULE_luaCsnd6_EXTRA_DEPS ../include/csound.h ../include/cfgvar.h ../include/csound.hpp
                                        cs_glue.hpp csPerfThread.hpp CsoundFile.hpp
                                        CppSound.hpp filebuilding.h Soundfile.hpp)

        if(COMMAND SWIG_ADD_LIBRARY)
            SWIG_ADD_LIBRARY(luaCsnd6 
                TYPE MODULE 
                LANGUAGE lua 
                SOURCES lua_interface.i)
 	    else()
	        SWIG_ADD_MODULE(luaCsnd6 lua lua_interface.i)
	    endif()
        SWIG_LINK_LIBRARIES(luaCsnd6 ${swiglua_LIBS})

        target_include_directories(${SWIG_MODULE_luaCsnd6_REAL_NAME} PRIVATE ${LUA_H_PATH})

        if(APPLE)
            set_target_properties(${SWIG_MODULE_luaCsnd6_REAL_NAME} PROPERTIES
                LINK_FLAGS "-undefined dynamic_lookup")
        endif()

        set_target_properties(${SWIG_MODULE_luaCsnd6_REAL_NAME} PROPERTIES
            RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            PREFIX "")
        if(${CMAKE_COMPILER_IS_GNUCC})
            target_compile_options(${SWIG_MODULE_luaCsnd6_REAL_NAME} PRIVATE "-Wno-error")
        endif()

        install(TARGETS luaCsnd6
            LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
            ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")

    endif()

endif()