diff --git a/CI/before_install.osx.sh b/CI/before_install.osx.sh
index 1ca0fc6..9ec8056 100755
--- a/CI/before_install.osx.sh
+++ b/CI/before_install.osx.sh
@@ -19,4 +19,4 @@ curl -fSL -R -J https://gitlab.com/OpenMW/openmw-deps/-/raw/main/macos/openmw-de
 unzip -o ~/openmw-deps.zip -d /private/tmp/openmw-deps > /dev/null
 
 # additional libraries
-[ -z "${TRAVIS}" ] && HOMEBREW_NO_AUTO_UPDATE=1 brew install fontconfig
\ No newline at end of file
+[ -z "${TRAVIS}" ] && HOMEBREW_NO_AUTO_UPDATE=1 brew install fontconfig
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 705b95f..6885c04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -165,6 +165,9 @@ endif()
 if (APPLE)
     set(MORROWIND_DATA_FILES "./data" CACHE PATH "location of Morrowind data files")
     set(OPENMW_RESOURCE_FILES "../Resources/resources" CACHE PATH "location of OpenMW resources files")
+elseif(BUILD_TGZ)
+    set(MORROWIND_DATA_FILES "./data" CACHE PATH "location of Morrowind data files")
+    set(OPENMW_RESOURCE_FILES "./resources" CACHE PATH "location of OpenMW resources files")
 elseif(UNIX)
     # Paths
     SET(BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Where to install binaries")
@@ -790,7 +793,7 @@ elseif(NOT APPLE)
         SET(INSTALL_SOURCE "${OpenMW_BINARY_DIR}")
     endif ()
 
-    if(WIN32)
+    if(WIN32 AND NOT BUILD_TGZ)
         INSTALL(DIRECTORY "${INSTALL_SOURCE}/" DESTINATION "." FILES_MATCHING PATTERN "*.dll"
                                                                               PATTERN "deps" EXCLUDE
                                                                               PATTERN "apps" EXCLUDE
@@ -877,9 +880,185 @@ elseif(NOT APPLE)
         endif()
 
         include(CPack)
-    else(WIN32)
+    else(WIN32 AND NOT BUILD_TGZ)
         # Linux installation
 
+        if(BUILD_TGZ)
+            #Dependencies not available through CMake: libfreeimage, libpthread, libuuid, libFLAC, libvorbisenc, libvorbis, libogg, libzzip
+            #They are added manually so the locations can't be configured via CMake
+            message(TGZ PKG SPRT)
+            include(FindTGZDeps)
+
+            set(PACKAGE_MAINTAINER "unkown")
+            SET(CPACK_PACKAGE_VENDOR "OpenMW.org")
+            SET(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
+            SET(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR})
+            SET(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINOR})
+            SET(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
+            SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW;esmtool;Esmtool;omwlauncher;OpenMW Launcher")
+            SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/README.md")
+            SET(CPACK_RESOURCE_FILE_LICENSE "${OpenMW_SOURCE_DIR}/LICENSE")
+
+            SET(CPACK_GENERATOR "TGZ")
+            SET(CPACK_PACKAGE_NAME "openmw")
+
+            # make sure release version gets displayed as release (ugly)
+            IF(BUILD_TGZ_RELEASE)
+              set(OPENMW_VERSION_COMMITHASH "${OPENMW_VERSION_TAGHASH}")
+            ENDIF()
+
+            IF(MINGW)
+              SET(EXECUTABLE_SUFFIX "exe")
+              if(CMAKE_CXX_COMPILER_AR MATCHES ".*x86_64.*")
+                  set(ARCHSUFFIX "64")
+              else(CMAKE_CXX_COMPILER_AR MATCHES ".*x86_64.*")
+                  set(ARCHSUFFIX "32")
+              endif(CMAKE_CXX_COMPILER_AR MATCHES ".*x86_64.*")
+
+              if(TGZ_NIGHTLY)
+                     SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${TGZ_DATE}-${TGZ_NIGHTLY_HASH}-win${ARCHSUFFIX}")
+              else()
+                  if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+                         SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-debug-${CPACK_PACKAGE_VERSION}-win${ARCHSUFFIX}")
+                  else()
+                         SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win${ARCHSUFFIX}")
+                  endif()
+
+                  if(TGZ_RC)
+                         SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}RC${TGZ_RC_VERSION}-win${ARCHSUFFIX}")
+                  endif()
+              endif()
+            ELSE(MINGW)
+              exec_program("uname" ARGS "" OUTPUT_VARIABLE KERNEL)
+              exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+
+              if(ARCH MATCHES "x86_64")
+                  set(ARCHSUFFIX "-64Bit")
+              else(ARCH MATCHES "x86_64")
+                  set(ARCHSUFFIX "")
+              endif(ARCH MATCHES "x86_64")
+
+              SET(EXECUTABLE_SUFFIX "${ARCH}")
+
+              if(TGZ_NIGHTLY)
+                  SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${TGZ_DATE}-${TGZ_NIGHTLY_HASH}-${KERNEL}${ARCHSUFFIX}")
+              else()
+                  if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+                      SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-debug-${CPACK_PACKAGE_VERSION}-${KERNEL}${ARCHSUFFIX}")
+                  else()
+                      SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${KERNEL}${ARCHSUFFIX}")
+                  endif()
+
+                  if(TGZ_RC)
+                      SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}RC${TGZ_RC_VERSION}")
+                  endif()
+              endif()
+            ENDIF(MINGW)
+
+            SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
+
+            # Install binaries
+            INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+            IF(NOT MINGW)
+              configure_file ("${OpenMW_SOURCE_DIR}/files/openmw.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw.sh" @ONLY)
+              INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw.sh" DESTINATION "." RENAME "openmw" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw")
+            ENDIF(NOT MINGW)
+            INSTALL(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" DESTINATION "." COMPONENT "openmw" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            IF(BUILD_LAUNCHER)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-launcher.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/openmw-launcher.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw-launcher.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw-launcher.sh" DESTINATION "." RENAME "openmw-launcher" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw-launcher")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_LAUNCHER)
+            IF(BUILD_BSATOOL)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/bsatool.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/bsatool.sh.cmake" "${OpenMW_BINARY_DIR}/files/bsatool.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/bsatool.sh" DESTINATION "." RENAME "bsatool" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "bsatool")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_BSATOOL)
+            IF(BUILD_ESMTOOL)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/esmtool.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/esmtool.sh.cmake" "${OpenMW_BINARY_DIR}/files/esmtool.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/esmtool.sh" DESTINATION "." RENAME "esmtool" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "esmtool")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_ESMTOOL)
+            IF(BUILD_MWINIIMPORTER)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-iniimporter.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/openmw-iniimporter.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw-iniimporter.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw-iniimporter.sh" DESTINATION "." RENAME "openmw-iniimporter" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw-iniimporter")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_MWINIIMPORTER)
+            IF(BUILD_ESSIMPORTER)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-essimporter.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/openmw-essimporter.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw-essimporter.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw-essimporter.sh" DESTINATION "." RENAME "openmw-essimporter" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw-essimporter")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_ESSIMPORTER)
+            IF(BUILD_OPENCS)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-cs.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/openmw-cs.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw-cs.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw-cs.sh" DESTINATION "." RENAME "openmw-cs" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw-cs")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_OPENCS)
+            IF(BUILD_WIZARD)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-wizard.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/openmw-wizard.sh.cmake" "${OpenMW_BINARY_DIR}/files/openmw-wizard.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/openmw-wizard.sh" DESTINATION "." RENAME "openmw-wizard" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "openmw-wizard")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_WIZARD)
+            IF(BUILD_NIFTEST)
+                INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/niftest.${EXECUTABLE_SUFFIX}" DESTINATION "." )
+                IF(NOT MINGW)
+                  configure_file ("${OpenMW_SOURCE_DIR}/files/niftest.sh.cmake" "${OpenMW_BINARY_DIR}/files/niftest.sh" @ONLY)
+                  INSTALL(FILES "${OpenMW_BINARY_DIR}/files/niftest.sh" DESTINATION "." RENAME "niftest" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ COMPONENT "niftest")
+                ENDIF(NOT MINGW)
+            ENDIF(BUILD_NIFTEST)
+
+            # Install licenses
+            INSTALL(FILES "files/mygui/DejaVuFontLicense.txt" DESTINATION "." )
+
+            #Install GPL3.txt and README.md
+            INSTALL(FILES "${OpenMW_SOURCE_DIR}/LICENSE" DESTINATION "." RENAME "LICENSE.txt" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            INSTALL(FILES "${OpenMW_SOURCE_DIR}/README.md" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            INSTALL(FILES "${OpenMW_SOURCE_DIR}/README.packagecontents.txt" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+
+            # Install icon and desktop file
+            INSTALL(FILES "${OpenMW_BINARY_DIR}/org.openmw.launcher.desktop" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/launcher/images/openmw.png" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            IF(BUILD_OPENCS)
+                INSTALL(FILES "${OpenMW_BINARY_DIR}/org.openmw.cs.desktop" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw-cs")
+                INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/opencs/openmw-cs.png" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw-cs")
+            ENDIF(BUILD_OPENCS)
+
+            # Install global configuration files
+            INSTALL(FILES "${OpenMW_BINARY_DIR}/defaults.bin" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
+            INSTALL(FILES "${OpenMW_SOURCE_DIR}/CHANGELOG.md" DESTINATION "." RENAME "CHANGELOG.txt" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
+            IF(BUILD_OPENCS)
+                INSTALL(FILES "${OpenMW_BINARY_DIR}/defaults-cs.bin" DESTINATION "." PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "opencs")
+            ENDIF(BUILD_OPENCS)
+
+            #Install resources
+            INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION "." FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "Resources")
+
+            foreach (PLUGIN ${USED_OGRE_PLUGINS})
+                get_filename_component(PLUGIN_ABS ${PLUGIN} REALPATH)
+                get_filename_component(PLUGIN_NAME ${PLUGIN} NAME)
+                install(FILES ${PLUGIN_ABS} DESTINATION "./plugins" RENAME "${PLUGIN_NAME}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT Runtime)
+            endforeach ()
+
+            find_tgz_deps()
+
+            include(CPack)
+        else(BUILD_TGZ)
+
         # Install binaries
         IF(BUILD_OPENMW)
             INSTALL(PROGRAMS "$<TARGET_FILE:openmw>" DESTINATION "${BINDIR}" )
@@ -934,7 +1113,8 @@ elseif(NOT APPLE)
         # Install resources
         INSTALL(DIRECTORY "${INSTALL_SOURCE}/resources" DESTINATION "${DATADIR}" COMPONENT "Resources")
         INSTALL(DIRECTORY DESTINATION "${DATADIR}/data" COMPONENT "Resources")
-    endif(WIN32)
+        endif(BUILD_TGZ)
+    endif(WIN32 AND NOT BUILD_TGZ)
 endif(OPENMW_OSX_DEPLOYMENT AND APPLE)
 
 # Doxygen Target -- simply run 'make doc' or 'make doc_pages'
diff --git a/README.packagecontents.txt b/README.packagecontents.txt
new file mode 100644
index 0000000..142bdfd
--- /dev/null
+++ b/README.packagecontents.txt
@@ -0,0 +1,8 @@
+=== Package Content README ===
+
+This package contains Linux binaries for openmw and its suite of utilities. It is intended to run both on most moderatly old and recent Linux distributions. Basically anything as old or newer than CentOS 7.
+
+=== Running the provided binaries ===
+The binaries depend on libraries that might not be installed on your system or in an incompatible version. Therefore these libraries are included in the "lib" subdirectory. To automatically use the provided libraries there are scripts which set the LD_LIBRARY_VARIABLE to the "lib" directory.
+
+To run openmw or an utility simply run the provided shell script (the file without a suffix -> <filename> not <filename>.x86_64). In case of openmw this would be "openmw" not openmw.x86_64.
diff --git a/apps/bsatool/CMakeLists.txt b/apps/bsatool/CMakeLists.txt
index ec0615f..d08a260 100644
--- a/apps/bsatool/CMakeLists.txt
+++ b/apps/bsatool/CMakeLists.txt
@@ -14,6 +14,15 @@ target_link_libraries(bsatool
   components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS bsatool RUNTIME DESTINATION "." COMPONENT bsatool)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(bsatool
+                            PROPERTIES OUTPUT_NAME bsatool.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(bsatool gcov)
diff --git a/apps/esmtool/CMakeLists.txt b/apps/esmtool/CMakeLists.txt
index 122ca2f..e3d8175 100644
--- a/apps/esmtool/CMakeLists.txt
+++ b/apps/esmtool/CMakeLists.txt
@@ -17,6 +17,15 @@ target_link_libraries(esmtool
   components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS esmtool RUNTIME DESTINATION "." COMPONENT esmtool)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(esmtool
+                            PROPERTIES OUTPUT_NAME esmtool.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(esmtool gcov)
diff --git a/apps/essimporter/CMakeLists.txt b/apps/essimporter/CMakeLists.txt
index 0e742ff..f0fddc9 100644
--- a/apps/essimporter/CMakeLists.txt
+++ b/apps/essimporter/CMakeLists.txt
@@ -40,6 +40,15 @@ target_link_libraries(openmw-essimporter
     components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS openmw-essimporter RUNTIME DESTINATION "." COMPONENT openmw-essimporter)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(openmw-essimporter
+                            PROPERTIES OUTPUT_NAME openmw-essimporter.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(openmw-essimporter gcov)
diff --git a/apps/launcher/CMakeLists.txt b/apps/launcher/CMakeLists.txt
index 3018237..2da7127 100644
--- a/apps/launcher/CMakeLists.txt
+++ b/apps/launcher/CMakeLists.txt
@@ -104,6 +104,15 @@ target_link_libraries(openmw-launcher
 
 target_link_libraries(openmw-launcher Qt5::Widgets Qt5::Core)
 
+if(BUILD_TGZ)
+	INSTALL(TARGETS openmw-launcher RUNTIME DESTINATION . COMPONENT openmw-launcher)
+        IF(NOT MINGW)
+          exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+          SET_TARGET_PROPERTIES(openmw-launcher
+          	PROPERTIES OUTPUT_NAME openmw-launcher.${ARCH})
+        ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(openmw-launcher gcov)
diff --git a/apps/mwiniimporter/CMakeLists.txt b/apps/mwiniimporter/CMakeLists.txt
index e836567..d57c10d 100644
--- a/apps/mwiniimporter/CMakeLists.txt
+++ b/apps/mwiniimporter/CMakeLists.txt
@@ -19,6 +19,19 @@ target_link_libraries(openmw-iniimporter
     components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS openmw-iniimporter RUNTIME DESTINATION "." COMPONENT openmw-iniimporter)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(openmw-iniimporter
+                            PROPERTIES OUTPUT_NAME openmw-iniimporter.${ARCH})
+    ENDIF(NOT MINGW)
+else()
+    if(DPKG_PROGRAM)
+        INSTALL(TARGETS mwiniimport RUNTIME DESTINATION games COMPONENT mwiniimport)
+    endif()
+endif(BUILD_TGZ)
+
 if (WIN32)
     target_link_libraries(openmw-iniimporter
     ${Boost_LOCALE_LIBRARY})
diff --git a/apps/niftest/CMakeLists.txt b/apps/niftest/CMakeLists.txt
index 3cbee2b..dc32c7e 100644
--- a/apps/niftest/CMakeLists.txt
+++ b/apps/niftest/CMakeLists.txt
@@ -13,6 +13,15 @@ target_link_libraries(niftest
   components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS niftest RUNTIME DESTINATION "." COMPONENT niftest)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(niftest
+                            PROPERTIES OUTPUT_NAME niftest.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(niftest gcov)
diff --git a/apps/opencs/CMakeLists.txt b/apps/opencs/CMakeLists.txt
index 88c4233..d1a6d5a 100644
--- a/apps/opencs/CMakeLists.txt
+++ b/apps/opencs/CMakeLists.txt
@@ -232,6 +232,15 @@ target_link_libraries(openmw-cs
     components
 )
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS openmw-cs RUNTIME DESTINATION "." COMPONENT openmw-cs)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(openmw-cs
+                            PROPERTIES OUTPUT_NAME openmw-cs.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if(OSG_STATIC)
     unset(_osg_plugins_static_files)
     add_library(openmw_cs_osg_plugins INTERFACE)
diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt
index 3fb762d..e519a17 100644
--- a/apps/openmw/CMakeLists.txt
+++ b/apps/openmw/CMakeLists.txt
@@ -217,6 +217,15 @@ if(APPLE)
     endif()
 endif(APPLE)
 
+if(BUILD_TGZ)
+    INSTALL(TARGETS openmw RUNTIME DESTINATION "." COMPONENT openmw)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(openmw
+                            PROPERTIES OUTPUT_NAME openmw.${ARCH})
+    ENDIF(NOT MINGW)
+endif(BUILD_TGZ)
+
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
   target_link_libraries(openmw gcov)
diff --git a/apps/wizard/CMakeLists.txt b/apps/wizard/CMakeLists.txt
index 10e06d1..19cd96f 100644
--- a/apps/wizard/CMakeLists.txt
+++ b/apps/wizard/CMakeLists.txt
@@ -108,9 +108,22 @@ if (OPENMW_USE_UNSHIELD)
     target_link_libraries(openmw-wizard ${LIBUNSHIELD_LIBRARIES})
 endif()
 
+
+if(BUILD_TGZ)
+    INSTALL(TARGETS openmw-wizard RUNTIME DESTINATION "." COMPONENT openmw-wizard)
+    IF(NOT MINGW)
+      exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+      SET_TARGET_PROPERTIES(openmw-wizard
+                            PROPERTIES OUTPUT_NAME openmw-wizard.${ARCH})
+    ENDIF(NOT MINGW)
+else(BUILD_TGZ)
+
 if(DPKG_PROGRAM)
     INSTALL(TARGETS openmw-wizard RUNTIME DESTINATION games COMPONENT openmw-wizard)
 endif()
+endif(BUILD_TGZ)
+
+
 
 if (BUILD_WITH_CODE_COVERAGE)
   add_definitions (--coverage)
diff --git a/cmake/FindTGZDeps.cmake b/cmake/FindTGZDeps.cmake
new file mode 100644
index 0000000..35a85c5
--- /dev/null
+++ b/cmake/FindTGZDeps.cmake
@@ -0,0 +1,518 @@
+macro (find_tgz_deps)
+
+        if(MINGW)
+                set(SHARED_LIBRARY_SUFFIX "dll")
+                set(SYSTEM_SHARED_LIB_PATH "${CMAKE_INSTALL_PREFIX}/bin")
+                set(USER_SHARED_LIB_PATH "${CMAKE_INSTALL_PREFIX}/bin")
+                set(LOCAL_SHARED_LIB_PATH "${CMAKE_INSTALL_PREFIX}/bin")
+                set(LOCAL_SHARED_LIB_MULTILIB_PATH "${CMAKE_INSTALL_PREFIX}/bin")
+                set(INSTALL_PATH ".")
+
+                set(QPA_PLUGINS_PATH "${CMAKE_INSTALL_PREFIX}/lib/qt/plugins")
+
+                INSTALL(FILES "${SYSTEM_SHARED_LIB_PATH}/libgcc_s_sjlj-1.${SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+                INSTALL(FILES "${SYSTEM_SHARED_LIB_PATH}/libstdc++-6.${SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+                INSTALL(FILES "${SYSTEM_SHARED_LIB_PATH}/libwinpthread-1.${SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        else(MINGW)
+	        exec_program("uname" ARGS "-m" OUTPUT_VARIABLE ARCH)
+	        if("${ARCH}" MATCHES "i686")
+	        	set(MULTIARCH_PATH "")
+	        else()
+	        	set(MULTIARCH_PATH "64")
+	        endif()
+                set(SHARED_LIBRARY_SUFFIX "so")
+                set(SYSTEM_SHARED_LIB_PATH "/lib${MULTIARCH_PATH}")
+                set(USER_SHARED_LIB_PATH "/usr/lib${MULTIARCH_PATH}")
+                set(LOCAL_SHARED_LIB_PATH "/usr/local/lib")
+                if("${ARCH}" MATCHES "i686")
+                        set(LIBDIR "lib")
+                else()
+                        set(LIBDIR "lib64")
+                endif()
+                set(LOCAL_SHARED_LIB_MULTILIB_PATH "/usr/local/${LIBDIR}")
+                set(INSTALL_PATH "./lib")
+
+                set(QPA_PLUGINS_PATH "/usr/local/plugins")
+                # FIXME seems to not be set by FindOSG anymore
+                set(OSGPlugins_LIB_DIR "${LOCAL_SHARED_LIB_PATH}/osgPlugins-3.6.5/")
+        endif(MINGW)
+
+	#set(FREEIMAGE_LIBRARY "/usr/lib/libfreeimage.so.3")
+	set(JPEG_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libjpeg.so.62")
+	#Don't package pthread it's just too system dependant
+	#set(PTHREAD_LIBRARY "/lib/libpthread.so.0")
+        IF(NOT MINGW)
+            set(UUID_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libuuid.${SHARED_LIBRARY_SUFFIX}.1")
+        ENDIF(NOT MINGW)
+	#set(FLAC_LIBRARY "/usr/lib/${MULTIARCH_PATH}/libFLAC.so.8")
+	set(VORBISENC_LIBRARY "${LOCAL_SHARED_LIB_PATH}/libvorbisenc.so")
+	set(VORBIS_LIBRARY "${LOCAL_SHARED_LIB_PATH}/libvorbis.so")
+	set(OGG_LIBRARY "${LOCAL_SHARED_LIB_PATH}/libogg.so")
+	#set(ZZIP_LIBRARY "/usr/lib/libzzip.so")
+        # required by multithreaded bullet
+	set(GOMP_LIBRARY "${USER_SHARED_LIB_PATH}/libgomp.so.1")
+        # For openscenegraph since it picks up system libpng15 through cairo and rsvg (should fix openscenegraph build)
+	set(PNG15_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libpng15.${SHARED_LIBRARY_SUFFIX}.15")
+	set(PNG_LIBRARY "${LOCAL_SHARED_LIB_PATH}/libpng16.${SHARED_LIBRARY_SUFFIX}.16")
+        #TODO: Add OSG Dependencies Cairo + librsvg
+	set(EXPAT_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libexpat.${SHARED_LIBRARY_SUFFIX}.1")
+	set(GRAPHITE_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libgraphite2.${SHARED_LIBRARY_SUFFIX}.3")
+	set(HARFBUZZ_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libharfbuzz.${SHARED_LIBRARY_SUFFIX}.0")
+	set(GLIB_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libglib-2.0.${SHARED_LIBRARY_SUFFIX}.0")
+	set(GTHREAD_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libgthread-2.0.${SHARED_LIBRARY_SUFFIX}.0")
+	set(PCRE_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libpcre.${SHARED_LIBRARY_SUFFIX}.1")
+        # Collada for osg dae plugin
+        #set(COLLADA_LIBRARY "${LOCAL_SHARED_LIB_PATH}/libcollada-dom2.5-dp.${SHARED_LIBRARY_SUFFIX}.0")
+          INSTALL(FILES "${LOCAL_SHARED_LIB_PATH}/libcollada-dom2.5-dp.${SHARED_LIBRARY_SUFFIX}.2.5.0" DESTINATION "${INSTALL_PATH}" RENAME "libcollada-dom2.5-dp.${SHARED_LIBRARY_SUFFIX}.0" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+       # collada dependencies
+       set(PCRECPP_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libpcrecpp.${SHARED_LIBRARY_SUFFIX}.0")
+       set(XML2_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/libxml2.${SHARED_LIBRARY_SUFFIX}.2")
+       set(LZMA_LIBRARY "${SYSTEM_SHARED_LIB_PATH}/liblzma.${SHARED_LIBRARY_SUFFIX}.5")
+
+	### FIXME: just install these for now can be changed later ###
+	if("${ARCH}" MATCHES "i686")
+	#	INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/sse2/libspeex.so.1.5.0" DESTINATION "./lib" RENAME libspeex.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	else()
+	#	INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libspeex.so.1.5.0" DESTINATION "./lib" RENAME libspeex.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	endif()
+
+        IF(MINGW)
+          INSTALL(FILES "${LOCAL_SHARED_LIB_PATH}/libmp3lame-0.${SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+          INSTALL(FILES "${LOCAL_SHARED_LIB_PATH}/libmp3lame.${SHARED_LIBRARY_SUFFIX}.0.0.0" DESTINATION "${INSTALL_PATH}" RENAME libmp3lame.${SHARED_LIBRARY_SUFFIX}.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libtheoraenc.so.1.1.2" DESTINATION "./lib" RENAME libtheoraenc.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libtheoradec.so.1.1.4" DESTINATION "./lib" RENAME libtheoradec.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/local/lib/libx264.so.152" DESTINATION "./lib" RENAME "libx264.so.152" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBVPX "${LOCAL_SHARED_LIB_PATH}/libvpx.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+        INSTALL(FILES "${LIBVPX}" DESTINATION "${INSTALL_PATH}" RENAME libvpx.${SHARED_LIBRARY_SUFFIX}.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libopenjpeg-2.1.3.0.so" DESTINATION "./lib" RENAME libopenjpeg.so.2 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libschroedinger-1.0.so.0.11.0" DESTINATION "./lib" RENAME libschroedinger-1.0.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libgnutls.so.26.22.4" DESTINATION "./lib" RENAME libgnutls.so.26 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libtasn1.so.3.1.16" DESTINATION "./lib" RENAME libtasn1.so.3 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libgsm.so.1.0.12" DESTINATION "./lib" RENAME libgsm.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/lib/${MULTIARCH_PATH}/libpng12.so.0.49.0" DESTINATION "./lib" RENAME libpng12.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/lib/${MULTIARCH_PATH}/libz.so.1.2.7" DESTINATION "./lib" RENAME libz.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libzzip-0.so.13.0.56" DESTINATION "./lib" RENAME libzzip-0.so.13 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+        IF(MINGW)
+          FILE(GLOB LIBBZ2 "${SYSTEM_SHARED_LIB_PATH}/libbz2*.${SHARED_LIBRARY_SUFFIX}")
+          INSTALL(FILES "${LIBBZ2}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+          FILE(GLOB LIBBZ2 "${SYSTEM_SHARED_LIB_PATH}/libbz2.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+          INSTALL(FILES "${LIBBZ2}" DESTINATION "${INSTALL_PATH}" RENAME libbz2.${SHARED_LIBRARY_SUFFIX}.1.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+        IF(MINGW)
+          FILE(GLOB LIBFREETYPE "${USER_SHARED_LIB_PATH}/libfreetype*.${SHARED_LIBRARY_SUFFIX}")
+          INSTALL(FILES "${LIBFREETYPE}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+          FILE(GLOB LIBFREETYPE "${USER_SHARED_LIB_PATH}/libfreetype.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+          INSTALL(FILES "${LIBFREETYPE}" DESTINATION "${INSTALL_PATH}" RENAME libfreetype.${SHARED_LIBRARY_SUFFIX}.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+	#INSTALL(FILES "/lib/${MULTIARCH_PATH}/libgcrypt.so.11.7.0" DESTINATION "./lib" RENAME libgcrypt.so.11 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/lib/${MULTIARCH_PATH}/libgpg-error.so.0.8.0" DESTINATION "./lib" RENAME libgpg-error.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+	#New ffmpeg dependencies
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libvo-amrwbenc.so.0.0.3" DESTINATION "./lib" RENAME libvo-amrwbenc.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libvo-aacenc.so.0.0.3" DESTINATION "./lib" RENAME libvo-aacenc.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libfdk-aac.so.0.0.2" DESTINATION "./lib" RENAME libfdk-aac.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libcrystalhd.so.3.6" DESTINATION "./lib" RENAME libcrystalhd.so.3 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/librtmp.so.0" DESTINATION "./lib" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libmng.so.1.1.0.10" DESTINATION "./lib" RENAME libmng.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libIlmImf.so.6.0.0" DESTINATION "./lib" RENAME libIlmImf.so.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libImath.so.6.0.0" DESTINATION "./lib" RENAME libImath.so.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libHalf.so.6.0.0" DESTINATION "./lib" RENAME libHalf.so.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libIex.so.6.0.0" DESTINATION "./lib" RENAME libIex.so.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/libIlmThread.so.6.0.0" DESTINATION "./lib" RENAME libIlmThread.so.6 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libraw.so.5.0.0" DESTINATION "./lib" RENAME libraw.so.5 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libva.so.1.3200.0" DESTINATION "./lib" RENAME libva.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libxvidcore.so.4.3" DESTINATION "./lib" RENAME libxvidcore.so.4 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        IF(MINGW)
+          set(FFMPEG_DEPS "libopencore-amrn*" "libopencore-amrw*" "libopenjp2*" "libspeex-*" "libtheora-*" "libtheoraenc-*" "libtheoradec-*" "libgomp*" "libaom*" "libgmp-*" "libmodplug*" "libsrt*" "libssh" "libgnutls-*" "libdav1d*" "libxml2*" "libogg*" "libbluray*" "libvorbis-*" "libvorbisenc-*" "libwebp-*" "libwebpmux-*" "libopus*" "libx264*" "libx265*" "xvidcore*" "libsoxr" "OpenAL32" "libhogweed*" "libidn2*" "libnettle*" "libp11-kit*" "libtasn*" "libunistring*" "libffi*")
+          FOREACH(FFMPEG_DEP ${FFMPEG_DEPS})
+                  #message("${FFMPEG_DEP}")
+                  FILE(GLOB FFMPEG_DEP_GLOBBED "${LOCAL_SHARED_LIB_PATH}/${FFMPEG_DEP}.${SHARED_LIBRARY_SUFFIX}")
+                  #message("${FFMPEG_DEP_GLOBBED}")
+                  INSTALL(FILES "${FFMPEG_DEP_GLOBBED}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+          ENDFOREACH()
+                  set(FFMPEG_DEPS "libgsm.${SHARED_LIBRARY_SUFFIX}.*.*.*" "libvpx.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+          FOREACH(FFMPEG_DEP ${FFMPEG_DEPS})
+                  #message("${FFMPEG_DEP}")
+                  FILE(GLOB FFMPEG_DEP_GLOBBED "${LOCAL_SHARED_LIB_PATH}/${FFMPEG_DEP}")
+                  #message("${FFMPEG_DEP_GLOBBED}")
+                  INSTALL(FILES "${FFMPEG_DEP_GLOBBED}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+          ENDFOREACH()
+        ELSE(MINGW)
+          FILE(GLOB LIBOPUS "${LOCAL_SHARED_LIB_PATH}/libopus.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+          INSTALL(FILES "${LIBOPUS}" DESTINATION "${INSTALL_PATH}" RENAME libopus.${SHARED_LIBRARY_SUFFIX}.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libopencore-amrnb.so.0.0.3" DESTINATION "./lib" RENAME libopencore-amrnb.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libopencore-amrwb.so.0.0.3" DESTINATION "./lib" RENAME libopencore-amrwb.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libfaac.so.0.0.0" DESTINATION "./lib" RENAME libfaac.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libaacplus.so.2.0.2" DESTINATION "./lib" RENAME libaacplus.so.2 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libbluray.so.1.1.0" DESTINATION "./lib" RENAME libbluray.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libts-0.0.so.0.1.1" DESTINATION "./lib" RENAME libts-0.0.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/liborc-0.4.so.0.16.0" DESTINATION "./lib" RENAME liborc-0.4.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libp11-kit.so.0.0.0" DESTINATION "./lib" RENAME libp11-kit.so.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/libjasper.so.1.0.0" DESTINATION "./lib" RENAME libjasper.so.1 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+        IF(NOT MINGW)
+          INSTALL(FILES "/usr/local/lib/libtxc_dxtn.${SHARED_LIBRARY_SUFFIX}" DESTINATION "./lib" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(NOT MINGW)
+
+        #INSTALL(FILES "/usr/local/lib/libx265.so.151" DESTINATION "./lib" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        IF(MINGW)
+                FILE(GLOB LIBFONTCONFIG "${USER_SHARED_LIB_PATH}/libfontconfig*.${SHARED_LIBRARY_SUFFIX}")
+                INSTALL(FILES "${LIBFONTCONFIG}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+                FILE(GLOB LIBFONTCONFIG "${USER_SHARED_LIB_PATH}/libfontconfig.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBFONTCONFIG}" DESTINATION "${INSTALL_PATH}" RENAME "libfontconfig.${SHARED_LIBRARY_SUFFIX}.1" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+        IF(MINGW)
+                FILE(GLOB LIBSSL "${USER_SHARED_LIB_PATH}/libssl*.${SHARED_LIBRARY_SUFFIX}")
+                INSTALL(FILES "${LIBSSL}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+                FILE(GLOB LIBSSL "${USER_SHARED_LIB_PATH}/libssl.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBSSL}" DESTINATION "${INSTALL_PATH}" RENAME "libssl.${SHARED_LIBRARY_SUFFIX}.10" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+        IF(MINGW)
+                FILE(GLOB LIBCRYPTO "${USER_SHARED_LIB_PATH}/libcrypto*.${SHARED_LIBRARY_SUFFIX}")
+                INSTALL(FILES "${LIBCRYPTO}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+                FILE(GLOB LIBCRYPTO "${USER_SHARED_LIB_PATH}/libcrypto.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBCRYPTO}" DESTINATION "${INSTALL_PATH}" RENAME "libcrypto.${SHARED_LIBRARY_SUFFIX}.10" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+        string(REGEX REPLACE "(/.*libMyGUIEngine).${SHARED_LIBRARY_SUFFIX}.*" "\\1" MyGUI_LIBRARY_REAL "${MyGUI_LIBRARIES}")
+
+        IF(MINGW)
+                string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" MyGUI_LIBRARY_REAL "${MyGUI_LIBRARY_REAL}")
+        ENDIF(MINGW)
+
+	message("MyGUI: ${MyGUI_LIBRARIES}")
+	message("MyGUI LIB REAL: ${MyGUI_LIBRARY_REAL}")
+
+        IF(MINGW)
+                FILE(GLOB LIBMYGUI "${MyGUI_LIBRARY_REAL}*.${SHARED_LIBRARY_SUFFIX}")
+                INSTALL(FILES "${LIBMYGUI}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+                FILE(GLOB LIBMYGUI "${MyGUI_LIBRARY_REAL}.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBMYGUI}" DESTINATION "${INSTALL_PATH}" RENAME "libMyGUIEngine.${SHARED_LIBRARY_SUFFIX}.3.4.0" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")   
+        ENDIF(MINGW)
+
+	#string(REGEX REPLACE ".*;?(/.*libSDL2).so;?.*" "\\1" SDL2_LIBRARY_REAL "${SDL2_LIBRARY}")
+        string(REGEX REPLACE "(/.*libSDL2).${SHARED_LIBRARY_SUFFIX}.*" "\\1" SDL2_LIBRARY_REAL "${SDL2_LIBRARY}")
+        IF(MINGW)
+                string(REGEX REPLACE "(.*)\/lib\/lib(.*)" "\\1/bin/\\2" SDL2_LIBRARY_REAL "${SDL2_LIBRARY_REAL}")
+        ENDIF(MINGW)
+
+	message("SDL2 LIB: ${SDL2_LIBRARY}")
+	message("SDL2 LIB REAL: ${SDL2_LIBRARY_REAL}")
+
+        IF(MINGW)
+                FILE(GLOB LIBSDL2 "${SDL2_LIBRARY_REAL}.${SHARED_LIBRARY_SUFFIX}")
+                INSTALL(FILES "${LIBSDL2}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ELSE(MINGW)
+                FILE(GLOB LIBSDL2 "${SDL2_LIBRARY_REAL}-2.0.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBSDL2}" DESTINATION "${INSTALL_PATH}" RENAME libSDL2-2.0.${SHARED_LIBRARY_SUFFIX}.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+        #INSTALL(FILES "/usr/lib/${MULTIARCH_PATH}/liblcms.so.1.0.19" DESTINATION "./lib" RENAME "liblcms.so.1" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+	exec_program("dirname" ARGS ${Boost_FILESYSTEM_LIBRARY} OUTPUT_VARIABLE BOOSTDIR)
+
+	#dirty hack to keep the right boost libs for linking
+	set(BOOST_TMP_LIBS ${Boost_LIBRARIES})
+
+	if(Boost_VERSION GREATER 104900)
+		SET(BOOST_PACKAGE_COMPONENTS ${BOOST_PACKAGE_COMPONENTS} chrono)
+	endif()
+
+	#SET(BOOST_PACKAGE_COMPONENTS ${BOOST_PACKAGE_COMPONENTS} thread date_time wave)
+	SET(BOOST_PACKAGE_COMPONENTS ${BOOST_PACKAGE_COMPONENTS} thread iostreams)
+
+        IF(MINGW)
+          SET(BOOST_PACKAGE_COMPONENTS ${BOOST_PACKAGE_COMPONENTS} thread iostreams locale)
+        ENDIF(MINGW)
+
+	find_package(Boost REQUIRED COMPONENTS ${BOOST_PACKAGE_COMPONENTS})
+
+	set(Boost_LIBRARIES ${BOOST_TMP_LIBS})
+
+	#FIXME: Item names do not correspond linked names. How can we find those?
+
+	#Reading symbolic links and copying the libs into ${INSTALL_PATH}
+        INSTALL(DIRECTORY DESTINATION "${INSTALL_PATH}" COMPONENT "openmw")
+
+	#TODO: Remove unnecessary commands and messages
+	#TODO: Need better readlink algorithm for stuff like openal
+	exec_program("dirname" ARGS ${OPENAL_LIBRARY} OUTPUT_VARIABLE OPENAL_DIRNAME)
+	exec_program("readlink" ARGS ${OPENAL_LIBRARY} OUTPUT_VARIABLE NEXT_OPENAL_LINK)
+	exec_program("readlink" ARGS "${OPENAL_DIRNAME}/${NEXT_OPENAL_LINK}" OUTPUT_VARIABLE REAL_OPENAL_LIBRARY)
+#	message("${NEXT_OPENAL_LINK}")
+#	message("${REAL_OPENAL_LIBRARY}")
+	#TODO: We need to get rid of things like this extra stuff for pthread and freeimage ...
+	#exec_program("readlink" ARGS ${PTHREAD_LIBRARY} OUTPUT_VARIABLE PTHREAD_READLINK)
+	#INSTALL(FILES "/lib/${PTHREAD_READLINK}" DESTINATION "./lib" RENAME "libpthread.so.0" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+	#exec_program("readlink" ARGS ${FREEIMAGE_LIBRARY} OUTPUT_VARIABLE FREEIMAGE_READLINK)
+	#INSTALL(FILES "/usr/lib/${FREEIMAGE_READLINK}" DESTINATION "./lib" RENAME "libfreeimage.so.3" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+        IF(MINGW)
+                SET(REAL_FFMPEG_LIBRARIES "")
+                FOREACH(CURRENT_ITEM ${FFmpeg_LIBRARIES})
+                        string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+                        string(REGEX REPLACE "(.*\/)lib(.*).dll.a" "\\1\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+                        #message("${CURRENT_ITEM}")
+                        FILE(GLOB CURRENT_ITEM "${CURRENT_ITEM}*.dll")
+                        #message("${CURRENT_ITEM}")
+                        INSTALL(FILES "${CURRENT_ITEM}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+                ENDFOREACH(CURRENT_ITEM ${FFmpeg_LIBRARIES})
+        ENDIF(MINGW)
+
+        set(Bullet_LIBRARIES ${BULLET_COLLISION_LIBRARY} ${BULLET_DYNAMICS_LIBRARY} ${BULLET_MATH_LIBRARY} ${BULLET_SOFTBODY_LIBRARY})
+
+	#Libs that are linked with major version numbers
+        IF(MINGW)
+          set(LIBITEMS ${Bullet_LIBRARIES}
+          ${UUID_LIBRARY})
+        ELSE(MINGW)
+          set(LIBITEMS ${Bullet_LIBRARIES}
+          ${MPG123_LIBRARY} ${Freetype_LIBRARY} ${SNDFILE_LIBRARY} ${PNG15_LIBRARY} ${PNG_LIBRARY} ${JPEG_LIBRARY} ${GOMP_LIBRARY} ${COLLADA_LIBRARY} ${UUID_LIBRARY}
+          ${FLAC_LIBRARY} ${VORBISENC_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY} ${ZZIP_LIBRARY} ${SOUND_INPUT_LIBRARY} ${EXPAT_LIBRARY} ${GRAPHITE_LIBRARY} ${HARFBUZZ_LIBRARY} ${GLIB_LIBRARY} ${GTHREAD_LIBRARY} ${PCRE_LIBRARY} ${PCRECPP_LIBRARY} ${XML2_LIBRARY} ${LZMA_LIBRARY}
+          "${OPENAL_DIRNAME}/${REAL_OPENAL_LIBRARY}" ${FFmpeg_LIBRARIES} ${LZ4_LIBRARIES})
+        ENDIF(MINGW)
+
+    if(BUILD_LAUNCHER)
+        #This is also done in the Main CMakeLists.txt
+        #but after the call to find_tgz_deps
+        #find_package(LIBUNSHIELD REQUIRED)
+        #if(NOT LIBUNSHIELD_FOUND)
+        #       message(SEND_ERROR "Failed to find libunshield")
+        #endif(NOT LIBUNSHIELD_FOUND)
+        IF(MINGW)
+                FILE(GLOB LIBUNSHIELD "${LOCAL_SHARED_LIB_PATH}${MULTIARCH_PATH}/libunshield*.${SHARED_LIBRARY_SUFFIX}")
+                #TODO: Build unshield
+        ELSE(MINGW)
+                FILE(GLOB LIBUNSHIELD "${LOCAL_SHARED_LIB_PATH}${MULTIARCH_PATH}/libunshield.${SHARED_LIBRARY_SUFFIX}.*.*.*")
+                INSTALL(FILES "${LIBUNSHIELD}" DESTINATION "${INSTALL_PATH}" RENAME libunshield.${SHARED_LIBRARY_SUFFIX}.0 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        ENDIF(MINGW)
+
+        #set(LIBITEMS ${LIBITEMS} ${LIBUNSHIELD_LIBRARY})
+    endif()
+
+	message("Libraries linked with major version:")
+foreach(CURRENT_ITEM ${LIBITEMS})
+	message("${CURRENT_ITEM}")
+endforeach(CURRENT_ITEM)
+foreach(CURRENT_ITEM ${LIBITEMS})
+        IF(MINGW)
+            string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+            string(REGEX REPLACE "(.*).dll.a" "\\1.dll" CURRENT_ITEM "${CURRENT_ITEM}")
+        ENDIF(MINGW)
+
+	exec_program("readlink" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_READLINK)
+	#message("${ITEM_READLINK}")
+	if("${ITEM_READLINK}" STREQUAL "")
+		exec_program("basename" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_NAME)
+                string(REGEX REPLACE "(.+\\.${SHARED_LIBRARY_SUFFIX}\\.[0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" ITEM_MAJOR_VERSION_NAME ${ITEM_NAME})
+                INSTALL(FILES "${CURRENT_ITEM}" DESTINATION "${INSTALL_PATH}" RENAME ${ITEM_MAJOR_VERSION_NAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+#		message("${CURRENT_ITEM}")
+#		message("${ITEM_NAME}")
+	else()
+		exec_program("dirname" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_DIRNAME)
+		exec_program("basename" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_NAME)
+		exec_program("basename" ARGS ${ITEM_READLINK} OUTPUT_VARIABLE ITEM_READLINK_NAME)
+#		message("BASENAME: ${ITEM_NAME}")
+                string(REGEX REPLACE "(.+\\.${SHARED_LIBRARY_SUFFIX}\\.[0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" ITEM_MAJOR_VERSION_NAME ${ITEM_READLINK_NAME})
+                INSTALL(FILES "${ITEM_DIRNAME}/${ITEM_READLINK}" DESTINATION "${INSTALL_PATH}" RENAME ${ITEM_MAJOR_VERSION_NAME} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+#		message("${ITEM_DIRNAME}/${ITEM_READLINK}")
+#		message("Major Version Name: ${ITEM_MAJOR_VERSION_NAME}")
+	endif("${ITEM_READLINK}" STREQUAL "")
+endforeach(CURRENT_ITEM)
+
+	#Libs that are linked with the full version number
+	if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+                IF(MINGW)
+                  set(LIBITEMS ${Boost_DATE_TIME_LIBRARY_DBG} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_WAVE_LIBRARY_DBG}
+                        ${Boost_CHRONO_LIBRARY_DBG} ${Boost_IOSTREAMS_LIBRARY_DBG} ${Boost_LOCALE_LIBRARY_DBG} ${OIS_LIBRARY_REL})
+                ELSE(MINGW)
+                  set(LIBITEMS ${Boost_DATE_TIME_LIBRARY_DBG} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_WAVE_LIBRARY_DBG}
+                  ${Boost_CHRONO_LIBRARY_DBG} ${Boost_IOSTREAMS_LIBRARY_DBG} ${OIS_LIBRARY_REL})
+                ENDIF(MINGW)
+	else()
+                IF(MINGW)
+                  set(LIBITEMS ${Boost_DATE_TIME_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_WAVE_LIBRARY}
+                        ${Boost_CHRONO_LIBRARY} ${Boost_IOSTREAMS_LIBRARY} ${Boost_LOCALE_LIBRARY} ${OIS_LIBRARY_REL})
+                ELSE(MINGW)
+                  set(LIBITEMS ${Boost_DATE_TIME_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_WAVE_LIBRARY}
+                  ${Boost_CHRONO_LIBRARY} ${Boost_IOSTREAMS_LIBRARY} ${OIS_LIBRARY_REL})
+                ENDIF(MINGW)
+	endif()
+
+	message("Libraries linked with full version:")
+foreach(CURRENT_ITEM ${LIBITEMS})
+	message("${CURRENT_ITEM}")
+endforeach(CURRENT_ITEM)
+foreach(CURRENT_ITEM ${LIBITEMS})
+        IF(MINGW)
+            string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+            string(REGEX REPLACE "(.*).dll.a" "\\1.dll" CURRENT_ITEM "${CURRENT_ITEM}")
+        ENDIF(MINGW)
+	exec_program("readlink" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_READLINK)
+	#message("${ITEM_READLINK}")
+	if("${ITEM_READLINK}" STREQUAL "")
+                INSTALL(FILES "${CURRENT_ITEM}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+		#message("${CURRENT_ITEM}")
+	else()
+		exec_program("dirname" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_DIRNAME)
+		exec_program("basename" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_NAME)
+		#message("BASENAME: ${ITEM_NAME}")
+                INSTALL(FILES "${ITEM_DIRNAME}/${ITEM_READLINK}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+		#message("${ITEM_DIRNAME}/${ITEM_READLINK}")
+	endif("${ITEM_READLINK}" STREQUAL "")
+endforeach(CURRENT_ITEM)
+
+#message("OSG LIBS: ${OPENSCENEGRAPH_LIBRARIES}")
+#Copy libraries and symlinks for osg
+foreach(CURRENT_ITEM ${OPENSCENEGRAPH_LIBRARIES})
+      IF(MINGW)
+            string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+      ENDIF(MINGW)
+      string(REGEX REPLACE "(.+\\.${SHARED_LIBRARY_SUFFIX})\\.[0-9]+\\.[0-9]+\\.[0-9]+" "\\1" ITEM_SO_NAME ${CURRENT_ITEM})
+      file(GLOB SO_LIST "${ITEM_SO_NAME}*")
+      foreach(CURRENT_ITEM_2 ${SO_LIST})
+        exec_program("basename" ARGS ${CURRENT_ITEM_2} OUTPUT_VARIABLE ITEM_NAME)
+        INSTALL(FILES "${CURRENT_ITEM_2}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+      endforeach(CURRENT_ITEM_2 ${SO_LIST})
+endforeach(CURRENT_ITEM)
+
+file(GLOB OSGTEXT_LIBS "${LOCAL_SHARED_LIB_PATH}/libosgText.${SHARED_LIBRARY_SUFFIX}*")
+file(GLOB OSGWIDGET_LIBS "${LOCAL_SHARED_LIB_PATH}/libosgWidget.${SHARED_LIBRARY_SUFFIX}*")
+file(GLOB OSGSIM_LIBS "${LOCAL_SHARED_LIB_PATH}/libosgSim.${SHARED_LIBRARY_SUFFIX}*")
+
+IF(MINGW)
+  file(GLOB OSGOPENTHREADS_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libOpenThreads.${SHARED_LIBRARY_SUFFIX}*")
+  file(GLOB OSG_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosg.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGDB_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgDB.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGGA_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgGA.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGPARTICLE_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgParticle.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGSHADOW_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgShadow.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGUTIL_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgUtil.${SHARED_LIBRARY_SUFFIX}")
+  file(GLOB OSGVIEWER_LIBS "${LOCAL_SHARED_LIB_MULTILIB_PATH}/libosgViewer.${SHARED_LIBRARY_SUFFIX}")
+  set(OPENSCENEGRAPH_LIBRARIES_TGZ "${OSG_LIBS}" "${OSGDB_LIBS}" "${OSGGA_LIBS}" "${OSGPARTICLE_LIBS}" "${OSGSHADOW_LIBS}" "${OSGUTIL_LIBS}" "${OSGVIEWER_LIBS}" "${OSGTEXT_LIBS}" "${OSGWIDGET_LIBS}" "${OSGSIM_LIBS}" "${OSGOPENTHREADS_LIBS}")
+ELSE(MINGW)
+  set(OPENSCENEGRAPH_LIBRARIES_TGZ ${OSGTEXT_LIBS} ${OSGWIDGET_LIBS} ${OSGSIM_LIBS})
+ENDIF(MINGW)
+
+#Also need OsgText and OsgWidget
+foreach(CURRENT_ITEM ${OPENSCENEGRAPH_LIBRARIES_TGZ})
+        #IF(MINGW)
+        #       string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+        #       string(REGEX REPLACE "(.*).dll.a" "\\1.dll" CURRENT_ITEM "${CURRENT_ITEM}")
+        #ENDIF(MINGW)
+        INSTALL(FILES "${CURRENT_ITEM}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        #exec_program("basename" ARGS ${CURRENT_ITEM} OUTPUT_VARIABLE ITEM_NAME)
+endforeach(CURRENT_ITEM ${OPENSCENEGRAPH_LIBRARIES_TGZ})
+
+#And OSG Plugins
+# todo officially add dae?
+foreach (PLUGIN_NAME ${USED_OSG_PLUGINS} osgdb_dae)
+  IF(MINGW)
+          set(PLUGIN_ABS "${OSGPlugins_LIB_DIR}/mingw_${PLUGIN_NAME}.${SHARED_LIBRARY_SUFFIX}")
+          string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" PLUGIN_ABS "${PLUGIN_ABS}")
+  ELSE(MINGW)
+          set(PLUGIN_ABS "${OSGPlugins_LIB_DIR}/${PLUGIN_NAME}.${SHARED_LIBRARY_SUFFIX}")
+  ENDIF(MINGW)
+  INSTALL(FILES "${PLUGIN_ABS}" DESTINATION "${INSTALL_PATH}/osgPlugins-${OPENSCENEGRAPH_VERSION}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+endforeach ()
+
+# Qt and dependencies
+
+IF(MINGW)
+        FILE(GLOB LIBSSP "${USER_SHARED_LIB_PATH}/libssp*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBSSP}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+
+        FILE(GLOB LIBICONV "${USER_SHARED_LIB_PATH}/libiconv*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBICONV}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBINTL "${USER_SHARED_LIB_PATH}/libintl*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBINTL}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBPCRE "${USER_SHARED_LIB_PATH}/libpcre-1*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBPCRE}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBPCRE2 "${USER_SHARED_LIB_PATH}/libpcre2-16*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBPCRE2}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBZLIB "${USER_SHARED_LIB_PATH}/zlib*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBZLIB}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBPNG "${USER_SHARED_LIB_PATH}/libpng*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBPNG}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBZSTD "${USER_SHARED_LIB_PATH}/libzstd*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBZSTD}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBLZMA "${USER_SHARED_LIB_PATH}/liblzma*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBLZMA}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBGLIB2 "${USER_SHARED_LIB_PATH}/libglib-2*.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBGLIB2}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBHARFBUZZ "${USER_SHARED_LIB_PATH}/libharfbuzz-0.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBHARFBUZZ}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        FILE(GLOB LIBGRAPHITE "${USER_SHARED_LIB_PATH}/libgraphite2.${SHARED_LIBRARY_SUFFIX}")
+        INSTALL(FILES "${LIBGRAPHITE}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+        set(QT_LIBRARIES ${SYSTEM_SHARED_LIB_PATH}/Qt5Core.${SHARED_LIBRARY_SUFFIX}
+                         ${SYSTEM_SHARED_LIB_PATH}/Qt5Gui.${SHARED_LIBRARY_SUFFIX}
+                         ${SYSTEM_SHARED_LIB_PATH}/Qt5Network.${SHARED_LIBRARY_SUFFIX}
+                         ${SYSTEM_SHARED_LIB_PATH}/Qt5Widgets.${SHARED_LIBRARY_SUFFIX})
+  foreach(QT_LIB ${QT_LIBRARIES})
+          #string(REGEX REPLACE "(.*)\/lib\/(.*)" "\\1/bin/\\2" CURRENT_ITEM "${CURRENT_ITEM}")
+          #string(REGEX REPLACE "(.*).dll.a" "\\1.dll" CURRENT_ITEM "${CURRENT_ITEM}")
+      INSTALL(FILES "${QT_LIB}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+  endforeach(QT_LIB ${QT_LIBRARIES})
+# qpa plugins
+INSTALL(DIRECTORY "${QPA_PLUGINS_PATH}" DESTINATION "." DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+ELSE(MINGW)
+  set(ICU_LIBRARIES ${USER_SHARED_LIB_PATH}/libicuuc.${SHARED_LIBRARY_SUFFIX}.50
+                    ${USER_SHARED_LIB_PATH}/libicuuc.${SHARED_LIBRARY_SUFFIX}.50.2
+                    ${USER_SHARED_LIB_PATH}/libicui18n.${SHARED_LIBRARY_SUFFIX}.50
+                    ${USER_SHARED_LIB_PATH}/libicui18n.${SHARED_LIBRARY_SUFFIX}.50.2
+                    ${USER_SHARED_LIB_PATH}/libicudata.${SHARED_LIBRARY_SUFFIX}.50
+                    ${USER_SHARED_LIB_PATH}/libicudata.${SHARED_LIBRARY_SUFFIX}.50.2)
+  
+  foreach(ICU_LIB ${ICU_LIBRARIES})
+      INSTALL(FILES "${ICU_LIB}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+  endforeach(ICU_LIB ${ICU_LIBRARIES})
+  
+  set(QT_LIBRARIES ${LOCAL_SHARED_LIB_PATH}/libQt5Concurrent.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Concurrent.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Core.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Core.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5DBus.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5DBus.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5EglFSDeviceIntegration.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5EglFSDeviceIntegration.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5EglFsKmsSupport.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5EglFsKmsSupport.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Gui.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Gui.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Network.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Network.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5OpenGL.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5OpenGL.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Widgets.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Widgets.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5WaylandClient.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5WaylandClient.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5XcbQpa.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5XcbQpa.${SHARED_LIBRARY_SUFFIX}.5.15.0
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Xml.${SHARED_LIBRARY_SUFFIX}.5
+                   ${LOCAL_SHARED_LIB_PATH}/libQt5Xml.${SHARED_LIBRARY_SUFFIX}.5.15.0)
+  
+  foreach(QT_LIB ${QT_LIBRARIES})
+      INSTALL(FILES "${QT_LIB}" DESTINATION "${INSTALL_PATH}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+  endforeach(QT_LIB ${QT_LIBRARIES})
+  
+  # qpa plugins
+  INSTALL(DIRECTORY "${QPA_PLUGINS_PATH}" DESTINATION "." DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT "openmw")
+ENDIF(MINGW)
+
+endmacro (find_tgz_deps)
diff --git a/extern/shiny b/extern/shiny
new file mode 160000
index 0000000..f17c4eb
--- /dev/null
+++ b/extern/shiny
@@ -0,0 +1 @@
+Subproject commit f17c4ebab0e7a1f3bbb25fd9b3dbef2bd742536a-dirty
diff --git a/files/bsatool.sh.cmake b/files/bsatool.sh.cmake
new file mode 100755
index 0000000..dd5b5ec
--- /dev/null
+++ b/files/bsatool.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./bsatool.@ARCH@ "$@"
diff --git a/files/esmtool.sh.cmake b/files/esmtool.sh.cmake
new file mode 100755
index 0000000..0ba2412
--- /dev/null
+++ b/files/esmtool.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./esmtool.@ARCH@ "$@"
diff --git a/files/niftest.sh.cmake b/files/niftest.sh.cmake
new file mode 100755
index 0000000..5b50d26
--- /dev/null
+++ b/files/niftest.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./niftest.@ARCH@ "$@"
diff --git a/files/openmw-cs.sh.cmake b/files/openmw-cs.sh.cmake
new file mode 100644
index 0000000..3e83b38
--- /dev/null
+++ b/files/openmw-cs.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+       path=$1
+
+       if [ -L "$path" ]
+       then
+               ls -l "$path" | sed 's/^.*-> //'
+       else
+               return 1
+       fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+       SCRIPT=$(readlink ${SCRIPT})
+       COUNT=$(expr ${COUNT} + 1)
+       if [ ${COUNT} -gt 100 ]
+       then
+               echo "Too many symbolic links"
+               exit 1
+       fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw-cs.@ARCH@ "$@"
diff --git a/files/openmw-essimporter.sh.cmake b/files/openmw-essimporter.sh.cmake
new file mode 100644
index 0000000..4bdc3ef
--- /dev/null
+++ b/files/openmw-essimporter.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw-essimporter.@ARCH@ "$@"
diff --git a/files/openmw-iniimporter.sh.cmake b/files/openmw-iniimporter.sh.cmake
new file mode 100755
index 0000000..cb2186f
--- /dev/null
+++ b/files/openmw-iniimporter.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw-iniimporter.@ARCH@ "$@"
diff --git a/files/openmw-launcher.sh.cmake b/files/openmw-launcher.sh.cmake
new file mode 100755
index 0000000..d3b2c15
--- /dev/null
+++ b/files/openmw-launcher.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw-launcher.@ARCH@ "$@"
diff --git a/files/openmw-wizard.sh.cmake b/files/openmw-wizard.sh.cmake
new file mode 100755
index 0000000..e64da29
--- /dev/null
+++ b/files/openmw-wizard.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw-wizard.@ARCH@ "$@"
diff --git a/files/openmw.sh.cmake b/files/openmw.sh.cmake
new file mode 100755
index 0000000..1e2c6bb
--- /dev/null
+++ b/files/openmw.sh.cmake
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+readlink() {
+	path=$1
+
+	if [ -L "$path" ]
+	then
+		ls -l "$path" | sed 's/^.*-> //'
+	else
+		return 1
+	fi
+}
+
+SCRIPT="$0"
+COUNT=0
+while [ -L "${SCRIPT}" ]
+do
+	SCRIPT=$(readlink ${SCRIPT})
+	COUNT=$(expr ${COUNT} + 1)
+	if [ ${COUNT} -gt 100 ]
+	then
+		echo "Too many symbolic links"
+		exit 1
+	fi
+done
+GAMEDIR=$(dirname "${SCRIPT}")
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="./lib"
+./openmw.@ARCH@ "$@"
