]> Creatis software - gdcm.git/commitdiff
ENH: Fix the this header. PLEASE do not touch if you dont know what you are doing
authormalaterre <malaterre>
Sun, 29 May 2005 22:59:59 +0000 (22:59 +0000)
committermalaterre <malaterre>
Sun, 29 May 2005 22:59:59 +0000 (22:59 +0000)
src/gdcmjasper/src/libjasper/include/jasper/CMakeLists.txt
src/gdcmjasper/src/libjasper/include/jasper/jas_config.h.in

index 1d2a9ac8d4cbdedd9cdfdc7bb310e5c29fb21b83..7a79978a39d4ae778cd182eb4bdd71637e58c974 100644 (file)
@@ -1,4 +1,4 @@
-INCLUDE_REGULAR_EXPRESSION("^(jas).*$")
+#INCLUDE_REGULAR_EXPRESSION("^(jas).*$")
 
 
 #libjasperinclude_HEADERS = \
@@ -55,6 +55,122 @@ CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
 INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
 TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
 
+# let's have some fun with long long and __int64...I don't even know why this lib need those types anyway...
+INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
+CHECK_TYPE_SIZE("char"   GDCM_SIZEOF_CHAR)
+CHECK_TYPE_SIZE("short"  GDCM_SIZEOF_SHORT)
+CHECK_TYPE_SIZE("int"    GDCM_SIZEOF_INT)
+CHECK_TYPE_SIZE("long"   GDCM_SIZEOF_LONG)
+CHECK_TYPE_SIZE("float"  GDCM_SIZEOF_FLOAT)
+CHECK_TYPE_SIZE("double" GDCM_SIZEOF_DOUBLE)
+
+CHECK_TYPE_SIZE("long long" GDCM_SIZEOF_LONG_LONG)
+CHECK_TYPE_SIZE("__int64"   GDCM_SIZEOF___INT64)
+
+IF(GDCM_SIZEOF___INT64)
+  IF("GDCM_TYPE_SAME_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_AND___INT64$")
+    MESSAGE(STATUS "Checking whether long and __int64 are the same type")
+    TRY_COMPILE(GDCM_TYPE_SAME_LONG_AND___INT64
+      ${GDCM_BINARY_DIR}/CMakeTmp
+      ${GDCM_SOURCE_DIR}/CMake/vtkTestCompareTypes.cxx
+      COMPILE_DEFINITIONS
+      -DGDCM_TEST_COMPARE_TYPE_1=long
+      -DGDCM_TEST_COMPARE_TYPE_2=__int64
+      OUTPUT_VARIABLE OUTPUT)
+    IF(GDCM_TYPE_SAME_LONG_AND___INT64)
+      MESSAGE(STATUS "Checking whether long and __int64 are the same type -- yes")
+      SET(GDCM_TYPE_SAME_LONG_AND___INT64 1 CACHE INTERNAL "Whether long and __int64 are the same type")
+      WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
+        "Determining whether long and __int64 are the same type "
+        "passed with the following output:\n"
+        "${OUTPUT}\n" APPEND)
+    ELSE(GDCM_TYPE_SAME_LONG_AND___INT64)
+      MESSAGE(STATUS "Checking whether long and __int64 are the same type -- no")
+      SET(GDCM_TYPE_SAME_LONG_AND___INT64 0 CACHE INTERNAL "Whether long and __int64 are the same type")
+      WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
+        "Determining whether long and __int64 are the same type "
+        "failed with the following output:\n"
+        "${OUTPUT}\n" APPEND)
+    ENDIF(GDCM_TYPE_SAME_LONG_AND___INT64)
+  ENDIF("GDCM_TYPE_SAME_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_AND___INT64$")
+  IF(GDCM_SIZEOF_LONG_LONG)
+    IF("GDCM_TYPE_SAME_LONG_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_LONG_AND___INT64$")
+      MESSAGE(STATUS "Checking whether long long and __int64 are the same type")
+      TRY_COMPILE(GDCM_TYPE_SAME_LONG_LONG_AND___INT64
+        ${GDCM_BINARY_DIR}/CMakeTmp
+        ${GDCM_SOURCE_DIR}/CMake/vtkTestCompareTypes.cxx
+        COMPILE_DEFINITIONS
+        -DGDCM_TEST_COMPARE_TYPE_1=TYPE_LONG_LONG
+        -DGDCM_TEST_COMPARE_TYPE_2=__int64
+        OUTPUT_VARIABLE OUTPUT)
+      IF(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+        MESSAGE(STATUS "Checking whether long long and __int64 are the same type -- yes")
+        SET(GDCM_TYPE_SAME_LONG_LONG_AND___INT64 1 CACHE INTERNAL "Whether long long and __int64 are the same type")
+        WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
+          "Determining whether long long and __int64 are the same type "
+          "passed with the following output:\n"
+          "${OUTPUT}\n" APPEND)
+      ELSE(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+        MESSAGE(STATUS "Checking whether long long and __int64 are the same type -- no")
+        SET(GDCM_TYPE_SAME_LONG_LONG_AND___INT64 0 CACHE INTERNAL "Whether long long and __int64 are the same type")
+        WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
+          "Determining whether long long and __int64 are the same type "
+          "failed with the following output:\n"
+          "${OUTPUT}\n" APPEND)
+      ENDIF(GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+    ENDIF("GDCM_TYPE_SAME_LONG_LONG_AND___INT64" MATCHES "^GDCM_TYPE_SAME_LONG_LONG_AND___INT64$")
+  ENDIF(GDCM_SIZEOF_LONG_LONG)
+  IF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
+    IF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+      #  VS 6 cannot convert unsigned __int64 to double unless the
+      # "Visual C++ Processor Pack" is installed.
+      IF("GDCM_TYPE_CONVERT_UI64_TO_DOUBLE" MATCHES "^GDCM_TYPE_CONVERT_UI64_TO_DOUBLE$")
+        MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double")
+        TRY_COMPILE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE
+          ${GDCM_BINARY_DIR}/CMakeTmp
+          ${GDCM_SOURCE_DIR}/CMake/vtkTestConvertTypes.cxx
+          COMPILE_DEFINITIONS
+          -DGDCM_TEST_CONVERT_TYPE_FROM=TYPE_UNSIGNED___INT64
+          -DGDCM_TEST_CONVERT_TYPE_TO=double
+          OUTPUT_VARIABLE OUTPUT)
+        IF(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
+          MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double -- yes")
+          SET(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE 1 CACHE INTERNAL "Whether unsigned __int64 can convert to double")
+          WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
+            "Determining whether unsigned __int64 can convert to double "
+            "passed with the following output:\n"
+            "${OUTPUT}\n" APPEND)
+        ELSE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
+          MESSAGE(STATUS "Checking whether unsigned __int64 can convert to double -- no")
+          SET(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE 0 CACHE INTERNAL "Whether unsigned __int64 can convert to double")
+          WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
+            "Determining whether unsigned __int64 can convert to double "
+            "failed with the following output:\n"
+            "${OUTPUT}\n" APPEND)
+        ENDIF(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE)
+      ENDIF("GDCM_TYPE_CONVERT_UI64_TO_DOUBLE" MATCHES "^GDCM_TYPE_CONVERT_UI64_TO_DOUBLE$")
+    ENDIF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+  ENDIF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
+ENDIF(GDCM_SIZEOF___INT64)
+
+# Enable the "long long" type if it is available.  It is standard in
+# C99 and C++03 but not in earlier standards.
+SET(GDCM_TYPE_USE_LONG_LONG)
+IF(GDCM_SIZEOF_LONG_LONG)
+  SET(GDCM_TYPE_USE_LONG_LONG 1)
+ENDIF(GDCM_SIZEOF_LONG_LONG)
+
+# Enable the "__int64" type if it is available and unique.  It is not
+# standard.
+SET(GDCM_TYPE_USE___INT64)
+IF(GDCM_SIZEOF___INT64)
+  IF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
+    IF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+      SET(GDCM_TYPE_USE___INT64 1)
+    ENDIF(NOT GDCM_TYPE_SAME_LONG_LONG_AND___INT64)
+  ENDIF(NOT GDCM_TYPE_SAME_LONG_AND___INT64)
+ENDIF(GDCM_SIZEOF___INT64)
+
 CONFIGURE_FILE(
   ${JASPER_SOURCE_DIR}/src/libjasper/include/jasper/jas_config.h.in
   ${JASPER_BINARY_DIR}/src/libjasper/include/jasper/jas_config.h
index e393656556a7b6b72036704149b89ea426098862..055fc02cf6823f68cf7e1ebe2fbc8e03bd04a9da 100644 (file)
 /* Define to the version of this package. */
 #define PACKAGE_VERSION "@JAS_VERSION@"
 
-#if 0
+/* Size of fundamental data types.  */
 /* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
+#define SIZEOF_INT    @GDCM_SIZEOF_INT@
 
 /* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* The size of a `long long', as computed by sizeof. */
-#define SIZEOF_LONG_LONG 8
+#define SIZEOF_LONG   @GDCM_SIZEOF_LONG@
 
 /* The size of a `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
+#define SIZEOF_SHORT  @GDCM_SIZEOF_SHORT@
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR   @GDCM_SIZEOF_CHAR@
 
+/* The size of a `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE @GDCM_SIZEOF_DOUBLE@
+
+/* The size of a `float', as computed by sizeof. */
+#define SIZEOF_FLOAT  @GDCM_SIZEOF_FLOAT@
+
+/* Could someone give me an example of plateform that have 
+ * different size for unsigned types ?? */
 /* The size of a `unsigned int', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_INT 4
+#define SIZEOF_UNSIGNED_INT @GDCM_SIZEOF_INT@
 
 /* The size of a `unsigned long', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_LONG 4
+#define SIZEOF_UNSIGNED_LONG @GDCM_SIZEOF_LONG@
+
+/* The size of a `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT @GDCM_SIZEOF_SHORT@
+
+
+/* Define size of long long and/or __int64 bit integer type only if the type
+   exists.  */
+/* The size of a `long long', as computed by sizeof. */
+#cmakedefine GDCM_SIZEOF_LONG_LONG @GDCM_SIZEOF_LONG_LONG@
+#cmakedefine GDCM_SIZEOF___INT64   @GDCM_SIZEOF___INT64@
 
 /* The size of a `unsigned long long', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_LONG_LONG 8
+#define SIZEOF_UNSIGNED_LONG_LONG @GDCM_SIZEOF_LONG_LONG@
+
 
-/* The size of a `unsigned short', as computed by sizeof. */
-#define SIZEOF_UNSIGNED_SHORT 2
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
    if it is not supported. */
 /* #undef inline */
 
-/* I have #define for types... */
-#if 0
-/* Define to `long long' if <sys/types.h> does not define. */
-#define longlong long long
+/* Whether types "long long" and "__int64" are enabled.  If a type is
+   enabled then it is a unique fundamental type.  */
+#cmakedefine GDCM_TYPE_USE_LONG_LONG
+#cmakedefine GDCM_TYPE_USE___INT64
 
-/* Define to `unsigned' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef ssize_t */
-
-/* Define to `unsigned char' if <sys/types.h> does not define. */
-#define uchar unsigned char
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef uint */
-
-/* Define to `unsigned long' if <sys/types.h> does not define. */
-#define ulong unsigned long
-
-/* Define to `unsigned long long' if <sys/types.h> does not define. */
-#define ulonglong unsigned long long
-
-/* Define to `unsigned short' if <sys/types.h> does not define. */
-/* #undef ushort */
-#endif
+/* Some properties of the available types.  */
+#cmakedefine GDCM_TYPE_SAME_LONG_AND___INT64
+#cmakedefine GDCM_TYPE_SAME_LONG_LONG_AND___INT64
+#cmakedefine GDCM_TYPE_CONVERT_UI64_TO_DOUBLE
 
 
+// On win32 there is no long long therefore use __int64 instead
+//
 #ifndef HAVE_SYS_TYPES_H
 typedef unsigned short     ushort;
 typedef unsigned int       uint;
 typedef unsigned long      ulong;
+#ifdef GDCM_TYPE_USE___INT64
+typedef unsigned char      uchar;
+typedef unsigned __int64   ulonglong;
+typedef __int64            longlong;
+#else
+#error this is not supposed to happen please report your compiler
+#endif
 #else
+#ifdef GDCM_TYPE_USE_LONG_LONG
 typedef unsigned char      uchar;
 typedef unsigned long long ulonglong;
 typedef long long          longlong;
+#else
+#error this is not supposed to happen please report your compiler
+#endif
 /* #define  ssize_t    int */
 #endif
 
+
 #endif