forked from exciting/exciting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.pl
90 lines (78 loc) · 2.5 KB
/
setup.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#! /usr/bin/perl
# setupscript
# setupscript for the exciting code
print "---------------------------------------------------------\n";
opendir(PDIR, "build/platforms") || die("Cannot open directory");
@makeincfiles= sort(readdir(PDIR));
$count=1;
#print @makeincfiles;
@fileslist=[];
foreach $file (@makeincfiles){
$platform="";
if($file=~ m/make\.inc\.(.+$)/)
{ $platform=$1;
print $count." ".$platform;
print ("\n");
$count++;
push(@fileslist,$file);
if ($count%20==0) {
print "type enter for more";
$wait=<>;
}
}
}
print "\nEnter the number of the platform that suites your system best: ";
$sel=<>;
if ($sel>$count-1 || $sel<1 || $sel=~m/^$/ || $sel!~m/^\d+$/) {
print "\ntry again\n\n";
exit;
}else{
print "\nYou use the makefile from:\n\n build/platforms/" . @fileslist[$sel];
print "\n\nIf the compilation fails, edit \"build/make.inc\" and execute \"make\" again.\n"
}
$filename="build/platforms/" . @fileslist[$sel];
@args=("cp",$filename,"build/make.inc");
$return= system(@args);
$selected=0;
while($selected==0){
print "\nIf you have MPI installed you can build exciting with k-point parallelization support.\n\n";
print "Build MPI binary ? (yes/No) ";
$MPI=<>;
if($MPI=~m/yes/i){
$selected=1;
system("echo \"BUILDMPI=true\">>build/make.inc");
print "Select the mechanism to include MPI interface variables\n";
print " 1 use MPI module (f90 interfaces) recommended if available\n";
print " 2 use #include <mpif.h> required by some MPI implementations
(edit path in build mpiconf.inc if mpif.h is not in your includepath)\n";
print " Note: if you do not have istalled MPI-2 include '-DMPI1'
in your compiler options (MPIF90_OPTS) in the
'build/make.inc' file after finishing this setup script.\n";
$mpiinclude=<>;
if($mpiinclude==1) {$includefile="mpiconf.inc.module";}
if($mpiinclude==2) {$includefile="mpiconf.inc.include";}
system(("cp", "build/platforms/$includefile", "build/mpiconf.inc"));
}elsif($MPI=~m/no/i) {
system("echo \"BUILDMPI=false\">>build/make.inc");
$selected=1;
}else{
print "please chose yes or no";
$selected=0;
}
}
$selected=0;
while($selected==0){
print "\nIf you have multithreaded BLAS/LAPACK installed you can build exciting with SMP support.\n\n";
print "Build SMP lib binary (yes/No) ";
$SMP=<>;
if($SMP=~m/yes/i){
system("echo \"BUILDSMP=true\">>build/make.inc");
$selected=1;
}elsif ($SMP=~m/no/i)
{
system("echo \"BUILDSMP=false\" >>build/make.inc");
$selected=1;
}else{
print "please chose yes or no";
}
}