cmake_minimum_required(VERSION 2.8) project(OpenCLIPER) include(ExternalProject) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules) # Default values for build variables set(BUILD_TESTS ON) #set(${CMAKE_VERBOSE_MAKEFILE} 1) # ---------DevIL package-------------------------------- message("Looking for dependencies of package DevIL...") find_program(PATCH NAMES "patch") if(PATCH) message(" patch... FOUND") else() message(" patch... NOT FOUND") endif() find_package(PNG "1.2" EXACT) if(PNG_FOUND) message(" libpng... FOUND - version ${PNG_VERSION_STRING}") if(${PNG_VERSION_STRING} STRGREATER "1.2.99") 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.") endif() else() message(" libpng... NOT FOUND") endif() # libpng is optional for DevIL. Do not fail if not found if(NOT PATCH) message(FATAL_ERROR "Some dependencies of DevIL are missing. Please install them and rerun cmake.") endif() add_subdirectory(LPISupport) # DevIL needs this patch to compile in GCC 5: # https://github.com/DentonW/DevIL/issues/31 ExternalProject_Add(DevIL PREFIX DevIL URL ${PROJECT_SOURCE_DIR}/DevIL/DevIL-1.7.8.tar.gz PATCH_COMMAND ${PATCH} -d ${PROJECT_BINARY_DIR}/DevIL/src/DevIL -N -p0 -i ${PROJECT_SOURCE_DIR}/DevIL/patch-include_IL_il.h && ${PATCH} -d ${PROJECT_BINARY_DIR}/DevIL/src/DevIL -N -p0 -i ${PROJECT_SOURCE_DIR}/DevIL/patch-include_IL_devil_cpp_wrapper.hpp CONFIGURE_COMMAND CFLAGS=-I${PNG_PNG_INCLUDE_DIR} ${PROJECT_BINARY_DIR}/DevIL/src/DevIL/configure --prefix=${PROJECT_BINARY_DIR}/DevIL/install --enable-ILUT=yes INSTALL_DIR ${PROJECT_BINARY_DIR}/DevIL/install ) # -------------------------------------------------------------- message("Looking for dependencies of ${PROJECT_NAME}...") find_library(LIBMATIO "matio") if(LIBMATIO) message(" libmatio... FOUND") else() message (" libmatio... NOT FOUND") endif() find_package(OpenCL) set(clFFT_ROOT_DIR /opt/shared/clFFT CACHE FILEPATH "Path to the root directory of the clFFT library") find_package(clFFT) set(clBLAS_ROOT_DIR /opt/shared/clBLAS CACHE FILEPATH "Path to the root directory of the clBLAS library") find_package(clBLAS) if(NOT LIBMATIO OR NOT CLFFT_FOUND OR NOT CLBLAS_FOUND) message(FATAL_ERROR "Some dependencies of ${PROJECT_NAME} are missing. Please install them and rerun cmake.") endif() if (CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -std=gnu++11") else () set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11") endif() include_directories(include ${PROJECT_SOURCE_DIR}/LPISupport/include ${OpenCL_INCLUDE_DIRS} ${clFFT_INCLUDE_DIRS} ${PROJECT_BINARY_DIR}/DevIL/install/include) file(GLOB_RECURSE SOURCEFILES "src/*") add_library(OpenCLIPER SHARED ${SOURCEFILES}) add_dependencies(OpenCLIPER LPISupport DevIL) target_link_libraries(OpenCLIPER ${PROJECT_BINARY_DIR}/LPISupport/libLPISupport.so ${PROJECT_BINARY_DIR}/DevIL/install/lib/libIL.so ${PROJECT_BINARY_DIR}/DevIL/install/lib/libILU.so ${PROJECT_BINARY_DIR}/DevIL/install/lib/libILUT.so ${OpenCL_LIBRARIES} ${clFFT_LIBRARIES} matio ) install(TARGETS OpenCLIPER RUNTIME DESTINATION bin LIBRARY DESTINATION lib) if(BUILD_TESTS) add_subdirectory(tests) add_subdirectory(performanceTests) add_subdirectory(examples) endif() # Adding C/C++ label definition with value of cmake variable PROJECT_SOURCE_DIR add_definitions(-DPROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}") # # Show all cmake variables # get_cmake_property(_variableNames VARIABLES) # foreach (_variableName ${_variableNames}) # message(STATUS "${_variableName}=${${_variableName}}") # endforeach()