Commit c7b50ed0 authored by Ethan Coon's avatar Ethan Coon
Browse files

rework of makefiles to get all to work in one way, even legion ones

parent 6e02111c
...@@ -7,40 +7,32 @@ NETCDF_ROOT = /Users/uec/codes/ats/amanzi-tpls/install-0.88 ...@@ -7,40 +7,32 @@ NETCDF_ROOT = /Users/uec/codes/ats/amanzi-tpls/install-0.88
# assumes you have a working fortran and c++ compilers with libraries # assumes you have a working fortran and c++ compilers with libraries
FC = gfortran FC = gfortran
FCFLAGS = -Wall -Wunused -fimplicit-none -free -g3 -fbounds-check -fbacktrace FC_FLAGS = -fimplicit-none -free -g3 -fbounds-check -fbacktrace
#FCFLAGS = -Wall -Wunused -fimplicit-none -free -O3 FC_LIB_ROOT = /usr/local/Cellar/gcc/8.2.0/lib/gcc/8
CC = clang++ CC = clang++
CPPFLAGS = -g -Wall -std=c++11 CPP_FLAGS = -g -Wall -Wshadow -std=c++11
STD_LIB_ROOT = /usr STD_LIB_ROOT = /usr
# note, the linker should almost always be your fortran compiler, NOT your c compiler # note, the linker should almost always be your fortran compiler, NOT your c compiler
LINKER = gfortran #LINKER = gfortran
CC_LD_FLAGS = -L$(OBJECT)fortran -lelm -L$(NETCDF_ROOT)/lib -lnetcdf -L$(STD_LIB_ROOT)/lib -lc++ -L$(FC_LIB_ROOT) -lgfortran
FC_LD_FLAGS = -L$(OBJECT)fortran -lelm -L$(NETCDF_ROOT)/lib -lnetcdff
# ------------------------------------------------ # ------------------------------------------------
# Hopefully below shouldn't have to be changed. # Hopefully below shouldn't have to be changed.
# ------------------------------------------------ # ------------------------------------------------
.PRECIOUS: %.o
.SUFFIXES:
.PHONY: all .PHONY: all
.SUFFIXES: .o .F .f .c .C .cc .cxx .F90 .PRECIOUS: %.cc.o %.F90.o
.SUFFIXES: .cc.o .F90.o .cc .F90
.F90.o: %.F90.o: %.F90
$(FC) $(FCFLAGS) -c $< -o $@ $(FC) $(FC_FLAGS) -c $< -o $@
.F.o: %.cc.o: %.cc
$(F77) $(FFLAGS) -c $< -o $@ $(CXX) $(CC_FLAGS) $(CPP_FLAGS) $(INC_FLAGS) -c $< -o $@
.f.o:
$(F77) $(FFLAGS) -c $< -o $@
.cc.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
.cxx.o:
$(CXX) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
#%.o : %.F90
# $(FC) -c $(FCFLAGS) $< -o $@
SHELL = /bin/sh SHELL = /bin/sh
...@@ -65,7 +57,7 @@ AR = ar ...@@ -65,7 +57,7 @@ AR = ar
# Rules used in all directories. # Rules used in all directories.
###################################################################### ######################################################################
ELM_CLEAN=$(RM) *.o *.ii *.int.c *.log *.log.* stamp-* core core.* stats -r ti_files ii_files *.mod *.a ELM_CLEAN=$(RM) -f *.o *.ii *.int.c *.log *.log.* stamp-* core core.* stats -r ti_files ii_files *.mod *.a
...@@ -8,19 +8,19 @@ FCFLAGS += -I$(ELM_UTILS_DIR) ...@@ -8,19 +8,19 @@ FCFLAGS += -I$(ELM_UTILS_DIR)
# Order is important due to .mod file creation # Order is important due to .mod file creation
OBJS = \ OBJS = \
$(ELM_UTILS_DIR)/shr_kind_mod.o \ $(ELM_UTILS_DIR)/shr_kind_mod.F90.o \
$(ELM_UTILS_DIR)/shr_sys_mod.o \ $(ELM_UTILS_DIR)/shr_sys_mod.F90.o \
$(ELM_UTILS_DIR)/shr_infnan_mod.o \ $(ELM_UTILS_DIR)/shr_infnan_mod.F90.o \
$(ELM_UTILS_DIR)/shr_strconvert_mod.o \ $(ELM_UTILS_DIR)/shr_strconvert_mod.F90.o \
$(ELM_UTILS_DIR)/shr_assert_mod.o \ $(ELM_UTILS_DIR)/shr_assert_mod.F90.o \
landunit_varcon.o \ landunit_varcon.F90.o \
column_varcon.o \ column_varcon.F90.o \
clm_varpar.o \ clm_varpar.F90.o \
clm_varctl.o \ clm_varctl.F90.o \
CanopyHydrology_Interception.o \ CanopyHydrology_Interception.F90.o \
CanopyHydrology_SnowWater.o \ CanopyHydrology_SnowWater.F90.o \
CanopyHydrology_FracWet.o \ CanopyHydrology_FracWet.F90.o \
CanopyHydrology_FracH2OSfc.o CanopyHydrology_FracH2OSfc.F90.o
all: $(OBJS) all: $(OBJS)
$(AR) cr libelm.a $(OBJS) $(AR) cr libelm.a $(OBJS)
......
...@@ -4,7 +4,7 @@ OBJECT = ../../src/ ...@@ -4,7 +4,7 @@ OBJECT = ../../src/
include $(OBJECT)config/Makefile.config include $(OBJECT)config/Makefile.config
CPPFLAGS += -I$(CSRCDIR) -I$(NETCDF_ROOT)/include INC_FLAGS = -I$(AMANZI_TPLS_DIR)/include -I../../src/cpp -I../tests_c
TESTS = test_CanopyHydrology_kern1_single \ TESTS = test_CanopyHydrology_kern1_single \
...@@ -36,8 +36,8 @@ CanopyHydrology_module: test_CanopyHydrology_module ...@@ -36,8 +36,8 @@ CanopyHydrology_module: test_CanopyHydrology_module
./test_CanopyHydrology_module &> test_CanopyHydrology_module.stdout ./test_CanopyHydrology_module &> test_CanopyHydrology_module.stdout
test_%: %.o readers.hh utils.hh test_%: %.cc.o readers.hh utils.hh library
$(LINKER) $(FCFLAGS) -L$(OBJECT)fortran -lelm -L$(NETCDF_ROOT)/lib -lnetcdf -L$(STD_LIB_ROOT)/lib -lc++ $< -o $@ $(CXX) -o $@ $< $(CC_LD_FLAGS)
clean: clean:
......
...@@ -2,7 +2,8 @@ SRCDIR = ../../src/fortran/ ...@@ -2,7 +2,8 @@ SRCDIR = ../../src/fortran/
OBJECT = ../../src/ OBJECT = ../../src/
include $(OBJECT)config/Makefile.config include $(OBJECT)config/Makefile.config
FCFLAGS += -I$(SRCDIR) -I$(SRCDIR)$(ELM_UTILS_DIR) -I$(NETCDF_ROOT)/include
FC_FLAGS += -I$(SRCDIR) -I$(SRCDIR)$(ELM_UTILS_DIR) -I$(NETCDF_ROOT)/include
TESTS = test_CanopyHydrology_kern1_single \ TESTS = test_CanopyHydrology_kern1_single \
...@@ -33,8 +34,8 @@ CanopyHydrology_module: test_CanopyHydrology_module ...@@ -33,8 +34,8 @@ CanopyHydrology_module: test_CanopyHydrology_module
./test_CanopyHydrology_module &> test_CanopyHydrology_module.stdout ./test_CanopyHydrology_module &> test_CanopyHydrology_module.stdout
test_%: %.o library test_%: %.F90.o library
$(LINKER) $(FCFLAGS) -L$(OBJECT)fortran -lelm -L$(NETCDF_ROOT)/lib -lnetcdff $< -o $@ $(FC) -o $@ $< $(FC_LD_FLAGS)
clean: clean:
......
...@@ -4,10 +4,6 @@ endif ...@@ -4,10 +4,6 @@ endif
# from Makefile.config # from Makefile.config
OBJECT = ../../src/ OBJECT = ../../src/
NETCDF_ROOT = /Users/uec/codes/ats/amanzi-tpls/install-0.88
STD_LIB_ROOT = /usr
# Flags for directing the runtime makefile what to include # Flags for directing the runtime makefile what to include
DEBUG ?= 1 # Include debugging symbols DEBUG ?= 1 # Include debugging symbols
...@@ -19,22 +15,106 @@ USE_HDF ?= 0 # Include HDF5 support (requires HDF5) ...@@ -19,22 +15,106 @@ USE_HDF ?= 0 # Include HDF5 support (requires HDF5)
ALT_MAPPERS ?= 0 # Include alternative mappers (not recommended) ALT_MAPPERS ?= 0 # Include alternative mappers (not recommended)
# Put the binary file name here # Put the binary file name here
OUTFILE ?= CanopyHydrology_kern1_multiple
# List all the application source files here
GEN_SRC ?= CanopyHydrology_kern1_multiple.cc # .cc files
# You can modify these variables, some will be appended to by the runtime makefile # You can modify these variables, some will be appended to by the runtime makefile
INC_FLAGS ?= -I$(AMANZI_TPLS_DIR)/include -I../../src/cpp -I../tests_c INC_FLAGS ?= -I$(AMANZI_TPLS_DIR)/include -I../../src/cpp -I../tests_c
CC_FLAGS ?= -std=c++11
NVCC_FLAGS ?= NVCC_FLAGS ?=
GASNET_FLAGS ?= GASNET_FLAGS ?=
LD_FLAGS ?= -L$(OBJECT)fortran -lelm -L$(NETCDF_ROOT)/lib -lnetcdf -L$(STD_LIB_ROOT)/lib -lc++
########################################################################### include $(OBJECT)config/Makefile.config
#
# Don't change anything below here TESTS = test_CanopyHydrology_kern1_multiple #\
# # test_CanopyHydrology_module
###########################################################################
EXEC_TESTS = CanopyHydrology_kern1_multiple #\
# CanopyHydrology_module
#
# Load Legion logic, but not rules
#
NO_BUILD_RULES = 1
include $(LG_RT_DIR)/runtime.mk include $(LG_RT_DIR)/runtime.mk
#
# Legion rules
#
.PHONY: links library test
default: all
all: links library $(TESTS)
test: $(EXEC_TESTS)
python ../compare_to_gold.py $(TESTS)
CanopyHydrology_kern1_multiple: test_CanopyHydrology_kern1_multiple
./test_CanopyHydrology_kern1_multiple &> test_CanopyHydrology_kern1_multiple.stdout
# If we're using CUDA we have to link with nvcc
test_%: %.cc.o $(GEN_OBJS) $(GEN_GPU_OBJS) $(SLIB_LEGION) $(SLIB_REALM)
@echo "---> Linking objects into one binary: $()"
$(CXX) -o $@ $< $(GEN_OBJS) $(GEN_GPU_OBJS) $(CC_LD_FLAGS) $(LEGION_LIBS) $(LEGION_LD_FLAGS) $(GASNET_FLAGS)
$(SLIB_LEGION) : $(LEGION_OBJS) $(MAPPER_OBJS)
rm -f $@
$(AR) rc $@ $^
$(SLIB_REALM) : $(REALM_OBJS)
rm -f $@
$(AR) rc $@ $^
$(GEN_OBJS) : %.cc.o : %.cc
$(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
$(ASM_OBJS) : %.S.o : %.S
$(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
$(REALM_OBJS) : %.cc.o : %.cc
$(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
$(LEGION_OBJS) : %.cc.o : %.cc
$(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
$(MAPPER_OBJS) : %.cc.o : %.cc
$(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
$(GEN_GPU_OBJS) : %.cu.o : %.cu
$(NVCC) -o $@ -c $< $(NVCC_FLAGS) $(INC_FLAGS)
$(GPU_RUNTIME_OBJS): %.cu.o : %.cu
$(NVCC) -o $@ -c $< $(NVCC_FLAGS) $(INC_FLAGS)
# disable gmake's default rule for building % from %.o
#% : %.o
#%.cc.o : %.cc domains.hh readers.hh utils.hh
# $(CXX) -o $@ -c $< $(CC_FLAGS) $(INC_FLAGS)
clean :
$(ELM_CLEAN)
allclean : clean
$(MAKE) -C $(OBJECT) allclean
$(RM) -f $(SLIB_LEGION) $(SLIB_REALM) $(GEN_OBJS) $(GEN_GPU_OBJS) $(REALM_OBJS) $(LEGION_OBJS) $(GPU_RUNTIME_OBJS) $(MAPPER_OBJS) $(ASM_OBJS)
ifeq ($(strip $(USE_LLVM)),1)
llvmjit_internal.cc.o : CC_FLAGS += $(LLVM_CXXFLAGS)
%/llvmjit_internal.cc.o : CC_FLAGS += $(LLVM_CXXFLAGS)
endif
links:
@echo "making in links"
$(MAKE) -C ../links links
library:
$(MAKE) -C $(OBJECT) all
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment