Skip to content

Commit

Permalink
Merge pull request #759 from arrayfire/devel
Browse files Browse the repository at this point in the history
Devel to Master release merge
  • Loading branch information
shehzan10 committed Jun 2, 2015
2 parents 38a2496 + 3facf05 commit 86426db
Show file tree
Hide file tree
Showing 857 changed files with 52,848 additions and 15,962 deletions.
4 changes: 4 additions & 0 deletions .coveralls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
service_name: jenkins-ci
include: [src,include]
exclude: [src/backend/opencl/cl.hpp, test, include/af/version.h]
gcov_options: '-lp'
Empty file modified .gitignore
100755 → 100644
Empty file.
170 changes: 100 additions & 70 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(ARRAYFIRE)

SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)

OPTION(BUILD_TEST "Build Tests" ON)
OPTION(BUILD_EXAMPLES "Build Examples" ON)
OPTION(BUILD_GTEST "Download gtest and check for updates. Necessary if you change compilers" ON)
Expand All @@ -9,71 +11,121 @@ OPTION(BUILD_CPU "Build ArrayFire with a CPU backend" ON)
OPTION(BUILD_CUDA "Build ArrayFire with a CUDA backend" OFF)
OPTION(BUILD_OPENCL "Build ArrayFire with a OpenCL backend" OFF)

OPTION(BUILD_GRAPHICS "Build ArrayFire with Forge Graphics" ON)

OPTION(BUILD_DOCS "Create ArrayFire Documentation" OFF)
OPTION(WITH_COVERAGE "Added code coverage flags" OFF)

OPTION(INSTALLER_MODE "Build arrayfire in installer mode" OFF)
MARK_AS_ADVANCED(INSTALLER_MODE)

# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
endif()

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
INCLUDE(${CMAKE_MODULE_PATH}/UploadCoveralls.cmake)
INCLUDE(AFInstallDirs)

FIND_PACKAGE(FreeImage)
IF(FREEIMAGE_FOUND)
ADD_DEFINITIONS(-DWITH_FREEIMAGE)
SET(lib_deps ${FREEIMAGE_LIBRARY} CACHE PATH "Library Dependencies")
ADD_DEFINITIONS(-DWITH_FREEIMAGE)
SET(FreeImage_LIBS ${FREEIMAGE_LIBRARY})
MESSAGE(STATUS "Using FreeImage library ${FreeImage_LIBS}")
INCLUDE_DIRECTORIES(${FREEIMAGE_INCLUDE_PATH})
ELSE(FREEIMAGE_FOUND)
MESSAGE(WARNING, "FreeImage not found!")
ENDIF(FREEIMAGE_FOUND)

IF(BUILD_GRAPHICS)
OPTION(USE_SYSTEM_FORGE "Use system Forge" OFF)
IF(USE_SYSTEM_FORGE)
FIND_PACKAGE(Forge)
ELSE(USE_SYSTEM_FORGE)
INCLUDE("${CMAKE_MODULE_PATH}/build_forge.cmake")
ENDIF(USE_SYSTEM_FORGE)

IF(FORGE_FOUND)
ADD_DEFINITIONS(-DGLEW_MX -DWITH_GRAPHICS)
INCLUDE("${CMAKE_MODULE_PATH}/FindGLEWmx.cmake")
FIND_PACKAGE(GLFW)

INCLUDE_DIRECTORIES(
${FORGE_INCLUDE_DIRECTORIES}
${GLEW_INCLUDE_DIR}
${GLFW_INCLUDE_DIR})

SET(FORGE_LIBRARIES ${FORGE_LIBRARIES}
${GLEWmx_LIBRARY}
${OPENGL_gl_LIBRARY}
${OPENGL_glu_LIBRARY})

IF(APPLE)
FIND_PACKAGE(X11 REQUIRED)
INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
ENDIF(APPLE)

ELSE(FORGE_FOUND)
MESSAGE(WARNING "Forge not found. Graphics will be disabled")
ENDIF(FORGE_FOUND)

ENDIF(BUILD_GRAPHICS)

INCLUDE_DIRECTORIES(
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/src/backend"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/c"
${FREEIMAGE_INCLUDE_PATH}
)

IF(${UNIX})
ADD_DEFINITIONS(-Wall -std=c++11 -fvisibility=hidden)
ENDIF()
IF(${WITH_COVERAGE})
SET(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage")
SET(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")
SET(CMAKE_SHARED_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")
SET(CMAKE_STATIC_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")
ENDIF(${WITH_COVERAGE})
ENDIF(${UNIX})

# OS Definitions
IF(UNIX)
IF(APPLE) #OSX
ADD_DEFINITIONS(-DOS_MAC)

SET(CMAKE_MACOSX_RPATH ON)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
ELSE(APPLE) #Linux
ADD_DEFINITIONS(-DOS_LNX)
ENDIF()
IF(APPLE) #OSX
ADD_DEFINITIONS(-DOS_MAC)

SET(CMAKE_MACOSX_RPATH ON)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${AF_INSTALL_LIB_DIR}")
ENDIF("${isSystemDir}" STREQUAL "-1")
ELSE(APPLE) #Linux
ADD_DEFINITIONS(-DOS_LNX)
ENDIF()
ELSE(${UNIX}) #Windows
ADD_DEFINITIONS(-DOS_WIN -DNOMINMAX)
ADD_DEFINITIONS(-DOS_WIN -DNOMINMAX)
ENDIF()

# Architechture Definitions
INCLUDE(${CMAKE_MODULE_PATH}/TargetArch.cmake)
target_architecture(ARCH)
IF(${ARCH} STREQUAL "x86_64")
ADD_DEFINITIONS(-DARCH_64)
ADD_DEFINITIONS(-DARCH_64)
ELSE(${ARCH})
ADD_DEFINITIONS(-DARCH_32)
ADD_DEFINITIONS(-DARCH_32)
ENDIF()

INCLUDE(${CMAKE_MODULE_PATH}/Version.cmake)

IF(WIN32)
SET(ARRAYFIRE_CMAKE_DIR cmake)
ELSE()
SET(ARRAYFIRE_CMAKE_DIR share/ArrayFire)
ENDIF()

IF(${BUILD_CPU})
ADD_SUBDIRECTORY(src/backend/cpu)
ADD_SUBDIRECTORY(src/backend/cpu)
ENDIF()

IF(${BUILD_CUDA})
Expand All @@ -99,8 +151,10 @@ IF(${BUILD_EXAMPLES})
ADD_SUBDIRECTORY(examples)
ENDIF()

## Install step
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include
##
# Installation of headers, and CMake scripts
##
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION "${AF_INSTALL_INC_DIR}"
COMPONENT headers
FILES_MATCHING
PATTERN "*.h"
Expand All @@ -110,11 +164,17 @@ INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include

## The ArrayFire version file is generated and won't be included above, install
## it separately.
INSTALL(FILES
${CMAKE_SOURCE_DIR}/include/af/version.h DESTINATION include/af/
INSTALL(FILES
${CMAKE_SOURCE_DIR}/include/af/version.h DESTINATION "${AF_INSTALL_INC_DIR}/af/"
COMPONENT headers
)

IF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)
INSTALL(DIRECTORY "${CMAKE_BINARY_DIR}/third_party/forge/lib/" DESTINATION "${AF_INSTALL_LIB_DIR}"
COMPONENT libraries
)
ENDIF(FORGE_FOUND AND NOT USE_SYSTEM_FORGE)

## configuration to be used from the binary directory directly
SET(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
SET(BACKEND_DIR "src/backend/\${lowerbackend}")
Expand All @@ -125,7 +185,7 @@ CONFIGURE_FILE(

## installed cmake configuration
# use a relative dir to keep arrayfire relocatable
STRING(REGEX REPLACE "[^/]+" ".." reldir "${ARRAYFIRE_CMAKE_DIR}")
STRING(REGEX REPLACE "[^/]+" ".." reldir "${AF_INSTALL_CMAKE_DIR}")
SET(INCLUDE_DIR "\${CMAKE_CURRENT_LIST_DIR}/${reldir}/include")
set(BACKEND_DIR)
CONFIGURE_FILE(
Expand All @@ -138,40 +198,10 @@ CONFIGURE_FILE(
@ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/Install/ArrayFireConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/ArrayFireConfigVersion.cmake
DESTINATION ${ARRAYFIRE_CMAKE_DIR}
DESTINATION ${AF_INSTALL_CMAKE_DIR}
COMPONENT cmake)

# CPack package generation
# General settings
SET(CPACK_GENERATOR "TGZ")
SET(CPACK_PACKAGE_NAME "arrayfire")
SET(CPACK_PACKAGE_VERSION 3.0beta)
SET(CPACK_PACKAGE_VERSION_MAJOR "3")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "beta")
SET(CPACK_PACKAGE_CONTACT "ArrayFire Development Group <technical@arrayfire.com>")
# Long description of the package
SET(CPACK_PACKAGE_DESCRIPTION
"ArrayFire is a high performance software library for parallel computing
with an easy-to-use API. Its array based function set makes parallel
programming simple.
ArrayFire's multiple backends (CUDA, OpenCL and native CPU) make it
platform independent and highly portable.
A few lines of code in ArrayFire can replace dozens of lines of parallel
computing code, saving you valuable time and lowering development costs.")
# Short description of the package
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A high performance library for parallel
computing with an easy-to-use API.")

# Useful descriptions for components
SET(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "ArrayFire libraries")
SET(CPACK_COMPONENT_DOCUMENTATION_NAME "Doxygen documentation")
SET(CPACK_COMPONENT_HEADERS_NAME "C/C++ headers")
SET(CPACK_COMPONENT_CMAKE_NAME "CMake support")
# Set the default components installed in the package
SET(CPACK_COMPONENTS_ALL libraries headers documentation cmake)

# Call to CPACK
INCLUDE(CPack)
##
# Packaging
##
include(${CMAKE_CURRENT_SOURCE_DIR}/CPack.txt)
44 changes: 44 additions & 0 deletions CMakeModules/AFInstallDirs.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#
# Sets ArrayFire installation paths.
#

# NOTE: These paths are all relative to the project installation prefix.

# Executables
if(NOT DEFINED AF_INSTALL_BIN_DIR)
set(AF_INSTALL_BIN_DIR "bin" CACHE PATH "Installation path for executables")
endif()

# Libraries
if(NOT DEFINED AF_INSTALL_LIB_DIR)
set(AF_INSTALL_LIB_DIR "lib" CACHE PATH "Installation path for libraries")
endif()

# Header files
if(NOT DEFINED AF_INSTALL_INC_DIR)
set(AF_INSTALL_INC_DIR "include" CACHE PATH "Installation path for headers")
endif()

# Data files
if(NOT DEFINED AF_INSTALL_DATA_DIR)
set(AF_INSTALL_DATA_DIR "share/ArrayFire" CACHE PATH "Installation path for data files")
endif()

# Documentation
if(NOT DEFINED AF_INSTALL_DOC_DIR)
set(AF_INSTALL_DOC_DIR "${AF_INSTALL_DATA_DIR}/doc" CACHE PATH "Installation path for documentation")
endif()

if(NOT DEFINED AF_INSTALL_EXAMPLE_DIR)
set(AF_INSTALL_EXAMPLE_DIR "${AF_INSTALL_DATA_DIR}" CACHE PATH "Installation path for examples")
endif()

# Man pages
if(NOT DEFINED AF_INSTALL_MAN_DIR)
set(AF_INSTALL_MAN_DIR "${AF_INSTALL_DATA_DIR}/man" CACHE PATH "Installation path for man pages")
endif()

# CMake files
if(NOT DEFINED AF_INSTALL_CMAKE_DIR)
set(AF_INSTALL_CMAKE_DIR "${AF_INSTALL_DATA_DIR}/cmake" CACHE PATH "Installation path for CMake files")
endif()
Empty file modified CMakeModules/CLKernelToH.cmake
100755 → 100644
Empty file.
9 changes: 5 additions & 4 deletions CMakeModules/CUDACheckCompute.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@ if(CUDA_FOUND)
if(COMPILE_RESULT_VAR AND NOT RUN_RESULT_VAR)
message(STATUS "worked")
set(CUDA_HAVE_GPU TRUE CACHE BOOL "Whether CUDA-capable GPU is present")
set(CUDA_COMPUTE_CAPABILITY ${RUN_OUTPUT_VAR} CACHE STRING "Compute capability of CUDA-capable GPU present")
set(CUDA_GENERATE_CODE "arch=compute_${CUDA_COMPUTE_CAPABILITY},code=sm_${CUDA_COMPUTE_CAPABILITY}" CACHE STRING "Which GPU architectures to generate code for (each arch/code pair will be passed as --generate-code option to nvcc, separate multiple pairs by ;)")
mark_as_advanced(CUDA_COMPUTE_CAPABILITY CUDA_GENERATE_CODE)
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -arch compute_${CUDA_COMPUTE_CAPABILITY})
set(CUDA_DETECTED_COMPUTE ${RUN_OUTPUT_VAR} CACHE STRING "Compute capability of CUDA-capable GPU present")
#set(CUDA_GENERATE_CODE "arch=compute_${CUDA_DETECTED_COMPUTE},code=sm_${CUDA_DETECTED_COMPUTE}" CACHE STRING "Which GPU architectures to generate code for (each arch/code pair will be passed as --generate-code option to nvcc, separate multiple pairs by ;)")
#mark_as_advanced(CUDA_DETECTED_COMPUTE CUDA_GENERATE_CODE)
#set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -arch compute_${CUDA_DETECTED_COMPUTE})
mark_as_advanced(CUDA_DETECTED_COMPUTE)
else()
message(STATUS "didn't work")
set(CUDA_HAVE_GPU FALSE CACHE BOOL "Whether CUDA-capable GPU is present")
Expand Down
33 changes: 0 additions & 33 deletions CMakeModules/FindBoostCompute.cmake

This file was deleted.

0 comments on commit 86426db

Please sign in to comment.