]> Creatis software - gdcm.git/blobdiff - src/gdcmjasper/src/libjasper/include/jasper/CMakeLists.txt
ENH: Ok since OJ warnings are not going to be fixed anytime soon remove them
[gdcm.git] / src / gdcmjasper / src / libjasper / include / jasper / CMakeLists.txt
index 1d2a9ac8d4cbdedd9cdfdc7bb310e5c29fb21b83..3769191a0b0e5cf88e78ba43fb6d2059aecadb48 100644 (file)
@@ -1,5 +1,4 @@
-INCLUDE_REGULAR_EXPRESSION("^(jas).*$")
-
+INCLUDE_REGULAR_EXPRESSION("^.*$") 
 
 #libjasperinclude_HEADERS = \
 #  jasper.h \
@@ -25,24 +24,26 @@ INCLUDE_REGULAR_EXPRESSION("^(jas).*$")
 
 SET(JAS_VERSION "1.701.0")
 
-CHECK_INCLUDE_FILE("dlfcn.h"       HAVE_DLFCN_H)
-CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
+INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
+
+CHECK_INCLUDE_FILE("dlfcn.h"    HAVE_DLFCN_H)
+CHECK_INCLUDE_FILE("fcntl.h"    HAVE_FCNTL_H)
 CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
-CHECK_INCLUDE_FILE("io.h" HAVE_IO_H)
+CHECK_INCLUDE_FILE("io.h"       HAVE_IO_H)
 #/* Define to 1 if you have the `m' library (-lm). */
 ##define HAVE_LIBM 1
 
-CHECK_INCLUDE_FILE("limits.h" HAVE_LIMITS_H)
-CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H)
-CHECK_INCLUDE_FILE("stdbool.h" HAVE_STDBOOL_H)
-CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H)
-CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H)
-CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H)
-CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H)
-CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H)
-CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILE("limits.h"    HAVE_LIMITS_H)
+CHECK_INCLUDE_FILE("memory.h"    HAVE_MEMORY_H)
+CHECK_INCLUDE_FILE("stdbool.h"   HAVE_STDBOOL_H)
+CHECK_INCLUDE_FILE("stddef.h"    HAVE_STDDEF_H)
+CHECK_INCLUDE_FILE("stdint.h"    HAVE_STDINT_H)
+CHECK_INCLUDE_FILE("stdlib.h"    HAVE_STDLIB_H)
+CHECK_INCLUDE_FILE("strings.h"   HAVE_STRINGS_H)
+CHECK_INCLUDE_FILE("string.h"    HAVE_STRING_H)
+CHECK_INCLUDE_FILE("sys/stat.h"  HAVE_SYS_STAT_H)
 CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
-CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
+CHECK_INCLUDE_FILE("unistd.h"    HAVE_UNISTD_H)
 
 #/* Have variable length arrays */
 ##define HAVE_VLA 1
@@ -55,7 +56,157 @@ 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("uint"   GDCM_SIZEOF_UINT)
+CHECK_TYPE_SIZE("ushort" GDCM_SIZEOF_USHORT)
+CHECK_TYPE_SIZE("ulong"  GDCM_SIZEOF_ULONG)
+
+CHECK_TYPE_SIZE("long long" GDCM_SIZEOF_LONG_LONG)
+CHECK_TYPE_SIZE("__int64"   GDCM_SIZEOF___INT64)
+
+IF(GDCM_SIZEOF___INT64)
+  STRING(ASCII 35 POUND)
+  FILE(WRITE ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.cxx
+    "${POUND}define TYPE_LONG_LONG long long\n"
+    "typedef GDCM_TEST_COMPARE_TYPE_1 Type1;\n"
+    "typedef GDCM_TEST_COMPARE_TYPE_2 Type2;\n"
+    "void function(Type1**) {}\n"
+    "int main() {\n"
+    "  Type2** p = 0;\n"
+    "  function(p);\n"
+    "  return 0; }")
+  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
+      ${GDCMJASPER_BINARY_DIR}/
+      ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.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
+        ${GDCMJASPER_BINARY_DIR}
+        ${GDCMJASPER_BINARY_DIR}/gdcmTestCompareTypes.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")
+        FILE(WRITE ${GDCMJASPER_BINARY_DIR}/gdcmTestConvertTypes.cxx
+          "${POUND}define TYPE_UNSIGNED___INT64 unsigned __int64\n"
+          "typedef GDCM_TEST_CONVERT_TYPE_TO TypeTo;\n"
+          "typedef GDCM_TEST_CONVERT_TYPE_FROM TypeFrom;\n"
+          "void function(TypeTo& l, TypeFrom const& r) {\n"
+          "  l = static_cast<TypeTo>(r); }\n"
+          "int main() {\n"
+          "  TypeTo tTo = TypeTo();\n"
+          "  TypeFrom tFrom = TypeFrom();\n"
+          "  function(tTo, tFrom);\n"
+          "  return 0; }")
+        TRY_COMPILE(GDCM_TYPE_CONVERT_UI64_TO_DOUBLE
+          ${GDCMJASPER_BINARY_DIR}
+          ${GDCMJASPER_BINARY_DIR}/gdcmTestConvertTypes.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)
+
+IF (WIN32)
+  IF (BUILD_SHARED_LIBS)
+#    ADD_DEFINITIONS(-DJASPERDLL)
+    SET(JASPERDLL 1)
+  ELSE (BUILD_SHARED_LIBS)
+    SET(JASPERSTATIC 1)
+  ENDIF (BUILD_SHARED_LIBS)
+ENDIF (WIN32)
+
 CONFIGURE_FILE(
-  ${JASPER_SOURCE_DIR}/src/libjasper/include/jasper/jas_config.h.in
-  ${JASPER_BINARY_DIR}/src/libjasper/include/jasper/jas_config.h
+  "${GDCMJASPER_SOURCE_DIR}/src/libjasper/include/jasper/jas_config.h.in"
+  "${GDCMJASPER_BINARY_DIR}/src/libjasper/include/jasper/jas_config.h"
   @ONLY IMMEDIATE)