1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
cmake_minimum_required(VERSION 2.6.3)
project(dict_hw)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
set(CMAKE_VERBOSE_MAKEFILE YES)
if (WIN32)
set(CMAKE_BUILD_TYPE RELEASE CACHE STRING "Build Type" FORCE)
set(MEASURE_TIMINGS FALSE CACHE BOOL "Report execution times" FORCE)
else (WIN32)
set(MEASURE_TIMINGS TRUE CACHE BOOL "Report execution times")
endif (WIN32)
if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE RELEASE)
# set(CMAKE_BUILD_TYPE RELEASE CACHE STRING "" FORCE)
endif ()
#find_program(SED_EXECUTABLE sed)
#find_program(LS_EXECUTABLE ls)
#find_program(HEAD_EXECUTABLE head)
#mark_as_advanced(SED_EXECUTABLE LS_EXECUTABLE HEAD_EXECUTABLE)
find_package(GLIB2 REQUIRED)
set (MINIMAL_CUDA_VERSION 2.3)
find_package(CUDA ${MINIMAL_CUDA_VERSION} REQUIRED)
#find_package(CUDPP REQUIRED)
find_package(TIFF)
if (CMAKE_BUILD_TYPE)
SET(CFLAGS CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE})
SET(CPPFLAGS CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE})
else(CMAKE_BUILD_TYPE)
SET(CFLAGS CMAKE_C_FLAGS)
SET(CPPFLAGS CMAKE_CXX_FLAGS)
endif(CMAKE_BUILD_TYPE)
SET(CUDA_NVCC_FLAGS -O3 --use_fast_math )
SET(CMAKE_C_FLAGS_RELEASE "-O3 -funroll-loops -msse2 ")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -funroll-loops -msse2 ")
if (TIFF_FOUND)
SET(IMAGE_FORMATS ${IMAGE_FORMATS} TIFF)
SET(IMAGE_INCLUDE_DIRS ${IMAGE_INCLUDE_DIRS} ${TIFF_INCLUDE_DIR})
SET(IMAGE_LIBRARIES ${IMAGE_LIBRARIES} ${TIFF_LIBRARY})
SET(IMAGE_DEFINES ${IMAGE_DEFINES} -DDICT_TIFF_SUPPORT)
endif (TIFF_FOUND)
set(DICT_HW_INCLUDE_DIRS ${GLIB2_INCLUDE_DIR} ${CUDPP_INCLUDE_DIR} ${IMAGE_INCLUDE_DIRS})
set(DICT_HW_LIBRARIES ${GLIB2_LIBRARIES} ${CUDPP_LIBRARY} ${IMAGE_LIBRARIES})
set(DICT_HW_DEFINITIONS ${IMAGE_DEFINES})
message("")
message("Configuration")
message("-------------")
if (GLIB2_FOUND)
message(" * GLIB2 is found, good")
endif()
if (CUDA_FOUND)
if (CUDPP_FOUND)
message(" * CUDA ${CUDA_VERSION} and CUDPP are found")
else(CUDPP_FOUND)
unset(CUDA_FOUND)
message(" * CUDA ${CUDA_VERSION}, is found, but CUDPP is missing")
endif(CUDPP_FOUND)
else(CUDA_FOUND)
message(" * CUDA is not found")
endif(CUDA_FOUND)
if (NOT CUDA_FOUND)
message(FATAL_ERROR "Not all CUDA libraries are found")
endif(NOT CUDA_FOUND)
message(" * Supported image formats: ${IMAGE_FORMATS}")
if (MEASURE_TIMINGS)
set(DICT_HW_DEFINITIONS ${DICT_HW_DEFINITIONS} -DDICT_HW_MEASURE_TIMINGS)
message(" * Build configuration: ${CMAKE_BUILD_TYPE} with timing information")
else()
message(" * Build configuration: ${CMAKE_BUILD_TYPE}")
endif()
#message(" * CFLAGS : ${${CFLAGS}}")
message(" * CPPFLAGS : ${${CPPFLAGS}}")
message(" * NVCCFLAGS: ${CUDA_NVCC_FLAGS}")
message("\n")
ADD_SUBDIRECTORY(src)
#SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "build;PyHST_c_CPU/PyHST_c.so")
IF (UNIX)
ADD_CUSTOM_TARGET (distclean @echo cleaning for source distribution)
SET(DISTCLEANED
cmake\\.depends
cmake\\.check_depends
CMakeFiles
cmake\\.check_cache
cmake-install\\.cmake
Makefile
core
core\\.[0-9a-zA-Z_]*
gmon\\.out
build
.*\\.pyc
.*~
)
SET(DISTCLEANED_REGEX .*/\\\(CMakeCache\\.txt)
FOREACH(ITEM ${DISTCLEANED})
SET(DISTCLEANED_REGEX "${DISTCLEANED_REGEX}\\|${ITEM}")
ENDFOREACH(ITEM)
SET(DISTCLEANED_REGEX "${DISTCLEANED_REGEX}\\\)")
# message(${DISTCLEANED_REGEX})
#It's a bug fix
SET(DISTCLEANED_SLASH \\)
SET(DISTCLEANED_SEMICOLON \;)
ADD_CUSTOM_COMMAND(
DEPENDS clean
COMMENT "distribution clean"
COMMAND find
ARGS . -depth -regex '${DISTCLEANED_REGEX}' -exec rm -r {} "${DISTCLEANED_SLASH}${DISTCLEANED_SEMICOLON}"
TARGET distclean
)
ADD_CUSTOM_COMMAND(
COMMENT "setting dummy makefile"
COMMAND cmake
ARGS -E copy Makefile.default Makefile
TARGET distclean
)
ENDIF(UNIX)
|