Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
4720b45e
Commit
4720b45e
authored
Mar 14, 1997
by
sof
Browse files
[project @ 1997-03-14 05:11:36 by sof]
New Makefile setup
parent
ed8efd10
Changes
2
Hide whitespace changes
Inline
Side-by-side
ghc/runtime/Makefile
View file @
4720b45e
#-----------------------------------------------------------------------------
# $Id: Makefile,v 1.
3
1997/0
1/07 13:17:25 simonm
Exp $
# $Id: Makefile,v 1.
4
1997/0
3/14 05:11:52 sof
Exp $
# This is the Makefile for the runtime-system stuff.
# This stuff is written in C (and cannot be written in Haskell).
...
...
@@ -15,7 +15,7 @@
# storage -- the storage manager(s)
#
# We create two libraries. One, libHSrts<tag>.a, is built separately
# for each "
build
". The other, libHSclib.a is built once: it is just
# for each "
way
". The other, libHSclib.a is built once: it is just
# .lc files that end up the same no matter what, i.e. completely
# ordinary C.
...
...
@@ -25,70 +25,217 @@
#-----------------------------------------------------------------------------
TOP
=
../..
SuffixRules_WantStdOnes
=
NO
UnlitSuffixRules
=
YES_PLEASE
include
$(TOP)/ghc/mk/ghc.mk
TOP
=
..
DoingRTS
=
YES
include
$(TOP)/mk/boilerplate.mk
SUBDIRS
=
gmp
include
$(TOP)/mk/subdir.mk
# If you use EXTRA_HC_OPTS on the command line (which you shouldn't,
# strictly speaking), it will probably work -- it is pinned onto
# GHC_OPTS, just for fun.
GHC_OPTS
=
$(EXTRA_HC_OPTS)
#
# A general rule for the grand mk setup is that in a build tree, only
# directories that don't have any subdirs containing Makefiles are built
# all the different `ways' when doing `make all'.
#
# The directory structure for the RTS is a bit at odds to the general
# scheme of things, with the GNU gmp library in gmp/ and a way-independent
# archive libHSclib.a beside all the way-archives for the RTS proper.
#
# So to avoid having to redo building the way-proof pieces each time
# the Makefile is invoked with a different setting of $(way), SUBDIRS
# is only set if $(way) isn't set.
#
# per-build options: shared with libraries
DoingRTS
=
YES
include
../mk/buildflags.mk
SUBDIRS
=
gmp
#-----------------------------------------------------------------------------
# knock the "clib" (completely ordinary C, compiled once)
# stuff over the head first...
#
# Write out the rule for libHSclib explicitly, as it is special
# (not to be built n different ways)
#
SRCS_CLIB_LC
=
$(
wildcard
hooks/
*
.lc
)
main/Mallocs.lc
LIBOBJS_clib
=
$(SRCS_CLIB_LC:.lc=.o)
all
::
libHSclib.a
libHSclib.a
::
$(LIBOBJS_clib)
@
$(RM)
$@
$(AR)
$(AR_OPTS)
$@
$(LIBOBJS_clib)
$(RANLIB)
$@
CLIB_LC
=
\
hooks/ErrorHdr.lc
\
hooks/FreeForeignObj.lc
\
hooks/OutOfHeap.lc
\
hooks/OutOfStk.lc
\
hooks/OutOfVM.lc
\
hooks/NoRunnableThrds.lc
\
hooks/PatErrorHdr.lc
\
hooks/TraceHooks.lc
\
hooks/SizeHooks.lc
\
hooks/InitEachPE.lc
\
main/Mallocs.lc
ARCHIVE
=
libHSclib.a
LIBOBJS
=
$(CLIB_LC:.lc=.o)
DESTDIR
=
$(INSTLIBDIR_GHC)
include
$(TOP)/mk/lib.mk
#
# Stuff to clean out, only on way `normal'
#
ifeq
"$(way)" ""
MOSTLY_CLEAN_FILES
+=
libHSclib.a
$(LIBOBJS_clib)
CLEAN_FILES
+=
$(SRCS_CLIB_LC:.lc=.c)
endif
#
# Add libHSclib to the install library variable *only*
# if we're doing `make install' the `normal' way - don't want
# to install the same library for each different way.
#
ifeq
"$(way)" ""
INSTALL_LIBS
+=
libHSclib.a
endif
#------------------------------------------------------------------
#
# Run-time system parts that are `way' sensitive, you have to build
# a copy of libHSrts for each different ways.
#
SRCS_RTS_LH
=
$(
wildcard
storage/
*
.lh
)
SRCS_RTS_LC
=
$(
wildcard
c-as-asm/
*
.lc
)
\
gum/GlobAddr.lc
\
gum/HLComms.lc
\
gum/Hash.lc
\
gum/LLComms.lc
\
gum/Pack.lc
\
gum/ParInit.lc
\
gum/RBH.lc
\
gum/Sparks.lc
\
gum/Unpack.lc
\
main/GranSim.lc
\
main/Itimer.lc
\
main/Ticky.lc
\
main/SMRep.lc
\
main/Select.lc
\
main/Signals.lc
\
main/StgOverflow.lc
\
main/Threads.lc
\
main/RtsFlags.lc
\
main/main.lc
\
prims/PrimArith.lc
\
prims/PrimMisc.lc
\
profiling/CostCentre.lc
\
profiling/Hashing.lc
\
profiling/HeapProfile.lc
\
profiling/Indexing.lc
\
profiling/Timer.lc
\
storage/SM1s.lc
\
storage/SM2s.lc
\
storage/SMap.lc
\
storage/SMcheck.lc
\
storage/SMcompacting.lc
\
storage/SMcopying.lc
\
storage/SMdu.lc
\
storage/SMevac.lc
\
storage/SMextn.lc
\
storage/SMinit.lc
\
storage/SMmarking.lc
\
storage/SMscan.lc
\
storage/SMscav.lc
\
storage/SMstacks.lc
\
storage/SMstatic.lc
\
storage/SMstats.lc
\
storage/mprotect.lc
#
# LATER: Include Patrick's generational collector
# that's almost-but-not-quite there: storage/SMgen.lc
#
SRCS_RTS_LHC
=
$(
wildcard
main/
*
.lhc c-as-asm/
*
.lhc storage/
*
.lhc gum/
*
.lhc
)
HEADER_FILES
=
$(SRCS_RTS_LH:.lh=.h)
C_SRCS
=
$(SRCS_RTS_LC:.lc=.c)
$(SRCS_RTS_LHC:.lhc=.hc)
$(SRCS_CLIB_LC:.lc=.c)
$(HEADER_FILES)
#
# Clean out header files when doing way `normal'
#
ifeq
"$(way)" ""
CLEAN_FILES
+=
$(H_FILES)
$(C_SRCS)
endif
#-----------------------------------------------------------------------------
# Rules for building various types of objects from C files
# creating and installing libHSrts.a (in its many flavors)
#
LIBRARY
=
libHSrts
$(_way)
.a
LIBOBJS
=
$(
patsubst
%.lc,%.
$(way_)
o,
$(SRCS_RTS_LC)
)
\
$(
patsubst
%.lhc,%.
$(way_)
o,
$(SRCS_RTS_LHC)
)
RTS_GHC
=
$(GHC)
-c
-o
$@
$(GHCFLAGS)
$
(
$*
_flags
)
#
# dependencies
#
SRC_HC_OPTS
+=
-I
$(GHC_INCLUDE_DIR)
-O
-optc-DIN_GHC_RTS
=
1
-I
$(GHC_RUNTIME_DIR)
/storage
%.o
:
%.c
@
$(RM)
$@
$(RTS_GHC)
$*
.c
SRC_MKDEPENDC_OPTS
+=
$(GCap)
$(GC2s)
$(GC1s)
#-----------------------------------------------------------------------------
# file-specific options
c-as-asm/
PerformIO_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
gum/
FetchMe_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
main/
StgStartup_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
main/
StgThreads_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
main/
StgUpdate_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
storage/
SMmark_HC_OPTS
=
-optc-DIN_GHC_RTS
=
1
-optc-DMARK_REG_MAP
#-----------------------------------------------------------------------------
#
# Compiling the individual files
#
# Rules for building various types of objects from C files,
# override the default suffix rule here, as we want to use
# ../driver/ghc (a better C compiler :-) to compile the
# different RTS pieces
#
CC
=
$(HC)
$(HC_OPTS)
$
(
$*
_HC_OPTS
)
#-----------------------------------------------------------------------------
# the TopClosure
#
# Hook it into the list of files to generate dependencies for
#
C_SRCS
+=
main/TopClosure.c
#
# The TopClosure is not part of libHSrts, so we add an extra all::
# target to make sure it is built (TopClosure is way-proof):
#
ifeq
"$(way)" ""
all
::
main/TopClosure.o
clean
::
$(RM)
main/TopClosure.o
CLEAN_FILES
+=
main/TopClosure.o
#
# The driver expects to find it in lib/
#
INSTALL_LIBS
+=
main/TopClosure.o
endif
install
::
main/TopClosure.o
$(INSTALL)
$(INSTLIBFLAGS)
main/TopClosure.o
$(INSTLIBDIR_GHC)
/TopClosure.o
#-----------------------------------------------------------------------------
# libHSrts.a, in several different 'ways'
#
# Files to install
#
# Just libHSrts is installed uniformly across ways
#
INSTALL_LIBS
+=
$(LIBRARY)
#-----------------------------------------------------------------------------
#
# Building the GUM SysMan
#
ifeq
"$(way)" "mp"
all
::
gum/SysMan
ifdef
solaris2_TARGET_OS
__socket_libs
=
-lsocket
-lnsl
else
__socket_libs
=
endif
gum/SysMan
:
gum/SysMan.mp_o gum/LLComms.mp_o main/Mallocs.o hooks/OutOfVM.o
$(RM)
$@
$(HC)
$(HC_OPTS)
-o
$@
gum/SysMan.mp_o gum/LLComms.mp_o main/Mallocs.o hooks/OutOfVM.o
-L
$$
PVM_ROOT/lib/
$$
PVM_ARCH
-lpvm3
-lgpvm3
$(__socket_libs)
CLEAN_FILES
+=
gum/SysMan.mp_o gum/SysMan
INSTALL_LIBS
+=
gum/SysMan
endif
MAKEFILE
=
Makefile.libHSrts
DESCR
=
runtime system
include
$(TOP)/ghc/mk/ways.mk
include
$(TOP)/mk/target.mk
ghc/runtime/gmp/Makefile
View file @
4720b45e
#-----------------------------------------------------------------------------
# $Id: Makefile,v 1.2 1996/11/21 16:48:25 simonm Exp $
# $Id: Makefile,v 1.3 1997/03/14 05:11:36 sof Exp $
TOP
=
../..
include
$(TOP)/mk/boilerplate.mk
# There's only one `way' for gmp, empty WAYS variable right away.
WAYS
=
TOP
=
../../..
include
$(TOP)/ghc/mk/ghc.mk
GMP_OBJS
=
$(MPZ_OBJS)
$(MPQ_OBJS)
$(MPN_OBJS)
$(IMPL_OBJS)
mp_bases.o
...
...
@@ -50,20 +53,29 @@ MPN_SRCS = mpn_add.c mpn_sub.c mpn_cmp.c mpn_mul.c mpn_div.c mpn_dm_1.c \
MPN_OBJS
=
mpn_add.o mpn_sub.o mpn_cmp.o mpn_mul.o mpn_div.o mpn_dm_1.o
\
mpn_mod_1.o mpn_lshift.o mpn_rshift.o mpn_rshiftci.o mpn_sqrt.o
CC_OPTS
=
-I
.
#
# Compiling gmp with gcc-2.7.2 *without* -O tripped up a bug in the
# code that sets up and stores the regs around an __asm__ (mpn_mul.c : add_ssaaaa).
# Enabling -O flushed out the problem, so dropping the -O is not advised.
#
SRC_CC_OPTS
+=
-I
.
-O
all depend
::
gmp-mparam.h
libgmp.a
::
stamp-stddefh
ARCHIVE
=
libgmp.a
LIBRARY
=
libgmp.a
LIBOBJS
=
$(GMP_OBJS)
DESTDIR
=
$(INSTLIBDIR_GHC)
C_DEP_SRCS
=
$(IMPL_SRCS)
$(MPZ_SRCS)
$(MPQ_SRCS)
$(MPN_SRCS)
C_SRCS
=
$(IMPL_SRCS)
$(MPZ_SRCS)
$(MPQ_SRCS)
$(MPN_SRCS)
#
# Install gmp
#
INSTALL_LIBS
+=
$(LIBRARY)
clean
::
$(RM)
test-with-stddefh.c stamp-stddefh
\
cre-mparam gmp-mparam.h mp_bases.c cre-conv-tab
CLEAN_FILES
+=
test-with-stddefh.c stamp-stddefh cre-mparam gmp-mparam.h mp_bases.c cre-conv-tab
SRC_H_FILES
+=
$(
wildcard
*
.h
)
COPYING ChangeLog INSTALL Makefile.original README TODO VERSION gmp.texi mpn_mul_classic.c-EXTRA
# ToDo: something to make the doc
# from here on, it is magic from the original Makefile
...
...
@@ -105,4 +117,4 @@ gmp-mparam.h: cre-mparam
cre-mparam
:
cre-mparam.c stamp-stddefh gmp.h
$(LOCAL_CC)
$(CFLAGS)
cre-mparam.c
-o
$@
include
$(TOP)/mk/
lib
.mk
include
$(TOP)/mk/
target
.mk
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment