Mon, 03 Aug 2009 14:21:23 +0100
added keepme for ptdecode obj directory
1 #
2 # File : CMakeLists.txt
3 # ( Cmake configuration file )
4 #
5 # Description : CMake can use this to generate a working Makefile.
6 # This file is a part of the CImg Library project.
7 # ( http://cimg.sourceforge.net )
8 #
9 # Copyright : Baptiste Mougel
10 # ( http://www.mougel.org )
11 # David Tschumperle
12 # ( http://www.greyc.ensicaen.fr/~dtschump/ )
13 #
14 # License : CeCILL v2.0
15 # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html )
16 #
17 # This software is governed by the CeCILL license under French law and
18 # abiding by the rules of distribution of free software. You can use,
19 # modify and/ or redistribute the software under the terms of the CeCILL
20 # license as circulated by CEA, CNRS and INRIA at the following URL
21 # "http://www.cecill.info".
22 #
23 # As a counterpart to the access to the source code and rights to copy,
24 # modify and redistribute granted by the license, users are provided only
25 # with a limited warranty and the software's author, the holder of the
26 # economic rights, and the successive licensors have only limited
27 # liability.
28 #
29 # In this respect, the user's attention is drawn to the risks associated
30 # with loading, using, modifying and/or developing or reproducing the
31 # software by the user in light of its specific status of free software,
32 # that may mean that it is complicated to manipulate, and that also
33 # therefore means that it is reserved for developers and experienced
34 # professionals having in-depth computer knowledge. Users are therefore
35 # encouraged to load and test the software's suitability as regards their
36 # requirements in conditions enabling the security of their systems and/or
37 # data to be ensured and, more generally, to use and operate it in the
38 # same conditions as regards security.
39 #
40 # The fact that you are presently reading this means that you have had
41 # knowledge of the CeCILL license and that you accept its terms.
42 #
44 #-------------------
45 # IMPORTANT NOTICE : This file is intended to be copied in the 'examples/' directory before use.
46 #-------------------
47 project(CIMG)
49 IF(UNIX)
50 CMAKE_MINIMUM_REQUIRED (VERSION 2.4.0 FATAL_ERROR)
51 MESSAGE(STATUS "Compilation mode : UNIX")
52 ELSE(UNIX)
53 IF(WIN32)
54 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR)
55 MESSAGE(STATUS "Compilation mode : Win32")
56 ELSE(WIN32)
57 IF(APPLE)
58 CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
59 IF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7)
60 MESSAGE("Warning: A critical CMake bug exists in 2.4.6 and below. Trying to build Universal Binaries will result in a compile error that seems unrelated. Either avoid building Universal Binaries by changing the CMAKE_OSX_ARCHITECTURES field to list only your architecture, or upgrade to the current CVS version of CMake or a newer stable version if it exists.")
61 ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4 AND ${CMAKE_PATCH_VERSION} LESS 7)
62 MESSAGE(STATUS "Compilation mode : MAC OSX")
63 ELSE(APPLE)
64 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0 FATAL_ERROR)
65 ENDIF(APPLE)
66 ENDIF(WIN32)
67 ENDIF(UNIX)
69 #-----------------------------------------------------------------------------
70 # CImg version number. An even minor number corresponds to releases.
71 SET(CIMG_VERSION "1.3.0")
72 SET(CIMG_H "CImg.h")
74 MESSAGE(STATUS "CImg version : ${CIMG_VERSION}")
76 #-----------------------------------------------------------------------------
77 # Output directories.
78 INCLUDE_DIRECTORIES (
79 ${CIMG_BINARY_DIR}
80 ${CIMG_SOURCE_DIR}
81 )
83 IF(NOT LIBRARY_OUTPUT_PATH)
84 SET (LIBRARY_OUTPUT_PATH ${CIMG_BINARY_DIR}/ CACHE INTERNAL "Single output directory for building all libraries.")
85 ENDIF(NOT LIBRARY_OUTPUT_PATH)
86 IF(NOT EXECUTABLE_OUTPUT_PATH)
87 SET (EXECUTABLE_OUTPUT_PATH ${CIMG_BINARY_DIR}/ CACHE INTERNAL "Single output directory for building all executables.")
88 ENDIF(NOT EXECUTABLE_OUTPUT_PATH)
90 #MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
92 #-----------------------------------------------------------------------------
93 # Compilation.
95 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -ansi -pedantic")
96 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -W -ansi -pedantic")
97 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm -lpthread")
98 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lm -lpthread")
99 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lm -lpthread")
101 OPTION(BUILD_EXAMPLES "Build the Examples directory." ON)
102 IF (BUILD_EXAMPLES)
103 ADD_EXECUTABLE(CImg_demo CImg_demo.cpp)
104 ADD_EXECUTABLE(captcha captcha.cpp)
105 ADD_EXECUTABLE(curve_editor curve_editor.cpp)
106 ADD_EXECUTABLE(dtmri_view dtmri_view.cpp)
107 ADD_EXECUTABLE(edge_explorer edge_explorer.cpp)
108 ADD_EXECUTABLE(fade_images fade_images.cpp)
109 ADD_EXECUTABLE(generate_loop_macros generate_loop_macros.cpp)
110 ADD_EXECUTABLE(gmic gmic.cpp)
111 ADD_EXECUTABLE(greycstoration greycstoration.cpp)
112 ADD_EXECUTABLE(hough_transform hough_transform.cpp)
113 ADD_EXECUTABLE(image2ascii image2ascii.cpp)
114 ADD_EXECUTABLE(image_registration image_registration.cpp)
115 ADD_EXECUTABLE(image_surface image_surface.cpp)
116 ADD_EXECUTABLE(jawbreaker jawbreaker.cpp)
117 ADD_EXECUTABLE(mcf_levelsets3d mcf_levelsets3d.cpp)
118 ADD_EXECUTABLE(mcf_levelsets mcf_levelsets.cpp)
119 ADD_EXECUTABLE(odykill odykill.cpp)
120 ADD_EXECUTABLE(pde_heatflow2d pde_heatflow2d.cpp)
121 ADD_EXECUTABLE(pde_TschumperleDeriche2d pde_TschumperleDeriche2d.cpp)
122 ADD_EXECUTABLE(radon_transform radon_transform.cpp)
123 ADD_EXECUTABLE(scene3d scene3d.cpp)
124 ADD_EXECUTABLE(tetris tetris.cpp)
125 ADD_EXECUTABLE(tron tron.cpp)
126 ADD_EXECUTABLE(tutorial tutorial.cpp)
127 ADD_EXECUTABLE(wavelet_atrous wavelet_atrous.cpp)
128 ADD_EXECUTABLE(use_draw_gradient use_draw_gradient.cpp)
129 ADD_EXECUTABLE(use_greycstoration use_greycstoration.cpp)
130 ADD_EXECUTABLE(use_nlmeans use_nlmeans.cpp)
131 ADD_EXECUTABLE(use_RGBclass use_RGBclass.cpp)
132 ADD_EXECUTABLE(use_skeleton use_skeleton.cpp)
133 ENDIF (BUILD_EXAMPLES)
135 # Flags to enable code debugging.
136 OPTION(CIMG_DEBUG_FLAGS "Flags to enable code debugging." OFF)
137 IF (CIMG_DEBUG_FLAGS)
138 ADD_DEFINITIONS(-Dcimg_debug=3)
139 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
140 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
141 ENDIF(CIMG_DEBUG_FLAGS)
143 # Flags to enable color output messages.
144 # (requires a VT100 compatible terminal)
145 OPTION(CIMG_VT100_FLAGS "Flags to enable color output messages. (requires a VT100 compatible terminal)" ON)
146 IF (CIMG_VT100_FLAGS)
147 ADD_DEFINITIONS(-Dcimg_use_vt100)
148 ENDIF(CIMG_VT100_FLAGS)
150 # Flags to enable code optimization by the compiler.
151 OPTION(CIMG_OPT_FLAGS "Flags to enable code optimization by the compiler." ON)
152 IF (CIMG_OPT_FLAGS)
153 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -ffast-math")
154 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -ffast-math")
155 ENDIF(CIMG_OPT_FLAGS)
157 # Flags to enable OpenMP support.
158 OPTION(CIMG_OPENMP_FLAGS "Flags to enable code optimization by the compiler." OFF)
159 IF (CIMG_OPENMP_FLAGS)
160 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
161 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
162 ADD_DEFINITIONS(-Dcimg_use_openmp)
163 ENDIF(CIMG_OPENMP_FLAGS)
165 # Flags to enable the use of the X11 library.
166 # (X11 is used by CImg to handle display windows)
167 # !!! For 64bits systems : replace -L$(X11PATH)/lib by -L$(X11PATH)/lib64 !!!
168 OPTION(CIMG_X11_FLAGS "Flags to enable fast image display, using the XSHM library." ON)
169 IF (CIMG_X11_FLAGS)
171 FIND_PATH(X11_PATH /bin/xterm /usr/X11R6)
173 OPTION(CIMG_SYSTEMS_64BITS "For 64bits systems." OFF)
174 IF (CIMG_SYSTEMS_64BITS)
175 INCLUDE_DIRECTORIES(${X11_PATH}/include)
176 LINK_DIRECTORIES(${X11_PATH}/lib64)
177 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${X11_PATH}/lib64 -lX11")
178 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${X11_PATH}/lib64 -lX11")
179 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -L${X11_PATH}/lib64 -lX11")
180 ELSE (CIMG_SYSTEMS_64BITS)
181 INCLUDE_DIRECTORIES(${X11_PATH}/include)
182 LINK_DIRECTORIES(${X11_PATH}/lib)
183 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${X11_PATH}/lib -lX11")
184 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${X11_PATH}/lib -lX11")
185 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -L${X11_PATH}/lib -lX11")
186 ENDIF(CIMG_SYSTEMS_64BITS)
188 # Flags to enable fast image display, using the XSHM library.
189 # (CIMG_X11_FLAGS must be defined also)
190 OPTION(CIMG_XSHM_FLAGS "Flags to enable fast image display, using the XSHM library." ON)
191 IF (CIMG_XSHM_FLAGS)
192 ADD_DEFINITIONS(-Dcimg_use_xshm)
193 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lXext")
194 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lXext")
195 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lXext")
196 ENDIF(CIMG_XSHM_FLAGS)
198 # Flags to enable screen mode switching, using the XRandr library.
199 # (CIMG_X11_FLAGS must be defined also)
200 OPTION(CIMG_XRANDR_FLAGS "Flags to enable screen mode switching, using the XRandr library." ON)
201 IF (CIMG_XRANDR_FLAGS)
202 ADD_DEFINITIONS(-Dcimg_use_xrandr)
203 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lXrandr")
204 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lXrandr")
205 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lXrandr")
206 ENDIF(CIMG_XRANDR_FLAGS)
208 # Flags to compile on Solaris
209 #CIMG_SOLARIS_FLAGS = -R$(X11PATH)/lib -lrt -lnsl -lsocket
210 OPTION(CIMG_SOLARIS_FLAGS "Flags to compile on Solaris." OFF)
211 IF (CIMG_SOLARIS_FLAGS)
212 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -R$(X11_PATH)/lib -lrt -lnsl -lsocket")
213 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -R$(X11_PATH)/lib -lrt -lnsl -lsocket")
214 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -R$(X11_PATH)/lib -lrt -lnsl -lsocket")
215 ENDIF(CIMG_SOLARIS_FLAGS)
217 ENDIF(CIMG_X11_FLAGS)
220 # Flags to enable native support for PNG image files, using the PNG library.
221 #CIMG_PNG_FLAGS = -Dcimg_use_png -lpng -lz
222 OPTION(CIMG_PNG_FLAGS "Flags to enable native support for PNG image files, using the PNG library." OFF)
223 IF (CIMG_PNG_FLAGS)
224 ADD_DEFINITIONS(-Dcimg_use_png)
225 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpng -lz")
226 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lpng -lz")
227 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lpng -lz")
228 ENDIF(CIMG_PNG_FLAGS)
230 # Flags to enable native support for JPEG image files, using the JPEG library.
231 #CIMG_JPEG_FLAGS = -Dcimg_use_jpeg -ljpeg
232 OPTION(CIMG_JPEG_FLAGS "Flags to enable native support for JPEG image files, using the JPEG library." OFF)
233 IF (CIMG_JPEG_FLAGS)
234 ADD_DEFINITIONS(-Dcimg_use_jpeg)
235 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ljpeg")
236 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ljpeg")
237 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -ljpeg")
238 ENDIF(CIMG_JPEG_FLAGS)
240 # Flags to enable native support for TIFF image files, using the TIFF library.
241 #CIMG_TIFF_FLAGS = -Dcimg_use_tiff -ltiff
242 OPTION(CIMG_TIFF_FLAGS "Flags to enable native support for TIFF image files, using the TIFF library." OFF)
243 IF (CIMG_TIFF_FLAGS)
244 ADD_DEFINITIONS(-Dcimg_use_tiff)
245 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ltiff")
246 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -ltiff")
247 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -ltiff")
248 ENDIF(CIMG_TIFF_FLAGS)
250 # Flags to enable native support for various video files, using the FFMPEG library.
251 #CIMG_FFMPEG_FLAGS = -Dcimg_use_ffmpeg -lavcodec -lavformat
252 OPTION(CIMG_FFMPEG_FLAGS "Flags to enable native support for various video files, using the FFMPEG library." OFF)
253 IF (CIMG_FFMPEG_FLAGS)
254 ADD_DEFINITIONS(-Dcimg_use_ffmpeg)
255 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lavcodec -lavformat")
256 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lavcodec -lavformat")
257 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lavcodec -lavformat")
258 ENDIF(CIMG_FFMPEG_FLAGS)
260 # Flags to enable native support for compressed .cimgz files, using the Zlib library.
261 #CIMG_ZLIB_FLAGS = -Dcimg_use_zlib -lz
262 OPTION(CIMG_ZLIB_FLAGS "Flags to enable native support for compressed .cimgz files, using the Zlib library." OFF)
263 IF (CIMG_ZLIB_FLAGS)
264 ADD_DEFINITIONS(-Dcimg_use_zlib)
265 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lz")
266 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lz")
267 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lz")
268 ENDIF(CIMG_ZLIB_FLAGS)
270 # Flags to enable native support of most classical image file formats, using the Magick++ library.
271 #CIMG_MAGICK_FLAGS = -Dcimg_use_magick `Magick++-config --cppflags` `Magick++-config --cxxflags` `Magick++-config --ldflags` `Magick++-config --libs`
272 OPTION(CIMG_MAGICK_FLAGS "Flags to enable native support of most classical image file formats, using the Magick++ library." OFF)
273 IF (CIMG_MAGICK_FLAGS)
274 ADD_DEFINITIONS(-Dcimg_use_magick)
275 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} `Magick++-config --cppflags` `Magick++-config --cxxflags`")
276 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} `Magick++-config --cppflags` `Magick++-config --cxxflags`")
277 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} `Magick++-config --ldflags` `Magick++-config --libs`")
278 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} `Magick++-config --ldflags` `Magick++-config --libs`")
279 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} `Magick++-config --ldflags` `Magick++-config --libs`")
280 ENDIF(CIMG_MAGICK_FLAGS)
282 # Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library
283 #CIMG_FFTW3_FLAGS = -Dcimg_use_fftw3 -lfftw3
284 OPTION(CIMG_FFTW3_FLAGS "Flags to enable faster Discrete Fourier Transform computation, using the FFTW3 library." OFF)
285 IF (CIMG_FFTW3_FLAGS)
286 ADD_DEFINITIONS(-Dcimg_use_fftw3)
287 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lfftw3")
288 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lfftw3")
289 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lfftw3")
290 ENDIF(CIMG_FFTW3_FLAGS)
292 # Flags to enable the use of LAPACK routines for matrix computation
293 #CIMG_LAPACK_FLAGS = -Dcimg_use_lapack -lblas -lg2c -llapack
294 OPTION(CIMG_LAPACK_FLAGS "Flags to enable the use of LAPACK routines for matrix computation" OFF)
295 IF (CIMG_LAPACK_FLAGS)
296 ADD_DEFINITIONS(-Dcimg_use_lapack)
297 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lblas -lg2c -llapack")
298 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lblas -lg2c -llapack")
299 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lblas -lg2c -llapack")
300 ENDIF(CIMG_LAPACK_FLAGS)
302 # Flags to enable the use of the Board library
303 #CIMG_BOARD_FLAGS = -Dcimg_use_board -I/usr/include/board -lboard
304 OPTION(CIMG_BOARD_FLAGS "Flags to enable the use of the Board library." OFF)
305 IF (CIMG_BOARD_FLAGS)
306 ADD_DEFINITIONS(-Dcimg_use_board)
307 INCLUDE_DIRECTORIES(/usr/include/board)
308 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lboard")
309 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lboard")
310 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lboard")
311 ENDIF(CIMG_BOARD_FLAGS)
313 # Flags to compile on MacOSX with Carbon-based display support
314 #CIMG_CARBON_FLAGS = -Dcimg_display=3 -framework Carbon
315 IF(APPLE)
316 OPTION(CIMG_CARBON_FLAGS "Flags to compile on MacOSX with Carbon-based display support." ON)
317 IF (CIMG_CARBON_FLAGS)
318 ADD_DEFINITIONS(-Dcimg_display=3)
319 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Carbon")
320 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Carbon")
321 SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -framework Carbon")
322 ENDIF(CIMG_CARBON_FLAGS)
323 ENDIF(APPLE)