'_p', "Profiling",
'_t', "Ticky-ticky Profiling",
'_u', "Unregisterised",
+ '_s', "SMP",
'_mp', "Parallel",
'_mg', "Gransim",
# system ways end
'_p', "-fscc-profiling -DPROFILING -optc-DPROFILING",
'_t', "-fticky-ticky -DTICKY_TICKY -optc-DTICKY_TICKY",
'_u', "-optc-DNO_REGS -optc-DUSE_MINIINTERPRETER -fno-asm-mangling -funregisterised",
- '_mp', "-fstack-check -fparallel -D__PARALLEL_HASKELL__ -optc-DPAR",
- '_mg', "-fstack-check -fconcurrent -fgransim -D__GRANSIM__ -D__CONCURRENT_HASKELL__ -optc-DCONCURRENT -optc-DGRAN");
+ '_s', "-fparallel -optc-pthread -optl-pthread -optc-DSMP",
+ '_mp', "-fparallel -D__PARALLEL_HASKELL__ -optc-DPAR",
+ '_mg', "-fgransim -D__GRANSIM__ -optc-DGRAN");
# where to look for interface files (system hi's, i.e., prelude and syslibs)
@SysImport_dir = ( $INSTALLING )
exit(1);
}
+ } elsif ( $SMPing eq 's') {
+ $BuildTag = '_s';
+
} elsif ( $GRANing eq 'g' ) {
if ($TICKYing eq 't') { print STDERR "$Pgm: Can't mix -gransim with -ticky.\n"; exit 1; }
$BuildTag = '_mg';
/^-gransim$/ && do { $GRANing = 'g'; &add_syslib('concurrent'); next arg; }; # GranSim
/^-ticky$/ && do { $TICKYing = 't'; next arg; }; # ticky-ticky
/^-parallel$/ && do { $PARing = 'p'; &add_syslib('concurrent'); next arg; }; # parallel Haskell
+ /^-smp$/ && do { $SMPing = 's'; &add_syslib('concurrent'); next arg; }; # parallel Haskell
#-------------- "user ways" --------------------------------------------
#
# The ways currently defined.
#
-ALL_WAYS=p t u mp mg a b c d e f g h i j k l m n o A B
+ALL_WAYS=p t u s mp mg a b c d e f g h i j k l m n o A B
#
# The following ways currently have treated specially, p u t mg,
WAY_u_NAME=unregisterized (using portable C only)
WAY_u_HC_OPTS=-unreg
+# Way `s':
+WAY_s_NAME=threads (for SMP)
+WAY_s_HC_OPTS=-smp
+
# Way `mp':
WAY_mp_NAME=parallel
WAY_mp_HC_OPTS=-parallel