PROGRAM = $(BINDIR)/$(BENCHMARK).$(CLASS).$(NPROCS) FCOMPILE = $(MPIF77) -c $(FMPI_INC) $(FFLAGS) CCOMPILE = $(MPICC) -c $(CMPI_INC) $(CFLAGS) # Class "U" is used internally by the setparams program to mean # "unknown". This means that if you don't specify CLASS= # on the command line, you'll get an error. It would be nice # to be able to avoid this, but we'd have to get information # from the setparams back to the make program, which isn't easy. CLASS=U NPROCS=1 default:: ${PROGRAM} # This makes sure the configuration utility setparams # is up to date. # Note that this must be run every time, which is why the # target does not exist and is not created. # If you create a file called "config" you will break things. config: @cd ../sys; ${MAKE} all ../sys/setparams ${BENCHMARK} ${NPROCS} ${CLASS} ${SUBTYPE} COMMON=../common ${COMMON}/${RAND}.o: ${COMMON}/${RAND}.f cd ${COMMON}; ${FCOMPILE} ${RAND}.f ${COMMON}/c_randdp.o: ${COMMON}/randdp.c cd ${COMMON}; ${CCOMPILE} -o c_randdp.o randdp.c ${COMMON}/print_results.o: ${COMMON}/print_results.f cd ${COMMON}; ${FCOMPILE} print_results.f ${COMMON}/c_print_results.o: ${COMMON}/c_print_results.c cd ${COMMON}; ${CCOMPILE} c_print_results.c ${COMMON}/timers.o: ${COMMON}/timers.f cd ${COMMON}; ${FCOMPILE} timers.f ${COMMON}/c_timers.o: ${COMMON}/c_timers.c cd ${COMMON}; ${CCOMPILE} c_timers.c # Normally setparams updates npbparams.h only if the settings (CLASS/NPROCS) # have changed. However, we also want to update if the compile options # may have changed (set in ../config/make.def). npbparams.h: ../config/make.def @ echo make.def modified. Rebuilding npbparams.h just in case rm -f npbparams.h ../sys/setparams ${BENCHMARK} ${NPROCS} ${CLASS} ${SUBTYPE} # So that "make benchmark-name" works ${BENCHMARK}: default ${BENCHMARKU}: default