From: Jan Schlamelcher Date: Fri, 4 Jul 2014 10:02:51 +0000 (+0200) Subject: [PATCH] Fixed OFoptional by introducing OFalign? X-Git-Tag: archive/raspbian/3.6.8-6+rpi1~1^2^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8b1a768e846ca147fb25086fb904e8d75907d066;p=dcmtk.git [PATCH] Fixed OFoptional by introducing OFalign? Gbp-Pq: Name 04_Fixed-OFoptional-by-introducing-OFalign.patch --- diff --git a/CMake/osconfig.h.in b/CMake/osconfig.h.in index 3918adc1..bbc49c62 100644 --- a/CMake/osconfig.h.in +++ b/CMake/osconfig.h.in @@ -1223,4 +1223,7 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no /* Define if the input iterator category is supported */ #cmakedefine HAVE_CONTIGUOUS_ITERATOR_CATEGORY @HAVE_CONTIGUOUS_ITERATOR_CATEGORY@ +/* Define if the compiler supports __declspec(align) */ +#cmakedefine HAVE_DECLSPEC_ALIGN + #endif /* !OSCONFIG_H*/ diff --git a/config/aclocal.m4 b/config/aclocal.m4 index 4641a4c0..0c4e0af7 100644 --- a/config/aclocal.m4 +++ b/config/aclocal.m4 @@ -1985,6 +1985,47 @@ AC_DEFUN([AC_CHECK_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE], fi ]) +AC_DEFUN([AC_CHECK_ALIGNOF], +[ + AC_MSG_CHECKING([for __alignof__]) + AC_LINK_IFELSE( + [ + AC_LANG_SOURCE( + [ + int main(){char c[__alignof__(int)];return 0;} + ]) + ], + [dcmtk_have_alignof=[yes]], + [dcmtk_have_alignof=[no]] + ) + if test "$dcmtk_have_alignof" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE($1,[1],[Define if __alignof__ is available]) + else + AC_MSG_RESULT([no]) + fi +]) + +AC_DEFUN([AC_CHECK_ATTRIBUTE_ALIGNED], +[ + AC_MSG_CHECKING([for __attribute__((aligned))]) + AC_LINK_IFELSE( + [ + AC_LANG_SOURCE( + [ + int main(){__attribute__((aligned(4))) char c[16];return 0;} + ]) + ], + [dcmtk_have_attribute_aligned=[yes]], + [dcmtk_have_attribute_aligned=[no]] + ) + if test "$dcmtk_have_attribute_aligned" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE($1,[1],[Define if __attribute__((aligned)) is available]) + else + AC_MSG_RESULT([no]) + fi +]) dnl dnl This macro checks if a given preprocessor symbol exists and is a string diff --git a/config/configure b/config/configure index 4c04502f..ca43dfe1 100755 --- a/config/configure +++ b/config/configure @@ -17103,6 +17103,66 @@ $as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __alignof__" >&5 +$as_echo_n "checking for __alignof__... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + int main(){char c__alignof__(int);return 0;} + + +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + dcmtk_have_alignof=yes +else + dcmtk_have_alignof=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$dcmtk_have_alignof" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_GNU_ALIGNOF 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((aligned))" >&5 +$as_echo_n "checking for __attribute__((aligned))... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + int main(){__attribute__((aligned(4))) char c16;return 0;} + + +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + dcmtk_have_attribute_aligned=yes +else + dcmtk_have_attribute_aligned=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$dcmtk_have_attribute_aligned" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_ATTRIBUTE_ALIGNED 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + CFLAGS="$DEBUGCFLAGS $CFLAGS" CXXFLAGS="$DEBUGCXXFLAGS $CXXFLAGS" diff --git a/ofstd/tests/toption.cc b/ofstd/tests/toption.cc index 7e907ea2..ea317246 100644 --- a/ofstd/tests/toption.cc +++ b/ofstd/tests/toption.cc @@ -38,6 +38,11 @@ OFTEST(ofstd_optional) OFoptional o0( 3 ), o1, o2( OFnullopt ); + COUT << OFalignof(OFoptional) << ' ' << sizeof(OFoptional) << OFendl; + COUT << OFalignof(OFoptional) << ' ' << sizeof(OFoptional) << OFendl; + COUT << OFalignof(OFoptional) << ' ' << sizeof(OFoptional) << OFendl; + COUT << OFalignof(long) << ' ' << sizeof(long) << ' ' << OFalignof(OFoptional) << ' ' << sizeof(OFoptional) << OFendl; + OFCHECK( o0 && *o0 == 3 ); OFCHECK( !o1 && !o2 );