diff options
author | Scott Wegner <swegner@hdfgroup.org> | 2007-06-15 16:19:16 (GMT) |
---|---|---|
committer | Scott Wegner <swegner@hdfgroup.org> | 2007-06-15 16:19:16 (GMT) |
commit | 71c91c6e85219d325c23ef8f71ff0af23989c0da (patch) | |
tree | 7e5148d1c8e003ba160705dce0efc8a9173db349 | |
parent | 6719b3360a564f648705e521e25db4b837e8156a (diff) | |
download | hdf5-71c91c6e85219d325c23ef8f71ff0af23989c0da.zip hdf5-71c91c6e85219d325c23ef8f71ff0af23989c0da.tar.gz hdf5-71c91c6e85219d325c23ef8f71ff0af23989c0da.tar.bz2 |
[svn-r13868] Updated the Windows static h5pubconf.h to use our new Windows file driver by default. After thorough testing, we think the windows driver is ready to be included.
I've also updated our Windows documentation file to include 64-bit instructions. The process is fairly tedious right now, but we hope to make it more straight-forward when we depreciate 6.0 and re-work our project files.
Tested:
32-bit WinXP: VS6, VS.NET, and VS 2005
64-bit WinXP: VS.NET and VS 2005
-rw-r--r-- | release_docs/INSTALL_Windows.txt | 238 | ||||
-rwxr-xr-x | windows/src/H5pubconf.h | 2 |
2 files changed, 223 insertions, 17 deletions
diff --git a/release_docs/INSTALL_Windows.txt b/release_docs/INSTALL_Windows.txt index ce11cf1..4b8bbf0 100644 --- a/release_docs/INSTALL_Windows.txt +++ b/release_docs/INSTALL_Windows.txt @@ -23,8 +23,9 @@ Contents: Section VIII : How to build Multi-threaded version of HDF5 library Section IX : How to build and test HDF5 snapshot release Section X : How to build HDF5 with Thread-Safe Feature - Section XI : How to build HDF5 in Visual studio 2005 - Section XII : Misc. + Section XI : How to build HDF5 in Visual Studio 2005 + Section XII : How to build HDF5 for 64-bit Windows + Section XIII : Misc. ======================================================================== @@ -2118,25 +2119,230 @@ by other compilers. Go back to Section II, Step I(2) to Build, test and install HDF5 libary and tools. ======================================================================== -Section XI: How to build HDF5 in Visual studio 2005 on windows 32-bit and - 64-bit platform + Section XI: How to build HDF5 in Visual Studio 2005 ======================================================================== + The building procedure is almost the same as building HDF5 on .Net 2003. - For 64-bit, currently we only support HDF5 as an 32-bit application and - you may need to pay attention to the following reminders: - 1) To use zlib or szlib compression packages: - Use zlib 1.2.2 DLL provided at - ftp://ftp.hdfgroup.org/lib-external/zlib/1.2/bin/zlib123-windows.zip - Use szlib 2.0 DLL provided at - ftp://ftp.hdfgroup.org/lib-external/szip/2.0/bin/windows/xp-net - 2) Make sure that WIN32 macro is set at visual studio 2005. - 3) You may use _CRT_SECURE_NO_DEPRECATE to disable the warnings. Please refer to Section VI: How to build HDF5 in Visual Studio .Net 2003. - Please also note that the example workspace may not work properly. You may - need to reset hdf5 library path. + + ======================================================================== - Section XII: Misc. + Section XII: How to build HDF5 for 64-bit Windows +======================================================================== + +HDF5 can be built for 64-bit Windows in Visual Studio .NET 2003 or Visual +Studio 2005. Visual Studio 2005 offers much greater support, and the build +process is much more straight-forward, so we recommend all users switch to +Visual Studio 2005 for 64-bit builds. However, we still provide instruction +for .NET. + +Notes: + + 1. 32-bit binaries cannot be linked with 64-bit binaries, and therefore + external libraries (szip and zlib. and currently not supported. In the + future we plan to build these libraries natively and offer support. + + 2. Fortran libraries are currently untested and unsupported. + + 3. Building 64-bit HDF5 from a 32-bit machine is also unsupported. Because + we generate H5tinit.c from a generated 64-bit executable, this must be + done on a 64-bit machine. + + +Prerequisites: + + 1. A 64-bit Windows machine. Either AMD64 and Itanium is supported. + + 2. Either Visual Studio .NET or 2005. Visual Studio 2005 is recommended. + + 3. If building with .NET, the lastest version of the Windows Platform SDK + must be installed. The latest version can be found at: + http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ + If building with 2005, Visual Studio must have been installed with the + x64 compiler tools. + + +Building: + + 1. Copy Windows-related files + + From the directory .\windows, run copy_hdf.bat. This will copy + Windows-related files to their neccessarily locations within the source + directory. + + 2. Open the IDE + + For Visual Studio 2005, this simply involves opening as normal. + + In .NET, you must first open a 64-bit build environment command prompt. + To do this, go to the start menu and open Microsoft Platform SDK, + Open Build Environment Window, Windows XP 64-bit Build Environment, + and Set Windows XP x64 Build Env (Retail). This sets up the neccessary + path for Visual Studio. .NET must then be launched from that command + prompt. This can be done by issuing the command: + start "" "C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\ + Common7\IDE\devenv.exe" /useenv + + + 3. Generate H5tinit.c + + 3.1 Open the workspace typegen.dsw from the folder .\windows\misc\typgen. + Visual Studio will convert this to .sln and .vcproj files. + + 3.2 Set the Target Machine. + + In .NET, this is done by right clicking on the "h5tinit" project, + and selecting "Properties". Make sure your configuration is set + to Release, and go to Linker, Advanced. For the "Target Machine", + select "Not Set". Then, under Linker, Command Line, add + "/machine:AMD64" for AMD, or /machine:IA64 for Itanium. + + In Visual Studio 2005, go to Build, Configuration Manager. For the + "Active solution platform", select "<New...>". In the dialog, + select x64 for the platform, and copy settings from "Win32". Make + sure "Create new project platforms" is checked. + + 3.3 Modify H5detect.c + + In H5detect.c, find the function sigbus_handler. Windows does have + siglongjmp, but it can be safely removed. Comment out the following + line: + siglongjmp(jbuf_g, 1); + + Then, right click on the project h5tinit, and select Properties. + Make sure your configuration is set to Release, and select Linker, + Input. From "Force Symbol References", remove "gethostname@8". + + Also, in .NET, in "Additional Dependencies", add + "bufferoverflowU.lib". + + 3.4 Build H5tinit.exe + + Make sure your configuration is set to Release, and build the + project. This will generate H5tinit.exe in the .\src folder. + + 3.5 Create H5tinit.c + + From a command prompt, go to the .\src directory and issue the + command: + .\H5tinit.exe > H5tinit.c + This will generate our H5tinit.c file. + + 4. Build the library + + 4.1 Open the workspace all.dsw from the folder .\windows\proj\all. If + using Visual Studio .NET, this should be launched from the same + window, or open another window the same way you did in Step 2. + + 4.2 Select the Target Machine + + In the same way you did in Step 3.2, set the Target Machine for + 64-bit. If using .NET, this needs to be done for all projects + that produce an executable or dll. You can recognize these because + in the Property dialog, they have a "Linker" section, rather than + a "Librarian" section. + + 4.3 Modify Project Settings + + Similar to Step 3.3, we must remove "gethostname@8" from the list of + "Force Symbol References" for each project that has it. Although + tedious, this must be done, or Visual Studio will issue a linker + error. For Visual Studio 2005, this must be done for both debug + and release versions. In .NET, we only build release. + + In .NET, we also need to add "bufferoverflowU.lib" as a dependency + for several projects. You can simply add it to all projects that + produce an executable or dll, or identify specific projects that + need it at build-time because they will fail with a link error + such as: + error LNK2001: unresolved external symbol __security_cookie + this library must be explicitly added for that project. + + 4.4 Modify H5pubconf.h + + Open H5pubconf.h from the .\src directory. Because we are not using + zlib or szip libraries, we must comment out the following lines: + + #define H5_HAVE_FILTER_DEFLATE 1 + #define H5_HAVE_ZLIB_H 1 + + #define H5_HAVE_SZLIB_H 1 + #define H5_HAVE_FILTER_SZIP 1 + + 4.5 Disable projects + + In Visual Studio, open the configuration manager and disable all + Fortran projects, as well as ttsafedll. Disable the following + projects: + + flush1_fortran + flush1_fortrandll + flush2_fortran + flush2_fortrandll + hdf5_f90cstub + hdf5_f90cstubdll + hdf5_fortran + hdf5_fortrandll + hdf5_hl_fortran + hdf5_hl_fortrandll + hl_test_image_fortran + hl_test_image_fortrandll + hl_test_lite_fortran + hl_test_lite_fortrandll + hl_test_table_fortran + hl_test_table_fortrandll + libtest_cstubdll + libtest_fortran + libtest_fortrandll + testhdf5_fortran + testhdf5_fortrandll + ttsafedll + + If you aren't using the C++ library, you may disable those projects + as well. For Visual Studio 2005, this must be done for both Release + and Debug versions. + + 4.6 Build + + In Visual Studio, select Build, Build Solution. In Visual Studio + 2005, you may build Debug and Release versions, but in .NET, only + release builds are supported. + + +Testing: + + We provide a test suite to verify all libraries and tools were built + successfully. This test suite should work identically on 32- and 64- bit + builds. + + Note that because 64-bit binaries were built, these tests must run on a + 64-bit machine. + + If built with Visual Studio 2005, simply open a command prompt, and from + the root hdf5 directory, issue the command "hdf5check". If C++ libraries + were built, you may test them at the same time with the command + "hdf5check enablecpp". + + If built with Visual Studio .NET, debug versions of the library will not + be present, and the test scripts must be altered by hand to reflect this. + In a text editor, open hdf5check.bat from the root hdf5 folder, and comment + or remove test sections for "Debug" or "Debug DLL". The layout is fairly + straight-forward, but as an alternative, you may manually run each of the + other various sub- test scripts with the "release" and "release dll" + parameters. + + +Installing: + + We provide a script that will install all headers, libraries, and tools + into one folder, hdf5lib. From the root hdf5 directory, run the script + "installhdf5lib.bat". This will create the hdf5lib folder, and create + subdirectories containing all relevent files. This should work identically + on 32- an 64-bit Windows. + +======================================================================== + Section XIII: Misc. ======================================================================== 1. Helpful Pointers diff --git a/windows/src/H5pubconf.h b/windows/src/H5pubconf.h index c75f93a..aac8f41 100755 --- a/windows/src/H5pubconf.h +++ b/windows/src/H5pubconf.h @@ -119,7 +119,7 @@ in the file file_io.win32.c and including it on the projects #define H5_HAVE_FILTER_SZIP 1 /* change the following line if you would like to change the default file driver */ -#define H5_DEFAULT_VFD H5FD_SEC2 +#define H5_DEFAULT_VFD H5FD_WINDOWS /* comment the following line out if you don't want to build the windows file driver */ |