Many fixes to make it work on Linux.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@388 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2007-06-13 17:05:57 +00:00
parent 3edc0ed447
commit 03bddc6c9f
10 changed files with 166 additions and 154 deletions

View File

@ -29,71 +29,63 @@ FC=@FC@
COMPILER += @FC_LIB_PATH@ COMPILER += @FC_LIB_PATH@
LDFLAGS += -L${COMPILER} LDFLAGS += -L${COMPILER}
LIBS += /usr/lib/libfftw3f.a
PYTHON ?= @PYTHON@ PYTHON ?= @PYTHON@
RM ?= @RM@ RM ?= @RM@
F2PY = @F2PY@ F2PY = @F2PY@
###
all: Audio.so
F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0 OBJS2C = init_rs.o encode_rs.o decode_rs.o
F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 \
spec map65a0
SRCS2F90 = astro0.F90 audio_init.F90 azdist0.f90 \ SRCS2F90 = astro0.F90 audio_init.F90 azdist0.f90 \
decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \ decode1.F90 ftn_init.F90 ftn_quit.f90 wsjtgen.F90 \
ftn_quit.f90 get_fname.F90 getfile.F90 \ runqqq.F90 fivehz.F90 flushqqq.F90 map65a0.f90 \
i1tor4.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \ rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.F90 \
wsjtgen.F90 runqqq.F90 fivehz.F90 getfile.F90 getfile2.F90
OBJS2F90 = ${SRCS2F90:.f90=.o}
SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \ SRCS2F77 = indexx.f gen65.f chkmsg.f \
dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f moon2.f \ gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \
MoonDop.f sun.f toxyz.f pfxdump.f \ avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \
avesp2.f bzap.f \ getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \
indexx.f flat2.f gen65.f chkmsg.f gentone.f \ deep65.f morse.f nchar.f packcall.f packgrid.f \
set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \ packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \
peakup.f avemsg65.f decode65.f \ unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \
demod64a.f encode65.f extract.f flat1.f four2.f rfile2.f \ deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \
gencwid.f getpfx1.f getpfx2.f getsnr.f graycode.f grid2k.f \ moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \
interleave63.f k2grid.f limit.f lpf1.f morse.f \ symspec.f ccf65.f trimlist.f chkhist.f decode1a.f \
nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \ filbig.f fil659.f fil658.f fil6521.f twkfreq.f decode65b.f \
short65.f slope.f spec2d65.f sync65.f unpackcall.f \ afc65b.f fchisq.f ccf2.f rfile2.f
unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f \
ftpeak65.f fil651.f fil652.f fil653.f symsync65.f
OBJS2F77 = ${SRCS2F77:.f=.o} deep65.o SRCS2C = resample.c ptt.c igray.c wrapkarn.c rfile3.c wfile3.c
SRCS2C = init_rs.c encode_rs.c decode_rs.c OBJS2F77 = ${SRCS2F77:.f=.o}
OBJS2C = ${SRCS2C:.c=.o}
# ok, so far for now SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c
# Windows @AUDIO@ will be a2d.f90 jtaudio.c since it uses portaudio OBJS3C = ${SRCS3C:.c=.o}
# for *nix @AUDIO@ will also be a2d.f90, jtaudio.c AUDIOSRCS = a2d.f90 jtaudio.c resample.c start_portaudio.c
# and start_portaudio.c for systems using portaudio
# for *nix @AUDIO@ will be start_alsa.c for alsa
# for *nix @AUDIO@ will be start_oss.c for oss
#
# ptt_unix.c vs. ptt.c I'll sort out later.
# ditto for cutil.c (only used on *nix)
# --db
# jtaudio.c/start_threads.c mess will have to be sorted out later
# to minimise #ifdef's
# --db
# and mostly sorted
# --db
#
# @NEEDPORTAUDIO@ will be filled in with libportaudio.a if portaudio is used
#
SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c
OBJS3C = ${SRCS3C:.c=.o}
AUDIOSRCS = @AUDIO@
all: map65 #Audio.so: $(OBJS2C) $(SRCS2F90) $(SRCS2F77) $(SRCS2C)
# python f2py.py -c \
# --quiet --"fcompiler=compaqv" \
# --opt="/nologo /traceback /warn:errors /fast /fpp /define:Win32 \
# /define:USE_PORTAUDIO" \
# $(OBJS2C) \
# -lwinmm -lpa -lfftw3single -llibsamplerate \
# -m Audio \
# only: $(F2PYONLY) : \
# $(SRCS2F90) $(SRCS2F77) $(SRCS2C)
portaudio-v19/lib/.libs/libportaudio.a: ###
(cd portaudio-v19;./configure --with-jack=no)
(cd portaudio-v19;${MAKE})
map65: @NEEDPORTAUDIO@ Audio.so # map65.spec #portaudio-v19/lib/.libs/libportaudio.a:
# ${PYTHON} c:\python23\installer\Build.py map65.spec # (cd portaudio-v19;./configure --with-jack=no)
# (cd portaudio-v19;${MAKE})
deep65.o: deep65.F deep65.o: deep65.F
$(FC) -c -O0 -Wall -fPIC deep65.F $(FC) -c -O0 -Wall -fPIC deep65.F
@ -106,10 +98,6 @@ Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS)
: $(SRCS2F90) \ : $(SRCS2F90) \
${SRCS3C} ${AUDIOSRCS} ${SRCS3C} ${AUDIOSRCS}
map65.spec: map65.py astro.py g.py options.py palettes.py smeter.py specjt.py
${PYTHON} c:\python23\installer\makespec.py --icon wsjt.ico \
--tk --onefile map65.py
init_rs_int.o: init_rs.c init_rs_int.o: init_rs.c
$(CC) $(CFLAGS) -c -DBIGSYM=1 -o init_rs_int.o init_rs.c $(CC) $(CFLAGS) -c -DBIGSYM=1 -o init_rs_int.o init_rs.c

View File

@ -1,88 +1,88 @@
#Makefile for Windows #Makefile for Windows
!include <dfinc.mak> #Some definitions for Compaq Visual Fortran !include <dfinc.mak> #Some definitions for Compaq Visual Fortran
gcc = cl gcc = cl
FC = df FC = df
#To do bounds checking (with useless reports) put "/check:all" in the #To do bounds checking (with useless reports) put "/check:all" in the
# --opt= line below (line 56, more or less ...) # --opt= line below (line 56, more or less ...)
#FFLAGS = /traceback /check:all #FFLAGS = /traceback /check:all
FFLAGS = /traceback /fast /nologo /check:all FFLAGS = /traceback /fast /nologo /check:all
all: MAP65.EXE all: MAP65.EXE
OBJS2C = init_rs.o encode_rs.o decode_rs.o jtaudio.o OBJS2C = init_rs.o encode_rs.o decode_rs.o jtaudio.o
F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 \ F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 \
spec map65a0 spec map65a0
SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \ SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \
decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \ decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \
runqqq.f90 fivehz.f90 flushqqq.f90 map65a0.f90 \ runqqq.f90 fivehz.f90 flushqqq.f90 map65a0.f90 \
rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.F90 \ rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.F90 \
getfile.f90 getfile2.f90 getfile.f90 getfile2.f90
SRCS2F77 = indexx.f gen65.f chkmsg.f \ SRCS2F77 = indexx.f gen65.f chkmsg.f \
gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \
avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \ avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \
getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \ getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \
deep65.f morse.f nchar.f packcall.f packgrid.f \ deep65.f morse.f nchar.f packcall.f packgrid.f \
packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \ packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \
unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \ unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \
deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \ deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \
moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \ moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \
symspec.f ccf65.f trimlist.f chkhist.f decode1a.f \ symspec.f ccf65.f trimlist.f chkhist.f decode1a.f \
filbig.f fil659.f fil658.f fil6521.f twkfreq.f decode65b.f \ filbig.f fil659.f fil658.f fil6521.f twkfreq.f decode65b.f \
afc65b.f fchisq.f ccf2.f afc65b.f fchisq.f ccf2.f
SRCS2C = resample.c ptt.c igray.c wrapkarn.c rfile3.c wfile3.c SRCS2C = resample.c ptt.c igray.c wrapkarn.c rfile3.c wfile3.c
MAP65.EXE: Audio.pyd map65.spec MAP65.EXE: Audio.pyd map65.spec
python c:\python23\installer\Build.py map65.spec python c:\python23\installer\Build.py map65.spec
Audio.pyd: $(OBJS2C) $(SRCS2F90) $(SRCS2F77) $(SRCS2C) Audio.pyd: $(OBJS2C) $(SRCS2F90) $(SRCS2F77) $(SRCS2C)
python f2py.py -c \ python f2py.py -c \
--quiet --"fcompiler=compaqv" \ --quiet --"fcompiler=compaqv" \
--opt="/nologo /traceback /warn:errors /fast /fpp /define:Win32 \ --opt="/nologo /traceback /warn:errors /fast /fpp /define:Win32 \
/define:USE_PORTAUDIO" \ /define:USE_PORTAUDIO" \
$(OBJS2C) \ $(OBJS2C) \
-lwinmm -lpa -lfftw3single -llibsamplerate \ -lwinmm -lpa -lfftw3single -llibsamplerate \
-m Audio \ -m Audio \
only: $(F2PYONLY) : \ only: $(F2PYONLY) : \
$(SRCS2F90) $(SRCS2F77) $(SRCS2C) $(SRCS2F90) $(SRCS2F77) $(SRCS2C)
map65.spec: map65.py astro.py g.py options.py palettes.py smeter.py specjt.py map65.spec: map65.py astro.py g.py options.py palettes.py smeter.py specjt.py
python c:\python23\installer\makespec.py --icon wsjt.ico \ python c:\python23\installer\makespec.py --icon wsjt.ico \
--tk --onefile map65.py --tk --onefile map65.py
jtaudio.o: jtaudio.c jtaudio.o: jtaudio.c
$(CC) /nologo /c /DWin32 /Fojtaudio.o jtaudio.c $(CC) /nologo /c /DWin32 /Fojtaudio.o jtaudio.c
init_rs.obj: init_rs.c init_rs.obj: init_rs.c
$(CC) /nologo /c /DBIGSYM=1 init_rs.c $(CC) /nologo /c /DBIGSYM=1 init_rs.c
init_rs.o: init_rs.c init_rs.o: init_rs.c
$(CC) /nologo /c /DBIGSYM=1 /Foinit_rs.o init_rs.c $(CC) /nologo /c /DBIGSYM=1 /Foinit_rs.o init_rs.c
encode_rs.obj: encode_rs.c encode_rs.obj: encode_rs.c
$(CC) /nologo /c /DBIGSYM=1 encode_rs.c $(CC) /nologo /c /DBIGSYM=1 encode_rs.c
encode_rs.o: encode_rs.c encode_rs.o: encode_rs.c
$(CC) /nologo /c /DBIGSYM=1 /Foencode_rs.o encode_rs.c $(CC) /nologo /c /DBIGSYM=1 /Foencode_rs.o encode_rs.c
decode_rs.obj: decode_rs.c decode_rs.obj: decode_rs.c
$(CC) /nologo /c /DBIGSYM=1 decode_rs.c $(CC) /nologo /c /DBIGSYM=1 decode_rs.c
decode_rs.o: decode_rs.c decode_rs.o: decode_rs.c
$(CC) /nologo /c /DBIGSYM=1 /Ox /Zd /Fodecode_rs.o decode_rs.c $(CC) /nologo /c /DBIGSYM=1 /Ox /Zd /Fodecode_rs.o decode_rs.c
wrapkarn.obj: wrapkarn.c wrapkarn.obj: wrapkarn.c
$(CC) /nologo /c /DWin32=1 wrapkarn.c $(CC) /nologo /c /DWin32=1 wrapkarn.c
igray.obj: igray.c igray.obj: igray.c
$(CC) /nologo /c /DWin32=1 igray.c $(CC) /nologo /c /DWin32=1 igray.c
.PHONY : clean .PHONY : clean
clean: clean:
-del *.o *.obj MAP65.EXE Audio.pyd -del *.o *.obj MAP65.EXE Audio.pyd

View File

@ -1,12 +1,15 @@
subroutine display subroutine display
#ifdef Win32
use dfport use dfport
#endif
parameter (MAXLINES=500,MX=500) parameter (MAXLINES=500,MX=500)
integer indx(MAXLINES),indx2(MX) integer indx(MAXLINES),indx2(MX)
character*80 line(MAXLINES),line2(MX),line3(MAXLINES) character*80 line(MAXLINES),line2(MX),line3(MAXLINES)
character out*41,cfreq0*3 character out*41,cfreq0*3
character callsign*6,callsign0*6,freqcall*10(100) character*6 callsign,callsign0
character*10 freqcall(100)
character*36 bm2 character*36 bm2
real freqkHz(MAXLINES) real freqkHz(MAXLINES)
integer utc(MAXLINES),utc2(MX),utcz integer utc(MAXLINES),utc2(MX),utcz
@ -46,6 +49,7 @@ subroutine display
write(26,1010) line(i) write(26,1010) line(i)
enddo enddo
endif endif
call flushqqq(26)
call indexx(nz,freqkHz,indx) call indexx(nz,freqkHz,indx)
@ -124,6 +128,7 @@ subroutine display
endif endif
endif endif
enddo enddo
call flushqqq(19)
nc=nc+1 nc=nc+1
freqcall(nc)=' ' freqcall(nc)=' '
nc=nc+1 nc=nc+1
@ -134,6 +139,7 @@ subroutine display
write(20,1040) bm2 write(20,1040) bm2
1040 format(a36) 1040 format(a36)
enddo enddo
call flushqqq(20)
return return
end subroutine display end subroutine display

View File

@ -91,7 +91,8 @@ subroutine ftn_init
open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown', & open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown', &
access='append',share='denynone',err=950) access='append',share='denynone',err=950)
#else #else
open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown',err=950) open(21,file=appdir(:iz)//'/ALL.TXT',status='unknown', &
access='append',err=950)
do i=1,9999999 do i=1,9999999
read(21,*,end=10) cjunk read(21,*,end=10) cjunk
enddo enddo
@ -106,10 +107,19 @@ subroutine ftn_init
status='unknown') status='unknown')
#endif #endif
#ifdef Win32
open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', & open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', &
share='denynone') share='denynone')
#else
open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown')
#endif
#ifdef Win32
open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown', & open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown', &
share='denynone') share='denynone')
#else
open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown')
#endif
return return

View File

@ -5,10 +5,12 @@ subroutine getfile(fname,len)
parameter (NSMAX=60*96000) !Samples per 60 s file parameter (NSMAX=60*96000) !Samples per 60 s file
integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2 integer*2 id(4,NSMAX) !46 MB: raw data from Linrad timf2
common/datcom/nutc,newdat2,id,fname80,nlen common/datcom/nutc,newdat2,id,fname80,nlen
include 'gcom2.f90'
fname80=fname fname80=fname
nlen=len nlen=len
newdat2=1 newdat2=1
ierr=0
return return
end subroutine getfile end subroutine getfile

View File

@ -1,4 +1,3 @@
!----------------------------------------------------- getfile
subroutine getfile2(fname,len) subroutine getfile2(fname,len)
#ifdef Win32 #ifdef Win32
@ -31,16 +30,22 @@ subroutine getfile2(fname,len)
10 filename=fname(i+1:) 10 filename=fname(i+1:)
ierr=0 ierr=0
n=8*NSMAX
#ifdef Win32 #ifdef Win32
! open(10,file=fname,form='binary',status='old',err=998) ! open(10,file=fname,form='binary',status='old',err=998)
n=8*NSMAX
call rfile3a(fname,id,n,ierr) call rfile3a(fname,id,n,ierr)
if(ierr.ne.0) then if(ierr.ne.0) then
print*,'Error opening or reading file: ',fname,ierr print*,'Error opening or reading file: ',fname,ierr
go to 999 go to 999
endif endif
#else #else
call rfile2(fname,hdr,44+2*NDMAX,nr) call rfile2(fname,id,n,nr)
if(nr.ne.n) then
print*,'Error opening or reading file: ',fname,n,nr
ierr=1002
go to 999
endif
#endif #endif
read(filename(8:11),*) nutc read(filename(8:11),*) nutc

View File

@ -1,7 +1,7 @@
*font: "bitstream vera sans" 11 *font: Arial 8
*Label*font: "bitstream vera sans" 11 *Label*font: Arial 8
*Text*font: "terminus" 13 *Text*font: "Courier New" 9
*Canvas*font: "LucidaTypewriter" 18 *Canvas*font: "Lucida Console" 16
*background: gray85 *background: gray85
*Text*background: white *Text*background: white
*Entry*background: white *Entry*background: white

View File

@ -1,13 +1,13 @@
subroutine rfile2(fname,buf,n,nr) subroutine rfile2(fname,buf,n,nr)
C Write a wave file to disk. C Read data from disk.
integer RMODE integer RMODE
parameter(RMODE=0) parameter(RMODE=0)
integer*1 buf(n) integer*1 buf(n)
integer open,read,close integer open,read,close
integer fd integer fd
character fname*80 character fname*(*)
data iz/0/ !Silence g77 warning data iz/0/ !Silence g77 warning
do i=80,1,-1 do i=80,1,-1

View File

@ -3,7 +3,8 @@
C Compute spectra at four polarizations, using half-symbol steps. C Compute spectra at four polarizations, using half-symbol steps.
parameter (NFFT=32768) parameter (NFFT=32768)
integer*2 id(4,nz) parameter (NSMAX=60*96000)
integer*2 id(4,NSMAX)
real savg(4,NFFT) real savg(4,NFFT)
complex cx(NFFT),cy(NFFT) ! pad to 32k with zeros complex cx(NFFT),cy(NFFT) ! pad to 32k with zeros
complex z complex z