Enable automatic dll installation for RemoteVstPlugin32

Co-Authored-By: Hyunjin Song <tteu.ingog@gmail.com>
This commit is contained in:
Shmuel H
2019-08-12 12:35:12 +03:00
parent 13da2b9576
commit 1324cf48c1
4 changed files with 54 additions and 32 deletions

View File

@@ -11,23 +11,35 @@ SET(REMOTE_VST_PLUGIN_FILEPATH_64 "RemoteVstPlugin64" CACHE STRING "Relative fil
ADD_SUBDIRECTORY(vstbase)
SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR})
SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR})
SET(EXTERNALPROJECT_ARGS
SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin"
INSTALL_COMMAND ""
#INSTALL_COMMAND ""
BUILD_ALWAYS ON
# Skip the install step.
INSTALL_COMMAND ""
)
set(export_variables
"LMMS_SOURCE_DIR"
"LMMS_BINARY_DIR"
"CMAKE_MODULE_PATH"
"CMAKE_RUNTIME_OUTPUT_DIRECTORY"
"CMAKE_BUILD_TYPE"
"LMMS_BUILD_LINUX"
"LMMS_BUILD_WIN32"
"PLUGIN_DIR")
SET(EXTERNALPROJECT_CMAKE_ARGS
"-DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR}"
"-DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR}"
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
"-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}"
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DBUILD_WITH_EXTERNALPROJECT=ON"
)
macro(_export_var_to_external var_name)
list(APPEND EXTERNALPROJECT_CMAKE_ARGS "-D${var_name}=${${var_name}}")
endmacro()
foreach(var ${export_variables})
_export_var_to_external(${var})
endforeach()
# build 32 bit version of RemoteVstPlugin
IF(WANT_VST_32)
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake")

View File

@@ -76,3 +76,18 @@ endif()
IF(STRIP)
ADD_CUSTOM_COMMAND(TARGET ${EXE_NAME} POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:${EXE_NAME}>")
ENDIF()
if(BITNESS EQUAL 32)
INSTALL(TARGETS ${EXE_NAME} RUNTIME DESTINATION "${PLUGIN_DIR}/32")
else()
INSTALL(TARGETS ${EXE_NAME} RUNTIME DESTINATION "${PLUGIN_DIR}")
endif()
if(BUILD_WITH_EXTERNALPROJECT)
include(InstallTargetDependencies)
INSTALL_TARGET_DEPENDENCIES(TARGETS ${EXE_NAME}
DESTINATION "${PLUGIN_DIR}/32")
else()
# Needed to deploy dependencies of RemoteVstPlugin
SET_PROPERTY(GLOBAL APPEND PROPERTY PLUGINS_BUILT "${EXE_NAME}")
endif()

View File

@@ -1,14 +1,21 @@
# INSTALL_EXTERNAL_PROJECT: install a project created with ExternalProject_Add in the
# parent project's install time.
#
# Description:
# In a regular scenario, cmake will install external projects
# BEFORE actually building the parent project. Since the building
# process may use installed components from the project.
# We want to give the external project the ability to install
# files directly to the parent's install. Therefore, we have to
# manually trigger the install stage with the parent's INSTALL_PREFIX.
MACRO(INSTALL_EXTERNAL_PROJECT name)
ExternalProject_Get_Property(${name} BINARY_DIR)
install(CODE "include(\"${BINARY_DIR}/cmake_install.cmake\")")
ENDMACRO()
IF(LMMS_BUILD_WIN32 AND NOT LMMS_BUILD_WIN64)
ADD_SUBDIRECTORY(RemoteVstPlugin)
IF(MSVC)
SET(VCPKG_ROOT "${CMAKE_FIND_ROOT_PATH}")
INSTALL(FILES "${VCPKG_ROOT}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${VCPKG_ROOT}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
ELSE(MSVC)
INSTALL(FILES "${MINGW_PREFIX}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${MINGW_PREFIX}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
ENDIF(MSVC)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
@@ -46,16 +53,7 @@ ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
"-DCMAKE_PREFIX_PATH=${QT_32_PREFIX}"
)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
#TODO: find a solution when not using vcpkg for qt
SET(VCPKG_ROOT_32 "${CMAKE_FIND_ROOT_PATH}/../x86-windows")
INSTALL(FILES "${VCPKG_ROOT_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${VCPKG_ROOT_32}/bin/pcre2-16.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${VCPKG_ROOT_32}/bin/double-conversion.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${VCPKG_ROOT_32}/bin/qt5core.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL_EXTERNAL_PROJECT(RemoteVstPlugin32)
ELSEIF(LMMS_BUILD_LINUX)
# Use winegcc
INCLUDE(CheckWineGcc)
@@ -82,9 +80,7 @@ ELSEIF(CMAKE_TOOLCHAIN_FILE_32)
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_32}"
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE_32}"
)
INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32")
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32")
INSTALL_EXTERNAL_PROJECT(RemoteVstPlugin32)
ELSE()
MESSAGE(WARNING "Can't build RemoteVstPlugin32, unknown environment. Please supply CMAKE_TOOLCHAIN_FILE_32 and optionally CMAKE_PREFIX_PATH_32")
RETURN()

View File

@@ -1,6 +1,5 @@
IF(LMMS_BUILD_WIN64)
ADD_SUBDIRECTORY(RemoteVstPlugin)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin64.exe" DESTINATION "${PLUGIN_DIR}")
ELSEIF(LMMS_BUILD_LINUX)
INCLUDE(CheckWineGcc)
CheckWineGcc(64 "${WINEGCC}" WINEGCC_WORKING)