1 INCLUDE_REGULAR_EXPRESSION("^.*$")
3 #libjasperinclude_HEADERS = \
23 #libjasperincludedir = $(includedir)/jasper
25 SET(JAS_VERSION "1.701.0")
27 INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
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). */
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)
48 #/* Have variable length arrays */
51 #/* Define to 1 if you have the `vprintf' function. */
52 ##define HAVE_VPRINTF 1
54 CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
56 INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
57 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
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)
68 CHECK_TYPE_SIZE("uint" GDCM_SIZEOF_UINT)
69 CHECK_TYPE_SIZE("ushort" GDCM_SIZEOF_USHORT)
70 CHECK_TYPE_SIZE("ulong" GDCM_SIZEOF_ULONG)
72 CHECK_TYPE_SIZE("long long" GDCM_SIZEOF_LONG_LONG)
73 CHECK_TYPE_SIZE("__int64" GDCM_SIZEOF___INT64)
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"
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
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_BINARY_DIR}/gdcmTestCompareTypes.cxx
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}/gdcmTestConvertTypes.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"
151 " TypeTo tTo = TypeTo();\n"
152 " TypeFrom tFrom = TypeFrom();\n"
153 " function(tTo, tFrom);\n"
155 TRY_COMPILE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE
156 ${GDCMJASPER_BINARY_DIR}
157 ${GDCMJASPER_BINARY_DIR}/gdcmTestConvertTypes.cxx
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)
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)
189 # Enable the "__int64" type if it is available and unique. It is not
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)
201 IF (BUILD_SHARED_LIBS)
202 # ADD_DEFINITIONS(-DJASPERDLL)
204 ELSE (BUILD_SHARED_LIBS)
206 ENDIF (BUILD_SHARED_LIBS)
210 "${GDCMJASPER_SOURCE_DIR}/src/libjasper/include/jasper/jas_config.h.in"
211 "${GDCMJASPER_BINARY_DIR}/src/libjasper/include/jasper/jas_config.h"