diff -ur polly.orig/README polly/README --- polly.orig/README 2005-05-04 18:28:16.000000000 +0900 +++ polly/README 2008-09-02 14:40:04.000000000 +0900 @@ -388,3 +388,6 @@ 5.3 で動作確認しています。CPU は 64-bit ですが、XL Fortran では -q32 (32 ビット・メモリーモデル) がデフォルトなので特に注意は不要です。 +・MacOS X + 10.5.4 で動作確認しています。ただし make には Xcode 3.1 Developer + Tools, Fink-0.9.0-Intel, g95-8.11.1 を導入しました。 diff -ur polly.orig/src/Imakefile.def polly/src/Imakefile.def --- polly.orig/src/Imakefile.def 2007-12-07 22:35:26.000000000 +0900 +++ polly/src/Imakefile.def 2008-09-02 14:46:28.000000000 +0900 @@ -6,6 +6,7 @@ /* #define SunArchitecture */ /* #define DigitalArchitecture */ /* #define AIXArchitecture */ +/* #define DarwinArchitecture */ /* Uncomment following line for use of Shared-Memory */ #define SharedMemory @@ -59,6 +60,13 @@ -brename:.rename_,.rename #endif +#if defined(DarwinArchitecture) +ARCH = -D__Darwin +FC = g95 +FFLAGS = -O2 -fsloppy-char -fstatic -fzero +CFLAGS = -O2 +#endif + /*--------------------- General Rules ------------------------*/ .f.o:;\ diff -ur polly.orig/src/arithmetic.f polly/src/arithmetic.f --- polly.orig/src/arithmetic.f 1998-01-11 23:16:38.000000000 +0900 +++ polly/src/arithmetic.f 2008-09-02 13:51:30.000000000 +0900 @@ -1,5 +1,5 @@ subroutine intrp(mode,cmd,np,*) - integer*4 cmd(*),np,cp,sp,ir,hbinx,hbiny + integer*4 cmd(*),np,cp,sp,ir,hbinx,hbiny,and,or parameter (maxhst=1000, maxvar=100, maxcst=100, maxtmp=1000) integer*4 hstofs,varofs,opfofs,cstofs,tmpofs,stk(maxtmp) parameter (hstofs=0 , varofs=hstofs+maxhst) @@ -508,11 +508,14 @@ goto 10000 c check if function 50000 else - do k=21,maxopf +c do k=21,maxopf + k=21 + do while (k.le.maxopf) if (s(i:j).eq.func(k)) then k=k+opfofs goto 70000 endif + k=k+1 enddo write(6,'(3A)') '# Unknown Function, ',s(i:j),'(...' return 1 diff -ur polly.orig/src/dispman.F polly/src/dispman.F --- polly.orig/src/dispman.F 2007-12-10 13:39:03.000000000 +0900 +++ polly/src/dispman.F 2008-09-02 13:10:03.000000000 +0900 @@ -47,7 +47,11 @@ character locstr*43 common /dspmcm/sx,x0,sy,y0,lmarg,bmarg,rmarg,tmarg, & nd,nb(2),xl(2),xw(2),slice,sldir,ylog +# if defined(__Darwin) + data pair/2,1,4,3,6,5,8,7/,bbits/X'FFFFFFFF'/ +# else data pair/2,1,4,3,6,5,8,7/,bbits/'FFFFFFFF'X/ +# endif icnv(kk)=(kk-1)/2+1 round(w,vl,vw)=sngl(dble(anint((w-vl)/vw))*dble(vw)+dble(vl)) call qiticn(1,0.,0.) @@ -352,7 +356,11 @@ data csrtyp/2*'DASHED' ,2*'DOTTED', & 2*'DOTDASH',2*'SOLID'/ data opt2/'CENTER,SIZE=0.012'/,copt/' ',',BLACK'/ +# if defined(__Darwin) + data dsplc/1.,2.,4.,5.,7.,8.,10.,11./,bbits/X'FFFFFFFF'/ +# else data dsplc/1.,2.,4.,5.,7.,8.,10.,11./,bbits/'FFFFFFFF'X/ +# endif csrnam(ijk)=char(ijk+48) call crsrmn(id,n,1,status,cursor,dmy) if (status.le.0) return 1 diff -ur polly.orig/src/hpkctrl.F polly/src/hpkctrl.F --- polly.orig/src/hpkctrl.F 2007-12-07 22:33:29.000000000 +0900 +++ polly/src/hpkctrl.F 2008-09-02 13:43:45.000000000 +0900 @@ -13,13 +13,19 @@ if (iargc().ne.0) then call getarg(1,key) read(key,*) i +# if defined(__Darwin) + call hshkey(i,o'0644') +# else call hshkey(i,'0644'o) +# endif endif endif call hpkini 01000 intsta=0 ! disable interrupt -# if defined(__AIX) +# if defined(__AIX) call signal(2,intrpt ) +# elif defined(__Darwin) + call signal(2,intrpt,ista) # else call signal(2,intrpt,-1) # endif @@ -116,3 +122,14 @@ if (intsta.eq.1) intsta=2 return end + +#if defined(__Darwin) + integer function and(i,j) + and=iand(i,j) + return + end + integer function or(i,j) + or=ior(i,j) + return + end +#endif diff -ur polly.orig/src/lib.f polly/src/lib.f --- polly.orig/src/lib.f 1996-03-03 21:14:48.000000000 +0900 +++ polly/src/lib.f 2008-09-02 13:50:03.000000000 +0900 @@ -383,13 +383,13 @@ end integer function bool10(bool) - integer bool + integer bool,and bool10=and(bool,1) return end integer function bool12(bool) - integer*4 bool + integer*4 bool,and bool12=2-and(bool,1) return end diff -ur polly.orig/src/manipulate.F polly/src/manipulate.F --- polly.orig/src/manipulate.F 2006-05-19 20:35:09.000000000 +0900 +++ polly/src/manipulate.F 2008-09-02 13:12:17.000000000 +0900 @@ -239,7 +239,7 @@ subroutine opmnb2(ims,h1,i1,h2,i2) integer*4 h1,i1,h2,i2 -#if ( defined(__LINUX) || defined(__AIX) ) +#if ( defined(__LINUX) || defined(__AIX) || defined(__Darwin) ) integer*1 ll(1) #else logical*1 ll(1) @@ -339,7 +339,7 @@ integer*4 prmrd,nb(2) character key*80,newnam*16,ms*4,title*80 real*4 xl(2),xw(2) -#if ( defined(__LINUX) || defined(__AIX) ) +#if ( defined(__LINUX) || defined(__AIX) || defined(__Darwin) ) integer*1 ll(1) #else logical*1 ll(1) @@ -396,7 +396,7 @@ c Swap-Axes: param=(source, destin, [,title]) integer*4 prmrd,hpntr,bytes(14) character key*80,newnam*16,title*80,cmt(4)*80 -#if ( defined(__LINUX) || defined(__AIX) ) +#if ( defined(__LINUX) || defined(__AIX) || defined(__Darwin) ) integer*1 ll(1) #else logical*1 ll(1)