1MPIDIR            = @mpidir@
2MPIBINDIR         = @mpibindir@
3MPILIBDIR         = @mpilibdir@
4MPIINCDIR         = @mpiincdir@
5MPILIBS           = @mpilibs@
6
7PREFIX            = @prefix@
8BINDIR            = @bindir@
9LIBDIR            = @libdir@
10INCLUDEDIR        = @includedir@
11
12HECMWBINDIR       = ../../../bin
13HECMWLIBDIR       = ../../../lib
14HECMWINCDIR       = ../../../include
15HECMWLIBS         = @hecmwlibs@
16
17REFINERDIR        = @refinerdir@
18REFINERINCDIR     = @refinerincdir@
19REFINERLIBDIR     = @refinerlibdir@
20REFINERLIBS       = @refinerlibs@
21
22CC                = @cc@
23CFLAGS            = @cflags@
24BASE_CFLAGS       = @base_cflags@
25MPI_CFLAGS        = @mpi_cflags@
26HECMW_CFLAGS      = @hecmw_cflags@
27ALL_CFLAGS        = $(BASE_CFLAGS) $(HECMW_CFLAGS) $(MPI_CFLAGS) $(CFLAGS)
28LDFLAGS           = @ldflags@
29MPI_LDFLAGS       = @mpi_ldflags@
30HECMW_LDFLAGS     = @hecmw_ldflags@
31ALL_LDFLAGS       = $(HECMW_LDFLAGS) $(MPI_LDFLAGS) $(LDFLAGS)
32OPTFLAGS          = @optflags@
33
34F90               = @f90@
35F90FLAGS          = @f90flags@
36BASE_F90FLAGS     = @base_f90flags@
37MPI_F90FLAGS      = @mpi_f90flags@
38HECMW_F90FLAGS    = @hecmw_f90flags@
39ALL_F90FLAGS      = $(BASE_F90FLAGS) $(HECMW_F90FLAGS) $(MPI_F90FLAGS) $(F90FLAGS)
40F90LDFLAGS        = @f90ldflags@
41MPI_F90LDFLAGS    = @mpi_f90ldflags@
42HECMW_F90LDFLAGS  = @hecmw_f90ldflags@
43ALL_F90LDFLAGS    = $(HECMW_F90LDFLAGS) $(MPI_F90LDFLAGS) $(F90LDFLAGS)
44F90OPTFLAGS       = @f90optflags@
45
46AR                = @ar@
47CP                = @cp@
48RM                = @rm@
49RANLIB            = @ranlib@
50MKDIR             = @mkdir@
51
52#-----------------------------------------------------------------------------#
53TARGET            = @hecmwlib_targetfile@
54F90TARGET         = @hecmwlib_f90targetfile@
55
56F90MODULEPOSTFIX  = @f90modulepostfix@
57COBJFILEPOSTFIX   = @cobjfilepostfix@
58F90OBJFILEPOSTFIX = @f90objfilepostfix@
59
60#-----------------------------------------------------------------------------#
61.SUFFIXES:
62.SUFFIXES: .@cobjfilepostfix@ @f90objfilepostfix@ .c .f90 .f
63
64.c.@cobjfilepostfix@:
65	$(CC) -c $< $(ALL_CFLAGS) $(OPTFLAGS)
66
67.f90.@f90objfilepostfix@:
68	$(F90) -c $< $(ALL_F90FLAGS) $(F90OPTFLAGS)
69
70.f.@f90objfilepostfix@:
71	$(F90) -c $< $(ALL_F90FLAGS) $(F90OPTFLAGS)
72
73#-----------------------------------------------------------------------------#
74OBJS = \
75	hecmw_transfer_result_c.@f90objfilepostfix@ \
76	hecmw_transfer_data_c.@f90objfilepostfix@ \
77	hecmw_transfer_data_c2f.@f90objfilepostfix@ \
78	hecmw_dist_result_copy_c2f.@f90objfilepostfix@
79
80OBJSF = \
81	hecmw_dlb_data_transfer.@cobjfilepostfix@ \
82	hecmw_dynamic_load_balancing.@cobjfilepostfix@ \
83	hecmw_dlb_mesh2graph.@cobjfilepostfix@ \
84	hecmw_dlb_read_control.@cobjfilepostfix@ \
85	hecmw_dlb_migrate.@cobjfilepostfix@ \
86	hecmw_dlb_elem_sr_adapt.@cobjfilepostfix@ \
87	hecmw_dlb_comm_util.@cobjfilepostfix@ \
88	output_ucd_c.@cobjfilepostfix@ \
89	hecmw_dlb_mem_util.@cobjfilepostfix@ \
90	hecmw_dlb_output_result.@cobjfilepostfix@
91
92HEADERS = \
93	hecmw_repart.h \
94	hecmw_dlb_comm_util.h
95
96#-----------------------------------------------------------------------------#
97all: @build_target@
98
99build-default: $(TARGET) $(F90TARGET) install-module
100
101build-serial: $(TARGET) $(F90TARGET) install-module
102
103build-without-f: $(TARGET)
104
105no-build:
106	@echo "***"
107	@echo "*** compilation of 'src/operations/dynamic_load_balancing' is skipped"
108	@echo "***"
109
110$(TARGET): $(OBJS)
111	$(AR) $(HECMWLIBDIR)/$@ $(OBJS)
112
113$(F90TARGET): $(OBJSF)
114	$(AR) $(HECMWLIBDIR)/$@ $(OBJSF)
115
116$(OBJS): $(HEADERS)
117
118$(OBJSF):
119
120install-header: $(HEADERS)
121	$(CP) $(HEADERS) $(HECMWINCDIR)/.
122
123install-module:
124	$(CP) *.$(F90MODULEPOSTFIX) $(HECMWINCDIR)/.
125
126install:
127
128clean:
129	$(RM) *.$(COBJFILEPOSTFIX) *.$(F90OBJFILEPOSTFIX) *.$(F90MODULEPOSTFIX)
130
131distclean: clean
132