Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add Carla support for MacOS
  • Loading branch information
tresf committed Aug 27, 2018
commit 4d99f7e3b02762e55644225e1a4e9bc27611a0bb
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/build
/target
.*.sw?
.DS_Store
*~
/CMakeLists.txt.user
/plugins/zynaddsubfx/zynaddsubfx/ExternalPrograms/Controller/Makefile
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "src/3rdparty/rpmalloc/rpmalloc"]
path = src/3rdparty/rpmalloc/rpmalloc
url = https://github.com/rampantpixels/rpmalloc.git
[submodule "plugins/carlabase/carla"]
path = plugins/carlabase/carla
url = https://github.com/falktx/carla
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,19 @@ ENDIF(WANT_TAP)

# check for CARLA
IF(WANT_CARLA)
IF(LMMS_BUILD_APPLE)
# compile against submodule headers. TODO: move to homebrew
INCLUDE(CarlaPkgConfig)
ENDIF()
PKG_CHECK_MODULES(CARLA carla-standalone>=1.9.5)
IF(CARLA_FOUND)
SET(LMMS_HAVE_CARLA TRUE)
SET(STATUS_CARLA "OK")
IF(CARLA_SUBMODULE_SOURCE)
# Handle additional submodule include
MESSAGE("-- Using additional carla headers from ${CARLA_SUBMODULE_SOURCE}/source/backend")
SET(CARLA_INCLUDE_DIRS "${CARLA_INCLUDE_DIRS};${CARLA_SUBMODULE_SOURCE}/source/backend")
ENDIF()
ELSE(CARLA_FOUND)
SET(STATUS_CARLA "not found, please install the latest carla")
ENDIF(CARLA_FOUND)
Expand Down
24 changes: 24 additions & 0 deletions cmake/apple/install_apple.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,30 @@ install_name_tool -change @rpath/libZynAddSubFxCore.dylib \
@loader_path/../../$zynfmk \
"$APP/Contents/$zynlib"

# Fix carla linking
libcarla="Carla.app/Contents/MacOS/libcarla_standalone2.dylib"

# Assume LMMS.app and Carla.app are side-by-side
install_name_tool -change ../../bin/libcarla_standalone2.dylib \
@executable_path/../../../$libcarla \
"$APP/Contents/lib/lmms/libcarlabase.dylib"

install_name_tool -change @rpath/libcarlabase.dylib \
@loader_path/libcarlabase.dylib \
"$APP/Contents/lib/lmms/libcarlapatchbay.so"

install_name_tool -change ../../bin/libcarla_standalone2.dylib \
@executable_path/../../../$libcarla \
"$APP/Contents/lib/lmms/libcarlapatchbay.so"

install_name_tool -change @rpath/libcarlabase.dylib \
@loader_path/libcarlabase.dylib \
"$APP/Contents/lib/lmms/libcarlarack.so"

install_name_tool -change ../../bin/libcarla_standalone2.dylib \
@executable_path/../../../$libcarla \
"$APP/Contents/lib/lmms/libcarlarack.so"

# Link lmms binary
_executables="${_executables} -executable=$APP/Contents/$zynbin"
_executables="${_executables} -executable=$APP/Contents/$zynfmk"
Expand Down
10 changes: 7 additions & 3 deletions cmake/modules/BuildPlugin.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel
#
# description: build LMMS-plugin
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> LINK <SHARED|MODULE>)
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> LINK <SHARED|MODULE|DYNAMIC>)

MACRO(BUILD_PLUGIN PLUGIN_NAME)
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "" "MOCFILES;EMBEDDED_RESOURCES;UICFILES;LINK" ${ARGN})
Expand Down Expand Up @@ -57,7 +57,7 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME)
SET(QT_LIBRARIES "${QT_OVERRIDE_LIBRARIES}")
ENDIF()

IF ("${PLUGIN_LINK}" STREQUAL "SHARED")
IF ("${PLUGIN_LINK}" STREQUAL "SHARED" OR "${PLUGIN_LINK}" STREQUAL "DYNAMIC")
ADD_LIBRARY(${PLUGIN_NAME} SHARED ${PLUGIN_SOURCES} ${plugin_MOC_out})
ELSE ()
ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES} ${plugin_MOC_out})
Expand All @@ -73,7 +73,11 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")

IF(LMMS_BUILD_APPLE)
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader \"${CMAKE_BINARY_DIR}/lmms\"")
IF ("${PLUGIN_LINK}" STREQUAL "DYNAMIC")
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
ELSE()
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader \"${CMAKE_BINARY_DIR}/lmms\"")
ENDIF()
ADD_DEPENDENCIES(${PLUGIN_NAME} lmms)
ENDIF(LMMS_BUILD_APPLE)
IF(LMMS_BUILD_WIN32)
Expand Down
22 changes: 22 additions & 0 deletions cmake/modules/CarlaPkgConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Makes carla submodule available to PKG_CHECK_MODULES
SET(CARLA_SUBMODULE_SOURCE ${CMAKE_SOURCE_DIR}/plugins/carlabase/carla)
SET(CARLA_PKGCONFIG_FILE ${CARLA_SUBMODULE_SOURCE}/data/carla-standalone.pc)

# Look for carla-standalone pkg-config file
IF(EXISTS ${CARLA_PKGCONFIG_FILE})
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH};${CMAKE_BINARY_DIR}")
FILE(READ ${CARLA_PKGCONFIG_FILE} CARLA_PKGCONFIG_TEXT)
# add source/includes and source/backend to include location
STRING(REPLACE "X-INCLUDEDIR-X/carla" "${CARLA_SUBMODULE_SOURCE}/source/includes" CARLA_PKGCONFIG_TEXT "${CARLA_PKGCONFIG_TEXT}")
IF(LMMS_BUILD_APPLE)
# Remove linker flags
STRING(REPLACE "-Wl,rpath=\${libdir}" "" CARLA_PKGCONFIG_TEXT "${CARLA_PKGCONFIG_TEXT}")
# Add library path and prefix
STRING(REPLACE "X-PREFIX-X" "/Applications/Carla.app/Contents/MacOS" CARLA_PKGCONFIG_TEXT "${CARLA_PKGCONFIG_TEXT}")
STRING(REPLACE "X-LIBDIR-X/carla" "/Applications/Carla.app/Contents/MacOS" CARLA_PKGCONFIG_TEXT "${CARLA_PKGCONFIG_TEXT}")
ENDIF()
FILE(WRITE "${CMAKE_BINARY_DIR}/carla-standalone.pc" "${CARLA_PKGCONFIG_TEXT}")
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${CMAKE_BINARY_DIR}")
MESSAGE("-- Using carla headers from ${CARLA_SUBMODULE_SOURCE}/source/includes")
MESSAGE("-- DEBUG:\n${CARLA_PKGCONFIG_TEXT}")
ENDIF()
7 changes: 6 additions & 1 deletion plugins/carlabase/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
if(LMMS_HAVE_CARLA)
INCLUDE(BuildPlugin)
INCLUDE_DIRECTORIES(${CARLA_INCLUDE_DIRS})
IF(LMMS_BUILD_APPLE)
SET(CARLA_LINK_TYPE DYNAMIC)
ELSE()
SET(CARLA_LINK_TYPE SHARED)
ENDIF()
LINK_DIRECTORIES(${CARLA_LIBRARY_DIRS})
LINK_LIBRARIES(${CARLA_LIBRARIES})
BUILD_PLUGIN(carlabase carla.cpp carla.h MOCFILES carla.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png" LINK SHARED)
BUILD_PLUGIN(carlabase carla.cpp carla.h MOCFILES carla.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png" LINK ${CARLA_LINK_TYPE})
SET_TARGET_PROPERTIES(carlabase
PROPERTIES SKIP_BUILD_RPATH TRUE
BUILD_WITH_INSTALL_RPATH TRUE
Expand Down
1 change: 1 addition & 0 deletions plugins/carlabase/carla
Submodule carla added at 265cd5