File: CMakeLists.txt

package info (click to toggle)
csound 1%3A6.03.2~dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 45,708 kB
  • ctags: 30,934
  • sloc: ansic: 166,298; cpp: 57,275; python: 9,433; xml: 1,302; yacc: 1,072; lex: 833; perl: 635; java: 618; lisp: 562; sh: 514; makefile: 459; tcl: 341
file content (193 lines) | stat: -rw-r--r-- 7,047 bytes parent folder | download
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
## Language bindings ##

# C++ INTERFACE LIBRARY

option(BUILD_CXX_INTERFACE "Build the C++ interface library" ON)
option(BUILD_PYTHON_INTERFACE "Build the Python interface (needs BUILD_CXX_INTERFACE)" 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)
    set(libcsnd6_LIBS ${LIBSNDFILE_LIBRARY})
    set(libcsnd6_CFLAGS "")
    list(APPEND libcsnd6_LIBS ${CSOUNDLIB})

    add_library(libcsnd6 SHARED ${libcsnd6_SRCS})
    target_link_libraries(libcsnd6 ${libcsnd6_LIBS})
    set_target_properties(libcsnd6 PROPERTIES
        LINK_INTERFACE_LIBRARIES ""
        SOVERSION ${APIVERSION}
        OUTPUT_NAME csnd6
        RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
        LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
        ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
        )
    if(${libcsnd6_CFLAGS})
        add_compiler_flags(${libcsnd6_CFLAGS} TARGETS libcsnd6)
    endif()

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

endif()


# SWIG INTERFACES
FIND_PACKAGE(SWIG 2.0)
FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(JNI)
FIND_PACKAGE(Java)

find_library(LUAJIT_LIBRARY luajit)
if(NOT LUAJIT_LIBRARY)
    find_library(LUAJIT_LIBRARY luajit-5.1)
endif()
find_path(LUA_H_PATH luajit-2.0/lua.h)

MESSAGE(STATUS ${PYTHON_LIBRARY})

check_deps(BUILD_PYTHON_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE PYTHONLIBS_FOUND)
check_deps(BUILD_JAVA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE JNI_FOUND JAVA_FOUND)
check_deps(BUILD_LUA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE  LUAJIT_LIBRARY LUA_H_PATH)

if(BUILD_PYTHON_INTERFACE OR BUILD_JAVA_INTERFACE OR BUILD_LUA_INTERFACE)

    include(${SWIG_USE_FILE})

    include_directories(${CMAKE_CURRENT_SOURCE_DIR})

    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_PYTHON_INTERFACE)
        INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})

        if(WIN32)
            set(swigpython_LIBS ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} ${PYTHON_LIBRARY} libcsnd6)
        else()
            # Note: Do not link to PYTHON_LIBRARY so that it can be loaded in any python 
            set(swigpython_LIBS ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd6)
        endif()
# Had:     	    SWIG_FLAGS "-threads"

        SET_SOURCE_FILES_PROPERTIES(python_interface.i
            PROPERTIES CPLUSPLUS ON
            SWIG_MODULE_NAME csnd6)

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

        SWIG_ADD_MODULE(csnd6 python python_interface.i)
        SWIG_LINK_LIBRARIES(csnd6 ${swigpython_LIBS})

        set_target_properties(${SWIG_MODULE_csnd6_REAL_NAME} PROPERTIES
            RUNTIME_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
            ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})

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

        install(TARGETS ${SWIG_MODULE_csnd6_REAL_NAME}
            LIBRARY DESTINATION "${PYTHON_MODULE_INSTALL_DIR}"
            ARCHIVE DESTINATION "${PYTHON_MODULE_INSTALL_DIR}")
        install(FILES ${BUILD_LIB_DIR}/csnd6.py
            DESTINATION ${PYTHON_MODULE_INSTALL_DIR})

    endif()

    if(BUILD_JAVA_INTERFACE)
        # The java package needs this unset or it will litter us with .java files
        unset(CMAKE_SWIG_OUTDIR)
        INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS})

      	if(LINUX)
            set(swigjava_LIBS ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd6)
        else()
            set(swigjava_LIBS ${JNI_LIBRARIES} ${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)

        SWIG_ADD_MODULE(_jcsound6 java java_interface.i)
        SWIG_LINK_LIBRARIES(_jcsound6 ${swigjava_LIBS})

        ADD_CUSTOM_COMMAND(TARGET _jcsound6
            POST_BUILD
            COMMAND cmake -E make_directory ./csnd6
            COMMAND ${JAVA_COMPILE} *.java -source 1.6 -target 1.6 -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})

        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(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)

        SWIG_ADD_MODULE(luaCsnd6 lua lua_interface.i)
        SWIG_LINK_LIBRARIES(luaCsnd6 ${swiglua_LIBS})

        include_directories(${LUA_H_PATH}/luajit-2.0)

      	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 "")

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

    endif()

endif()