Compiling dcmtk 3.6.6 with C++ Builder 11 using CMake

Compilation and installation of DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
OliWe
Posts: 5
Joined: Tue, 2019-12-10, 08:44

Compiling dcmtk 3.6.6 with C++ Builder 11 using CMake

#1 Post by OliWe »

Hi all,

I am trying to compile dcmtk 3.6.6 with Embarcadero C++Builder 11.0 - bcc64 the clang base C++ compiler.
CMake 3.19.4 is in use (version recommended by Embarcadero).
When pressing the configure Button in Cmake the configuration runs almost to the end - but stops with the following error (Error in configuration process) - any kind of help is most welcome :-)
CMake Error at CMake/GenerateDCMTKConfigure.cmake:1398 (message):
Change Dir:
D:/Coding/Dcmtk/dcmtk-3.6.6_RS_release/CMakeTmp/Arith/CMakeFiles/CMakeTmp



Run Build Command(s):make cmTC_4d630\fast && MAKE Version 5.43 Copyright
(c) 1987, 2019 Embarcadero Technologies, Inc.


make -f CMakeFiles\cmTC_4d630.dir\build.make -l -o
CMakeFiles\cmTC_4d630.dir\build


MAKE Version 5.43 Copyright (c) 1987, 2019 Embarcadero Technologies, Inc.


Building CXX object CMakeFiles/cmTC_4d630.dir/arith.cc.obj


C:\PROGRA~2\EMBARC~1\Studio\22.0\bin\bcc64.exe
@CMakeFiles/cmTC_4d630.dir/includes_CXX.rsp -tM -tR -O0 -g -DDEBUG
-I"D:/Coding/Dcmtk/dcmtk-3.6.6_RS_release/config/include"
-I"D:/Coding/Dcmtk/dcmtk-3.6.6/ofstd/include"
-I"D:/Coding/Dcmtk/dcmtk-3.6.6/ofstd/libsrc"
-oCMakeFiles\cmTC_4d630.dir\arith.cc.obj -P -c
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc


Embarcadero C++ 7.60 for Win64 Copyright (c) 2012-2021 Embarcadero
Technologies, Inc.

D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:

In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:30:


In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests/../math.cc:24:



D:/Coding/Dcmtk/dcmtk-3.6.6_RS_release/config/include\dcmtk/config/osconfig.h:1043:9:
warning: '__MT__' macro redefined [-Wmacro-redefined]


#define __MT__ /* required for _beginthreadex() API in <process.h> */


^


<command line>:4:9: note: previous definition is here


#define __MT__ 1


^


In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:30:


In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests/../math.cc:24:



D:/Coding/Dcmtk/dcmtk-3.6.6_RS_release/config/include\dcmtk/config/osconfig.h:1044:9:
warning: '_MT' macro redefined [-Wmacro-redefined]


#define _MT /* required for _errno on BCB6 */


^


<command line>:3:9: note: previous definition is here


#define _MT 1


^


In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:30:


In file included from
D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests/../math.cc:29:


In file included from
D:/Coding/Dcmtk/dcmtk-3.6.6/ofstd/include\dcmtk/ofstd/ofstdinc.h:62:


In file included from
D:/Coding/Dcmtk/dcmtk-3.6.6/ofstd/include\dcmtk/ofstd/ofstream.h:30:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\iostream:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\istream:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\ostream:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\ios:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\xlocnum:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\limits:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\ymath.h:4:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/dinkumware64\yvals.h:1333:


In file included from
C:/PROGRA~2/EMBARC~1/Studio/22.0/include/windows/crtl\stdarg.h:26:


C:/PROGRA~2/EMBARC~1/Studio/22.0/include/windows/crtl\_stddef.h:43:17:
error: cannot combine with previous 'long long' declaration specifier


typedef __int64 ssize_t;


^



D:/Coding/Dcmtk/dcmtk-3.6.6_RS_release/config/include\dcmtk/config/osconfig.h:1001:17:
note: expanded from macro 'ssize_t'


#define ssize_t long


^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:291:23: error: use of
undeclared identifier 'ldexp'


return float( ldexp( 1.0f, FLT_MIN_EXP - FLT_MANT_DIG ) );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:322:24: error: use of
undeclared identifier 'ldexp'


return double( ldexp( 1.0, DBL_MIN_EXP - DBL_MANT_DIG ) );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:342:36: error: use of
undeclared identifier '_EM_INVALID'


_controlfp( _controlfp(0,0) & ~_EM_INVALID, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:342:49: error: use of
undeclared identifier '_MCW_EM'


_controlfp( _controlfp(0,0) & ~_EM_INVALID, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:382:35: error: use of
undeclared identifier '_EM_INVALID'


_controlfp( _controlfp(0,0) | _EM_INVALID, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:382:48: error: use of
undeclared identifier '_MCW_EM'


_controlfp( _controlfp(0,0) | _EM_INVALID, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:460:17: error: use of
undeclared identifier '_EM_DENORMAL'


_controlfp( _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:460:32: error: use of
undeclared identifier '_EM_UNDERFLOW'


_controlfp( _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:460:48: error: use of
undeclared identifier '_EM_INEXACT'


_controlfp( _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:460:61: error: use of
undeclared identifier '_MCW_EM'


_controlfp( _EM_DENORMAL | _EM_UNDERFLOW | _EM_INEXACT, _MCW_EM );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:489:23: error: use of
undeclared identifier '_EM_UNDERFLOW'


_statusfp() & _EM_UNDERFLOW,

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:518:23: error: use of
undeclared identifier '_EM_UNDERFLOW'


_statusfp() & _EM_UNDERFLOW,

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:127:60: warning: implicit
conversion from 'int' to 'const char' changes value from -129 to 127
[-Wconstant-conversion]


const T max = *OFreinterpret_cast( const T*, all_one ) & ~(T(1) << (sizeof(T) * 8 - 1));

~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:207:22: note: in
instantiation of function template specialization 'test_modulo<char>'
requested here


print_flag( out, test_modulo<T>(), "MODULO", name, 7 );

^


D:\Coding\Dcmtk\dcmtk-3.6.6\config\tests\arith.cc:584:5: note: in
instantiation of function template specialization 'inspect<char>' requested
here


inspect<char>( out, "char" );

^


3 warnings and 13 errors generated.





** error 1 ** deleting CMakeFiles\cmTC_4d630.dir\arith.cc.obj





** error 1 ** deleting cmTC_4d630\fast




Call Stack (most recent call first):
CMakeLists.txt:58 (INSPECT_FUNDAMENTAL_ARITHMETIC_TYPES)

Marco Eichelberg
OFFIS DICOM Team
OFFIS DICOM Team
Posts: 1435
Joined: Tue, 2004-11-02, 17:22
Location: Oldenburg, Germany
Contact:

Re: Compiling dcmtk 3.6.6 with C++ Builder 11 using CMake

#2 Post by Marco Eichelberg »

In brief, that means that the arith.cc test program, which is compiled and executed during the configure phase, does not work with C++ Builder (which is not too surprising, since this is not an officially supported compiler for DCMTK).
You can find this program in config/tests/arith.cc.

Unfortunately there is no easy fix for this since arith.cc is a test program that exercises some low-level functions. Apparently there are problems with the declaration of ssize_t, the ldexp() function and
the flags _EM_INVALID _MCW_EM _EM_UNDERFLOW that are passed to _controlfp().

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest