I have the changes so I'll talk to Allen B. about how best to get them submitted. ___________________________________________________________ Mike Jackson www.bluequartz.net
On Apr 1, 2011, at 5:51 PM, Rodolfo Bonnin wrote: > I was able to build the dll, many thanks Michael! I hope you can > integrate your changes with the current code. > > Regards, > Ing. Rodolfo Bonnin. > > 2011/4/1 Rodolfo Bonnin <[email protected]>: >> Great Michael! >> >> I'll research about these changes, I agree that now the hdf developers >> are aware of the problem and a solution for them. >> >> Many thanks and regards. >> >> 2011/4/1 Michael Jackson <[email protected]>: >>> And further for MinGW inside of test/CMakeLists.txt at about line 27 >>> you will need to insert the following block to get the tests to >>> successfully compile against DLLs: >>> IF (MINGW) >>> target_link_libraries(${HDF5_TEST_LIB_TARGET} "wsock32") >>> ENDIF(MINGW) >>> >>> I have been able to get the tests to compile. Started the run and some >>> are passing and some are failing. At this point it may be debuggable >>> by the HDF engineers. >>> >>> I used the Qt SDK from Trolltech (Nokia), setup a custom batch file >>> to initialize all the paths, invoked cmake-gui.exe from a command >>> prompt and configured for MinGW Makefiles. >>> _________________________________________________________ >>> Mike Jackson [email protected] >>> BlueQuartz Software www.bluequartz.net >>> Principal Software Engineer Dayton, Ohio >>> >>> >>> >>> On Fri, Apr 1, 2011 at 3:29 PM, Michael Jackson >>> <[email protected]> wrote: >>>> So I did some digging into HDF5 1.8 CMake and MinGW and here is what I >>>> came up with. There are some basic errors in the CMake file at >>>> config/cmake/ConfigureChecks.cmake. Namely there is a section that >>>> says: >>>> >>>> SET (WINDOWS) >>>> IF (WIN32) >>>> IF (NOT UNIX AND NOT CYGWIN) >>>> SET (WINDOWS 1) >>>> ENDIF (NOT UNIX AND NOT CYGWIN) >>>> ENDIF (WIN32) >>>> >>>> The problem is that on MinGW the "WINDOWS" variable will be set to 1 >>>> which has bad ramifications about what is available on the system >>>> later on in the file. So we change that to this: >>>> >>>> SET (WINDOWS) >>>> IF (WIN32) >>>> IF (NOT UNIX AND NOT CYGWIN AND NOT MINGW) >>>> SET (WINDOWS 1) >>>> ENDIF (NOT UNIX AND NOT CYGWIN AND NOT MINGW) >>>> ENDIF (WIN32) >>>> >>>> Then later on in that file there is an "IF (NOT WINDOWS)" block >>>> starting at line 551. That needs to be changed to the following: >>>> >>>> IF (NOT WINDOWS) >>>> FOREACH (test >>>> TIME_WITH_SYS_TIME >>>> STDC_HEADERS >>>> HAVE_TM_ZONE >>>> HAVE_STRUCT_TM_TM_ZONE >>>> HAVE_ATTRIBUTE >>>> HAVE_FUNCTION >>>> HAVE_TM_GMTOFF >>>> HAVE_STRUCT_TIMEZONE >>>> HAVE_STAT_ST_BLOCKS >>>> HAVE_FUNCTION >>>> SYSTEM_SCOPE_THREADS >>>> HAVE_SOCKLEN_T >>>> DEV_T_IS_SCALAR >>>> HAVE_OFF64_T >>>> GETTIMEOFDAY_GIVES_TZ >>>> VSNPRINTF_WORKS >>>> HAVE_C99_FUNC >>>> HAVE_C99_DESIGNATED_INITIALIZER >>>> CXX_HAVE_OFFSETOF >>>> LONE_COLON >>>> ) >>>> HDF5_FUNCTION_TEST (${test}) >>>> ENDFOREACH (test) >>>> IF (NOT CYGWIN AND NOT MINGW) >>>> HDF5_FUNCTION_TEST (HAVE_TIMEZONE) >>>> ENDIF (NOT CYGWIN AND NOT MINGW) >>>> ENDIF (NOT WINDOWS) >>>> >>>> Note that for MinGW we are NOT checking for 'timezone' as a previous >>>> test for HAVE_STRUCT_TIMEZONE passes. >>>> >>>> Note that at line 509 (FOREACH block) has an error in it and it should be >>>> this: >>>> FOREACH (def >>>> HAVE_SYS_TIME_H >>>> HAVE_UNISTD_H >>>> HAVE_SYS_TYPES_H >>>> HAVE_SYS_SOCKET_H >>>> ) >>>> IF ("${H5_${def}}") >>>> SET (MACRO_CHECK_FUNCTION_DEFINITIONS >>>> "${MACRO_CHECK_FUNCTION_DEFINITIONS} -D${def}") >>>> ENDIF ("${H5_${def}}") >>>> ENDFOREACH (def) >>>> so it matches HDF5Tests.c which also has some tweaks that need to be fixed. >>>> >>>> SOOOOO after all of that we get down to what is going on with MinGW. >>>> MinGW does in fact have a sys/time.h file which has this declaration: >>>> /* Provided for compatibility with code that assumes that >>>> the presence of gettimeofday function implies a definition >>>> of struct timezone. */ >>>> struct timezone >>>> { >>>> int tz_minuteswest; /* of Greenwich */ >>>> int tz_dsttime; /* type of dst correction to apply */ >>>> }; >>>> >>>> Note that this is a "Declaration" and NOT a definition so no memory is >>>> actually reserved for the "timezone" struct. But with the above >>>> changes to the CMake files and if you reconfigure with CMake on a >>>> CLEAN build directory you should be able to now get MinGW to compile >>>> HDF5 1.8. >>>> >>>> Now here is the part I don't understand. On MinGW the following will >>>> compile: >>>> >>>> #include <sys/time.h> >>>> int main() >>>> { >>>> timezone = 0; >>>> return 0; >>>> } >>>> which if we actually use that as a test we get a false positive for >>>> H5_HAVE_TIMEZONE which makes it get defined in H5pubconf.h that CMake >>>> generates. So in the file H5Omtime.c we end up taking the wrong code >>>> path at line 226 and somehow get a compile error although the two uses >>>> look the same there is something different. Either way it is probably >>>> just wrong under MinGW. With the CMake corrections all the proper >>>> #defines get set and we take another code path in H5Omtime.c which >>>> allows us to compile both as static and as dynamic libraries. >>>> I have just started trying to get the tests to compile. >>>> >>>> Since I don't know squat about svn or remember my credentials to push >>>> up to the source code repository I'll have to figure out how to get >>>> all the changes placed somewhere. >>>> >>>> _________________________________________________________ >>>> Mike Jackson [email protected] >>>> BlueQuartz Software www.bluequartz.net >>>> Principal Software Engineer Dayton, Ohio >>>> >>>> >>>> >>>> On Fri, Apr 1, 2011 at 11:23 AM, Michael Jackson >>>> <[email protected]> wrote: >>>>> For the configure side of things, I'll ask the stupid question and you >>>>> did tell configure you wanted shared libraries? >>>>> >>>>> For the CMake side of things, was time.h included in the file that can't >>>>> find the definition? And if it _is_ included, and timezone is defined in >>>>> the file what is happening during the compile process that makes >>>>> "timezone" NOT defined, in other words, is there some preprocessor define >>>>> that is NOT getting set properly allowing the code path in time.h to >>>>> define timezone? You may have to start manually setting #error in some of >>>>> the system header files to deduce what is happening. Meanwhile I'll try >>>>> and pull the Qt SDK that has MinGW in it to see if I can eventually set >>>>> something up. This would be a nice CDash submission. >>>>> -- >>>>> Mike Jackson <www.bluequartz.net> >>>>> >>>>> On Apr 1, 2011, at 11:00 AM, Rodolfo Bonnin wrote: >>>>> >>>>>> What is is strange is that the library compiles using configure, but >>>>>> it doesn't generate the dll . >>>>>> >>>>>> 2011/4/1 Michael Jackson <[email protected]>: >>>>>>> I don't have a setup where I can test this but what header file is >>>>>>> "timezone" defined in MinGW? And is that file included at the top of >>>>>>> H5Omtime.c? It would be nice if HDF5 would compile under MinGW if we >>>>>>> can get this fixed. >>>>>>> -- >>>>>>> Mike Jackson <www.bluequartz.net> >>>>>>> >>>>>>> On Apr 1, 2011, at 10:04 AM, Rodolfo Bonnin wrote: >>>>>>> >>>>>>>> It is MinGW 4.4.0, the one included in the last QT SDK. >>>>>>>> >>>>>>>> Regards >>>>>>>> >>>>>>>> 2011/4/1 Michael Jackson <[email protected]>: >>>>>>>>> What version of MinGW are you using? Older versions of MinGW are >>>>>>>>> missing standard headers related to time/date functions. >>>>>>>>> ___________________________________________________________ >>>>>>>>> Mike Jackson www.bluequartz.net >>>>>>>>> Principal Software Engineer [email protected] >>>>>>>>> BlueQuartz Software Dayton, Ohio >>>>>>>>> >>>>>>>>> On Apr 1, 2011, at 9:26 AM, Rodolfo Bonnin wrote: >>>>>>>>> >>>>>>>>>> Hello all, >>>>>>>>>> >>>>>>>>>> I'm trying to build libhdf5 dll using msys and MinGW. >>>>>>>>>> >>>>>>>>>> Using the configure/make method doesn't generate the dll, and after >>>>>>>>>> searching for answers, it seems probable that there were no >>>>>>>>>> provisions >>>>>>>>>> to have the dll built with that platform, althought adding this task >>>>>>>>>> seems possible. How can I modify the configure script in order to add >>>>>>>>>> the dll building step? >>>>>>>>>> >>>>>>>>>> On the other hand, building with CMake, I've got the error >>>>>>>>>> >>>>>>>>>> H5Omtime.c:226: error: 'timezone' undeclared (first use in this >>>>>>>>>> function) >>>>>>>>>> >>>>>>>>>> Which I have seen can be related with the use of an ancient struct >>>>>>>>>> no >>>>>>>>>> more available. Is there any flag I should use to avoid this error? >>>>>>>>>> >>>>>>>>>> Many thanks in advance. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Ing. Rodolfo Bonnin >>>>>>>>>> SUR Emprendimientos Tecnológicos >>>>>>>>>> >>>>>>>>>> Perú 345 Piso 5to Oficina "B" (C1067AAG) >>>>>>>>>> Ciudad de Buenos Aires, Argentina >>>>>>>>>> Tel. +54 (11) 4342-2976/84 >>>>>>>>>> [email protected] >>>>>>>>>> www.suremptec.com >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Hdf-forum is for HDF software users discussion. >>>>>>>>>> [email protected] >>>>>>>>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Hdf-forum is for HDF software users discussion. >>>>>>>>> [email protected] >>>>>>>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Ing. Rodolfo Bonnin >>>>>>>> SUR Emprendimientos Tecnológicos >>>>>>>> >>>>>>>> Perú 345 Piso 5to Oficina "B" (C1067AAG) >>>>>>>> Ciudad de Buenos Aires, Argentina >>>>>>>> Tel. +54 (11) 4342-2976/84 >>>>>>>> [email protected] >>>>>>>> www.suremptec.com >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Hdf-forum is for HDF software users discussion. >>>>>>>> [email protected] >>>>>>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Hdf-forum is for HDF software users discussion. >>>>>>> [email protected] >>>>>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Ing. Rodolfo Bonnin >>>>>> SUR Emprendimientos Tecnológicos >>>>>> >>>>>> Perú 345 Piso 5to Oficina "B" (C1067AAG) >>>>>> Ciudad de Buenos Aires, Argentina >>>>>> Tel. +54 (11) 4342-2976/84 >>>>>> [email protected] >>>>>> www.suremptec.com >>>>>> >>>>>> _______________________________________________ >>>>>> Hdf-forum is for HDF software users discussion. >>>>>> [email protected] >>>>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> Hdf-forum is for HDF software users discussion. >>> [email protected] >>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org >>> >> >> >> >> -- >> Ing. Rodolfo Bonnin >> SUR Emprendimientos Tecnológicos >> >> Perú 345 Piso 5to Oficina "B" (C1067AAG) >> Ciudad de Buenos Aires, Argentina >> Tel. +54 (11) 4342-2976/84 >> [email protected] >> www.suremptec.com >> > > > > -- > Ing. Rodolfo Bonnin > SUR Emprendimientos Tecnológicos > > Perú 345 Piso 5to Oficina "B" (C1067AAG) > Ciudad de Buenos Aires, Argentina > Tel. +54 (11) 4342-2976/84 > [email protected] > www.suremptec.com > > _______________________________________________ > Hdf-forum is for HDF software users discussion. > [email protected] > http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org _______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
