HOSTPLATFORM TARGETPLATFORM
-PROJECTNAME PROJECTVERSION PROJECTPATCHLEVEL
+ProjectName ProjectVersion ProjectVersionInt ProjectPatchLevel
TOP_PWD
#
$InstLibExecDirGhc = "${libexecdir}";
$InstDataDirGhc = "${datadir}";
-$InstSysLibDir = ( $INSTALLING ) ? "${InstLibDirGhc}/hslibs" : "$TopPwd/hslibs";
$Status = 0; # just used for exit() status
$Verbose = '';
'-fwarn-duplicate-exports');
@MinusWOpts = (@StandardWarnings,
'-fwarn-incomplete-patterns',
- '-fwarn-unused-names');
+ '-fwarn-unused-binds',
+ '-fwarn-unused-imports');
@MinusWallOpts = (@MinusWOpts,
+ '-fwarn-unused-matches',
'-fwarn-name-shadowing');
\end{code}
@Import_dir = ('.'); #-i things
@Include_dir = ('.'); #-I things; other default(s) stuck on AFTER option processing
-# where to look for interface files (system hi's, i.e., prelude and hslibs)
+# where to look for interface files (system hi's, i.e., prelude and syslibs)
@SysImport_dir = ( $INSTALLING )
- ? ( "$InstLibDirGhc/imports" )
- : ( "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/required"
- , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/ghc"
- , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/glaExts"
- , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/concurrent" );
+ ? ( "$InstLibDirGhc/imports/std" )
+ : ( "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/std" );
# We need to look in ghc/ and glaExts/ when searching for implicitly needed .hi files, but
# we should really *not* look there for explicitly imported modules.
-$GhcVersionInfo = int($PROJECTVERSION * 100 + .5); # i.e., round (X.Y * 100)
+$GhcVersionInfo = $ProjectVersionInt;
$Haskell1Version = 4; # i.e., Haskell 1.4
@Cpp_define = ();
? $InstLibDirGhc
: ( "$TopPwd/$CURRENT_DIR/$GHC_RUNTIME_DIR"
, "$TopPwd/$CURRENT_DIR/$GHC_RUNTIME_DIR/gmp"
- , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR"
- , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/cbits"
+ , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/std"
+ , "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/std/cbits"
)
);
@SysLibrary = (); # will be built up as we go along
$Oopt_FinalStgProfilingMassage = '-fmassage-stg-for-profiling';
+ # Ignore user sccs when auto annotating, but warn when doing so.
+ $PROFignore_scc = '-W' if $PROFauto;
+
push(@HsP_flags, (($PROFignore_scc) ? $PROFignore_scc : '-S'));
if ( $SplitObjFiles ) {
Tell the world who we are, if they asked.
\begin{code}
-print STDERR "${PROJECTNAME}, version ${PROJECTVERSION}, patchlevel ${PROJECTPATCHLEVEL}\n"
+print STDERR "${ProjectName}, version ${ProjectVersion}, patchlevel ${ProjectPatchLevel}\n"
if $Verbose;
\end{code}
local($lnkr) = ( $Lnkr ) ? $Lnkr : $CcRegd;
local($output) = ($Specific_output_file ne '') ? "-o $Specific_output_file" : '';
- @Files_to_tidy = ($Specific_output_file ne '') ? $Specific_output_file : 'a.out';
+ @Files_to_tidy = ($Specific_output_file ne '') ?
+ $Specific_output_file :
+ ( ($TargetPlatform eq 'i386-unknown-cygwin32') ? 'main.exe' : 'a.out');
+ print STDERR "Output file not specified, defaulting to \"main.exe\"\n" if ($Specific_output_file eq '' && $TargetPlatform eq 'i386-unknown-cygwin32');
local($to_do) = "$lnkr $Verbose @Ld_flags $output @Link_file $TopClosureFile $libdirs @UserLibrary @SysLibrary";
&run_something($to_do, 'Linker');
if \$running_under_some_shell;
# =!=!=!=!=!=!=!=!=!=!=!
# This script is automatically generated: DO NOT EDIT!!!
-# Generated by Glasgow Haskell, version ${PROJECTVERSION} ${PROJECTPATCHLEVEL}
+# Generated by Glasgow Haskell, version ${ProjectVersion} ${ProjectPatchLevel}
#
\$pvm_executable = '$pvm_executable';
\$pvm_executable_base = '$pvm_executable_base';
#ToDo: local($or_isuf) = ($Isuffix eq '') ? '' : "|$Isuffix";
- if ( $ifile !~ /\.(lhs|hs|hc|c|s)$/ && $ifile !~ /_hc$/ ) {
- print STDERR "$Pgm: don't recognise suffix on `$ifile'; passing it through to linker\n"
- if $ifile !~ /\.a$/;
+ if ( $ifile !~ /\.(lhs|hs|hc|c|s|a)$/ && $ifile !~ /_hc$/ ) {
+ # There's sometimes confusion regarding .hi files; users
+ # supplying them on the command line.
+ if ( $ifile =~ /\.hi$/ ) {
+ print STDERR "$Pgm: warning: found `$ifile' on command line; interface files should not be supplied here - ignoring it.\n";
+ } else {
+ print STDERR "$Pgm: don't recognise suffix on `$ifile'; passing it through to linker\n";
+ }
# oops; we tentatively pushed the wrong thing; fix & do the right thing
pop(@Link_file); push(@Link_file, $ifile);
}
foreach $d ( @Import_dir ) {
if ($HiIncludeString) {
- $HiIncludeString = "$HiIncludeString:${d}%.${HiSuffix}";
+ $HiIncludeString = "$HiIncludeString:${d}/%.${HiSuffix}";
} else {
- $HiIncludeString = "$d%.${HiSuffix}";
+ $HiIncludeString = "$d/%.${HiSuffix}";
}
}
foreach $d ( @SysImport_dir ) {
if ($HiIncludeString) {
- $HiIncludeString = "$HiIncludeString:${d}%.${HiSuffix_prelude}";
+ $HiIncludeString = "$HiIncludeString:${d}/%.${HiSuffix_prelude}";
} else {
- $HiIncludeString = "${d}%.${HiSuffix_prelude}";
+ $HiIncludeString = "${d}/%.${HiSuffix_prelude}";
}
}
local($syslib) = @_;
unshift(@SysImport_dir,
- ${INSTALLING} ? "$InstSysLibDir/$syslib/imports"
- : "$TopPwd/hslibs/$syslib/src");
+ $INSTALLING ? "$InstLibDirGhc/imports/$syslib"
+ : "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/$syslib");
push(@SysLibrary_dir,
- ${INSTALLING} ? ("$InstSysLibDir")
- : ("$TopPwd/hslibs/$syslib",
- "$TopPwd/hslibs/$syslib/cbits"));
+ $INSTALLING ? ("$InstLibDirGhc")
+ : ("$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/$syslib",
+ "$TopPwd/$CURRENT_DIR/$GHC_LIB_DIR/$syslib/cbits"));
push(@SysLibrary, "-lHS$syslib");
push(@SysLibrary, "-lHS${syslib}_cbits")
- unless $syslib eq 'contrib'; #HACK! it has no cbits
+ unless $syslib eq 'contrib' || $syslib eq 'exts' || $syslib eq 'conc';
+ #HACK! they have no cbits
}
\end{code}
if (/^-\?$/ || /^--?help$/) { print $LongUsage; exit $Status; }
#-----------version ----------------------------------------------------
- /^--version$/ && do { print STDERR "${PROJECTNAME}, version ${PROJECTVERSION}, patchlevel ${PROJECTPATCHLEVEL}\n"; exit $Status; };
+ /^--version$/ && do { print STDERR "${ProjectName}, version ${ProjectVersion}, patchlevel ${ProjectPatchLevel}\n"; exit $Status; };
#---------- verbosity and such -----------------------------------------
/^-v$/ && do { $Verbose = '-v'; $Time = 'time'; next arg; };
#--------- ticky/concurrent/parallel -----------------------------------
# we sort out the details a bit later on
- /^-concurrent$/ && do { $CONCURing = 'c'; next arg; }; # concurrent Haskell
+ /^-concurrent$/ && do { $CONCURing = 'c'; &add_syslib('conc'); next arg; };
+ # concurrent Haskell; implies -syslib conc
/^-gransim$/ && do { $GRANing = 'g'; next arg; }; # GranSim
/^-ticky$/ && do { $TICKYing = 't'; next arg; }; # ticky-ticky
/^-parallel$/ && do { $PARing = 'p'; next arg; }; # parallel Haskell
/^-syslib(.*)/ && do { local($syslib) = &grab_arg_arg(*Args,'-syslib',$1);
print STDERR "$Pgm: no such system library (-syslib): $syslib\n",
- $Status++ unless $syslib =~ /^(hbc|ghc|posix|contrib)$/;
+ $Status++ unless $syslib =~ /^(exts|misc|posix)$/;
#
# The posix library is a `special' in that it relies on
#
&add_syslib($syslib);
if ( $syslib eq 'posix' ) {
- &add_syslib('ghc');
- } elsif ( $syslib eq 'ghc' &&
+ &add_syslib('misc');
+ } elsif ( $syslib eq 'misc' &&
$TargetName =~ /-solaris2$/ ) {
# needed for Berkeley socket/nwork stuff.
push(@SysLibrary, '-lnsl');
push(@HsP_flags, '-N');
# push(@HsC_flags, '-fshow-import-specs');
+
+ # -fglasgow-exts implies -syslib exts
+ &add_syslib('exts');
next arg; };