Initial public release.
[OpenCLIPER] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2 project(OpenCLIPER)
3 include(ExternalProject)
4 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules)
5
6 # Default values for build variables
7 set(BUILD_TESTS ON)
8
9 #set(${CMAKE_VERBOSE_MAKEFILE} 1)
10
11 # ---------DevIL package--------------------------------
12 message("Looking for dependencies of package DevIL...")
13 find_program(PATCH NAMES "patch")
14 if(PATCH)
15     message("    patch... FOUND")
16 else()
17     message("    patch... NOT FOUND")
18 endif()
19
20 find_package(PNG "1.2" EXACT)
21 if(PNG_FOUND)
22     message("    libpng... FOUND - version ${PNG_VERSION_STRING}")
23
24     if(${PNG_VERSION_STRING} STRGREATER "1.2.99")
25         message(FATAL_ERROR "The DevIL library is known not to build with libpng versions greater than 1.2. Please install libpng 1.2 AND the matching development files and rerun cmake.")
26     endif()
27 else()
28     message("    libpng... NOT FOUND")
29 endif()
30
31 # libpng is optional for DevIL. Do not fail if not found
32 if(NOT PATCH)
33     message(FATAL_ERROR "Some dependencies of DevIL are missing. Please install them and rerun cmake.")
34 endif()
35
36 add_subdirectory(LPISupport)
37
38 # DevIL needs this patch to compile in GCC 5:
39 # https://github.com/DentonW/DevIL/issues/31
40 ExternalProject_Add(DevIL
41                     PREFIX DevIL
42                     URL ${PROJECT_SOURCE_DIR}/DevIL/DevIL-1.7.8.tar.gz
43                     PATCH_COMMAND ${PATCH} -d ${PROJECT_BINARY_DIR}/DevIL/src/DevIL -N -p0 -i ${PROJECT_SOURCE_DIR}/DevIL/patch-include_IL_il.h &&
44                                   ${PATCH} -d ${PROJECT_BINARY_DIR}/DevIL/src/DevIL -N -p0 -i ${PROJECT_SOURCE_DIR}/DevIL/patch-include_IL_devil_cpp_wrapper.hpp
45                                   CONFIGURE_COMMAND CFLAGS=-I${PNG_PNG_INCLUDE_DIR} ${PROJECT_BINARY_DIR}/DevIL/src/DevIL/configure --prefix=${PROJECT_BINARY_DIR}/DevIL/install --enable-ILUT=yes
46                     INSTALL_DIR ${PROJECT_BINARY_DIR}/DevIL/install
47                     )
48
49 # --------------------------------------------------------------
50
51 message("Looking for dependencies of ${PROJECT_NAME}...")
52 find_library(LIBMATIO "matio")
53 if(LIBMATIO)
54     message("    libmatio... FOUND")
55 else()
56     message ("    libmatio... NOT FOUND")
57 endif()
58
59 find_package(OpenCL)
60
61 set(clFFT_ROOT_DIR /opt/shared/clFFT CACHE FILEPATH "Path to the root directory of the clFFT library")
62 find_package(clFFT)
63
64 set(clBLAS_ROOT_DIR /opt/shared/clBLAS CACHE FILEPATH "Path to the root directory of the clBLAS library")
65 find_package(clBLAS)
66
67 if(NOT LIBMATIO OR NOT CLFFT_FOUND OR NOT CLBLAS_FOUND)
68     message(FATAL_ERROR "Some dependencies of ${PROJECT_NAME} are missing. Please install them and rerun cmake.")
69 endif()
70 if (CMAKE_COMPILER_IS_GNUCXX)
71   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -std=gnu++11")
72 else ()
73    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11")
74  endif()
75  
76 include_directories(include ${PROJECT_SOURCE_DIR}/LPISupport/include ${OpenCL_INCLUDE_DIRS} ${clFFT_INCLUDE_DIRS} ${PROJECT_BINARY_DIR}/DevIL/install/include)
77 file(GLOB_RECURSE SOURCEFILES "src/*")
78 add_library(OpenCLIPER SHARED ${SOURCEFILES})
79 add_dependencies(OpenCLIPER LPISupport DevIL)
80 target_link_libraries(OpenCLIPER
81               ${PROJECT_BINARY_DIR}/LPISupport/libLPISupport.so
82                       ${PROJECT_BINARY_DIR}/DevIL/install/lib/libIL.so
83                       ${PROJECT_BINARY_DIR}/DevIL/install/lib/libILU.so
84                       ${PROJECT_BINARY_DIR}/DevIL/install/lib/libILUT.so
85                       ${OpenCL_LIBRARIES}
86                       ${clFFT_LIBRARIES}
87                       matio
88                       )
89
90 install(TARGETS OpenCLIPER RUNTIME DESTINATION bin LIBRARY DESTINATION lib)
91
92 if(BUILD_TESTS)
93     add_subdirectory(tests)
94     add_subdirectory(performanceTests)
95     add_subdirectory(examples)
96 endif()
97
98 # Adding C/C++ label definition with value of cmake variable PROJECT_SOURCE_DIR
99 add_definitions(-DPROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
100
101 # # Show all cmake variables
102 # get_cmake_property(_variableNames VARIABLES)
103 # foreach (_variableName ${_variableNames})
104 #     message(STATUS "${_variableName}=${${_variableName}}")
105 # endforeach()