Switch to unified view

a/Makefile b/Makefile
1
# Makefile for Numerical libary by Michael Riedl
1
# Makefile for Numerical libary by Michael Riedl
2
# ==============================================
2
# ==============================================
3
3
4
# Choose target IO System
4
# Choose target IO System
5
# ***********************
6
# MRI   : use the completly independed IO stack of the author.
7
# ISOIO : use the IO stack on top of ISO IO-Modules
8
#         Does not work properly with GM2 at the moment, XDS seems to be OK
5
9
6
IOSYS=MRI
10
IOSYS=MRI
7
# IOSYS=ISOIO
11
# IOSYS=ISOIO
8
12
9
# Choose target Compilter 
13
# Choose target Compilter 
14
# ***********************
10
15
11
# COMPILER=XDS
16
# COMPILER=XDS
12
COMPILER=GM2
17
COMPILER=GM2
13
18
14
ENDIAN=LITTLEENDIAN
19
# For the XDS compiler you may need to run the make command twice with
15
# ENDIAN=BIGENDIAN
20
# -i option. There is a mistake in the Makefile I did not find so far ...
16
21
17
#................................................................................
22
#................................................................................
18
23
24
# use one of the experimental dgemm versions with OpenMP
25
# ******************************************************
26
IfOpenMP = YES
27
# IfOpenMP = NO
28
29
# Which BLAS version (Modula-2 subset or Fortran) shall libraries
30
# such as EigenLib, SVDlib etc. use ?
31
# ***************************************************************
32
#
19
BLASLIB = BLAS
33
BLASLIB = BLAS
20
# BLASLIB = BLASF77
34
# BLASLIB = BLASF77
21
35
36
# How shall LinPack (Modula-2 subset) be compiled ?
37
# *************************************************
38
#
22
# LinPack also has "inline" option
39
# LinPack also has "inline" option
23
BLASLIBin = BLAS
40
BLASLIBin = BLAS
24
# BLASLIBin = BLASF77
41
# BLASLIBin = BLASF77
25
# BLASLIBin = inline
42
# BLASLIBin = inline
26
43
44
# Where to find the m2pp Modula-2 preprocessor ?
45
# **********************************************
27
M2PP = ../../Werkzeuge/m2pp # -b
46
M2PP = ../../Werkzeuge/m2pp -b
28
47
29
ifeq ($(COMPILER),GM2)
48
ifeq ($(COMPILER),GM2)
30
#*********************
49
#*********************
31
50
51
# For GM2 the pathes below may need to be adjusted based on your local
52
# installation.
53
54
# GM2basedir = /usr/local/gm2/lib/gcc/i586-linux-gnu/4.7.4
55
# GM2baseDir = /usr/local/gm2/lib/gcc/x86_64-pc-linux-gnu/6.4.0
56
GM2baseDir = /usr/local/gm2/lib/gcc/i686-pc-linux-gnu/6.4.0
57
58
GM2libDir  = /usr/local/gm2/libs
59
M2baseDir  = /home/mriedl/Modula-2/InOut/quellen.iso
60
32
OPTIONS= -fiso -flibs=iso \
61
OPTIONS= -fiso -flibs=iso \
33
         -I /usr/local/gm2/lib/gcc/x86_64-pc-linux-gnu/6.4.0/m2/iso \
62
         -I $(GM2baseDir)/m2/iso \
34
         -I /usr/local/gm2/lib/gcc/x86_64-pc-linux-gnu/6.4.0/m2/pim \
63
         -I $(GM2baseDir)/m2/pim \
35
         -I /home/mriedl/Modula-2/InOut/quellen.git \
64
         -I $(M2baseDir) \
36
         -L /usr/local/gm2/libs \
65
         -L $(GM2libDir) \
37
         -O0 -g
66
         -O1 -g
38
39
OPTIONS= -fiso -flibs=iso \
40
         -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu/6.4.0/m2/iso \
41
         -I /usr/local/gm2/lib/gcc/i686-pc-linux-gnu/6.4.0/m2/pim \
42
         -I /home/mriedl/Modula-2/InOut/quellen.iso \
43
         -L /usr/local/gm2/libs \
44
         -O0 -g
45
67
46
LIBS = -lgm2 -liso
68
LIBS = -lgm2 -liso
47
69
48
M2C= gm2 -c $(OPTIONS)
70
M2C= gm2 -c $(OPTIONS)
49
M2L= gm2 -fonlylink -I. $(OPTIONS)  $(LIBS)
71
M2L= gm2 -fonlylink -I. $(OPTIONS)  $(LIBS)
50
72
51
NUMLIB = libnumM2.gm2.a
73
NUMLIB = libnumM2.gm2.a
52
74
53
all : mkall $(NUMLIB)
75
all : mkall $(NUMLIB) $(OBJ)
54
76
55
else
77
else
56
#***
78
#***
57
79
58
OPTIONS=
80
OPTIONS=
...
...
73
95
74
OBJ =   BaseLib.o ApproxLib.o LibDBlas.o LibDBlasM2.o  \
96
OBJ =   BaseLib.o ApproxLib.o LibDBlas.o LibDBlasM2.o  \
75
    LibDBlasF77.o LibDBlasL3F77.o F77func.o Differ.o DynMat.o  \
97
    LibDBlasF77.o LibDBlasL3F77.o F77func.o Differ.o DynMat.o  \
76
        LinPack.o EigenLib1.o \
98
        LinPack.o EigenLib1.o \
77
    EigenLibAux.o EigenLib2.o EigenLib3.o Fourier.o SortLib.o  \
99
    EigenLibAux.o EigenLib2.o EigenLib3.o Fourier.o SortLib.o  \
78
    Integral.o LinLib.o SVDLib1.o IEEE.o LMathLib.o LngCmplxMath.o  \
100
    Integral.o LinLib.o SVDLib2.o LMathLib.o LngCmplxMath.o  \
79
    CmplxMath.o MatLib.o PMatLib.o RandomLib.o \
101
    CmplxMath.o MatLib.o PMatLib.o RandomLib.o \
80
    SpezFunkt1.o SpezFunkt2.o SpezFunkt3.o SpezFunkt4.o  \
102
    SpezFunkt1.o SpezFunkt2.o SpezFunkt3.o SpezFunkt4.o  \
81
    OptimLib1.o StatLib.o NumAlLib1.o SMatEA.o FMatEA.o
103
    OptimLib1.o StatLib.o NumAlLib1.o SMatEA.o FMatEA.o IEEE.o
104
105
ifeq ($(IfOpenMP),YES)
106
#*********************
107
OBJFTN = dgemmCbind.o # Fortran objects
108
else
109
#***
110
OBJFTN = 
111
endif
112
#****
82
113
83
ifeq ($(COMPILER),GM2)
114
ifeq ($(COMPILER),GM2)
84
#*********************
115
#*********************
85
mkall: mkall.o $(OBJ) \
116
mkall: mkall.o $(OBJ) $(OBJFTN) \
86
        BaseLib.def ApproxLib.def  \
117
        BaseLib.def ApproxLib.def  \
87
    LibDBlas.def LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
118
    LibDBlas.def LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
88
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
119
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
89
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
120
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
90
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
121
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
91
    Integral.def LinLib.def SVDLib1.def IEEE.def LMathLib.def  \
122
    Integral.def LinLib.def SVDLib2.def IEEE.def LMathLib.def \
92
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
123
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
93
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
124
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
94
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
125
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
95
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
126
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
96
    $(M2L) mkall.mod
127
    $(M2L) mkall.mod
97
else
128
else
98
#***
129
#***
99
mkall: mkall.o $(OBJ) \
130
mkall: mkall.o $(OBJ) $(OBJFTN) \
100
    BaseLib.def ApproxLib.def  \
131
    BaseLib.def ApproxLib.def  \
101
    LibDBlas.def LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
132
    LibDBlas.def LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
102
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
133
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
103
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
134
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
104
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
135
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
105
    Integral.def LinLib.def SVDLib1.def IEEE.def LMathLib.def  \
136
    Integral.def LinLib.def SVDLib2.def IEEE.def LMathLib.def  \
106
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
137
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
107
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
138
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
108
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
139
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
109
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
140
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
110
    $(M2L) mkall
141
    $(M2L) mkall
...
...
114
mkall.o: mkall.mod BaseLib.def ApproxLib.def LibDBlas.def  \
145
mkall.o: mkall.mod BaseLib.def ApproxLib.def LibDBlas.def  \
115
    LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
146
    LibDBlasM2.def LibDBlasF77.def LibDBlasL1F77.def  \
116
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
147
    LibDBlasLxF77.def LibDBlasL3F77.def LinPack.def F77func.def  \
117
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
148
    Differ.def DynMat.def EigenLibAux.def EigenLib1.def  \
118
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
149
    EigenLib2.def EigenLib3.def Fourier.def SortLib.def  \
119
    Integral.def LinLib.def SVDLib1.def IEEE.def LMathLib.def  \
150
    Integral.def LinLib.def SVDLib2.def IEEE.def LMathLib.def  \
120
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
151
    LngCmplxMath.def CmplxMath.def MatLib.def PMatLib.def  \
121
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
152
    RandomLib.def FMatEA.def SMatEA.def SpezFunkt1.def  \
122
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
153
    SpezFunkt2.def SpezFunkt3.def SpezFunkt4.def \
123
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
154
        OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
124
    $(M2C) mkall.mod
155
    $(M2C) mkall.mod
...
...
126
mkall.mod: BaseLib.def ApproxLib.def LibDBlas.def LibDBlasM2.def  \
157
mkall.mod: BaseLib.def ApproxLib.def LibDBlas.def LibDBlasM2.def  \
127
    LibDBlasF77.def LibDBlasL1F77.def LibDBlasLxF77.def  \
158
    LibDBlasF77.def LibDBlasL1F77.def LibDBlasLxF77.def  \
128
    LibDBlasL3F77.def LinPack.def F77func.def Differ.def  \
159
    LibDBlasL3F77.def LinPack.def F77func.def Differ.def  \
129
    DynMat.def EigenLibAux.def EigenLib1.def EigenLib2.def  \
160
    DynMat.def EigenLibAux.def EigenLib1.def EigenLib2.def  \
130
    EigenLib3.def Fourier.def SortLib.def Integral.def LinLib.def  \
161
    EigenLib3.def Fourier.def SortLib.def Integral.def LinLib.def  \
131
    SVDLib1.def IEEE.def LMathLib.def LngCmplxMath.def CmplxMath.def  \
162
    SVDLib2.def IEEE.def LMathLib.def LngCmplxMath.def CmplxMath.def  \
132
    MatLib.def PMatLib.def RandomLib.def FMatEA.def SMatEA.def  \
163
    MatLib.def PMatLib.def RandomLib.def FMatEA.def SMatEA.def  \
133
    SpezFunkt1.def SpezFunkt2.def SpezFunkt3.def \
164
    SpezFunkt1.def SpezFunkt2.def SpezFunkt3.def \
134
        SpezFunkt4.def OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
165
        SpezFunkt4.def OptimLib1.def StatLib.def NumAlLib1.def OpenMPF77.def
135
166
136
167
...
...
257
LinLib.o: LinLib.def LinLib.mod
288
LinLib.o: LinLib.def LinLib.mod
258
    $(M2C) LinLib.mod
289
    $(M2C) LinLib.mod
259
290
260
LinLib.mod: LinLib.def
291
LinLib.mod: LinLib.def
261
292
262
SVDLib1.o: SVDLib1.def SVDLib1.mod
293
SVDLib2.o: SVDLib2.def SVDLib2.mod
263
    $(M2C) SVDLib1.mod
294
    $(M2C) SVDLib2.mod
264
295
265
SVDLib1.mod: SVDLib1.def
296
SVDLib2.mod: SVDLib2.def
266
267
IEEE.o: IEEE.def IEEE.mod
268
  $(M2C) IEEE.mod
269
270
IEEE.mod: IEEE.def
271
297
272
LMathLib.o: LMathLib.def LMathLib.mod
298
LMathLib.o: LMathLib.def LMathLib.mod
273
    $(M2C) LMathLib.mod
299
    $(M2C) LMathLib.mod
274
300
275
LMathLib.mod: LMathLib.def
301
LMathLib.mod: LMathLib.def
...
...
346
372
347
# EigenLib1.mod  : EigenLib1.mod.m2pp
373
# EigenLib1.mod  : EigenLib1.mod.m2pp
348
#   $(M2PP) -D __$(COMPILER)__ -D __$(BLASLIB)__ < EigenLib1.mod.m2pp  \
374
#   $(M2PP) -D __$(COMPILER)__ -D __$(BLASLIB)__ < EigenLib1.mod.m2pp  \
349
#                                                    > EigenLib1.mod
375
#                                                    > EigenLib1.mod
350
376
351
IEEE.def  : IEEE.def.m2pp
352
  $(M2PP) -D __$(COMPILER)__ -D __$(ENDIAN)__ < IEEE.def.m2pp  > IEEE.def
353
354
EigenLib1.mod  : EigenLib1.mod.m2pp
377
EigenLib1.mod  : EigenLib1.mod.m2pp
355
    $(M2PP) -D __$(COMPILER)__ -D __$(BLASLIB)__ -D __DEBUG__ < EigenLib1.mod.m2pp  > EigenLib1.mod
378
    $(M2PP) -D __$(COMPILER)__ -D __$(BLASLIB)__ -D __DEBUG__ < EigenLib1.mod.m2pp  > EigenLib1.mod
356
379
357
Integral.mod   : Integral.mod.m2pp
380
Integral.mod   : Integral.mod.m2pp
358
    $(M2PP) -D __$(COMPILER)__ <  Integral.mod.m2pp > Integral.mod
381
    $(M2PP) -D __$(COMPILER)__ <  Integral.mod.m2pp > Integral.mod
...
...
379
    $(M2PP) -D __$(COMPILER)__ < LibDBlasL1F77.def.m2pp > LibDBlasL1F77.def
402
    $(M2PP) -D __$(COMPILER)__ < LibDBlasL1F77.def.m2pp > LibDBlasL1F77.def
380
403
381
LibDBlasLxF77.def : LibDBlasLxF77.def.m2pp
404
LibDBlasLxF77.def : LibDBlasLxF77.def.m2pp
382
    $(M2PP) -D __$(COMPILER)__ < LibDBlasLxF77.def.m2pp > LibDBlasLxF77.def
405
    $(M2PP) -D __$(COMPILER)__ < LibDBlasLxF77.def.m2pp > LibDBlasLxF77.def
383
406
407
LibDBlasF77.def : LibDBlasF77.def.m2pp
408
  $(M2PP) -D __$(COMPILER)__ -D __OMP__ < LibDBlasF77.def.m2pp > LibDBlasF77.def
409
384
LinPack.mod : LinPack.mod.m2pp
410
LinPack.mod : LinPack.mod.m2pp
385
    $(M2PP) -D __$(BLASLIBin)__ < LinPack.mod.m2pp > LinPack.mod
411
    $(M2PP) -D __$(BLASLIBin)__ < LinPack.mod.m2pp > LinPack.mod
386
412
387
SMatEA.mod : SMatEA.mod.m2pp
413
SMatEA.mod : SMatEA.mod.m2pp
388
    $(M2PP) -D __$(IOSYS)__ < SMatEA.mod.m2pp > SMatEA.mod
414
    $(M2PP) -D __$(IOSYS)__ < SMatEA.mod.m2pp > SMatEA.mod
389
415
390
#..............................................................................
416
#..............................................................................
391
417
418
ifeq ($(IfOpenMP),YES)
419
420
F90   = gfortran
421
FOPTS = -c -fopenmp -O3
422
423
dgemmCbind.o : dgemmCbind.f90
424
  $(F90) $(FOPTS) -cpp -D __CBIND__  dgemmCbind.f90
425
426
endif
427
428
#..............................................................................
429
392
$(NUMLIB) : $(OBJ)
430
$(NUMLIB) : $(OBJ) $(OBJFTN)
393
    ar -r $(NUMLIB) $(OBJ)
431
    ar -r $(NUMLIB) $(OBJ) $(OBJFTN)
394
    ranlib $(NUMLIB)
432
    ranlib $(NUMLIB)
395
433
396
#..............................................................................
434
#..............................................................................
397
435
398
clean: force
436
clean: force
399
    $(RM)  mkall.o BaseLib.o ApproxLib.o LibDBlas.o LibDBlasM2.o  \
437
    $(RM)  mkall.o BaseLib.o ApproxLib.o LibDBlas.o LibDBlasM2.o  \
400
    LibDBlasF77.o LibDBlasL3F77.o F77func.o Differ.o DynMat.o  \
438
    LibDBlasF77.o LibDBlasL3F77.o F77func.o Differ.o DynMat.o  \
401
    EigenLibAux.o EigenLib2.o EigenLib3.o Fourier.o SortLib.o  \
439
    EigenLibAux.o EigenLib2.o EigenLib3.o Fourier.o SortLib.o  \
402
    Integral.o LinLib.o SVDLib1.o IEEE.o LMathLib.o LngCmplxMath.o  \
440
    Integral.o LinLib.o SVDLib2.o LMathLib.o LngCmplxMath.o  \
403
    CmplxMath.o MatLib.o PMatLib.o RandomLib.o FMatEA.o  \
441
    CmplxMath.o MatLib.o PMatLib.o RandomLib.o FMatEA.o LinPack.o \
404
    SpezFunkt1.o SpezFunkt2.o SpezFunkt2b.o SpezFunkt3.o SpezFunkt4.o  \
442
    SpezFunkt1.o SpezFunkt2.o SpezFunkt2b.o SpezFunkt3.o SpezFunkt4.o  \
405
    OptimLib1.o StatLib.o NumAlLib1.o \
443
    OptimLib1.o StatLib.o NumAlLib1.o dgemmCbind.o \
406
    LibDBlasL1F77.def LibDBlasLxF77.def OpenMPF77.def \
444
    LibDBlasF77.def LibDBlasL1F77.def LibDBlasLxF77.def OpenMPF77.def \
407
    EigenLib1.mod Integral.mod LinPack.mod MatLib.mod \
445
    EigenLib1.mod Integral.mod LinPack.mod MatLib.mod \
408
    RandomLib.mod SMatEA.mod SpezFunkt2.mod StatLib.mod 
446
    RandomLib.mod SMatEA.mod SpezFunkt2.mod StatLib.mod 
409
447
410
force:
448
force:
411
449