summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-01-17 21:53:13 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-01-17 21:53:13 +0000
commit49dd8431ebb496bd0e709be24073f725e52687e2 (patch)
tree64c6321712054ec87e742611b9f89cc3da3e04a9
parent803e78cd9586d7141ea1079600ae284cbaf2127b (diff)
New make system.
To build a configuration <conf> do make <conf> if <conf> doesn't exist you'll get a complaint make by itself will list existing configurations, or run the setup perl script if there are none. make config will make a new configuration make help should list all options make tags will create a Vi style tags file make TAGS will create an Emacs style TAGS file make distclean will nuke your build directory. When setting up a configuration the make system creates the following directories $(CCTK_HOME)/build $(CCTK_HOME)/build/$(config) $(CCTK_HOME)/build/$(config)/config-data $(CCTK_HOME)/build/$(config)/lib $(CCTK_HOME)/build/$(config)/build and runs autoconf in the config-data directory. You then need to create a file make.thornlist containing one line of the form THORNS=toolkit1/thorn1 toolkit3/thorn45 ... in the config-data directory. (This will be automatically created from ActiveThorns later.) At that point you should be fine for making the system. Note that it doesn't preprocess the files yet, nor in fact touch any of the ccl scripts. This is coming to a make system near you soon... Tom git-svn-id: http://svn.cactuscode.org/flesh/trunk@62 17b73243-c579-4c4c-a9d2-2d5706c11dac
-rw-r--r--Makefile141
-rwxr-xr-xlib/make/configure12
-rw-r--r--lib/make/configure.in9
-rw-r--r--lib/make/make.config.defn.in20
-rw-r--r--lib/make/make.config.deps.in0
-rw-r--r--lib/make/make.config.rules.in25
-rw-r--r--lib/make/make.configuration57
-rw-r--r--lib/make/make.thornlib29
-rw-r--r--setup34
-rw-r--r--src/create_make.code.stuff13
-rw-r--r--src/datestamp.c75
-rw-r--r--src/make.code.defn29
-rw-r--r--src/make.code.deps56
13 files changed, 449 insertions, 51 deletions
diff --git a/Makefile b/Makefile
index 8b173c35..794027f6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,39 +1,128 @@
+# /*@@
+# @file Makefile
+# @date Sun Jan 17 22:26:05 1999
+# @author Tom Goodale
+# @desc
+# gnu Makefile for the CCTK.
+#
+# WARNING: This makefile may not function with "make". Errors like
+# make: file `Makefile' line 36: Must be a separator (: or ::) for rules (bu39)
+# mean you should have used gmake. gmake is available free
+# from ftp://prep.ai.mit.edu/ and should be installed on all production
+# systems.
+#
+# For information on how to use this makefile, type
+# gmake help.
+#
+#
+# @enddesc
+# @version $Id: Makefile,v 1.4 1999-01-17 21:53:10 goodale Exp $
+# @@*/
-# Temporary makefile for the CCTK
+# Comment this out if you want to see what's going on.
+.SILENT:
-TOP := $(shell pwd)
+# Various auxilary programs
+PERL = perl
+SETUP = setup
-SHELL = /bin/sh
-MKDIR = mkdir -p
-CC = egcs
-CXX = $(CC)
-F90 = f90
-F77 = f77
-CPP = cc -E -M
-LD = $(CXX)
-AR = /bin/ar rucs
-RANLIB = touch
-AWK = awk
+# Dividers to make the screen output slightly nicer
+DIVEL = __________________
+DIVIDER = $(DIVEL)$(DIVEL)$(DIVEL)$(DIVEL)
-INC_DIRS += src/include
+# Work out where we are
+CCTK_HOME = $(shell pwd)
-CFLAGS += -g $(INC_DIRS:%=-I%)
-CXXFLAGS += -g $(INC_DIRS:%=-I%)
+# Work out which configurations are available
+CONFIGURATIONS = $(patsubst build/%,%,$(wildcard build/*))
+# Default target does nothing.
+# In principle should set up a default based upon uname or something.
+.PHONY:default
-CSRCS := $(shell find src -name '*.c')
-CCSRCS := $(shell find src -name '*.cc')
-OBJS = $(CSRCS:%.c=%.o) $(CCSRCS:%.cc=%.o)
-HEADERS := $(shell find src/include -name '*.h')
+default: new_setup
+ echo $(DIVIDER)
+ifeq ($(words $(CONFIGURATIONS)), 1)
+ echo Please use $(MAKE) $(CONFIGURATIONS)
+else
+ echo Known configurations are: $(CONFIGURATIONS)
+ echo Please use $(MAKE) \<configuration\>
+endif
+ echo $(DIVIDER)
+# If there are no configurations, call the setup program.
+.PHONY: new_setup
-cctk: $(OBJS)
- $(CC) $(LDFLAGS) -o $@ $+ $(LOADLIBS)
+new_setup:
+ifeq ($(strip $(CONFIGURATIONS)),)
+ echo $(DIVIDER)
+ echo Setting up cctk
+ $(PERL) $(SETUP)
+ echo $(DIVIDER)
+ exit 2
+endif
-$(OBJS): $(HEADERS)
+# Target to build a configuration
+.PHONY: $(CONFIGURATIONS)
-clean:
- find src -name '*.o' -exec rm {} \;
+$(CONFIGURATIONS):
+ cd build/$@
+ $(MAKE) -f $(CCTK_HOME)/lib/make/make.configuration TOP=$(CCTK_HOME)/build/$@ CCTK_HOME=$(CCTK_HOME)
+
+# Clean target
+.PHONY: distclean
+
+distclean:
+ echo $(DIVIDER)
+ echo Deleting all your configurations !
+ rm -rf build
+ echo $(DIVIDER)
+
+# Targets to make tags files
+TAGS:
+ echo $(DIVIDER)
+ echo Updating the Emacs TAGS file
+ find src toolkits \( -name '*.[chF]' -o -name '*.F77' \) \
+ -exec etags --append --regex '/[a-z A-Z \t]*FORTRAN_NAME[^)]*/' {} \;
+ perl -pi -e 's/(subroutine\s*)([a-zA-Z0-9_]+)/\1\L\2/g;' TAGS
+ echo $(DIVIDER)
tags:
- etags `find src -name '*.[ch]' -o -name '*.cc'`
+ echo $(DIVIDER)
+ echo Updating the vi tags file
+ find src toolkits \( -name '*.[chF]' -o -name '*.F77' \) \
+ -exec ctags --append {} \;
+ perl -pi -e 's/(subroutine\s*)([a-zA-Z0-9_]+)/\1\L\2/g;' tags
+ echo $(DIVIDER)
+
+# Make a new configuration
+.PHONY: config
+
+config:
+ echo $(DIVIDER)
+ echo Running the configuration program
+ $(PERL) $(SETUP)
+ echo $(DIVIDER)
+
+# The help system.
+.PHONY: help
+
+help:
+ echo $(DIVIDER)
+ echo This is the main makefile for the Cactus Computational Toolkit
+ifeq ($(strip $(CONFIGURATIONS)),)
+ echo There are no configurations currently specified.
+ echo $(MAKE) with no arguments will run a setup script.
+else
+ echo The following configurations are currently specified
+ echo $(CONFIGURATIONS)
+ echo To build a configuration run $(make) followed by the name of a configuration.
+endif
+ echo $(DIVIDER)
+ echo $(MAKE) also knows the following targets
+ echo
+ echo TAGS - creates an Emacs TAGS file
+ echo tags - creates a Vi TAGS file
+ echo config - creates a new configuration
+ echo distclean - deletes all existing configurations
+ echo $(DIVIDER)
diff --git a/lib/make/configure b/lib/make/configure
index 7e32a0d7..838a8b6c 100755
--- a/lib/make/configure
+++ b/lib/make/configure
@@ -1,6 +1,6 @@
#! /bin/sh
-# From configure.in Id
+# From configure.in Id: configure.in
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.12
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
@@ -1491,6 +1491,9 @@ EOF
+ARFLAGS=rucs
+
+
F90FLAGS=$CFLAGS
@@ -1503,7 +1506,7 @@ F77FLAGS=$CFLAGS
-TOOLKIT_DIR=../toolkits
+TOOLKIT_DIR=toolkits
BUILD_DIR=build
CCTK_LIBDIR=lib
@@ -1609,7 +1612,7 @@ done
ac_given_srcdir=$srcdir
-trap 'rm -fr `echo "make.config.defn config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "make.config.defn make.config.deps make.config.rules config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -1651,6 +1654,7 @@ s%@AR@%$AR%g
s%@MKDIR@%$MKDIR%g
s%@SHELL@%$SHELL%g
s%@LD@%$LD%g
+s%@ARFLAGS@%$ARFLAGS%g
s%@F90FLAGS@%$F90FLAGS%g
s%@F77FLAGS@%$F77FLAGS%g
s%@TOOLKIT_DIR@%$TOOLKIT_DIR%g
@@ -1698,7 +1702,7 @@ EOF
cat >> $CONFIG_STATUS <<EOF
-CONFIG_FILES=\${CONFIG_FILES-"make.config.defn"}
+CONFIG_FILES=\${CONFIG_FILES-"make.config.defn make.config.deps make.config.rules"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
diff --git a/lib/make/configure.in b/lib/make/configure.in
index 083c0634..a57aecc4 100644
--- a/lib/make/configure.in
+++ b/lib/make/configure.in
@@ -5,8 +5,10 @@ dnl @author Tom Goodale
dnl @desc
dnl
dnl @enddesc
+dnl @version $Id$
dnl @@
dnl Process this file with autoconf to produce a configure script.
+
AC_REVISION($Id$)
AC_INIT()
AC_CONFIG_HEADER(config.h)
@@ -40,6 +42,9 @@ AC_C_LONG_DOUBLE
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(short int)
+AC_SUBST(ARFLAGS)
+ARFLAGS=rucs
+
AC_SUBST(F90FLAGS)
AC_SUBST(F77FLAGS)
@@ -55,7 +60,7 @@ AC_SUBST(BUILD_DIR)
AC_SUBST(CCTK_LIBDIR)
AC_SUBST(EXE)
-TOOLKIT_DIR=../toolkits
+TOOLKIT_DIR=toolkits
BUILD_DIR=build
CCTK_LIBDIR=lib
@@ -63,4 +68,4 @@ dnl Run any other scripts necessary
AC_OUTPUT_COMMANDS(,$PERL -s $srcdir/configure.pl -compiler=$F90 .)
dnl Output everything
-AC_OUTPUT(make.config.defn)
+AC_OUTPUT(make.config.defn make.config.deps make.config.rules)
diff --git a/lib/make/make.config.defn.in b/lib/make/make.config.defn.in
index 4aba0f38..e30303e2 100644
--- a/lib/make/make.config.defn.in
+++ b/lib/make/make.config.defn.in
@@ -1,3 +1,16 @@
+# /*@@
+# @file make.config.defn.in
+# @date Sun Jan 17 22:33:51 1999
+# @author Tom Goodale
+# @desc
+# Make definition file for a configuration
+# Defines the conpilers, etc.
+#
+# Should be run through autoconf to produce make.config.defn
+# @enddesc
+# @version $Id$
+# @@*/
+
SHELL = @SHELL@
MKDIR = @MKDIR@
CC = @CC@
@@ -19,10 +32,13 @@ F77FLAGS = @F77FLAGS@
LDFLAGS = @LDFLAGS@
-TOOLKIT_DIR = $(TOP)/@TOOLKIT_DIR@
+ARFLAGS = @ARFLAGS@
+
+# Where the CCTK puts things
+TOOLKIT_DIR = $(CCTK_HOME)/@TOOLKIT_DIR@
BUILD_DIR = $(TOP)/@BUILD_DIR@
CCTK_LIBDIR = $(TOP)/@CCTK_LIBDIR@
+# The name of the executable
EXE = @EXE@
-THORNS = testkit/test
diff --git a/lib/make/make.config.deps.in b/lib/make/make.config.deps.in
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/make/make.config.deps.in
diff --git a/lib/make/make.config.rules.in b/lib/make/make.config.rules.in
new file mode 100644
index 00000000..c2c9cf75
--- /dev/null
+++ b/lib/make/make.config.rules.in
@@ -0,0 +1,25 @@
+# /*@@
+# @file make.config.rules.in
+# @date Sun Jan 17 22:31:16 1999
+# @author Tom Goodale
+# @desc
+# Rules to generate object files from source files in another directory.
+#
+# Note that, due to the (IMHO) rather bizarre way in which Make
+# deals with directories in the target names, this will
+# not work if the target is in a subdirectory.
+#
+# @enddesc
+# @@*/
+
+%.o: $(SRCDIR)/%.c
+ $(CC) $(CFLAGS) -c -o $@ $< $(addprefix -I, $(INC_DIRS))
+
+%.o: $(SRCDIR)/%.cc
+ $(CXX) $(CXXFLAGS) -c -o $@ $< $(addprefix -I, $(INC_DIRS))
+
+%.o: $(SRCDIR)/%.F77
+ $(F77) $(F77FLAGS) -c -o $@ $< $(addprefix -I, $(INC_DIRS))
+
+%.o: $(SRCDIR)/%.F
+ $(F90) $(F90FLAGS) -c -o $@ $< $(addprefix -I, $(INC_DIRS))
diff --git a/lib/make/make.configuration b/lib/make/make.configuration
index 4203fe75..3586ab48 100644
--- a/lib/make/make.configuration
+++ b/lib/make/make.configuration
@@ -1,25 +1,70 @@
-CONFIG = $(TOP)/config-stuff
+#/*@@
+# @file make.configuration
+# @date Sun Jan 17 22:15:23 1999
+# @author Tom Goodale
+# @desc
+# Makes the CCTK executable for a particulare configuration
+# @enddesc
+# @version $Id$
+# @@*/
-# Include the definitions for this configuration
+# Some configuration variables
+CONFIG = $(TOP)/config-data
+
+DATESTAMP = $(CCTK_HOME)/src/datestamp.c
+MAKE_DIR = $(CCTK_HOME)/lib/make
+
+# Dividers to make the screen output slightly nicer
+DIVEL = __________________
+DIVIDER = $(DIVEL)$(DIVEL)$(DIVEL)$(DIVEL)
+# Include the definitions for this configuration
include $(CONFIG)/make.config.defn
+# Include the list of thorns to be built
+include $(CONFIG)/make.thornlist
+
# Silence all but designated output
#.SILENT:
# Build the executable
-$(EXE): datestamp.o $(patsubst %,$(CCTK_LIBDIR)/lib%.a,$(notdir $(THORNS)))
+$(EXE): $(CONFIG)/make.thornlist $(patsubst %,$(CCTK_LIBDIR)/lib%.a,$(notdir $(THORNS))) $(CCTK_LIBDIR)/libCCTK.a
+ echo $(DIVIDER)
echo Creating $(EXE) from $(THORNS)
- $(CC) -c datestamp.c
- $(CC) -o $@ $(LDFLAGS) datestamp.o $(LIBDIRS:%=-L%) $(LIBS:%=-l%) -L$(CCTK_LIBDIR) $(addprefix -l,$(notdir $(THORNS)))
+ $(CC) -c $(DATESTAMP) -o $(TOP)/datestamp.o
+ $(CC) -o $@ $(LDFLAGS) $(TOP)/datestamp.o $(LIBDIRS:%=-L%) $(LIBS:%=-l%) -L$(CCTK_LIBDIR) $(addprefix -l,$(notdir $(THORNS))) -lCCTK
+ echo $(DIVIDER)
+ echo All done !
+ echo $(DIVIDER)
# Build a thorn library
# Libraries go into the appropriate library directory
# Each thorn's object files go into $(BUILD_DIR)/<thorn>
+# This makes sure the appropriate build directories exist
$(CCTK_LIBDIR)/lib%.a: update
+ echo $(DIVIDER)
echo Checking status of $(notdir $@)
+ if [ ! -d $(BUILD_DIR) ]; then $(MKDIR) $(BUILD_DIR) ; fi
+ if [ ! -d $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%) ]; then $(MKDIR) $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%) ; fi
cd $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%); \
- $(MAKE) TOP=$(TOP) SRCDIR=$(@:$(CCTK_LIBDIR)/lib%.a=$(TOOLKIT_DIR)/$(filter %$(@:$(CCTK_LIBDIR)/lib%.a=%),$(THORNS))) CONFIG=$(CONFIG) -f $(MAKE_DIR)/make.thornlib
+ $(MAKE) TOP=$(TOP) SRCDIR=$(@:$(CCTK_LIBDIR)/lib%.a=$(TOOLKIT_DIR)/$(filter %$(@:$(CCTK_LIBDIR)/lib%.a=%),$(THORNS))/src) CONFIG=$(CONFIG) NAME=$@ -f $(MAKE_DIR)/make.thornlib
+ echo $(DIVIDER)
+
+
+# Slightly modified rule for the flesh.
+# Also makes sure all the subdirectories are made.
+$(CCTK_LIBDIR)/libCCTK.a: update
+ echo $(DIVIDER)
+ echo Checking status of the flesh
+ if [ ! -d $(BUILD_DIR) ]; then $(MKDIR) $(BUILD_DIR) ; fi
+ if [ ! -d $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%) ]; then $(MKDIR) $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%) ; \
+ for dir in IO comm main util rfr ; \
+ do if [ ! -d $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%)/$$dir ] ; then $(MKDIR) $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%)/$$dir ; fi ; \
+ done ; fi
+ cd $(@:$(CCTK_LIBDIR)/lib%.a=$(BUILD_DIR)/%); \
+ $(MAKE) TOP=$(TOP) SRCDIR=$(CCTK_HOME)/src CONFIG=$(CONFIG) NAME=$@ -f $(MAKE_DIR)/make.thornlib
+ echo $(DIVIDER)
+
# Include any extra dependencies
diff --git a/lib/make/make.thornlib b/lib/make/make.thornlib
index 998b5de0..b384d949 100644
--- a/lib/make/make.thornlib
+++ b/lib/make/make.thornlib
@@ -1,16 +1,35 @@
+# /*@@
+# @file make.thornlib
+# @date Sun Jan 17 22:20:45 1999
+# @author Tom Goodale
+# @desc
+# Creates the library for a particular thorn
+# @enddesc
+# @version $Id$
+# @@*/
+
+# Silence all but designated output
+.SILENT:
+
+# Include the main make definitions for this configuration
include $(CONFIG)/make.config.defn
-INC_DIRS += $(SRCDIR) $(SRCDIR)/include
+# Add appropriate include lines
+INC_DIRS += $(SRCDIR) $(SRCDIR)/include $(CONFIG) $(CCTK_HOME)/src/include
+# Include the thorn's local include data
include $(SRCDIR)/make.code.defn
-THORN_SRCS = $(SRCS:%=$(SRCDIR)/%)
-
-OBJS = $(patsubst $(SRCDIR)/%.c,%.o,$(THORN_SRCS))
+# Turn source file names into object file names
+OBJS = $(patsubst %,%.o,$(basename $(SRCS)))
-$(CCTK_LIBDIR)/libtest.a: $(OBJS)
+$(NAME): $(OBJS)
+ echo Creating or updating $(NAME)
$(AR) $(ARFLAGS) $@ $(OBJS)
+ $(RANLIB) $@
+# Rules to make the object files
include $(CONFIG)/make.config.rules
+# Extra thorn-specific dependencies
include $(SRCDIR)/make.code.deps
diff --git a/setup b/setup
index ac5bd82d..acd83067 100644
--- a/setup
+++ b/setup
@@ -1,4 +1,4 @@
-#! /usr/bin/perl
+#! /usr/bin/perl -s
#/*@@
# @file setup
# @date Fri Jan 8 13:48:48 1999
@@ -6,13 +6,14 @@
# @desc
# Prototype setup file for the CCTK
# @enddesc
+# @version $Id$
#@@*/
$top = `pwd`;
chop $top;
-$configure = "$top/lib/sbin/configure.pl";
+$configure = "$top/lib/make/configure";
$uname = `uname`;
@@ -29,6 +30,7 @@ else
$config = $uname;
}
+# The build directory doesn't exist.
if (! -d "build" && ! -l "build")
{
print "Completely new cactus build. Creating config database\n";
@@ -39,6 +41,7 @@ if (! -d "build" && ! -l "build")
chdir build;
+# The specified configuration doesn't exist
if (! -d "$config" && ! -l "$config")
{
print "Creating new configuration $config.\n";
@@ -47,13 +50,32 @@ if (! -d "$config" && ! -l "$config")
chdir "$config";
- mkdir("toolkits",0755);
- mkdir("flesh",0755);
+ mkdir("build",0755);
+ mkdir("lib",0755);
mkdir("config-data",0755);
mkdir("libraries",0755);
-
- system("perl $configure config-data");
+
+ chdir "config-data";
+
+ $ENV{"EXE"} = "cctk";
+
+ system("$configure");
+ chdir "..";
chdir "..";
}
+# Rerun the configure script
+if($reconfig)
+{
+ print "Reconfiguring $config.\n";
+ chdir "$config";
+
+ chdir "config-data";
+
+ $ENV{"EXE"} = "cctk";
+
+ system("$configure");
+ chdir "..";
+ chdir "..";
+}
diff --git a/src/create_make.code.stuff b/src/create_make.code.stuff
new file mode 100644
index 00000000..9d8ea5ed
--- /dev/null
+++ b/src/create_make.code.stuff
@@ -0,0 +1,13 @@
+# These are commands which can be used to automatically create make.code.defn
+# and make.code.deps stuff where there are subdirectories.
+# Hopefully the finalmake system won't need these -- Tom
+#
+
+find . -name '*.c' -o -name '*.cc' | perl -p -e 's:\./::' | grep -v datestamp.c | awk 'BEGIN {print "SRCS=\\"}; {print $0 "\\"} END {print
+""};' - > make.code.defn
+
+find . -name '*.c' | perl -p -e 's,(.*)\.(.*),\1\.o:\$(SRCDIR)/\1.\2\n\t\$(CC) \$(CFLAGS) -o \$\@ -c \$< \$(addprefix -I\,\$(INC_DIRS)),' > make.code.deps
+
+find . -name '*.cc' | perl -p -e 's,(.*)\.(.*),\1\.o:\$(SRCDIR)/\1.\2\n\t\$(CXX) \$(CXXFLAGS) -o \$\@ -c \$< \$(addprefix -I\,\$(INC_DIRS)),' >> make.code.deps
+
+
diff --git a/src/datestamp.c b/src/datestamp.c
new file mode 100644
index 00000000..933c6125
--- /dev/null
+++ b/src/datestamp.c
@@ -0,0 +1,75 @@
+ /*@@
+ @file datestamp.c
+ @date Mon May 11 10:20:58 1998
+ @author Paul Walker
+ @desc
+
+ @enddesc
+ @@*/
+#include <stdio.h>
+
+static char *rcsid = "$Id$";
+
+ /*@@
+ @routine datastamp
+ @date Mon May 11 10:20:58 1998
+ @author Paul Walker
+ @desc
+
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+void datestamp() {
+ printf (" Compiled on %s at %s\n", __DATE__, __TIME__);
+}
+
+ /*@@
+ @routine compileTime
+ @date Mon May 11 10:20:58 1998
+ @author Paul Walker
+ @desc
+
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+char *compileTime() {
+ return (__TIME__);
+}
+
+ /*@@
+ @routine compileDate
+ @date Mon May 11 10:20:58 1998
+ @author Paul Walker
+ @desc
+
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+char *compileDate() {
+ return (__DATE__);
+}
+
+/*#define MAKETEST*/
+#ifdef MAKETEST
+int main()
+{
+ printf("CCTK maketest compiled on %s\n", compileDate());
+
+ return 0;
+}
+#endif
diff --git a/src/make.code.defn b/src/make.code.defn
new file mode 100644
index 00000000..e5974870
--- /dev/null
+++ b/src/make.code.defn
@@ -0,0 +1,29 @@
+SRCS=\
+IO/CactusDefaultIO.c\
+IO/RegisterIOFunction.c\
+comm/CactusDefaultComm.c\
+comm/RegisterCommFunction.c\
+comm/GHExtensions.c\
+main/CactusDefaultInitialise.c\
+main/CallStartupFunctions.c\
+main/InitialiseCactus.c\
+main/ProcessCommandLine.c\
+main/ProcessParameterDatabase.c\
+main/RegisterMainFunction.c\
+main/ShutdownCactus.c\
+main/flesh.cc\
+main/CactusDefaultEvolve.c\
+main/SetParams.c\
+main/InitialiseDataStructures.c\
+main/RecordImplementation.c\
+main/RegisterThorn.c\
+main/CreateGroup.c\
+main/StoreVariableData.c\
+main/ConfigData.c\
+util/RegisterKeyedFunction.c\
+util/StoreKeyedData.c\
+util/StoreNamedData.c\
+util/BinaryTree.c\
+util/CactusTimers.c\
+util/ParseFile.c\
+util/ParseFile.c
diff --git a/src/make.code.deps b/src/make.code.deps
new file mode 100644
index 00000000..6b004a22
--- /dev/null
+++ b/src/make.code.deps
@@ -0,0 +1,56 @@
+./IO/CactusDefaultIO.o:$(SRCDIR)/./IO/CactusDefaultIO.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./IO/RegisterIOFunction.o:$(SRCDIR)/./IO/RegisterIOFunction.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./comm/CactusDefaultComm.o:$(SRCDIR)/./comm/CactusDefaultComm.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./comm/RegisterCommFunction.o:$(SRCDIR)/./comm/RegisterCommFunction.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./comm/GHExtensions.o:$(SRCDIR)/./comm/GHExtensions.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/CactusDefaultInitialise.o:$(SRCDIR)/./main/CactusDefaultInitialise.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/CallStartupFunctions.o:$(SRCDIR)/./main/CallStartupFunctions.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/InitialiseCactus.o:$(SRCDIR)/./main/InitialiseCactus.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/ProcessCommandLine.o:$(SRCDIR)/./main/ProcessCommandLine.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/ProcessParameterDatabase.o:$(SRCDIR)/./main/ProcessParameterDatabase.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/RegisterMainFunction.o:$(SRCDIR)/./main/RegisterMainFunction.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/ShutdownCactus.o:$(SRCDIR)/./main/ShutdownCactus.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/CactusDefaultEvolve.o:$(SRCDIR)/./main/CactusDefaultEvolve.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/SetParams.o:$(SRCDIR)/./main/SetParams.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/InitialiseDataStructures.o:$(SRCDIR)/./main/InitialiseDataStructures.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/RecordImplementation.o:$(SRCDIR)/./main/RecordImplementation.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/RegisterThorn.o:$(SRCDIR)/./main/RegisterThorn.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/CreateGroup.o:$(SRCDIR)/./main/CreateGroup.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/StoreVariableData.o:$(SRCDIR)/./main/StoreVariableData.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/ConfigData.o:$(SRCDIR)/./main/ConfigData.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/RegisterKeyedFunction.o:$(SRCDIR)/./util/RegisterKeyedFunction.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/StoreKeyedData.o:$(SRCDIR)/./util/StoreKeyedData.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/StoreNamedData.o:$(SRCDIR)/./util/StoreNamedData.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/BinaryTree.o:$(SRCDIR)/./util/BinaryTree.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/CactusTimers.o:$(SRCDIR)/./util/CactusTimers.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./util/ParseFile.o:$(SRCDIR)/./util/ParseFile.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./datestamp.o:$(SRCDIR)/./datestamp.c
+ $(CC) $(CFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))
+./main/flesh.o:$(SRCDIR)/./main/flesh.cc
+ $(CXX) $(CXXFLAGS) -o $@ -c $< $(addprefix -I,$(INC_DIRS))