if test "${ACTION}" = ""; then # Debug -- TARGET_BUILD_DIR="." FULL_PRODUCT_NAME="VLC.framework" CONTENTS_FOLDER_PATH="${FULL_PRODUCT_NAME}/Versions/A" VLC_BUILD_DIR="../../.." VLC_SRC_DIR="../../.." ACTION="build" rm -fr ${FULL_PRODUCT_NAME} # Debug -- fi if test "${ACTION}" = "build"; then vlc_config="${VLC_SRC_DIR}/vlc-config" lib="lib" modules="modules" target="${TARGET_BUILD_DIR}/${CONTENTS_FOLDER_PATH}" target_lib="${target}/${lib}" # Should we consider using a different well-known folder like shared resources? target_modules="${target}/${modules}" # Should we consider using a different well-known folder like shared resources? linked_libs=" " ########################## # @function install_library(src_lib, dest_dir) # @description Installs the specified library into the destination folder, automatically changes the references to dependencies # @param src_lib source library to copy to the destination directory # @param dest_dir destination directory where the src_lib should be copied to install_library() { if [ ${3} = "library" ]; then install_name="@loader_path/lib" else install_name="@loader_path/modules" fi if [ "${4}" != "" ]; then lib_dest="${2}/${4}" else lib_dest="${2}/`basename ${1}`" fi if test -e ${1} && ! test -e ${lib_dest}; then mkdir -p ${2} # Lets copy the library from the source folder to our new destination folder cp ${1} ${lib_dest} # Update the dynamic library so it will know where to look for the other libraries echo "Installing ${3} `basename ${lib_dest}`" # Change the reference of libvlc.1 stored in the usr directory to libvlc.dylib in the framework's library directory install_name_tool -change /usr/local/lib/libvlc.1.dylib @loader_path/../lib/libvlc.dylib ${lib_dest} install_name_tool -change @executable_path/lib/vlc_libintl.dylib @loader_path/../lib/vlc_libintl.dylib ${lib_dest} install_name_tool -id "${install_name}/`basename ${lib_dest}`" ${lib_dest} # Iterate through each installed library and modify the references to other dynamic libraries to match the framework's library directory for linked_lib in `otool -L ${lib_dest} | grep '(' | sed 's/\((.*)\)//'`; do ref_lib=`echo "${linked_lib}" | sed 's:executable_path/:loader_path/../:'` if test "${ref_lib}" != "${linked_lib}"; then install_name_tool -change ${linked_lib} ${ref_lib} ${lib_dest} fi if test `echo "${ref_lib}" | grep "^@loader_path"`; then linked_libs="${linked_libs} ${ref_lib}" fi; done fi } # @function install_library ########################## ########################## # Build the modules folder (Same as VLC.framework/modules in Makefile) echo "Building modules folder..." # Figure out what modules are available to install for module in `top_builddir="${VLC_BUILD_DIR}" ${vlc_config} --target plugin` ; do # Check to see that the reported module actually exists if test -n ${module}; then module_src="`dirname ${module}`/.libs/`basename ${module}`.dylib" install_library ${module_src} ${target_modules} "module" fi done # Build the modules folder ########################## ########################## # Create a symbolic link in the root of the framework mkdir -p ${target_lib} mkdir -p ${target_modules} pushd `pwd` > /dev/null cd ${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME} ln -sf Versions/Current/${lib} . ln -sf Versions/Current/${modules} . popd > /dev/null # Create a symbolic link in the root of the framework ########################## ########################## # Build the library folder (Same as VLC.framework/lib in Makefile) echo "Building library folder..." for linked_lib in ${linked_libs} ; do case "${linked_lib}" in @loader_path/../lib/*) ref_lib=`echo ${linked_lib} | sed 's:@loader_path/../lib/::'` if test -e ${VLC_BUILD_DIR}/extras/contrib/vlc-lib/${ref_lib}; then src_lib=${VLC_BUILD_DIR}/extras/contrib/vlc-lib/${ref_lib} elif test -e ${VLC_BUILD_DIR}/src/.libs/${ref_lib}; then src_lib=${VLC_BUILD_DIR}/src/.libs/${ref_lib} fi install_library ${src_lib} ${target_lib} "library" ;; esac done # Build the library folder ########################## install_library "${VLC_BUILD_DIR}/src/.libs/libvlc-control.dylib" ${target_lib} "library" fi