Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 41 additions & 6 deletions CMakeModules/osx_install/OSXInstaller.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ ENDFOREACH()

# Backends - CPU, CUDA, OpenCL, Unified
MACRO(OSX_INSTALL_SETUP BACKEND LIB)
FILE(GLOB ${BACKEND}LIB "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}/lib${LIB}*.dylib")
FILE(GLOB ${BACKEND}LIB "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}/lib${LIB}.${AF_VERSION}.dylib")
FILE(GLOB ${BACKEND}CMAKE "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_CMAKE_DIR}/ArrayFire${BACKEND}*.cmake")

ADD_CUSTOM_TARGET(OSX_INSTALL_SETUP_${BACKEND})
Expand All @@ -39,9 +39,24 @@ MACRO(OSX_INSTALL_SETUP BACKEND LIB)
COMMAND ${CMAKE_COMMAND} -E copy
${SRC} "${OSX_TEMP}/${BACKEND}/${SRC_REL}"
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Copying ${BACKEND} files to temporary OSX Install Dir"
COMMENT "Copying ${BACKEND} files to temporary OSX Install Dir - File: ${SRC_REL}"
)
ENDFOREACH()
# Create symlinks separately. Copying them in above command will do a deep copy
ADD_CUSTOM_COMMAND(TARGET OSX_INSTALL_SETUP_${BACKEND} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink
"lib${LIB}.${AF_VERSION}.dylib"
"lib${LIB}.${AF_VERSION_MAJOR}.dylib"
WORKING_DIRECTORY "${OSX_TEMP}/${BACKEND}/${AF_INSTALL_LIB_DIR}"
COMMENT "Copying ${BACKEND} files to temporary OSX Install Dir (Symlink)"
)
ADD_CUSTOM_COMMAND(TARGET OSX_INSTALL_SETUP_${BACKEND} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink
"lib${LIB}.${AF_VERSION_MAJOR}.dylib"
"lib${LIB}.dylib"
WORKING_DIRECTORY "${OSX_TEMP}/${BACKEND}/${AF_INSTALL_LIB_DIR}"
COMMENT "Copying ${BACKEND} files to temporary OSX Install Dir (Symlink)"
)
ENDMACRO(OSX_INSTALL_SETUP)

OSX_INSTALL_SETUP(CPU afcpu)
Expand Down Expand Up @@ -79,17 +94,37 @@ IF(BUILD_GRAPHICS)
MAKE_DIRECTORY("${OSX_TEMP}/Forge")

# Forge Library
FILE(GLOB FORGE_LIB "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}/libforge*.dylib")
FILE(GLOB FORGE_LIB "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}/libforge.*.*.*.dylib")

GET_FILENAME_COMPONENT(LIBFORGE_NAME ${FORGE_LIB} NAME_WE) # Will return libforge
STRING(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" FORGE_VERSION ${FORGE_LIB}) # Will return x.y.z
STRING(SUBSTRING ${FORGE_VERSION} 0 1 FORGE_VERSION_MAJOR) # Will return x

ADD_CUSTOM_TARGET(OSX_INSTALL_SETUP_FORGE_LIB)
FOREACH(SRC ${FORGE_LIB})
FILE(RELATIVE_PATH SRC_REL ${CMAKE_INSTALL_PREFIX} ${SRC})
ADD_CUSTOM_COMMAND(TARGET OSX_INSTALL_SETUP_FORGE_LIB PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${SRC} "${OSX_TEMP}/Forge/${SRC_REL}"
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Copying libforge files to temporary OSX Install Dir"
COMMENT "Copying libforge files to temporary OSX Install Dir - File: ${SRC_REL}"
)
ENDFOREACH()
# Create symlinks separately. Copying them in above command will do a deep copy
ADD_CUSTOM_COMMAND(TARGET OSX_INSTALL_SETUP_FORGE_LIB PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink
"${LIBFORGE_NAME}.${FORGE_VERSION}.dylib"
"${LIBFORGE_NAME}.${FORGE_VERSION_MAJOR}.dylib"
WORKING_DIRECTORY "${OSX_TEMP}/Forge/${AF_INSTALL_LIB_DIR}"
COMMENT "Copying libforge files to temporary OSX Install Dir (Symlink)"
)
ADD_CUSTOM_COMMAND(TARGET OSX_INSTALL_SETUP_FORGE_LIB PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink
"${LIBFORGE_NAME}.${FORGE_VERSION_MAJOR}.dylib"
"${LIBFORGE_NAME}.dylib"
WORKING_DIRECTORY "${OSX_TEMP}/Forge/${AF_INSTALL_LIB_DIR}"
COMMENT "Copying libforge files to temporary OSX Install Dir (Symlink)"
)

# Forge Headers
ADD_CUSTOM_TARGET(OSX_INSTALL_SETUP_FORGE_INCLUDE
Expand Down Expand Up @@ -261,10 +296,10 @@ IF(BUILD_GRAPHICS)
PKG_BUILD( PKG_NAME ForgeLibrary
DEPENDS OSX_INSTALL_SETUP_FORGE_LIB
TARGETS forge_lib_package
INSTALL_LOCATION /usr/local/
INSTALL_LOCATION /usr/local/lib

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't look right. Was it really installing the libraries in the /usr/local directory? I don't see a change in the PKG_BUILD function that is associated with this change.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shehzan10 clarified that this is indeed correct.

SCRIPT_DIR ${OSX_INSTALL_SOURCE}/forge_scripts
IDENTIFIER com.arrayfire.pkg.forge.lib
PATH_TO_FILES ${OSX_TEMP}/Forge)
PATH_TO_FILES ${OSX_TEMP}/Forge/lib)

PKG_BUILD( PKG_NAME ForgeHeaders
DEPENDS OSX_INSTALL_SETUP_FORGE_INCLUDE
Expand Down
38 changes: 35 additions & 3 deletions CMakeModules/osx_install/forge_scripts/postinstall
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@ if [ ! -f $brew ]; then
exit 1
fi

user=$(ps aux | grep console | grep -v 'grep\|root' | cut -d' ' -f1 | head -n1)
#user=$(ps aux | grep console | grep -v 'grep\|root' | cut -d' ' -f1 | head -n1)
user=$(stat -f '%Su' $HOME)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


if [ -z $user ]; then
echo "User not found" >> $err_file
exit 1
fi

echo "User: ${user}" >> $err_file

function deps_err
{
osascript -e 'tell app "Installer" to display dialog "ArrayFire files installed but failed to install ArrayFire/Forge dependencies using Brew."'
Expand All @@ -30,5 +33,34 @@ function deps_err
exit 1
}

su $user -c "$brew tap homebrew/versions" >> $err_file 2>&1
su $user -c "$brew install glfw3 fontconfig" >> $err_file 2>&1 || deps_err
echo "Output of brew tap:" >> $err_file
echo "-------------------" >> $err_file
su $user -c "$brew tap" >> $err_file
echo "-------------------" >> $err_file

BREW_VERSIONS=$(su $user -c "$brew tap" | grep "homebrew/versions") || true
if [[ -z "${BREW_VERSIONS}" ]]; then
su $user -c "$brew tap homebrew/versions" >> $err_file 2>&1
else
echo "Homebrew/Versions already present in brew tap." >> $err_file
fi

GLFW_INSTALLED=$(su $user -c "$brew ls --versions glfw3" | grep "glfw3") || true
if [[ -z "${GLFW_INSTALLED}" ]]; then
echo "Installing GLFW3" >> $err_file
echo "-------------------" >> $err_file
su $user -c "$brew install glfw3" >> $err_file 2>&1 || deps_err
echo "-------------------" >> $err_file
else
echo "GLFW Version ${GLFW_INSTALLED} is already installed." >> $err_file
fi

FTCG_INSTALLED=$(su $user -c "$brew ls --versions fontconfig" | grep "fontconfig") || true
if [[ -z "${FTCG_INSTALLED}" ]]; then
echo "Installing FontConfig" >> $err_file
echo "-------------------" >> $err_file
su $user -c "$brew install fontconfig" >> $err_file 2>&1 || deps_err
echo "-------------------" >> $err_file
else
echo "FontConfig Version ${FTCG_INSTALLED} is already installed." >> $err_file
fi