#!/bin/bash

# solves problem with macdeployqt on Qt 5.4 RC and Qt 5.5
# http://qt-project.org/forums/viewthread/50118

BUILD_FOLDER_PATH=$1
BUILD_QML_FOLDER_PATH="$BUILD_FOLDER_PATH/Resources/qml"
BUILD_PLUGINS_FOLDER_PATH="$BUILD_FOLDER_PATH/PlugIns"

if [ -d ${BUILD_QML_FOLDER_PATH} ]; then

	declare -a BROKEN_FILES;
	k=0;
	for j in $(find ${BUILD_QML_FOLDER_PATH} -name *.dylib); do
		BROKEN_FILES[${k}]=$j
		
		((k=k+1))
	done


	for i in "${BROKEN_FILES[@]}"; do
		REPLACE_STRING="$BUILD_FOLDER_PATH/"
		APP_CONTENT_FILE=${i//$REPLACE_STRING/""}
		IFS='/' read -a array <<< "$APP_CONTENT_FILE"
		LENGTH=${#array[@]}
		LAST_ITEM_INDEX=$((LENGTH-1))
		FILE=${array[${LENGTH} - 1]}
		
		ORIGINE_PATH=$(find ${BUILD_PLUGINS_FOLDER_PATH} -name ${FILE})
		ORIGINE_PATH=${ORIGINE_PATH//$REPLACE_STRING/""}
		s=""
		for((l=0;l<${LAST_ITEM_INDEX};l++)) do
			s=$s"../"
		done
		s=$s$ORIGINE_PATH
		echo "s: $s"
		
		REMOVE_BROKEN_ALIAS=$(rm -rf $i)
		RESULT=$(ln -s $s $i)
	done
fi

# replace framework links 
declare -a BROKEN_FRAMEWORKS;
k=0;
BUILD_FRAMEWORKS_FOLDER_PATH="$BUILD_FOLDER_PATH/Frameworks"
for j in $(find ${BUILD_FRAMEWORKS_FOLDER_PATH} -name Qt*.framework); do
	BROKEN_FRAMEWORKS[${k}]=$j
	((k=k+1))
done
for i in "${BROKEN_FRAMEWORKS[@]}"; do
	FRAMEWORK_FILE=$i/$(basename -s ".framework" $i)
	otool -L $FRAMEWORK_FILE | grep -o /usr/.*Qt.*framework/\\w* | while read -a libs ; do
	       	install_name_tool -change ${libs[0]} @loader_path/../../../`basename ${libs[0]}`.framework/`basename ${libs[0]}` $FRAMEWORK_FILE
	done
done

declare -a BROKEN_PLUGINS;
k=0;
BUILD_PLUGINS_FOLDER_PATH="$BUILD_FOLDER_PATH/PlugIns"
for j in $(find ${BUILD_PLUGINS_FOLDER_PATH} -name *.dylib); do
	BROKEN_PLUGINS[${k}]=$j
	((k=k+1))
done
for i in "${BROKEN_PLUGINS[@]}"; do
	FRAMEWORK_FILE=$i
	otool -L $FRAMEWORK_FILE | grep -o /usr/.*Qt.*framework/\\w* | while read -a libs ; do
	       	install_name_tool -change ${libs[0]} @loader_path/../../Frameworks/`basename ${libs[0]}`.framework/`basename ${libs[0]}` $FRAMEWORK_FILE
	done
done