/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk
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 -O2 --use_fast_math )
SET(CMAKE_C_FLAGS_RELEASE "-O2 -funroll-loops -msse2 ")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -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} ${GTHREAD2_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)