diff options
author | Gil Pitney <gil.pitney@linaro.org> | 2014-10-28 18:00:42 -0700 |
---|---|---|
committer | Gil Pitney <gil.pitney@linaro.org> | 2014-10-28 18:00:42 -0700 |
commit | 61b2c94d9e64758e55730be6a3fc9006c171db85 (patch) | |
tree | f564f09ebf93ba293dfa225bd374df6f1f37aa01 /CMakeLists.txt |
Initial Commit: Based on TI OpenCL v0.8, originally based on clover.shamrock_v0.8
This is a continuation of the clover OpenCL project:
http://people.freedesktop.org/~steckdenis/clover
based on the contributions from Texas Instruments for Keystone II DSP device:
git.ti.com/opencl
and adding contributions from Linaro for ARM CPU-only support.
See README.txt for more info, and build instructions.
Signed-off-by: Gil Pitney <gil.pitney@linaro.org>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b272c54 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,194 @@ +# Usage: cmake <project_src_dir> <optional_defines>* +# where <optional_defines*> are: +# -DPROJECT=shamrock | shannon | hawking +# -DLLVM_CONFIG_EXECUTABLE=<path to private llvm-config version> +# -DBUILD_TESTS=ON +# Note PROJECT=shamrock is default. +cmake_minimum_required(VERSION 2.6) + +# Project Options: +OPTION(BUILD_TESTS "Set to ON to build minimal OpenCL tests" ON) +OPTION(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) + +# For external builds, paths to dependent libraries/packages are assumed to +# be specified by environment variables. +# For internal development setup a default path for dependent libs/pkgs +if ("$ENV{DEFAULT_DEV_INSTALL_DIR}" STREQUAL "") + set(DEFAULT_DEV_INSTALL_DIR /opt/ti) +else() + set(DEFAULT_DEV_INSTALL_DIR $ENV{DEFAULT_DEV_INSTALL_DIR}) +endif() + +if (${PROJECT} MATCHES "shannon") + project(opencl-dspc8681) + SET(SHANNON_BUILD on) + MESSAGE(STATUS "Build Target Is TI SHANNON") + set(SDK "${DEFAULT_DEV_INSTALL_DIR}/desktop-linux-sdk_01_00_00_07") +elseif (${PROJECT} MATCHES "hawking") + project(opencl-66ak2h) + SET(HAWKING_BUILD on) + MESSAGE(STATUS "Build Target Is TI HAWKING") +else() + project(shamrock) + SET(SHAMROCK_BUILD on) + MESSAGE(STATUS "Project is shamrock") +endif() + +SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules) + +# project version +SET(${PROJECT_NAME}_MAJOR_VERSION 0) +SET(${PROJECT_NAME}_MINOR_VERSION 8) +SET(${PROJECT_NAME}_PATCH_LEVEL 2) + +# OpenCL platform version +SET(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_LEVEL}) + +# Set SONAME for OpenCL library +SET(${PROJECT_NAME}_SOVERSION ${${PROJECT_NAME}_MAJOR_VERSION}) + +if (NOT SHAMROCK_BUILD) +SET(CMAKE_INSTALL_PREFIX $ENV{HOME}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}) +endif (NOT SHAMROCK_BUILD) +# Pending install changes +#if ("$ENV{TI_OCL_INSTALL_PREFIX}" STREQUAL "") +# set(CMAKE_INSTALL_PREFIX $ENV{HOME}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}) +#else() +# set(CMAKE_INSTALL_PREFIX $ENV{TI_OCL_INSTALL_PREFIX}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}) +#endif() + +MESSAGE(STATUS "Install path is ${CMAKE_INSTALL_PREFIX}") + +if (HAWKING_CROSS_COMPILE) + set(CMAKE_SKIP_RPATH TRUE) +endif() + +if (SHAMROCK_BUILD) + ADD_DEFINITIONS("-DSHAMROCK_BUILD") +endif() +#ADD_DEFINITIONS("-DLOCK") + +SET(CMAKE_VERBOSE_MAKEFILE TRUE) + +# Find_Package() for LLVM/CLANG defined in CMAKE_MODULE_PATH +# Do not use system installed versions +Find_Package(LLVM REQUIRED) +Find_Package(Clang REQUIRED) + +# OpenCL requires boost headers. If boost is installed to some directory +# other than /usr/include then define BOOST_INCLUDEDIR as below: +#set (BOOST_INCLUDEDIR path-to-boost-headers) +#include_directories(${BOOST_INCLUDEDIR}) + +SET (INCLUDE_INSTALL_DIR "include" CACHE PATH + "The directory the headers are installed in") + +# Set up install permissions for file, directories and binaries. +# !!! Note that these variables are used by the child cmake files so these +# variables must be set before the add_subdirectories() commands below +# File permissions (664) +set(OCL_FPERMS PERMISSIONS + OWNER_READ OWNER_WRITE + GROUP_READ GROUP_WRITE + WORLD_READ) + +# Directory permissions (775). Files within the directories are set as above. +set(OCL_DPERMS FILE_${OCL_FPERMS} + DIRECTORY_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_WRITE GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + +# Binary permissions (775) +set(OCL_BPERMS PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_WRITE GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + +if (NOT OCL_EXAMPLES_DIR) +set(OCL_EXAMPLES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../opencl_examples) +endif() + +if (NOT OCL_MONITOR_DIR) +set(OCL_MONITOR_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../opencl_monitor) +endif() + +if (NOT OCL_BUILTINS_DIR) +set(OCL_BUILTINS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +endif() + +if (SHAMROCK_BUILD) +set(CLC_BUILTINS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/builtins) +endif() + +add_subdirectory(src) +add_subdirectory(util) +if (NOT SHAMROCK_BUILD) +add_subdirectory(clocl) +add_subdirectory(${OCL_EXAMPLES_DIR} ${CMAKE_CURRENT_BINARY_DIR}/examples) +add_subdirectory(${OCL_MONITOR_DIR} ${CMAKE_CURRENT_BINARY_DIR}/monitor) +add_subdirectory(${OCL_BUILTINS_DIR}/lib/dsp) +endif() + +if (NOT HAWKING_CROSS_COMPILE) +IF (BUILD_TESTS) + ENABLE_TESTING() + Find_Package(Check REQUIRED) + add_subdirectory(tests) +ENDIF (BUILD_TESTS) +endif() + +# install OCL builtin headers in opencl-headers package installation directory. +if (SHAMROCK_BUILD) +install(DIRECTORY include DESTINATION /usr ${OCL_DPERMS}) +install(DIRECTORY include/CL DESTINATION /usr/include ${OCL_DPERMS}) +install(FILES include/clc.h DESTINATION /usr/include/CL ) +install(FILES include/cpu.h DESTINATION /usr/include/CL ) +endif (SHAMROCK_BUILD) + +# Following is TI product specific: +if (NOT SHAMROCK_BUILD) +# Create the top level directories with the desired install permissions +install(DIRECTORY DESTINATION . ${OCL_DPERMS}) +install(DIRECTORY DESTINATION bin ${OCL_DPERMS}) +install(DIRECTORY DESTINATION lib ${OCL_DPERMS}) + +install(FILES opencl-manifest.pdf DESTINATION doc ${OCL_FPERMS}) +install(DIRECTORY include DESTINATION . ${OCL_DPERMS}) + +install(FILES doc/opencl-1.1.pdf DESTINATION doc ${OCL_FPERMS}) +install(FILES doc/opencl-cplusplus-1.1.pdf DESTINATION doc ${OCL_FPERMS}) + +if (SHANNON_BUILD) + install(DIRECTORY DESTINATION init ${OCL_DPERMS}) + install(DIRECTORY scripts DESTINATION . ${OCL_DPERMS}) + install(DIRECTORY cmem DESTINATION . ${OCL_DPERMS}) + install(FILES init/init_dspc8681.out DESTINATION lib ${OCL_FPERMS}) + install(FILES init/init_dspc8682.out DESTINATION lib ${OCL_FPERMS}) + install(PROGRAMS bin/init_global_shared_mem DESTINATION bin ${OCL_BPERMS}) + install(PROGRAMS bin/oclenv DESTINATION bin ${OCL_BPERMS}) + install(FILES readme_shannon.txt DESTINATION . RENAME readme.txt ${OCL_FPERMS}) +elseif(HAWKING_BUILD) + install(DIRECTORY DESTINATION bin/arm ${OCL_DPERMS}) + install(DIRECTORY DESTINATION bin/x86 ${OCL_DPERMS}) + install(FILES doc/opencl_readme.pdf DESTINATION doc ${OCL_FPERMS}) +endif() + +set (CPACK_GENERATOR "DEB") +set (CPACK_DEBIAN_PACKAGE_MAINTAINER "TI") +set (CPACK_DEBIAN_PACKAGE_NAME ${PROJECT_NAME}) +set (CPACK_DEBIAN_PACKAGE_ARCHITECTURE "all") + +set (CPACK_PACKAGE_VERSION_MAJOR ${${PROJECT_NAME}_MAJOR_VERSION}) +set (CPACK_PACKAGE_VERSION_MINOR ${${PROJECT_NAME}_MINOR_VERSION}) +set (CPACK_PACKAGE_VERSION_PATCH ${${PROJECT_NAME}_PATCH_LEVEL}) +set (CPACK_DEBIAN_PACKAGE_DEPENDS "mesa-common-dev (>=8.0.4-0), binutils-dev (>=2.22-6), libsqlite3-dev (>=3.7.9-2), libffi6 (>=3.0.11~rc1-5), zlib1g (>=1:1.2.3.4)") + +#Set where dpkg will put the install +set (CPACK_INSTALL_PREFIX ${DEFAULT_DEV_INSTALL_DIR}/opencl/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}) +set (CPACK_SET_DESTDIR TRUE) + + +include(CPack) +endif(NOT SHAMROCK_BUILD) |