From: <arj...@us...> - 2010-08-17 06:42:31
|
Revision: 11137 http://plplot.svn.sourceforge.net/plplot/?rev=11137&view=rev Author: arjenmarkus Date: 2010-08-17 06:42:25 +0000 (Tue, 17 Aug 2010) Log Message: ----------- Add .def files for Intel Fortran (and corresponding support in CMakeLists.txt file) Add a few missing subroutines for Fortran 77 to the .def file (must still be checked for CVF) - similiarly for Fortran 95 Add a new linkage macro for Intel Fortran Some questions though: why does gfortran not need the entries for plmap1/2 and plmeridians1/2? Note that while Intel Fortran now gives nice results (as does gfortran under MinGW) when using makefiles, there is a problem with VS2008 solutions. This needs to be sorted out. Modified Paths: -------------- trunk/bindings/f77/CMakeLists.txt trunk/bindings/f77/plplotf77.def trunk/bindings/f77/plplotf77_mingw.def trunk/bindings/f77/plstubs.h trunk/bindings/f95/CMakeLists.txt trunk/bindings/f95/plstubs.h trunk/bindings/f95/sfstubsf95.f90 Added Paths: ----------- trunk/bindings/f77/plplotf77_ifort.def trunk/bindings/f95/plplotf95_ifort.def Modified: trunk/bindings/f77/CMakeLists.txt =================================================================== --- trunk/bindings/f77/CMakeLists.txt 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f77/CMakeLists.txt 2010-08-17 06:42:25 UTC (rev 11137) @@ -47,8 +47,10 @@ # Set the flags for the C compiler. The C stubs need to have the # correction case and calling convention for the Fortran compiler IF(TARGET_FORTRAN MATCHES "IVF") + SET(DEFFILE "_ifort") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DIVF") ELSEIF(TARGET_FORTRAN MATCHES "CVF") + SET(DEFFILE "") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DCVF") ENDIF(TARGET_FORTRAN MATCHES "IVF") endif(WIN32) @@ -144,7 +146,7 @@ if(WIN32 AND BUILD_SHARED_LIBS AND NOT CYGWIN AND NOT MINGW) - SET(plplotf77${LIB_TAG}_LIB_SRCS ${plplotf77${LIB_TAG}_LIB_SRCS} plplotf77.def) + SET(plplotf77${LIB_TAG}_LIB_SRCS ${plplotf77${LIB_TAG}_LIB_SRCS} plplotf77${DEFFILE}.def) endif(WIN32 AND BUILD_SHARED_LIBS AND NOT CYGWIN AND NOT MINGW) add_library(plplotf77${LIB_TAG} ${plplotf77${LIB_TAG}_LIB_SRCS}) Modified: trunk/bindings/f77/plplotf77.def =================================================================== --- trunk/bindings/f77/plplotf77.def 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f77/plplotf77.def 2010-08-17 06:42:25 UTC (rev 11137) @@ -17,7 +17,9 @@ _PLIMAGEFR@48 _PLLAB@24 _PLMAP@28 + _PLMAP_NONE@24 _PLMERIDIANS@28 + _PLMERIDIANS_NONE@24 _PLMTEX3@28 _PLMTEX@28 _PLPARSEOPTS@4 Added: trunk/bindings/f77/plplotf77_ifort.def =================================================================== --- trunk/bindings/f77/plplotf77_ifort.def (rev 0) +++ trunk/bindings/f77/plplotf77_ifort.def 2010-08-17 06:42:25 UTC (rev 11137) @@ -0,0 +1,47 @@ +EXPORTS + PLABORT + PLAXES + PLBOX3 + PLBOX + PLCON0 + PLCON1 + PLCON2 + PLCONT + PLGDEV + PLGFNAM + PLSFNAM + PLGVER + PLIMAGEFR0 + PLIMAGEFR1 + PLIMAGEFR2 + PLIMAGEFR + PLLAB + PLMAP + PLMAP_NONE + PLMERIDIANS + PLMERIDIANS_NONE + PLMTEX3 + PLMTEX + PLPARSEOPTS + PLPTEX3 + PLPTEX + PLSDEV + PLSETOPT + PLSHADE0 + PLSHADE1 + PLSHADE2 + PLSHADE + PLSHADES0 + PLSHADES1 + PLSHADES2 + PLSHADES + PLSPAL0 + PLSPAL1 + PLSPAUSE + PLSTART + PLSTRC2F + PLSTRIPC + PLTIMEFMT + PLVEC0 + PLVEC1 + PLVEC2 Modified: trunk/bindings/f77/plplotf77_mingw.def =================================================================== --- trunk/bindings/f77/plplotf77_mingw.def 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f77/plplotf77_mingw.def 2010-08-17 06:42:25 UTC (rev 11137) @@ -18,7 +18,9 @@ plimagefr_ pllab_ plmap_ + plmap_none_ plmeridians_ + plmeridians_none_ plmtex3_ plmtex_ plparseopts_ Modified: trunk/bindings/f77/plstubs.h =================================================================== --- trunk/bindings/f77/plstubs.h 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f77/plstubs.h 2010-08-17 06:42:25 UTC (rev 11137) @@ -54,6 +54,7 @@ #define STUB_FORTRAN 4 #define STUB_STDCALL 5 #define STUB_MINGW 6 +#define STUB_IVF 7 #ifndef STUB_LINKAGE @@ -91,9 +92,9 @@ #endif #endif -#ifdef WIN32 /* Windows 32-bit */ -#ifdef IVF /* Intel Visual Fortran */ -#define STUB_LINKAGE STUB_U +#if defined( WIN32 ) /* Windows 32-bit */ +#if defined( IVF ) /* Intel Visual Fortran */ +#define STUB_LINKAGE STUB_IVF #elif defined ( CVF ) /* MSVC/CVF */ #define STUB_LINKAGE STUB_U #elif defined ( MSDOS ) /* MS-DOS based */ @@ -143,6 +144,10 @@ #define FNAME( x, y ) PLDLLIMPEXP_F77C y ## _ #define FNAME_( x, y ) y +#elif STUB_LINKAGE == STUB_IVF +#define FNAME( x, y ) PLDLLIMPEXP_F77C x +#define FNAME_( x, y ) x + #else #error "Illegal setting for STUB_LINKAGE" #endif Modified: trunk/bindings/f95/CMakeLists.txt =================================================================== --- trunk/bindings/f95/CMakeLists.txt 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f95/CMakeLists.txt 2010-08-17 06:42:25 UTC (rev 11137) @@ -49,8 +49,10 @@ # Set the flags for the C compiler. The C stubs need to have the # correct case and calling convention for the Fortran compiler IF(TARGET_FORTRAN MATCHES "IVF") + SET(DEFFILE "_ifort") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DIVF") ELSEIF(TARGET_FORTRAN MATCHES "CVF") + SET(DEFFILE "") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DCVF") ENDIF(TARGET_FORTRAN MATCHES "IVF") endif(WIN32) @@ -95,7 +97,7 @@ RUNTIME DESTINATION ${BIN_DIR} ) - # Build fortran part of F95 bindings. + # Build fortran part of F95 bindings. # Notes: # configurable.f90 is actually not currently configurable. @@ -124,7 +126,7 @@ endif(STATIC_OPTS) if(WIN32 AND BUILD_SHARED_LIBS AND NOT MINGW AND NOT CYGWIN) - SET(plplotf95${LIB_TAG}_LIB_SRCS ${plplotf95${LIB_TAG}_LIB_SRCS} plplotf95.def) + SET(plplotf95${LIB_TAG}_LIB_SRCS ${plplotf95${LIB_TAG}_LIB_SRCS} plplotf95${DEFFILE}.def) endif(WIN32 AND BUILD_SHARED_LIBS AND NOT MINGW AND NOT CYGWIN) add_library(plplotf95${LIB_TAG} ${plplotf95${LIB_TAG}_LIB_SRCS}) Added: trunk/bindings/f95/plplotf95_ifort.def =================================================================== --- trunk/bindings/f95/plplotf95_ifort.def (rev 0) +++ trunk/bindings/f95/plplotf95_ifort.def 2010-08-17 06:42:25 UTC (rev 11137) @@ -0,0 +1,83 @@ +LIBRARY plplotf95d.dll +EXPORTS + PLPARSEOPTS + PLPLOTP_mp_PLSETOPT + PLPLOTP_mp_PLSDEV + PLPLOTP_mp_PLGDEV + PLPLOTP_mp_PLSFNAM + PLPLOTP_mp_PLGFNAM + PLPLOTP_mp_PLGVER + PLPLOTP_mp_PLAXES + PLPLOTP_mp_PLBOX + PLPLOTP_mp_PLBOX3 + PLPLOTP_mp_PLCONTOUR_0 + PLPLOTP_mp_PLCONTOUR_1 + PLPLOTP_mp_PLCONTOUR_2 + PLPLOTP_mp_PLCONTOUR_TR + PLPLOTP_mp_PLCONTOUR_0_ALL + PLPLOTP_mp_PLCONTOUR_1_ALL + PLPLOTP_mp_PLCONTOUR_2_ALL + PLPLOTP_mp_PLCONTOUR_TR_ALL + PLPLOT_mp_PLGRADIENT + PLPLOTP_mp_PLVECTORS_0 + PLPLOTP_mp_PLVECTORS_1 + PLPLOTP_mp_PLVECTORS_2 + PLPLOTP_mp_PLVECTORS_TR + PLPLOTP_mp_PLSHADE_SINGLE_0 + PLPLOTP_mp_PLSHADE_SINGLE_1 + PLPLOTP_mp_PLSHADE_SINGLE_2 + PLPLOTP_mp_PLSHADE_SINGLE_TR + PLPLOTP_mp_PLSHADES_MULTIPLE_0 + PLPLOTP_mp_PLSHADES_MULTIPLE_1 + PLPLOTP_mp_PLSHADES_MULTIPLE_2 + PLPLOTP_mp_PLSHADES_MULTIPLE_TR + PLPLOTP_mp_PLSPAL0 + PLPLOTP_mp_PLSPAL1 + PLPLOTP_mp_PLLAB + PLPLOTP_mp_PLMTEX + PLPLOTP_mp_PLMTEX3 + PLPLOTP_mp_PLPTEX + PLPLOTP_mp_PLPTEX3 + PLPLOTP_mp_PLSTART + PLPLOT_mp_PLMAP1 + PLPLOT_mp_PLMAP2 + PLPLOT_mp_PLMERIDIANS1 + PLPLOT_mp_PLMERIDIANS2 + PLPLOTP_mp_PLTIMEFMT + PLPLOT_mp_PLBIN + PLPLOT_mp_PLCPSTRM + PLPLOT_mp_PLERRX + PLPLOT_mp_PLERRY + PLPLOT_mp_PLFILL + PLPLOT_mp_PLFILL3 + PLPLOT_mp_PLGRIDDATA + PLPLOT_mp_PLHIST + PLPLOT_mp_PLIMAGE + PLPLOTP_mp_PLIMAGEFR_0 + PLPLOTP_mp_PLIMAGEFR_1 + PLPLOTP_mp_PLIMAGEFR_2 + PLPLOTP_mp_PLIMAGEFR_TR + PLPLOT_mp_PLLINE + PLPLOT_mp_PLLINE3 + PLPLOT_mp_PLMESH + PLPLOT_mp_PLMESHC + PLPLOT_mp_PLOT3D + PLPLOT_mp_PLOT3DC + PLPLOT_mp_PLRANDD + PLPLOT_mp_PLSPAUSE + PLPLOT_mp_PLSURF3D + PLPLOT_mp_PLPOIN + PLPLOT_mp_PLPOIN3 + PLPLOT_mp_PLPOLY3 + PLPLOT_mp_PLSCMAP0 + PLPLOT_mp_PLSCMAP0A + PLPLOT_mp_PLSCMAP1 + PLPLOT_mp_PLSCMAP1A + PLPLOT_mp_PLSCMAP1L + PLPLOT_mp_PLSCMAP1LA + PLPLOT_mp_PLSCMAP1LA2 + PLPLOT_mp_PLSCMAP1L2 + PLPLOT_mp_PLSTRIPC + PLPLOT_mp_PLSVECT + PLPLOT_mp_PLSYM + PLPLOT_mp_PLXORMOD Modified: trunk/bindings/f95/plstubs.h =================================================================== --- trunk/bindings/f95/plstubs.h 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f95/plstubs.h 2010-08-17 06:42:25 UTC (rev 11137) @@ -54,6 +54,7 @@ #define STUB_FORTRAN 4 #define STUB_STDCALL 5 #define STUB_MINGW 6 +#define STUB_IVF 7 #ifndef STUB_LINKAGE @@ -93,7 +94,7 @@ #ifdef WIN32 /* MS-DOS based */ #ifdef IVF /* Intel Visual Fortran */ -#define STUB_LINKAGE STUB_U +#define STUB_LINKAGE STUB_IVF #elif defined ( CVF ) #define STUB_LINKAGE STUB_U #elif defined ( MSDOS ) @@ -143,6 +144,10 @@ #define FNAME( x, y ) PLDLLIMPEXP_F95C y ## _ #define FNAME_( x, y ) y +#elif STUB_LINKAGE == STUB_IVF +#define FNAME( x, y ) PLDLLIMPEXP_F95C x +#define FNAME_( x, y ) x + #else #error "Illegal setting for STUB_LINKAGE" #endif Modified: trunk/bindings/f95/sfstubsf95.f90 =================================================================== --- trunk/bindings/f95/sfstubsf95.f90 2010-08-17 06:36:08 UTC (rev 11136) +++ trunk/bindings/f95/sfstubsf95.f90 2010-08-17 06:42:25 UTC (rev 11137) @@ -1110,37 +1110,37 @@ call plline3f77( size(x), x, y, z ) end subroutine plline3 - subroutine plmap1(mapform,mapname,minx,maxx,miny,maxy) + subroutine plmap1(mapform,mapname,minx,maxx,miny,maxy) use plplot_flt implicit none real(kind=plflt) minx, maxx, miny, maxy character*(*) mapname external mapform - + include 'sfstubs.h' - + call plstrf2c(mapname, string1, maxlen) - + call plsetmapformc(mapform) s1 = transfer( string1, s1 ) call plmap7(s1,minx,maxx,miny,maxy) - + end subroutine plmap1 - + subroutine plmap2(mapname,minx,maxx,miny,maxy) use plplot_flt implicit none real(kind=plflt) minx, maxx, miny, maxy character*(*) mapname - + include 'sfstubs.h' - + call plstrf2c(mapname, string1, maxlen) - + call plclearmapformc() s1 = transfer( string1, s1 ) call plmap7(s1,minx,maxx,miny,maxy) - + end subroutine plmap2 subroutine plmeridians1(mapform,dlong,dlat,minlong,maxlong, & @@ -1162,7 +1162,6 @@ implicit none real(kind=plflt) dlong, dlat, minlong, maxlong, minlat, maxlat - external mapform include 'sfstubs.h' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |