/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
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 (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
    set(CMAKE_BUILD_TYPE RELEASE)
#    set(CMAKE_BUILD_TYPE RELEASE CACHE STRING "" FORCE)
endif ()

set(MEASURE_TIMINGS TRUE CACHE BOOL "Report execution times")

#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)
    message(" * CUDA ${CUDA_VERSION}, SDK, and CUDPP are found")
endif()

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)