[project @ 1996-07-19 18:36:04 by partain]
[ghc-hetmet.git] / ghc / runtime / Jmakefile
index 84e3897..bc4d74a 100644 (file)
@@ -6,7 +6,6 @@
    At the moment, there are a few such subdirs:
        c-as-asm        -- mini-interpreter & register hackery
        gum             -- GUM-specific stuff
-       io              -- support for libPOSIX
        main            -- "main", associated startup stuff, & MISC things
        prims           -- code for primitives that must be written in C
        profiling       -- cost-centre profiling
    Other sorta independent, compile-once subdirs are:
 
        gmp             -- GNU multi-precision library (for Integer)
-       regex           -- GNU regexp package
 */
 
 #define IHaveSubdirs
 
-SUBDIRS = gmp regex
+SUBDIRS = gmp
 
 /****************************************************************
 *                                                              *
@@ -35,6 +33,7 @@ SUBDIRS = gmp regex
 
 GhcDriverNeededHere(depend all) /* we use its C-compiling know-how */
 EtagsNeededHere(tags)
+UnlitNeededHere(depend)
 
 /****************************************************************
 *                                                              *
@@ -48,7 +47,7 @@ strictly speaking), it will probably work -- it is pinned onto
 GHC_OPTS, just for fun.
 */
 
-GHC_OPTS = -O2-for-C $(EXTRA_HC_OPTS)
+GHC_OPTS = $(EXTRA_HC_OPTS)
 
 /* per-build options: shared with libraries */
 #define rts_or_lib(r,l) r
@@ -133,56 +132,17 @@ RTS_LHC =                                 \
        storage/SMmark.lhc              \
        gum/FetchMe.lhc
 
-#if GhcWithReadline == YES
-# define __readline_cfile io/ghcReadline.lc
-#else
-# define __readline_cfile /*none*/
-#endif
-
 CLIB_LC =                              \
        hooks/ErrorHdr.lc               \
        hooks/OutOfHeap.lc              \
        hooks/OutOfStk.lc               \
        hooks/OutOfVM.lc                \
+       hooks/NoRunnableThrds.lc        \
        hooks/PatErrorHdr.lc            \
        hooks/TraceHooks.lc             \
        hooks/SizeHooks.lc              \
-       io/closeFile.lc                 \
-       io/createDirectory.lc           \
-       io/env.lc                       \
-       io/errno.lc                     \
-       io/execvpe.lc                   \
-       io/fileEOF.lc                   \
-       io/fileGetc.lc                  \
-       io/fileLookAhead.lc             \
-       io/filePosn.lc                  \
-       io/filePutc.lc                  \
-       io/fileSize.lc                  \
-       io/flushFile.lc                 \
-       io/getBufferMode.lc             \
-       io/getCPUTime.lc                \
-       io/getClockTime.lc              \
-       io/getCurrentDirectory.lc       \
-       io/getDirectoryContents.lc      \
-       io/getLock.lc                   \
-       io/inputReady.lc                \
-       io/openFile.lc                  \
-       io/readFile.lc                  \
-       io/removeDirectory.lc           \
-       io/removeFile.lc                \
-       io/renameDirectory.lc           \
-       io/renameFile.lc                \
-       io/seekFile.lc                  \
-       io/setBuffering.lc              \
-       io/setCurrentDirectory.lc       \
-       io/showTime.lc                  \
-       io/system.lc                    \
-       io/toClockSec.lc                \
-       io/toLocalTime.lc               \
-       io/toUTCTime.lc                 \
-       io/writeFile.lc                 \
-       main/Mallocs.lc                 \
-       prims/ByteOps.lc __readline_cfile
+       hooks/InitEachPE.lc             \
+       main/Mallocs.lc
 
 H_FILES = $(RTS_LH:.lh=.h)
 C_FILES = $(RTS_LC:.lc=.c) $(RTS_LHC:.lhc=.hc) $(CLIB_LC:.lc=.c)
@@ -194,9 +154,9 @@ all depend :: $(H_FILES)
 ExtraStuffToClean ( $(C_FILES) )
 
 /* Literate-pgmming suffix rules used herein */
-LitSuffixRule(.lhc,.hc)
-LitSuffixRule(.lc,.c)
-LitSuffixRule(.lh,.h)
+UnlitSuffixRule(.lhc,.hc)
+UnlitSuffixRule(.lc,.c)
+UnlitSuffixRule(.lh,.h)
 
 /****************************************************************
 *                                                              *
@@ -205,34 +165,34 @@ LitSuffixRule(.lh,.h)
 ****************************************************************/
 
 RTS_OBJS_norm = $(RTS_LC:.lc=.o)    $(RTS_LHC:.lhc=.o)
-RTS_OBJS_p    = $(RTS_LC:.lc=_p.o)  $(RTS_LHC:.lhc=_p.o)
-RTS_OBJS_t    = $(RTS_LC:.lc=_t.o)  $(RTS_LHC:.lhc=_t.o)
-RTS_OBJS_u    = $(RTS_LC:.lc=_u.o)  $(RTS_LHC:.lhc=_u.o)
-RTS_OBJS_mc   = $(RTS_LC:.lc=_mc.o) $(RTS_LHC:.lhc=_mc.o)
-RTS_OBJS_mr   = $(RTS_LC:.lc=_mr.o) $(RTS_LHC:.lhc=_mr.o)
-RTS_OBJS_mt   = $(RTS_LC:.lc=_mt.o) $(RTS_LHC:.lhc=_mt.o)
-RTS_OBJS_mp   = $(RTS_LC:.lc=_mp.o) $(RTS_LHC:.lhc=_mp.o)
-RTS_OBJS_mg   = $(RTS_LC:.lc=_mg.o) $(RTS_LHC:.lhc=_mg.o)
-RTS_OBJS_2s   = $(RTS_LC:.lc=_2s.o) $(RTS_LHC:.lhc=_2s.o)
-RTS_OBJS_1s   = $(RTS_LC:.lc=_1s.o) $(RTS_LHC:.lhc=_1s.o)
-RTS_OBJS_du   = $(RTS_LC:.lc=_du.o) $(RTS_LHC:.lhc=_du.o)
-RTS_OBJS_a    = $(RTS_LC:.lc=_a.o)  $(RTS_LHC:.lhc=_a.o)
-RTS_OBJS_b    = $(RTS_LC:.lc=_b.o)  $(RTS_LHC:.lhc=_b.o)
-RTS_OBJS_c    = $(RTS_LC:.lc=_c.o)  $(RTS_LHC:.lhc=_c.o)
-RTS_OBJS_d    = $(RTS_LC:.lc=_d.o)  $(RTS_LHC:.lhc=_d.o)
-RTS_OBJS_e    = $(RTS_LC:.lc=_e.o)  $(RTS_LHC:.lhc=_e.o)
-RTS_OBJS_f    = $(RTS_LC:.lc=_f.o)  $(RTS_LHC:.lhc=_f.o)
-RTS_OBJS_g    = $(RTS_LC:.lc=_g.o)  $(RTS_LHC:.lhc=_g.o)
-RTS_OBJS_h    = $(RTS_LC:.lc=_h.o)  $(RTS_LHC:.lhc=_h.o)
-RTS_OBJS_i    = $(RTS_LC:.lc=_i.o)  $(RTS_LHC:.lhc=_i.o)
-RTS_OBJS_j    = $(RTS_LC:.lc=_j.o)  $(RTS_LHC:.lhc=_j.o)
-RTS_OBJS_k    = $(RTS_LC:.lc=_k.o)  $(RTS_LHC:.lhc=_k.o)
-RTS_OBJS_l    = $(RTS_LC:.lc=_l.o)  $(RTS_LHC:.lhc=_l.o)
-RTS_OBJS_m    = $(RTS_LC:.lc=_m.o)  $(RTS_LHC:.lhc=_m.o)
-RTS_OBJS_n    = $(RTS_LC:.lc=_n.o)  $(RTS_LHC:.lhc=_n.o)
-RTS_OBJS_o    = $(RTS_LC:.lc=_o.o)  $(RTS_LHC:.lhc=_o.o)
-RTS_OBJS_A    = $(RTS_LC:.lc=_A.o)  $(RTS_LHC:.lhc=_A.o)
-RTS_OBJS_B    = $(RTS_LC:.lc=_B.o)  $(RTS_LHC:.lhc=_B.o)
+RTS_OBJS_p    = $(RTS_LC:.lc=.p_o)  $(RTS_LHC:.lhc=.p_o)
+RTS_OBJS_t    = $(RTS_LC:.lc=.t_o)  $(RTS_LHC:.lhc=.t_o)
+RTS_OBJS_u    = $(RTS_LC:.lc=.u_o)  $(RTS_LHC:.lhc=.u_o)
+RTS_OBJS_mc   = $(RTS_LC:.lc=.mc_o) $(RTS_LHC:.lhc=.mc_o)
+RTS_OBJS_mr   = $(RTS_LC:.lc=.mr_o) $(RTS_LHC:.lhc=.mr_o)
+RTS_OBJS_mt   = $(RTS_LC:.lc=.mt_o) $(RTS_LHC:.lhc=.mt_o)
+RTS_OBJS_mp   = $(RTS_LC:.lc=.mp_o) $(RTS_LHC:.lhc=.mp_o)
+RTS_OBJS_mg   = $(RTS_LC:.lc=.mg_o) $(RTS_LHC:.lhc=.mg_o)
+RTS_OBJS_2s   = $(RTS_LC:.lc=.2s_o) $(RTS_LHC:.lhc=.2s_o)
+RTS_OBJS_1s   = $(RTS_LC:.lc=.1s_o) $(RTS_LHC:.lhc=.1s_o)
+RTS_OBJS_du   = $(RTS_LC:.lc=.du_o) $(RTS_LHC:.lhc=.du_o)
+RTS_OBJS_a    = $(RTS_LC:.lc=.a_o)  $(RTS_LHC:.lhc=.a_o)
+RTS_OBJS_b    = $(RTS_LC:.lc=.b_o)  $(RTS_LHC:.lhc=.b_o)
+RTS_OBJS_c    = $(RTS_LC:.lc=.c_o)  $(RTS_LHC:.lhc=.c_o)
+RTS_OBJS_d    = $(RTS_LC:.lc=.d_o)  $(RTS_LHC:.lhc=.d_o)
+RTS_OBJS_e    = $(RTS_LC:.lc=.e_o)  $(RTS_LHC:.lhc=.e_o)
+RTS_OBJS_f    = $(RTS_LC:.lc=.f_o)  $(RTS_LHC:.lhc=.f_o)
+RTS_OBJS_g    = $(RTS_LC:.lc=.g_o)  $(RTS_LHC:.lhc=.g_o)
+RTS_OBJS_h    = $(RTS_LC:.lc=.h_o)  $(RTS_LHC:.lhc=.h_o)
+RTS_OBJS_i    = $(RTS_LC:.lc=.i_o)  $(RTS_LHC:.lhc=.i_o)
+RTS_OBJS_j    = $(RTS_LC:.lc=.j_o)  $(RTS_LHC:.lhc=.j_o)
+RTS_OBJS_k    = $(RTS_LC:.lc=.k_o)  $(RTS_LHC:.lhc=.k_o)
+RTS_OBJS_l    = $(RTS_LC:.lc=.l_o)  $(RTS_LHC:.lhc=.l_o)
+RTS_OBJS_m    = $(RTS_LC:.lc=.m_o)  $(RTS_LHC:.lhc=.m_o)
+RTS_OBJS_n    = $(RTS_LC:.lc=.n_o)  $(RTS_LHC:.lhc=.n_o)
+RTS_OBJS_o    = $(RTS_LC:.lc=.o_o)  $(RTS_LHC:.lhc=.o_o)
+RTS_OBJS_A    = $(RTS_LC:.lc=.A_o)  $(RTS_LHC:.lhc=.A_o)
+RTS_OBJS_B    = $(RTS_LC:.lc=.B_o)  $(RTS_LHC:.lhc=.B_o)
 
 CLIB_OBJS     = $(CLIB_LC:.lc=.o)
 
@@ -259,60 +219,22 @@ CompileClibishly(hooks/ErrorHdr,)
 CompileClibishly(hooks/OutOfHeap,)
 CompileClibishly(hooks/OutOfStk,)
 CompileClibishly(hooks/OutOfVM,)
+CompileClibishly(hooks/NoRunnableThrds,)
 CompileClibishly(hooks/PatErrorHdr,)
 CompileClibishly(hooks/TraceHooks,)
 CompileClibishly(hooks/SizeHooks,)
-CompileClibishly(io/closeFile,)
-CompileClibishly(io/createDirectory,)
-CompileClibishly(io/env,)
-CompileClibishly(io/errno,)
-CompileClibishly(io/execvpe,)
-CompileClibishly(io/fileEOF,)
-CompileClibishly(io/fileGetc,)
-CompileClibishly(io/fileLookAhead,)
-CompileClibishly(io/filePosn,)
-CompileClibishly(io/filePutc,)
-CompileClibishly(io/fileSize,)
-CompileClibishly(io/flushFile,)
-CompileClibishly(io/getBufferMode,)
-CompileClibishly(io/getCPUTime,)
-CompileClibishly(io/getClockTime,)
-CompileClibishly(io/getCurrentDirectory,)
-CompileClibishly(io/getDirectoryContents,)
-CompileClibishly(io/getLock,)
-CompileClibishly(io/inputReady,)
-CompileClibishly(io/openFile,)
-CompileClibishly(io/readFile,)
-CompileClibishly(io/removeDirectory,)
-CompileClibishly(io/removeFile,)
-CompileClibishly(io/renameDirectory,)
-CompileClibishly(io/renameFile,)
-CompileClibishly(io/seekFile,)
-CompileClibishly(io/setBuffering,)
-CompileClibishly(io/setCurrentDirectory,)
-CompileClibishly(io/showTime,)
-CompileClibishly(io/system,)
-CompileClibishly(io/toClockSec,)
-CompileClibishly(io/toLocalTime,)
-CompileClibishly(io/toUTCTime,)
-CompileClibishly(io/writeFile,)
+CompileClibishly(hooks/InitEachPE,)
 CompileClibishly(main/Mallocs,)
-CompileClibishly(main/TopClosure,)     /* NB */
-CompileClibishly(main/TopClosure13,)   /* ditto */
-CompileClibishly(prims/ByteOps,)
-#if GhcWithReadline == YES
-CompileClibishly(io/ghcReadline,)
-#endif
+CompileClibishly(main/TopClosure,)
 
-ExtraStuffToClean(main/TopClosure.o main/TopClosure13.o)
+ExtraStuffToClean(main/TopClosure.o)
 
-all :: main/TopClosure.o main/TopClosure13.o
+all :: main/TopClosure.o
 
-install :: main/TopClosure.o main/TopClosure13.o
+install :: main/TopClosure.o
        $(INSTALL) -c $(INSTLIBFLAGS) main/TopClosure.o   $(INSTLIBDIR_GHC)/TopClosure.o
-       $(INSTALL) -c $(INSTLIBFLAGS) main/TopClosure13.o $(INSTLIBDIR_GHC)/TopClosure13.o
 
-#if GhcBuild_mp == YES
+#if Build_mp == YES
 # if solaris2_TARGET_OS
 #  define __socket_libs -lsocket -lnsl
 # else
@@ -375,35 +297,35 @@ SpecialGhcRtsLibInstallTarget(tag)
 MakeDirectories(install, $(INSTLIBDIR_GHC))
 #endif /* DoInstallGHCSystem */
 
-IfGhcBuild_normal(BigBuildTarget(,$(RTS_OBJS_norm)))
-IfGhcBuild_p(BigBuildTarget(_p,   $(RTS_OBJS_p)))
-IfGhcBuild_t(BigBuildTarget(_t,   $(RTS_OBJS_t)))
-IfGhcBuild_u(BigBuildTarget(_u,   $(RTS_OBJS_u)))
-IfGhcBuild_mc(BigBuildTarget(_mc, $(RTS_OBJS_mc)))
-IfGhcBuild_mr(BigBuildTarget(_mr, $(RTS_OBJS_mr)))
-IfGhcBuild_mt(BigBuildTarget(_mt, $(RTS_OBJS_mt)))
-IfGhcBuild_mp(BigBuildTarget(_mp, $(RTS_OBJS_mp)))
-IfGhcBuild_mg(BigBuildTarget(_mg, $(RTS_OBJS_mg)))
-IfGhcBuild_2s(BigBuildTarget(_2s, $(RTS_OBJS_2s)))
-IfGhcBuild_1s(BigBuildTarget(_1s, $(RTS_OBJS_1s)))
-IfGhcBuild_du(BigBuildTarget(_du, $(RTS_OBJS_du)))
-IfGhcBuild_a(BigBuildTarget(_a,   $(RTS_OBJS_a)))
-IfGhcBuild_b(BigBuildTarget(_b,   $(RTS_OBJS_b)))
-IfGhcBuild_c(BigBuildTarget(_c,   $(RTS_OBJS_c)))
-IfGhcBuild_d(BigBuildTarget(_d,   $(RTS_OBJS_d)))
-IfGhcBuild_e(BigBuildTarget(_e,   $(RTS_OBJS_e)))
-IfGhcBuild_f(BigBuildTarget(_f,   $(RTS_OBJS_f)))
-IfGhcBuild_g(BigBuildTarget(_g,   $(RTS_OBJS_g)))
-IfGhcBuild_h(BigBuildTarget(_h,   $(RTS_OBJS_h)))
-IfGhcBuild_i(BigBuildTarget(_i,   $(RTS_OBJS_i)))
-IfGhcBuild_j(BigBuildTarget(_j,   $(RTS_OBJS_j)))
-IfGhcBuild_k(BigBuildTarget(_k,   $(RTS_OBJS_k)))
-IfGhcBuild_l(BigBuildTarget(_l,   $(RTS_OBJS_l)))
-IfGhcBuild_m(BigBuildTarget(_m,   $(RTS_OBJS_m)))
-IfGhcBuild_n(BigBuildTarget(_n,   $(RTS_OBJS_n)))
-IfGhcBuild_o(BigBuildTarget(_o,   $(RTS_OBJS_o)))
-IfGhcBuild_A(BigBuildTarget(_A,   $(RTS_OBJS_A)))
-IfGhcBuild_B(BigBuildTarget(_B,   $(RTS_OBJS_B)))
+IfBuild_normal(BigBuildTarget(,$(RTS_OBJS_norm)))
+IfBuild_p(BigBuildTarget(_p,   $(RTS_OBJS_p)))
+IfBuild_t(BigBuildTarget(_t,   $(RTS_OBJS_t)))
+IfBuild_u(BigBuildTarget(_u,   $(RTS_OBJS_u)))
+IfBuild_mc(BigBuildTarget(_mc, $(RTS_OBJS_mc)))
+IfBuild_mr(BigBuildTarget(_mr, $(RTS_OBJS_mr)))
+IfBuild_mt(BigBuildTarget(_mt, $(RTS_OBJS_mt)))
+IfBuild_mp(BigBuildTarget(_mp, $(RTS_OBJS_mp)))
+IfBuild_mg(BigBuildTarget(_mg, $(RTS_OBJS_mg)))
+IfBuild_2s(BigBuildTarget(_2s, $(RTS_OBJS_2s)))
+IfBuild_1s(BigBuildTarget(_1s, $(RTS_OBJS_1s)))
+IfBuild_du(BigBuildTarget(_du, $(RTS_OBJS_du)))
+IfBuild_a(BigBuildTarget(_a,   $(RTS_OBJS_a)))
+IfBuild_b(BigBuildTarget(_b,   $(RTS_OBJS_b)))
+IfBuild_c(BigBuildTarget(_c,   $(RTS_OBJS_c)))
+IfBuild_d(BigBuildTarget(_d,   $(RTS_OBJS_d)))
+IfBuild_e(BigBuildTarget(_e,   $(RTS_OBJS_e)))
+IfBuild_f(BigBuildTarget(_f,   $(RTS_OBJS_f)))
+IfBuild_g(BigBuildTarget(_g,   $(RTS_OBJS_g)))
+IfBuild_h(BigBuildTarget(_h,   $(RTS_OBJS_h)))
+IfBuild_i(BigBuildTarget(_i,   $(RTS_OBJS_i)))
+IfBuild_j(BigBuildTarget(_j,   $(RTS_OBJS_j)))
+IfBuild_k(BigBuildTarget(_k,   $(RTS_OBJS_k)))
+IfBuild_l(BigBuildTarget(_l,   $(RTS_OBJS_l)))
+IfBuild_m(BigBuildTarget(_m,   $(RTS_OBJS_m)))
+IfBuild_n(BigBuildTarget(_n,   $(RTS_OBJS_n)))
+IfBuild_o(BigBuildTarget(_o,   $(RTS_OBJS_o)))
+IfBuild_A(BigBuildTarget(_A,   $(RTS_OBJS_A)))
+IfBuild_B(BigBuildTarget(_B,   $(RTS_OBJS_B)))
 
 
 /****************************************************************
@@ -413,52 +335,52 @@ IfGhcBuild_B(BigBuildTarget(_B,   $(RTS_OBJS_B)))
 ****************************************************************/
 
 #define DoRtsFile(file,isuf,way,flags)                                  @@\
-CAT3(file,way,.o) : CAT2(file,isuf)                                     @@\
+CAT3(file.,way,o) : CAT2(file,isuf)                                     @@\
        $(RM) $@                                                         @@\
-       $(GHC) -c -o CAT3(file,way,.o) $(GHCFLAGS) flags CAT2(file,isuf)
-
-#define CompileRTSishly(file,isuf,flags)                       @@\
-IfGhcBuild_normal(DoRtsFile(file,isuf,,flags $(GHC_OPTS_norm)))        \
-IfGhcBuild_p(DoRtsFile(file,isuf,_p,   flags $(GHC_OPTS_p)))   \
-IfGhcBuild_t(DoRtsFile(file,isuf,_t,   flags $(GHC_OPTS_t)))   \
-IfGhcBuild_u(DoRtsFile(file,isuf,_u,   flags $(GHC_OPTS_u)))   \
-IfGhcBuild_mc(DoRtsFile(file,isuf,_mc, flags $(GHC_OPTS_mc)))  \
-IfGhcBuild_mr(DoRtsFile(file,isuf,_mr, flags $(GHC_OPTS_mr)))  \
-IfGhcBuild_mt(DoRtsFile(file,isuf,_mt, flags $(GHC_OPTS_mt)))  \
-IfGhcBuild_mp(DoRtsFile(file,isuf,_mp, flags $(GHC_OPTS_mp)))  \
-IfGhcBuild_mg(DoRtsFile(file,isuf,_mg, flags $(GHC_OPTS_mg)))  \
-IfGhcBuild_2s(DoRtsFile(file,isuf,_2s, flags $(GHC_OPTS_2s)))  \
-IfGhcBuild_1s(DoRtsFile(file,isuf,_1s, flags $(GHC_OPTS_1s)))  \
-IfGhcBuild_du(DoRtsFile(file,isuf,_du, flags $(GHC_OPTS_du)))  \
-IfGhcBuild_a(DoRtsFile(file,isuf,_a,   flags $(GHC_OPTS_a)))   \
-IfGhcBuild_b(DoRtsFile(file,isuf,_b,   flags $(GHC_OPTS_b)))   \
-IfGhcBuild_c(DoRtsFile(file,isuf,_c,   flags $(GHC_OPTS_c)))   \
-IfGhcBuild_d(DoRtsFile(file,isuf,_d,   flags $(GHC_OPTS_d)))   \
-IfGhcBuild_e(DoRtsFile(file,isuf,_e,   flags $(GHC_OPTS_e)))   \
-IfGhcBuild_f(DoRtsFile(file,isuf,_f,   flags $(GHC_OPTS_f)))   \
-IfGhcBuild_g(DoRtsFile(file,isuf,_g,   flags $(GHC_OPTS_g)))   \
-IfGhcBuild_h(DoRtsFile(file,isuf,_h,   flags $(GHC_OPTS_h)))   \
-IfGhcBuild_i(DoRtsFile(file,isuf,_i,   flags $(GHC_OPTS_i)))   \
-IfGhcBuild_j(DoRtsFile(file,isuf,_j,   flags $(GHC_OPTS_j)))   \
-IfGhcBuild_k(DoRtsFile(file,isuf,_k,   flags $(GHC_OPTS_k)))   \
-IfGhcBuild_l(DoRtsFile(file,isuf,_l,   flags $(GHC_OPTS_l)))   \
-IfGhcBuild_m(DoRtsFile(file,isuf,_m,   flags $(GHC_OPTS_m)))   \
-IfGhcBuild_n(DoRtsFile(file,isuf,_n,   flags $(GHC_OPTS_n)))   \
-IfGhcBuild_o(DoRtsFile(file,isuf,_o,   flags $(GHC_OPTS_o)))   \
-IfGhcBuild_A(DoRtsFile(file,isuf,_A,   flags $(GHC_OPTS_A)))   \
-IfGhcBuild_B(DoRtsFile(file,isuf,_B,   flags $(GHC_OPTS_B)))
+       $(GHC) -c -o CAT3(file.,way,o) $(GHCFLAGS) flags $(CAT4(GHC,_,way,OPTS)) CAT2(file,isuf)
+
+#define CompileRTSishly(file,isuf,flags)       @@\
+IfBuild_normal(DoRtsFile(file,isuf,,flags))    \
+IfBuild_p(DoRtsFile(file,isuf,p_,   flags))    \
+IfBuild_t(DoRtsFile(file,isuf,t_,   flags))    \
+IfBuild_u(DoRtsFile(file,isuf,u_,   flags))    \
+IfBuild_mc(DoRtsFile(file,isuf,mc_, flags))    \
+IfBuild_mr(DoRtsFile(file,isuf,mr_, flags))    \
+IfBuild_mt(DoRtsFile(file,isuf,mt_, flags))    \
+IfBuild_mp(DoRtsFile(file,isuf,mp_, flags))    \
+IfBuild_mg(DoRtsFile(file,isuf,mg_, flags))    \
+IfBuild_2s(DoRtsFile(file,isuf,2s_, flags))    \
+IfBuild_1s(DoRtsFile(file,isuf,1s_, flags))    \
+IfBuild_du(DoRtsFile(file,isuf,du_, flags))    \
+IfBuild_a(DoRtsFile(file,isuf,a_,   flags))    \
+IfBuild_b(DoRtsFile(file,isuf,b_,   flags))    \
+IfBuild_c(DoRtsFile(file,isuf,c_,   flags))    \
+IfBuild_d(DoRtsFile(file,isuf,d_,   flags))    \
+IfBuild_e(DoRtsFile(file,isuf,e_,   flags))    \
+IfBuild_f(DoRtsFile(file,isuf,f_,   flags))    \
+IfBuild_g(DoRtsFile(file,isuf,g_,   flags))    \
+IfBuild_h(DoRtsFile(file,isuf,h_,   flags))    \
+IfBuild_i(DoRtsFile(file,isuf,i_,   flags))    \
+IfBuild_j(DoRtsFile(file,isuf,j_,   flags))    \
+IfBuild_k(DoRtsFile(file,isuf,k_,   flags))    \
+IfBuild_l(DoRtsFile(file,isuf,l_,   flags))    \
+IfBuild_m(DoRtsFile(file,isuf,m_,   flags))    \
+IfBuild_n(DoRtsFile(file,isuf,n_,   flags))    \
+IfBuild_o(DoRtsFile(file,isuf,o_,   flags))    \
+IfBuild_A(DoRtsFile(file,isuf,A_,   flags))    \
+IfBuild_B(DoRtsFile(file,isuf,B_,   flags))
 
 /* here we go: */
 
 CompileRTSishly(c-as-asm/CallWrap_C,.c,)
 CompileRTSishly(c-as-asm/FreeMallocPtr,.c,)
 CompileRTSishly(c-as-asm/HpOverflow,.c,)
-CompileRTSishly(c-as-asm/PerformIO,.hc,-optcO-DIN_GHC_RTS=1)
+CompileRTSishly(c-as-asm/PerformIO,.hc,-optc-DIN_GHC_RTS=1)
 CompileRTSishly(c-as-asm/StablePtr,.c,)
 CompileRTSishly(c-as-asm/StablePtrOps,.c,)
 CompileRTSishly(c-as-asm/StgDebug,.c,)
 CompileRTSishly(c-as-asm/StgMiniInt,.c,)
-CompileRTSishly(gum/FetchMe,.hc,-optcO-DIN_GHC_RTS=1)
+CompileRTSishly(gum/FetchMe,.hc,-optc-DIN_GHC_RTS=1)
 CompileRTSishly(gum/GlobAddr,.c,)
 CompileRTSishly(gum/HLComms,.c,)
 CompileRTSishly(gum/Hash,.c,)
@@ -476,9 +398,9 @@ CompileRTSishly(main/SMRep,.c,)
 CompileRTSishly(main/Select,.c,)
 CompileRTSishly(main/Signals,.c,)
 CompileRTSishly(main/StgOverflow,.c,)
-CompileRTSishly(main/StgStartup,.hc,-optcO-DIN_GHC_RTS=1)
-CompileRTSishly(main/StgThreads,.hc,-optcO-DIN_GHC_RTS=1)
-CompileRTSishly(main/StgUpdate,.hc,-optcO-DIN_GHC_RTS=1)
+CompileRTSishly(main/StgStartup,.hc,-optc-DIN_GHC_RTS=1)
+CompileRTSishly(main/StgThreads,.hc,-optc-DIN_GHC_RTS=1)
+CompileRTSishly(main/StgUpdate,.hc,-optc-DIN_GHC_RTS=1)
 CompileRTSishly(main/Threads,.c,)
 CompileRTSishly(main/RtsFlags,.c,)
 CompileRTSishly(main/main,.c,)
@@ -500,7 +422,7 @@ CompileRTSishly(storage/SMevac,.c,)
 CompileRTSishly(storage/SMextn,.c,)
 CompileRTSishly(storage/SMgen,.c,)
 CompileRTSishly(storage/SMinit,.c,)
-CompileRTSishly(storage/SMmark,.hc,-optcO-DIN_GHC_RTS=1 -optc-DMARK_REG_MAP)
+CompileRTSishly(storage/SMmark,.hc,-optc-DIN_GHC_RTS=1 -optc-DMARK_REG_MAP)
 CompileRTSishly(storage/SMmarking,.c,)
 CompileRTSishly(storage/SMscan,.c,)
 CompileRTSishly(storage/SMscav,.c,)
@@ -519,11 +441,5 @@ ClearTagsFile()
 /* this is not the way we should do this [WDP [lazy] 94/09] */
 CTagsTarget( $(RTS_LC) $($RTS_LHC) $(CLIB_LC) )
 CTagsTarget( gmp/[a-z]*.c )
-CTagsTarget( regex/[a-z]*.c )
 
 CDependTarget( $(RTS_LC) $($RTS_LHC) $(CLIB_LC) )
-
-LitStuffNeededHere(docs depend)
-InfoStuffNeededHere(docs)
-
-/*LitDocRootTargetWithNamedOutput(threadroot,lit,threadroot-standalone)*/