[project @ 1996-03-22 09:24:22 by partain]
[ghc-hetmet.git] / ghc / lib / Jmakefile
index 4702053..b0baed0 100644 (file)
@@ -72,11 +72,21 @@ EtagsNeededHere(tags)
 /* The driver will give warnings if -split-objs,
    but that's cool...
 */
-GHC_OPTS=-iprelude:glaExts -dcore-lint \
-       -fshow-pragma-name-errs -fshow-import-specs \
-       -optP-genSPECS0 -cpp -fglasgow-exts \
-       -DUSE_FOLDR_BUILD -D__OVERLAPPING_INSTANCES__ \
-       HcMaxHeapFlag $(EXTRA_HC_OPTS)
+GHC_OPTS=-iprelude:glaExts              \
+        -dcore-lint                     \
+        -fshow-pragma-name-errs         \
+        -fshow-import-specs             \
+        -fomit-default-instance-methods \
+        -cpp -fglasgow-exts -genSPECS   \
+        -DUSE_FOLDR_BUILD -D__OVERLAPPING_INSTANCES__ \
+        HcMaxHeapFlag $(EXTRA_HC_OPTS)
+
+/* For building with unboxed stuff add:
+
+       -fspecialise-unboxed -genSPECSunboxed -D__UNBOXED_INSTANCES__ -D__UNBOXED_SPECS__
+
+   This is currently done using -user-way-b = -unboxed-specialisation
+*/
 
 /* For the "Prelude" bits: mostly we do not want it to pick
     up interface information from anywhere except *here*.
@@ -209,6 +219,8 @@ CAT2(blob,_HC_l)    = $(CAT2(blob,_HS):.hs=_l.hc)   @@\
 CAT2(blob,_HC_m)    = $(CAT2(blob,_HS):.hs=_m.hc)      @@\
 CAT2(blob,_HC_n)    = $(CAT2(blob,_HS):.hs=_n.hc)      @@\
 CAT2(blob,_HC_o)    = $(CAT2(blob,_HS):.hs=_o.hc)      @@\
+CAT2(blob,_HC_A)    = $(CAT2(blob,_HS):.hs=_A.hc)      @@\
+CAT2(blob,_HC_B)    = $(CAT2(blob,_HS):.hs=_B.hc)      @@\
                                                        @@\
 CAT2(blob,_DEP_norm) = $(CAT2(blob,_HC_norm):.hc=.o)   @@\
 CAT2(blob,_DEP_p)   = $(CAT2(blob,_HC_p):.hc=.o)       @@\
@@ -237,6 +249,8 @@ CAT2(blob,_DEP_l)   = $(CAT2(blob,_HC_l):.hc=.o)    @@\
 CAT2(blob,_DEP_m)   = $(CAT2(blob,_HC_m):.hc=.o)       @@\
 CAT2(blob,_DEP_n)   = $(CAT2(blob,_HC_n):.hc=.o)       @@\
 CAT2(blob,_DEP_o)   = $(CAT2(blob,_HC_o):.hc=.o)       @@\
+CAT2(blob,_DEP_A)   = $(CAT2(blob,_HC_A):.hc=.o)       @@\
+CAT2(blob,_DEP_B)   = $(CAT2(blob,_HC_B):.hc=.o)       @@\
                                                        @@\
 CAT2(blob,_HIs_p)   = $(CAT2(blob,_HIs):.hi=_p.hi)     @@\
 CAT2(blob,_HIs_t)   = $(CAT2(blob,_HIs):.hi=_t.hi)     @@\
@@ -263,7 +277,9 @@ CAT2(blob,_HIs_k)   = $(CAT2(blob,_HIs):.hi=_k.hi)  @@\
 CAT2(blob,_HIs_l)   = $(CAT2(blob,_HIs):.hi=_l.hi)     @@\
 CAT2(blob,_HIs_m)   = $(CAT2(blob,_HIs):.hi=_m.hi)     @@\
 CAT2(blob,_HIs_n)   = $(CAT2(blob,_HIs):.hi=_n.hi)     @@\
-CAT2(blob,_HIs_o)   = $(CAT2(blob,_HIs):.hi=_o.hi)
+CAT2(blob,_HIs_o)   = $(CAT2(blob,_HIs):.hi=_o.hi)     @@\
+CAT2(blob,_HIs_A)   = $(CAT2(blob,_HIs):.hi=_A.hi)     @@\
+CAT2(blob,_HIs_B)   = $(CAT2(blob,_HIs):.hi=_B.hi)
 
 
 #define PrintFileStuff(blob,outf) \
@@ -295,6 +311,8 @@ CAT2(blob,_HIs_o)   = $(CAT2(blob,_HIs):.hi=_o.hi)
        @echo 'IfGhcBuild_m('  CAT2(blob,_HC_m)  = $(CAT2(blob,_HC_m))  ')' >> outf @@\
        @echo 'IfGhcBuild_n('  CAT2(blob,_HC_n)  = $(CAT2(blob,_HC_n))  ')' >> outf @@\
        @echo 'IfGhcBuild_o('  CAT2(blob,_HC_o)  = $(CAT2(blob,_HC_o))  ')' >> outf @@\
+       @echo 'IfGhcBuild_A('  CAT2(blob,_HC_A)  = $(CAT2(blob,_HC_A))  ')' >> outf @@\
+       @echo 'IfGhcBuild_B('  CAT2(blob,_HC_B)  = $(CAT2(blob,_HC_B))  ')' >> outf @@\
        @echo 'IfGhcBuild_p('  CAT2(blob,_DEP_p)  = $(CAT2(blob,_DEP_p))  ')' >> outf @@\
        @echo 'IfGhcBuild_t('  CAT2(blob,_DEP_t)  = $(CAT2(blob,_DEP_t))  ')' >> outf @@\
        @echo 'IfGhcBuild_u('  CAT2(blob,_DEP_u)  = $(CAT2(blob,_DEP_u))  ')' >> outf @@\
@@ -321,6 +339,8 @@ CAT2(blob,_HIs_o)   = $(CAT2(blob,_HIs):.hi=_o.hi)
        @echo 'IfGhcBuild_m('  CAT2(blob,_DEP_m)  = $(CAT2(blob,_DEP_m))  ')' >> outf @@\
        @echo 'IfGhcBuild_n('  CAT2(blob,_DEP_n)  = $(CAT2(blob,_DEP_n))  ')' >> outf @@\
        @echo 'IfGhcBuild_o('  CAT2(blob,_DEP_o)  = $(CAT2(blob,_DEP_o))  ')' >> outf @@\
+       @echo 'IfGhcBuild_A('  CAT2(blob,_DEP_A)  = $(CAT2(blob,_DEP_A))  ')' >> outf @@\
+       @echo 'IfGhcBuild_B('  CAT2(blob,_DEP_B)  = $(CAT2(blob,_DEP_B))  ')' >> outf @@\
        @echo 'IfGhcBuild_p('  CAT2(blob,_HIs_p)  = $(CAT2(blob,_HIs_p))  ')' >> outf @@\
        @echo 'IfGhcBuild_t('  CAT2(blob,_HIs_t)  = $(CAT2(blob,_HIs_t))  ')' >> outf @@\
        @echo 'IfGhcBuild_u('  CAT2(blob,_HIs_u)  = $(CAT2(blob,_HIs_u))  ')' >> outf @@\
@@ -346,7 +366,9 @@ CAT2(blob,_HIs_o)   = $(CAT2(blob,_HIs):.hi=_o.hi)
        @echo 'IfGhcBuild_l('  CAT2(blob,_HIs_l)  = $(CAT2(blob,_HIs_l))  ')' >> outf @@\
        @echo 'IfGhcBuild_m('  CAT2(blob,_HIs_m)  = $(CAT2(blob,_HIs_m))  ')' >> outf @@\
        @echo 'IfGhcBuild_n('  CAT2(blob,_HIs_n)  = $(CAT2(blob,_HIs_n))  ')' >> outf @@\
-       @echo 'IfGhcBuild_o('  CAT2(blob,_HIs_o)  = $(CAT2(blob,_HIs_o))  ')' >> outf
+       @echo 'IfGhcBuild_o('  CAT2(blob,_HIs_o)  = $(CAT2(blob,_HIs_o))  ')' >> outf @@\
+       @echo 'IfGhcBuild_A('  CAT2(blob,_HIs_A)  = $(CAT2(blob,_HIs_A))  ')' >> outf @@\
+       @echo 'IfGhcBuild_B('  CAT2(blob,_HIs_B)  = $(CAT2(blob,_HIs_B))  ')' >> outf
 
 BASIC_HS       = $(BASIC_LHS:.lhs=.hs) $(BASIC_HS_PREL)
 BASIC_OBJS_DIRS        = $(BASIC_HS:.hs=)
@@ -534,6 +556,8 @@ IfGhcBuild_l(hcs_l   :: $(BASIC_HC_l)  $(ONE3_HC_l)  $(GHCLIB_HC_l)  $(HBCLIB_HC
 IfGhcBuild_m(hcs_m   :: $(BASIC_HC_m)  $(ONE3_HC_m)  $(GHCLIB_HC_m)  $(HBCLIB_HC_m))
 IfGhcBuild_n(hcs_n   :: $(BASIC_HC_n)  $(ONE3_HC_n)  $(GHCLIB_HC_n)  $(HBCLIB_HC_n))
 IfGhcBuild_o(hcs_o   :: $(BASIC_HC_o)  $(ONE3_HC_o)  $(GHCLIB_HC_o)  $(HBCLIB_HC_o))
+IfGhcBuild_A(hcs_A   :: $(BASIC_HC_A)  $(ONE3_HC_A)  $(GHCLIB_HC_A)  $(HBCLIB_HC_A))
+IfGhcBuild_B(hcs_B   :: $(BASIC_HC_B)  $(ONE3_HC_B)  $(GHCLIB_HC_B)  $(HBCLIB_HC_B))
 
 IfGhcBuild_normal(libs:: libHS.a    libHS13.a    libHSghc.a    libHShbc.a)
 IfGhcBuild_p(libs_p   :: libHS_p.a  libHS13_p.a  libHSghc_p.a  libHShbc_p.a)
@@ -562,9 +586,11 @@ IfGhcBuild_l(libs_l   :: libHS_l.a  libHS13_l.a  libHSghc_l.a  libHShbc_l.a)
 IfGhcBuild_m(libs_m   :: libHS_m.a  libHS13_m.a  libHSghc_m.a  libHShbc_m.a)
 IfGhcBuild_n(libs_n   :: libHS_n.a  libHS13_n.a  libHSghc_n.a  libHShbc_n.a)
 IfGhcBuild_o(libs_o   :: libHS_o.a  libHS13_o.a  libHSghc_o.a  libHShbc_o.a)
+IfGhcBuild_A(libs_A   :: libHS_A.a  libHS13_A.a  libHSghc_A.a  libHShbc_A.a)
+IfGhcBuild_B(libs_B   :: libHS_B.a  libHS13_B.a  libHSghc_B.a  libHShbc_B.a)
 
 /* maybe for GNU make only? */
-.PHONY :: hcs hcs_p hcs_t hcs_mg hcs_mr hcs_mt hcs_mp hcs_mg hcs_a hcs_b hcs_c hcs_d hcs_e hcs_f hcs_g hcs_h hcs_i hcs_j hcs_k hcs_l hcs_m hcs_n hcs_o
+.PHONY :: hcs hcs_p hcs_t hcs_mg hcs_mr hcs_mt hcs_mp hcs_mg hcs_a hcs_b hcs_c hcs_d hcs_e hcs_f hcs_g hcs_h hcs_i hcs_j hcs_k hcs_l hcs_m hcs_n hcs_o hcs_A hcs_B
 
 #endif /* reasonable make */
 
@@ -598,7 +624,7 @@ GHCLIB_HIs  = ghc/Bag.hi                    \
              ghc/MatchPS.hi                    \
              ghc/Pretty.hi                     \
              ghc/Set.hi                        \
-             ghc/Util.hi __readline_hi __sockets_hi
+             ghc/Util.hi
 
 ONE3_HIs    = haskell-1.3/LibSystem.hi         \
              haskell-1.3/LibCPUTime.hi         \
@@ -900,6 +926,20 @@ IfGhcBuild_o(BigBuildTarget(_o,'*_o.o',his_o       \
 , $(ONE3_DEP_o),   $(ONE3_HIs_o)               \
 ))
 
+IfGhcBuild_A(BigBuildTarget(_A,'*_A.o',his_A   \
+, $(BASIC_DEP_A),  $(BASIC_HIs_A)              \
+, $(GHCLIB_DEP_A), $(GHCLIB_HIs_A)             \
+, $(HBCLIB_DEP_A), $(HBCLIB_HIs_A)             \
+, $(ONE3_DEP_A),   $(ONE3_HIs_A)               \
+))
+
+IfGhcBuild_B(BigBuildTarget(_B,'*_B.o',his_B   \
+, $(BASIC_DEP_B),  $(BASIC_HIs_B)              \
+, $(GHCLIB_DEP_B), $(GHCLIB_HIs_B)             \
+, $(HBCLIB_DEP_B), $(HBCLIB_HIs_B)             \
+, $(ONE3_DEP_B),   $(ONE3_HIs_B)               \
+))
+
 /****************************************************************
 *                                                              *
 * Creating the individual .hc files:                           *
@@ -972,7 +1012,9 @@ IfGhcBuild_k(DoHs(file,isuf,_k,   flags $(GHC_OPTS_k),   '_k.o',  '*_k.o'))        \
 IfGhcBuild_l(DoHs(file,isuf,_l,   flags $(GHC_OPTS_l),   '_l.o',  '*_l.o'))    \
 IfGhcBuild_m(DoHs(file,isuf,_m,   flags $(GHC_OPTS_m),   '_m.o',  '*_m.o'))    \
 IfGhcBuild_n(DoHs(file,isuf,_n,   flags $(GHC_OPTS_n),   '_n.o',  '*_n.o'))    \
-IfGhcBuild_o(DoHs(file,isuf,_o,   flags $(GHC_OPTS_o),   '_o.o',  '*_o.o'))
+IfGhcBuild_o(DoHs(file,isuf,_o,   flags $(GHC_OPTS_o),   '_o.o',  '*_o.o'))    \
+IfGhcBuild_A(DoHs(file,isuf,_A,   flags $(GHC_OPTS_A),   '_A.o',  '*_A.o'))    \
+IfGhcBuild_B(DoHs(file,isuf,_B,   flags $(GHC_OPTS_B),   '_B.o',  '*_B.o'))
 
 /* now use the macro: */
 
@@ -1002,7 +1044,7 @@ CompilePreludishly(prelude/TyComplex,hs,$(PREL_OPTS) -split-objs TyComplex -ohi
 CompilePreludishly(prelude/TyIO,hs,    $(PREL_OPTS) -split-objs TyIO -fmin-builtin-names -ohi prelude/TyIO.hi)
 CompilePreludishly(prelude/TyRatio,hs, $(PREL_OPTS) -split-objs TyRatio -fmin-builtin-names -nohi)
 
-CompilePreludishly(prelude/IArray,hs,  $(PREL_OPTS) -split-objs IArray -H14m -ohi prelude/IArray.hi)
+CompilePreludishly(prelude/IArray,hs,  $(PREL_OPTS) -split-objs IArray -H18m -ohi prelude/IArray.hi)
 CompilePreludishly(prelude/IBool,hs,   $(PREL_OPTS) -split-objs IBool -ohi prelude/IBool.hi)
 CompilePreludishly(prelude/IChar,hs,   $(PREL_OPTS) -split-objs IChar -ohi prelude/IChar.hi)
 CompilePreludishly(prelude/IComplex,hs,        $(PREL_OPTS) -split-objs IComplex -H16m -ohi prelude/IComplex.hi)
@@ -1010,10 +1052,10 @@ CompilePreludishly(prelude/IDouble,hs,  $(PREL_OPTS) -split-objs IDouble -ohi pre
 CompilePreludishly(prelude/IFloat,hs,  $(PREL_OPTS) -split-objs IFloat -ohi prelude/IFloat.hi)
 CompilePreludishly(prelude/IInt,hs,    $(PREL_OPTS) -split-objs IInt -ohi prelude/IInt.hi -monly-4-regs)
 CompilePreludishly(prelude/IInteger,hs,        $(PREL_OPTS) -split-objs IInteger -ohi prelude/IInteger.hi)
-CompilePreludishly(prelude/IList,hs,   $(PREL_OPTS) -split-objs IList -ohi prelude/IList.hi)
+CompilePreludishly(prelude/IList,hs,   $(PREL_OPTS) -split-objs IList -H12m -ohi prelude/IList.hi)
 CompilePreludishly(prelude/IRatio,hs,  $(PREL_OPTS) -split-objs IRatio -H16m -ohi prelude/IRatio.hi)
 CompilePreludishly(prelude/ITup0,hs,   $(PREL_OPTS) -split-objs ITup0 -ohi prelude/ITup0.hi)
-CompilePreludishly(prelude/ITup2,hs,   $(PREL_OPTS) -split-objs ITup2 -ohi prelude/ITup2.hi)
+CompilePreludishly(prelude/ITup2,hs,   $(PREL_OPTS) -split-objs ITup2 -H40m -K2m -ohi prelude/ITup2.hi)
 CompilePreludishly(prelude/ITup3,hs,   $(PREL_OPTS) -split-objs ITup3 -ohi prelude/ITup3.hi)
 CompilePreludishly(prelude/ITup4,hs,   $(PREL_OPTS) -split-objs ITup4 -H16m -ohi prelude/ITup4.hi)
 CompilePreludishly(prelude/ITup5,hs,   $(PREL_OPTS) -split-objs ITup5 -H24m -ohi prelude/ITup5.hi)
@@ -1021,12 +1063,12 @@ CompilePreludishly(prelude/ITup5,hs,    $(PREL_OPTS) -split-objs ITup5 -H24m -ohi p
 CompilePreludishly(prelude/Cls,hs,     $(PREL_OPTS) -split-objs Cls -H24m -fmin-builtin-names -ohi prelude/Cls.hi)
 
 CompilePreludishly(prelude/Builtin,hs, $(PREL_OPTS) -split-objs Builtin -ohi prelude/Builtin.hi)
-CompilePreludishly(prelude/Core,hs,    $(PREL_OPTS) -split-objs Core -ohi prelude/Core.hi)
+CompilePreludishly(prelude/Core,hs,    $(PREL_OPTS) -split-objs Core -H24m -ohi prelude/Core.hi)
 CompilePreludishly(prelude/IO,hs,      $(PREL_OPTS) -split-objs IO -ohi prelude/IO.hi)
-CompilePreludishly(prelude/List,hs,    $(PREL_OPTS) -split-objs List -H14m -ohi prelude/List.hi)
+CompilePreludishly(prelude/List,hs,    $(PREL_OPTS) -split-objs List -H24m -ohi prelude/List.hi -fno-snapback-to-append)
 CompilePreludishly(prelude/PS,lhs,     $(PREL_OPTS) -split-objs PS -ohi prelude/PS.hi -monly-2-regs)
 CompilePreludishly(prelude/Prel,hs,    $(PREL_OPTS) -split-objs Prel -H14m -ohi prelude/Prel.hi -monly-2-regs)
-CompilePreludishly(prelude/Text,hs,    $(PREL_OPTS) -split-objs Text -H14m -ohi prelude/Text.hi -monly-4-regs)
+CompilePreludishly(prelude/Text,hs,    $(PREL_OPTS) -split-objs Text -H30m -ohi prelude/Text.hi -monly-4-regs)
 CompilePreludishly(prelude/FoldrBuild,hs, $(PREL_OPTS) -split-objs FoldrBuild -nohi)
 
 /* --- 1.3 I/O support --- */
@@ -1043,7 +1085,7 @@ CompilePreludishly(prelude/PreludeReadTextIO,lhs, $(PREL_OPTS) -split-objs ReadT
 CompilePreludishly(haskell-1.3/LibSystem,lhs,    -fhaskell-1.3 -split-objs LibSystem '-#include"stgio.h"')
 CompilePreludishly(haskell-1.3/LibCPUTime,lhs,    -fhaskell-1.3 -split-objs LibCPUTime '-#include"stgio.h"')
 CompilePreludishly(haskell-1.3/LibDirectory,lhs,  -fhaskell-1.3 -split-objs LibDirectory '-#include"stgio.h"' -monly-3-regs)
-CompilePreludishly(haskell-1.3/LibTime,lhs,       -fhaskell-1.3 -split-objs LibTime '-#include"stgio.h"' '-#include"timezone.h"' -H12m -monly-3-regs -optcO-DNON_POSIX_SOURCE)
+CompilePreludishly(haskell-1.3/LibTime,lhs,       -fhaskell-1.3 -split-objs LibTime '-#include"stgio.h"' '-#include"timezone.h"' -H12m -K2m -monly-3-regs)
 
 CompilePreludishly(haskell-1.3/LibPosix,lhs,      -fhaskell-1.3 -split-objs LibPosix '-#include"stgio.h"' '-#include"libposix.h"')
 CompilePreludishly(haskell-1.3/LibPosixDB,lhs,      -fhaskell-1.3 -split-objs LibPosixDB '-#include"stgio.h"' '-#include"libposix.h"')
@@ -1085,12 +1127,12 @@ CompilePreludishly(ghc/Readline,lhs,    -ighc -fhaskell-1.3 '-#include"ghcReadline.
 #endif
 #if GhcWithSockets == YES
 CompilePreludishly(ghc/Socket,lhs,     -ighc -fhaskell-1.3)
-CompilePreludishly(ghc/SocketPrim,lhs, -ighc -fhaskell-1.3 -K2m -optcO-DNON_POSIX_SOURCE '-#include"ghcSockets.h"')
+CompilePreludishly(ghc/SocketPrim,lhs, -ighc -fhaskell-1.3 -H12m -K2m -optcO-DNON_POSIX_SOURCE '-#include"ghcSockets.h"')
 CompilePreludishly(ghc/BSD,lhs,                -ighc -fhaskell-1.3 -optcO-DNON_POSIX_SOURCE '-#include"ghcSockets.h"')
 CompilePreludishly(ghc/CError,lhs,     -ighc -fhaskell-1.3 -K2m -fomit-derived-read)
 #endif
 CompilePreludishly(ghc/Set,lhs,                -ighc -fhaskell-1.3)
-CompilePreludishly(ghc/Util,lhs,       -ighc -fhaskell-1.3)
+CompilePreludishly(ghc/Util,lhs,       -H12m -ighc -fhaskell-1.3)
 
 /* --- HBC-compatibility library --- */
 
@@ -1099,18 +1141,18 @@ CompilePreludishly(hbc/Hash,hs,         )
 CompilePreludishly(hbc/ListUtil,hs,    -ihbc -fhaskell-1.3)
 CompilePreludishly(hbc/Miranda,hs,     -ihbc)
 CompilePreludishly(hbc/NameSupply,hs,  )
-CompilePreludishly(hbc/Native,hs,      -ihbc -fhaskell-1.3)
-CompilePreludishly(hbc/Number,hs,      )
-CompilePreludishly(hbc/Parse,hs,       -ihbc -fhaskell-1.3)
+CompilePreludishly(hbc/Native,hs,      -H12m -ihbc -fhaskell-1.3 -fno-omit-default-instance-methods)
+CompilePreludishly(hbc/Number,hs,      -H12m -K2m  -fno-omit-default-instance-methods)
+CompilePreludishly(hbc/Parse,hs,       -H12m -ihbc -fhaskell-1.3)
 CompilePreludishly(hbc/Polynomial,hs,  -ihbc) /* this code could not ever have worked */
 CompilePreludishly(hbc/Pretty,hs,      )
-CompilePreludishly(hbc/Printf,hs,      )
+CompilePreludishly(hbc/Printf,hs,      -H12m)
 CompilePreludishly(hbc/QSort,hs,       )
 CompilePreludishly(hbc/Random,hs,      -monly-4-regs)
 CompilePreludishly(hbc/SimpleLex,hs,   )
-CompilePreludishly(hbc/Time,hs,                )
+CompilePreludishly(hbc/Time,hs,                -H12m)
 CompilePreludishly(hbc/Trace,hs,       -fglasgow-exts)
-CompilePreludishly(hbc/Word,hs,                -K2m -monly-4-regs)
+CompilePreludishly(hbc/Word,hs,                -H12m -K2m -monly-4-regs)
 
 /****************************************************************
 *                                                              *
@@ -1148,6 +1190,10 @@ print_file_list5 :
 /* now include the extra dependencies so generated */
 #include "Jmake.inc5"
 
+/* for unix-libs.lit */
+LitSuffixRule(.lhs,.hs)
+LitDocRootTarget(unix-libs,lit)
+
 /* should be *LAST* */
 #if HaskellCompilerType != HC_USE_HC_FILES
     /* otherwise, the dependencies jeopardize our .hc files --