]> Creatis software - gdcm.git/blob - src/gdcmjasper/src/libjasper/include/jasper/CMakeLists.txt
ENH: make gdcmjasper more portable. It is now fully independant from the toplevel...
[gdcm.git] / src / gdcmjasper / src / libjasper / include / jasper / CMakeLists.txt
1 INCLUDE_REGULAR_EXPRESSION("^.*$") 
2
3 #libjasperinclude_HEADERS = \
4 #  jasper.h \
5 #  jas_config.h \
6 #  jas_config2.h \
7 #  jas_cm.h \
8 #  jas_fix.h \
9 #  jas_debug.h \
10 #  jas_getopt.h \
11 #  jas_icc.h \
12 #  jas_image.h \
13 #  jas_init.h \
14 #  jas_malloc.h \
15 #  jas_math.h \
16 #  jas_seq.h \
17 #  jas_stream.h \
18 #  jas_string.h \
19 #  jas_tvp.h \
20 #  jas_types.h \
21 #  jas_version.h
22 #
23 #libjasperincludedir = $(includedir)/jasper
24
25 SET(JAS_VERSION "1.701.0")
26
27 INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
28
29 CHECK_INCLUDE_FILE("dlfcn.h"    HAVE_DLFCN_H)
30 CHECK_INCLUDE_FILE("fcntl.h"    HAVE_FCNTL_H)
31 CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
32 CHECK_INCLUDE_FILE("io.h"       HAVE_IO_H)
33 #/* Define to 1 if you have the `m' library (-lm). */
34 ##define HAVE_LIBM 1
35
36 CHECK_INCLUDE_FILE("limits.h"    HAVE_LIMITS_H)
37 CHECK_INCLUDE_FILE("memory.h"    HAVE_MEMORY_H)
38 CHECK_INCLUDE_FILE("stdbool.h"   HAVE_STDBOOL_H)
39 CHECK_INCLUDE_FILE("stddef.h"    HAVE_STDDEF_H)
40 CHECK_INCLUDE_FILE("stdint.h"    HAVE_STDINT_H)
41 CHECK_INCLUDE_FILE("stdlib.h"    HAVE_STDLIB_H)
42 CHECK_INCLUDE_FILE("strings.h"   HAVE_STRINGS_H)
43 CHECK_INCLUDE_FILE("string.h"    HAVE_STRING_H)
44 CHECK_INCLUDE_FILE("sys/stat.h"  HAVE_SYS_STAT_H)
45 CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
46 CHECK_INCLUDE_FILE("unistd.h"    HAVE_UNISTD_H)
47
48 #/* Have variable length arrays */
49 ##define HAVE_VLA 1
50
51 #/* Define to 1 if you have the `vprintf' function. */
52 ##define HAVE_VPRINTF 1
53
54 CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
55 # Big endian thing:
56 INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
57 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
58
59 # let's have some fun with long long and __int64...I don't even know why this lib need those types anyway...
60 INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
61 CHECK_TYPE_SIZE("char"   GDCM_SIZEOF_CHAR)
62 CHECK_TYPE_SIZE("short"  GDCM_SIZEOF_SHORT)
63 CHECK_TYPE_SIZE("int"    GDCM_SIZEOF_INT)
64 CHECK_TYPE_SIZE("long"   GDCM_SIZEOF_LONG)
65 CHECK_TYPE_SIZE("float"  GDCM_SIZEOF_FLOAT)
66 CHECK_TYPE_SIZE("double" GDCM_SIZEOF_DOUBLE)
67
68 CHECK_TYPE_SIZE("uint"   GDCM_SIZEOF_UINT)
69 CHECK_TYPE_SIZE("ushort" GDCM_SIZEOF_USHORT)
70 CHECK_TYPE_SIZE("ulong"  GDCM_SIZEOF_ULONG)
71
72 CHECK_TYPE_SIZE("long long" GDCM_SIZEOF_LONG_LONG)
73 CHECK_TYPE_SIZE("__int64"   GDCM_SIZEOF___INT64)
74
75 IF(GDCM_SIZEOF___INT64)
76   STRING(ASCII 35 POUND)
77   FILE(WRITE ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.cxx
78     "${POUND}define TYPE_LONG_LONG long long\n"
79     "typedef GDCM_TEST_COMPARE_TYPE_1 Type1;\n"
80     "typedef GDCM_TEST_COMPARE_TYPE_2 Type2;\n"
81     "void function(Type1**) {}\n"
82     "int main() {\n"
83     "  Type2** p = 0;\n"
84     "  function(p);\n"
85     "  return 0; }")
86   IF("GDCM_TYPE_SAME_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_AND___INT64$")
87     MESSAGE(STATUS "Checking whether long and __int64 are the same type")
88     TRY_COMPILE(GDCM_TYPE_SAME_LONG_AND___INT64
89       ${GDCMJASPER_BINARY_DIR}/
90       ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.cxx
91       COMPILE_DEFINITIONS
92       -DGDCM_TEST_COMPARE_TYPE_1=long
93       -DGDCM_TEST_COMPARE_TYPE_2=__int64
94       OUTPUT_VARIABLE OUTPUT)
95     IF(GDCM_TYPE_SAME_LONG_AND___INT64)
96       MESSAGE(STATUS "Checking whether long and __int64 are the same type -- yes")
97       SET(GDCM_TYPE_SAME_LONG_AND___INT64 1 CACHE INTERNAL "Whether long and __int64 are the same type")
98       WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
99         "Determining whether long and __int64 are the same type "
100         "passed with the following output:\n"
101         "${OUTPUT}\n" APPEND)
102     ELSE(GDCM_TYPE_SAME_LONG_AND___INT64)
103       MESSAGE(STATUS "Checking whether long and __int64 are the same type -- no")
104       SET(GDCM_TYPE_SAME_LONG_AND___INT64 0 CACHE INTERNAL "Whether long and __int64 are the same type")
105       WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
106         "Determining whether long and __int64 are the same type "
107         "failed with the following output:\n"
108         "${OUTPUT}\n" APPEND)
109     ENDIF(GDCM_TYPE_SAME_LONG_AND___INT64)
110   ENDIF("GDCM_TYPE_SAME_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_AND___INT64$")
111   IF(GDCM_SIZEOF_LONG_LONG)
112     IF("GDCM_TYPE_SAME_LONG_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_LONG_AND___INT64$")
113       MESSAGE(STATUS "Checking whether long long and __int64 are the same type")
114       TRY_COMPILE(GDCM_TYPE_SAME_LONG_LONG_AND___INT64
115         ${GDCMJASPER_BINARY_DIR}
116         ${GDCMJASPER_SOURCE_DIR}/gdcmTestCompareTypes.cxx
117         COMPILE_DEFINITIONS
118         -DGDCM_TEST_COMPARE_TYPE_1=TYPE_LONG_LONG
119         -DGDCM_TEST_COMPARE_TYPE_2=__int64
120         OUTPUT_VARIABLE OUTPUT)
121       IF(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
122         MESSAGE(STATUS "Checking whether long long and __int64 are the same type -- yes")
123         SET(GDCM_TYPE_SAME_LONG_LONG_AND___INT64 1 CACHE INTERNAL "Whether long long and __int64 are the same type")
124         WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
125           "Determining whether long long and __int64 are the same type "
126           "passed with the following output:\n"
127           "${OUTPUT}\n" APPEND)
128       ELSE(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
129         MESSAGE(STATUS "Checking whether long long and __int64 are the same type -- no")
130         SET(GDCM_TYPE_SAME_LONG_LONG_AND___INT64 0 CACHE INTERNAL "Whether long long and __int64 are the same type")
131         WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
132           "Determining whether long long and __int64 are the same type "
133           "failed with the following output:\n"
134           "${OUTPUT}\n" APPEND)
135       ENDIF(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
136     ENDIF("GDCM_TYPE_SAME_LONG_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_LONG_AND___INT64$")
137   ENDIF(GDCM_SIZEOF_LONG_LONG)
138   IF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
139     IF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
140       #  VS 6 cannot convert unsigned __int64 to double unless the
141       # "Visual C++ Processor Pack" is installed.
142       IF("GDCM_TYPE_CONVERT_UI64_TO_DOUBLE" MATCHES "^GDCM_TYPE_CONVERT_UI64_TO_DOUBLE$")
143         MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double")
144         FILE(WRITE ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.cxx
145           "${POUND}define TYPE_UNSIGNED___INT64 unsigned __int64\n"
146           "typedef GDCM_TEST_CONVERT_TYPE_TO TypeTo;\n"
147           "typedef GDCM_TEST_CONVERT_TYPE_FROM TypeFrom;\n"
148           "void function(TypeTo& l, TypeFrom const& r) {\n"
149           "  l = static_cast<TypeTo>(r); }\n"
150           "int main() {\n"
151           "  TypeTo tTo = TypeTo();\n"
152           "  TypeFrom tFrom = TypeFrom();\n"
153           "  function(tTo, tFrom);\n"
154           "  return 0; }")
155         TRY_COMPILE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE
156           ${GDCMJASPER_BINARY_DIR}
157           ${GDCMJASPER_BINARY_DIR}/gdcmTestConvertTypes.cxx
158           COMPILE_DEFINITIONS
159           -DGDCM_TEST_CONVERT_TYPE_FROM=TYPE_UNSIGNED___INT64
160           -DGDCM_TEST_CONVERT_TYPE_TO=double
161           OUTPUT_VARIABLE OUTPUT)
162         IF(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
163           MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double -- yes")
164           SET(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE 1 CACHE INTERNAL "Whether unsigned __int64 can convert to double")
165           WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
166             "Determining whether unsigned __int64 can convert to double "
167             "passed with the following output:\n"
168             "${OUTPUT}\n" APPEND)
169         ELSE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
170           MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double -- no")
171           SET(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE 0 CACHE INTERNAL "Whether unsigned __int64 can convert to double")
172           WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
173             "Determining whether unsigned __int64 can convert to double "
174             "failed with the following output:\n"
175             "${OUTPUT}\n" APPEND)
176         ENDIF(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
177       ENDIF("GDCM_TYPE_CONVERT_UI64_TO_DOUBLE" MATCHES "^GDCM_TYPE_CONVERT_UI64_TO_DOUBLE$")
178     ENDIF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
179   ENDIF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
180 ENDIF(GDCM_SIZEOF___INT64)
181
182 # Enable the "long long" type if it is available.  It is standard in
183 # C99 and C++03 but not in earlier standards.
184 SET(GDCM_TYPE_USE_LONG_LONG)
185 IF(GDCM_SIZEOF_LONG_LONG)
186   SET(GDCM_TYPE_USE_LONG_LONG 1)
187 ENDIF(GDCM_SIZEOF_LONG_LONG)
188
189 # Enable the "__int64" type if it is available and unique.  It is not
190 # standard.
191 SET(GDCM_TYPE_USE___INT64)
192 IF(GDCM_SIZEOF___INT64)
193   IF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
194     IF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
195       SET(GDCM_TYPE_USE___INT64 1)
196     ENDIF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
197   ENDIF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
198 ENDIF(GDCM_SIZEOF___INT64)
199
200 IF (WIN32)
201   IF (BUILD_SHARED_LIBS)
202 #    ADD_DEFINITIONS(-DJASPERDLL)
203     SET(JASPERDLL 1)
204   ELSE (BUILD_SHARED_LIBS)
205     SET(JASPERSTATIC 1)
206   ENDIF (BUILD_SHARED_LIBS)
207 ENDIF (WIN32)
208
209 CONFIGURE_FILE(
210   "${GDCMJASPER_SOURCE_DIR}/src/libjasper/include/jasper/jas_config.h.in"
211   "${GDCMJASPER_BINARY_DIR}/src/libjasper/include/jasper/jas_config.h"
212   @ONLY IMMEDIATE)