1
## Language bindings ##
3
# C++ INTERFACE LIBRARY
5
option(BUILD_CXX_INTERFACE "Build the C++ interface library" ON)
6
option(BUILD_PYTHON_INTERFACE "Build the Python interface (needs BUILD_CXX_INTERFACE)" ON)
7
option(BUILD_JAVA_INTERFACE "Build the Java interface (needs BUILD_CXX_INTERFACE)" ON)
8
option(BUILD_LUA_INTERFACE "Build the Lua interface (needs BUILD_CXX_INTERFACE)" ON)
10
if(BUILD_CXX_INTERFACE)
11
message(STATUS "Building C++ interface library")
19
set(libcsnd_LIBS ${LIBSNDFILE_LIBRARY})
20
set(libcsnd_CFLAGS "")
21
list(APPEND libcsnd_LIBS ${CSOUNDLIB})
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}
29
RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
30
LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
31
ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
34
add_compiler_flags(${libcsnd_CFLAGS} TARGETS libcsnd)
37
install(TARGETS libcsnd
38
LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
39
ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
46
FIND_PACKAGE(PythonLibs)
51
check_deps(BUILD_PYTHON_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE PYTHONLIBS_FOUND)
52
check_deps(BUILD_JAVA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE JNI_FOUND JAVA_FOUND)
53
check_deps(BUILD_LUA_INTERFACE SWIG_FOUND BUILD_CXX_INTERFACE LUA51_FOUND)
55
if(BUILD_PYTHON_INTERFACE OR BUILD_JAVA_INTERFACE OR BUILD_LUA_INTERFACE)
57
include(${SWIG_USE_FILE})
59
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
61
set(CMAKE_SWIG_FLAGS ${libcsound_CFLAGS})
62
list(APPEND CMAKE_SWIG_FLAGS "-includeall" "-verbose")
65
list(APPEND CMAKE_SWIG_FLAGS "-DUSE_DOUBLE")
68
set(CMAKE_SWIG_OUTDIR ${BUILD_LIB_DIR})
70
if(BUILD_PYTHON_INTERFACE)
71
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
73
set(swigpython_LIBS ${PYTHON_LIBRARIES} ${CSOUNDLIB} ${LIBSNDFILE_LIBRARY} libcsnd)
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})
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})
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})
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)
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})
105
ADD_CUSTOM_COMMAND(TARGET _jcsound
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")
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})
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})
125
if(BUILD_LUA_INTERFACE)
126
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
128
set(swiglua_LIBS ${LUA_LIBRARIES} ${CSOUNDLIB} libcsnd)
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})
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}
142
install(TARGETS luaCsnd
143
LIBRARY DESTINATION "${LUA_MODULE_INSTALL_DIR}"
144
ARCHIVE DESTINATION "${LUA_MODULE_INSTALL_DIR}")