#
#  
#  Makefile to compile the sources of ADAPTOR translation system
#
#  some comments:
# 
#  change compiler, flags appropriate to your machine
# 
#
#
SUN_CC      = gcc
RS6K_CC     = xlc
T3E_CC      = cc
SX4_CC      = cc
#
SUN_CFLAGS = -O
IBM_CFLAGS = -qlanglvl=ansi 
NEC_CFLAGS = -ZXNd=5000 -ZXNp=5800 -ZXNg=1500 
SGI_CFLAGS = -Wf,-XNg1500
T3D_CFLAGS = 
T3E_CFLAGS = -h tolerant
SX4_CFLAGS = -h0 -hnovector
#
CC      = $(SUN_CC)
CFLAGS	= -I./include -w $(SUN_CFLAGS)
#
#
#   Linking of fadapt does not require any special link flags,
#
#   but, add -Bstatic to LFLAGS to get a static executable 
#
LFLAGS  =
#
# reusable modules
#
REUSE_OBJS = DynArray.o General.o Idents.o Memory.o Sets.o \
             StringMem.o Positions.o System.o
#
# front-end modules
#
FE_OBJS  = SrcLines.o MySource.o Scanner.o Parser.o Errors.o \
           Tree.o Definitions.o global.o labels.o \
           BuildTree.o Unparse.o StrUnparse.o
#
# general modules
#
GEN_OBJS = DefTable.o ShowDefs.o Objects.o Nesting.o Types.o Expressions.o \
           Transform.o Intrinsics.o Rank.o TreeOps.o DerivedTypes.o
#
# definition modules
#
DEF_OBJS = ChangeDefs.o SetDefs.o MapDefs.o \
           ImplDefs.o UnitDefs.o NormalDefs.o Modules.o MakeDefs.o
#
# general modules (continued)
#
GEN1_OBJS = ExpNormal.o Invariant.o Dependences.o FArguments.o Common.o \
            Loops.o Shapes.o Distributions.o Mapping.o
#
#  modules for semantic analysis
#
SEM_OBJS = SemPreds.o SemMap.o SemCalling.o SemExp.o SemIntr.o SemDecls.o \
           SemParallel.o Semantic.o
#
# general modules (continued)
#
GEN2_OBJS = ArrayData.o Traverse.o CallGraph.o CallGraphFns.o Calling.o \
            MakeInterface.o Inquiry.o UserFunctions.o ParNest.o \
            Accepted.o Reductions.o Extraction.o
#
# modules for descriptors
#
DSP_OBJS  = VarDescriptor.o Descriptor.o AlignCheck.o MoveDescriptor.o \
            MoveControl.o HomeDescriptor.o ExpDescriptor.o
#
# modules for temporaries
#
TMP_OBJS  = Expansion.o HomeTemps.o TempVars.o Temporary.o
#
FLOW_OBJS = ControlFlow.o
#
# modules for parallelization
#
PAR_OBJS = ImplMapping.o ReplaceExp.o IndexShapes.o MakeLoops.o \
           InitAllocate.o Reaching.o MakeRagged.o Normalization.o \
           VectorMove.o OverlapUpdate.o AnaOverlap.o InterProc.o \
           AdaptAnalysis.o
#
# general modules (continued)
#
GEN3_OBJS = FindHome.o TempAssigns.o NewStatements.o Scatter.o Independence.o
#
# modules for serialization
#
SER_OBJS = MakeSerial.o TempFunctions.o MakeCalls.o SpecialMap.o \
           MakeRemapping.o MakeOvUpdates.o MakeArguments.o
#
# moudles for localization
#
LOC_OBJS = AdaptF77.o MakeForall.o MakeParLoops.o CheckHome.o MakeHome.o \
           IndShadow.o VarComm.o CheckComm.o TempExp.o ExtractComm.o \
           MakeLocal.o
#
# modules for classification
#
CLF_OBJS = HomeTraverse.o MakeMovement.o Ownership.o GlobalComm.o \
           RemoteAccess.o SMParallel.o MakeOn.o Barriers.o \
           ReductionComm.o Classification.o MakeReductions.o
#
# modules for optimization
#
OPT_OBJS = StmtDeps.o Interchange.o Fusion.o Optimization.o
#
# modules for code generation
#
CODE_OBJS = CodeGeneral.o Dalib.o TriDenT.o CodeMapping.o CodeDescriptors.o \
            Selection.o \
            CodeOn.o CodeGlobal.o CodeVars.o CodeCalling.o CodeMovement.o \
            PseudoDynamic.o Localization.o CodeGeneration.o FinalCode.o
#

OBJS =	$(FE_OBJS) $(GEN_OBJS) $(DEF_OBJS) $(GEN1_OBJS) $(SEM_OBJS) \
        $(GEN2_OBJS) $(DSP_OBJS) $(TMP_OBJS) $(FLOW_OBJS) $(PAR_OBJS) \
        $(GEN3_OBJS) $(SER_OBJS) $(LOC_OBJS) $(CLF_OBJS) $(OPT_OBJS) \
        $(CODE_OBJS) \
        permutations.o pred.o protocol.o \
	arguments.o translate.o precision.o fadapt.o
#
all:	fadapt
#
fadapt:	$(OBJS) $(REUSE_OBJS)
	$(CC) $(OBJS) $(REUSE_OBJS) -o fadapt $(LFLAGS) 
#
# dependences on global.h
#
arguments.o makefiles.o: include/global.h
#
clean:
	rm -f *.o fadapt 
#
