From e17d0b2af3f34454ffb058b8d13525f72dee8ade Mon Sep 17 00:00:00 2001
From: Leonardo Murillo <leo@highfidelity.io>
Date: Fri, 20 Nov 2015 15:10:56 -0600
Subject: [PATCH] Bundling and consolidating deployment package

---
 assignment-client/CMakeLists.txt              |  3 +--
 .../CopyDllsBesideWindowsExecutable.cmake     | 23 +++++++++++++------
 cmake/modules/FindQuaZip.cmake                |  3 ---
 domain-server/CMakeLists.txt                  |  2 +-
 interface/CMakeLists.txt                      |  2 +-
 stack-manager/CMakeLists.txt                  |  2 ++
 6 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt
index 830164eb60..58f200b0fe 100644
--- a/assignment-client/CMakeLists.txt
+++ b/assignment-client/CMakeLists.txt
@@ -10,5 +10,4 @@ link_hifi_libraries(
 )
 
 include_application_version()
-
-copy_dlls_beside_windows_executable()
+package_libraries_for_deployment()
diff --git a/cmake/macros/CopyDllsBesideWindowsExecutable.cmake b/cmake/macros/CopyDllsBesideWindowsExecutable.cmake
index 69fd20a57b..9330515a62 100644
--- a/cmake/macros/CopyDllsBesideWindowsExecutable.cmake
+++ b/cmake/macros/CopyDllsBesideWindowsExecutable.cmake
@@ -9,7 +9,7 @@
 #  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
 # 
 
-macro(COPY_DLLS_BESIDE_WINDOWS_EXECUTABLE)
+macro(PACKAGE_LIBRARIES_FOR_DEPLOYMENT)
   
   if (WIN32)
     configure_file(
@@ -18,11 +18,7 @@ macro(COPY_DLLS_BESIDE_WINDOWS_EXECUTABLE)
       @ONLY
     )
     
-    if (APPLE) 
-        set(PLUGIN_PATH "interface.app/Contents/MacOS/plugins")
-    else()
-        set(PLUGIN_PATH "plugins")
-    endif()
+    set(PLUGIN_PATH "plugins")
     
     # add a post-build command to copy DLLs beside the executable
     add_custom_command(
@@ -46,5 +42,18 @@ macro(COPY_DLLS_BESIDE_WINDOWS_EXECUTABLE)
       POST_BUILD
       COMMAND CMD /C "SET PATH=%PATH%;${QT_DIR}/bin && ${WINDEPLOYQT_COMMAND} $<$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>,$<CONFIG:RelWithDebInfo>>:--release> $<TARGET_FILE:${TARGET_NAME}>"
     )
+  elseif (DEFINED BUILD_BUNDLE AND BUILD_BUNDLE AND APPLE)
+    find_program(MACDEPLOYQT_COMMAND macdeployqt PATHS ${QT_DIR}/bin NO_DEFAULT_PATH)
+    
+    if (NOT MACDEPLOYQT_COMMAND)
+      message(FATAL_ERROR "Could not find macdeployqt at ${QT_DIR}/bin. macdeployqt is required.")
+    endif ()
+  
+    # add a post-build command to call macdeployqt to copy Qt plugins
+    add_custom_command(
+      TARGET ${TARGET_NAME}
+      POST_BUILD
+      COMMAND ${MACDEPLOYQT_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${TARGET_NAME}.app -verbose 0
+    )
   endif ()
-endmacro()
\ No newline at end of file
+endmacro()
diff --git a/cmake/modules/FindQuaZip.cmake b/cmake/modules/FindQuaZip.cmake
index 5fbc8e1ac4..110f239c68 100644
--- a/cmake/modules/FindQuaZip.cmake
+++ b/cmake/modules/FindQuaZip.cmake
@@ -17,13 +17,10 @@ hifi_library_search_hints("quazip")
 
 if (WIN32)
     find_path(QUAZIP_INCLUDE_DIRS quazip.h PATH_SUFFIXES include/quazip HINTS ${QUAZIP_SEARCH_DIRS})
-#    find_library(QUAZIP_LIBRARIES NAMES quazip PATH_SUFFIXES lib HINTS ${QUAZIP_SEARCH_DIRS})
 elseif (APPLE)
     find_path(QUAZIP_INCLUDE_DIRS quazip.h PATH_SUFFIXES include/quazip HINTS ${QUAZIP_SEARCH_DIRS})
-#    find_library(QUAZIP_LIBRARIES NAMES quazip PATH_SUFFIXES lib HINTS ${QUAZIP_SEARCH_DIRS})
 else ()
     find_path(QUAZIP_INCLUDE_DIRS quazip.h PATH_SUFFIXES quazip HINTS ${QUAZIP_SEARCH_DIRS})
-#    find_library(QUAZIP_LIBRARIES NAMES quazip-qt5 PATH_SUFFIXES lib HINTS ${QUAZIP_SEARCH_DIRS})
 endif ()
 
 include(FindPackageHandleStandardArgs)
diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt
index ce683df698..1f9280a899 100644
--- a/domain-server/CMakeLists.txt
+++ b/domain-server/CMakeLists.txt
@@ -37,4 +37,4 @@ if (UNIX)
 endif (UNIX)
 
 include_application_version()
-copy_dlls_beside_windows_executable()
+package_libraries_for_deployment()
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index 98a9dad909..3357b57858 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -201,4 +201,4 @@ else (APPLE)
   endif()
 endif (APPLE)
 
-copy_dlls_beside_windows_executable()
+package_libraries_for_deployment()
diff --git a/stack-manager/CMakeLists.txt b/stack-manager/CMakeLists.txt
index e11bd0fa50..45ad9686c0 100644
--- a/stack-manager/CMakeLists.txt
+++ b/stack-manager/CMakeLists.txt
@@ -46,3 +46,5 @@ else ()
 #    add_executable(${TARGET_NAME} ${SM_SRCS})
   endif ()
 endif ()
+
+package_libraries_for_deployment()
\ No newline at end of file