1 # Process this file with automake to produce Makefile.in
6 WARN_CFLAGS += -W -Wall -Wwrite-strings -Wstrict-prototypes -Werror
9 if LIBGUPC_PORTALS4_RUNTIME
10 targ_runtime_dir = portals4
11 WARN_CFLAGS += -W -Wall -Wwrite-strings -Wstrict-prototypes -Werror
12 PORTALS4_IFLAG = @portals4inc@
13 INC_CFLAGS = $(PORTALS4_IFLAG)
16 ACLOCAL_AMFLAGS = -I . -I .. -I ../config
18 ## May be used by toolexeclibdir.
19 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
21 gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc
23 config_path = @config_path@
25 upc_crtstuff_mak = $(top_srcdir)/@upc_crtstuff_mak@
27 libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
29 LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
31 LINK = $(LIBTOOL) --tag CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
32 $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
35 UPC_HDRS = include/upc_atomic.h include/upc_castable.h \
36 include/gasp.h include/gasp_upc.h include/gcc-upc.h \
37 include/pupc.h include/upc_collective.h include/upc.h \
39 include/upc_relaxed.h include/upc_strict.h \
40 include/upc_tick.h include/upc_types.h
42 libsubinclude_HEADERS = $(UPC_HDRS)
43 nodist_noinst_HEADERS =
44 nodist_libsubinclude_HEADERS =
47 IN_LIB_CPPFLAGS = -DIN_GCC -DIN_TARGET_LIBS
48 AM_CPPFLAGS = $(IN_LIB_CPPFLAGS)
49 AM_CFLAGS = $(WARN_CFLAGS) $(INC_CFLAGS)
50 AM_UPCFLAGS = $(WARN_CFLAGS) $(INC_CFLAGS) -fno-strict-aliasing
56 if LIBGUPC_GENERIC_COLLECTIVES
57 collectives_dir = $(addprefix $(top_srcdir)/, collectives)
62 search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) \
63 $(addprefix $(top_srcdir)/, $(targ_runtime_dir)) \
65 $(addprefix $(top_srcdir)/, include) \
68 vpath % $(strip $(search_path))
70 AM_CPPFLAGS += $(addprefix -I, $(search_path))
71 AM_CPPFLAGS += $(addprefix -isystem, '.')
72 AM_CPPFLAGS += @bfdinc@
73 AM_CFLAGS += $(XCFLAGS)
74 AM_UPCFLAGS += $(XCFLAGS)
75 AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
77 ### Explicit build rules
79 LIBGUPC_SRCDIR = $(top_srcdir)/$(targ_runtime_dir)
84 EXTRA_DIST = gen-inline-libgupc.pl gen-upc-ld-script.pl
86 LIBGUPC_COLL_SRCDIR = $(top_srcdir)/collectives
87 LIBGUPC_INC_SRCDIR = $(top_srcdir)/include
88 LIBGUPC_PORTALS4_SRCDIR = $(top_srcdir)/portals4
89 LIBGUPC_SMP_SRCDIR = $(top_srcdir)/smp
90 UPC_OPS_DEF = $(LIBGUPC_INC_SRCDIR)/upc_ops.def
91 UPC_TYPES_DEF = $(LIBGUPC_INC_SRCDIR)/upc_types.def
93 EXTRA_DIST += $(UPC_OPS_DEFS) $(UPC_TYPES_DEF)
99 if LIBGUPC_PORTALS4_RUNTIME
100 UPC_BACKTRACE_SUP += portals4/gupcr_backtrace.h portals4/gupcr_backtrace.c
102 UPC_BACKTRACE_SUP += smp/upc_backtrace.h smp/upc_backtrace.c
105 if LIBGUPC_SMP_RUNTIME
107 EXTRA_DIST += smp/gcc-upc-lib.in
110 libgupc_pt = libgupc_pt.la
115 # Even though we're using vpath, we have to qualify the
116 # filenames with "smp/", because the libgupc_pt.la rules
117 # won't find the dependents because the name of the target
118 # doesn't match (ie, upc_access.c compiles into pt_upc_access_pt.lo)
121 UPC_AFFINITY_SUP = smp/upc_affinity.c
123 UPC_AFFINITY_SUP = smp/upc_affinity_stub.c
126 UPC_GUM_SUP = smp/upc_gum.c
131 UPC_NUMA_SUP = smp/upc_numa.c
133 UPC_NUMA_SUP = smp/upc_numa_stub.c
138 UPC_ATOMIC_DEF = $(LIBGUPC_SMP_SRCDIR)/upc_atomic.def
139 UPC_ATOMIC_TPL = $(LIBGUPC_SMP_SRCDIR)/upc_atomic.tpl
140 UPC_ATOMIC_UPC = $(LIBGUPC_SMP_SRCDIR)/upc_atomic.upc
142 EXTRA_DIST += $(UPC_ATOMIC_DEF) $(UPC_ATOMIC_TPL)
144 $(UPC_ATOMIC_UPC): $(UPC_ATOMIC_DEF) $(UPC_ATOMIC_TPL) \
145 $(UPC_OP_DEF) $(UPC_TYPE_DEF)
146 cd $(LIBGUPC_SMP_SRCDIR); \
147 $(AUTOGEN) -L ../include upc_atomic.def
150 UPC_RUNTIME_SRC += smp/upc_access.c smp/upc_accessg.c smp/upc_access.h \
151 smp/upc_addr.c smp/upc_affinity.h $(UPC_AFFINITY_SUP) \
152 smp/upc_allocg.upc smp/upc_alloc.upc \
154 $(UPC_BACKTRACE_SUP) \
155 smp/upc_barrier.upc smp/upc_castable.upc smp/upc_config.h \
156 smp/upc_debug.h smp/upc_debug.c \
157 smp/upc_defs.h smp/upc_gasp.c $(UPC_GUM_SUP) smp/upc_libg.c \
158 smp/upc_lib.h smp/upc_lock.upc smp/upc_lock.h \
159 smp/upc_lock_sup.h smp/upc_lock_sup.c \
160 smp/upc_main.c smp/upc_mem.c smp/upc_mem.h \
161 smp/upc_nb.upc smp/upc_numa.h $(UPC_NUMA_SUP) \
162 smp/upc_pgm_info.c smp/upc_pts.h smp/upc_pupc.c \
163 smp/upc_pupc.h smp/upc_sup.h smp/upc_sync.h smp/upc_sysdep.c \
164 smp/upc_sysdep.h smp/upc_tick.c smp/upc_vm.c
166 UPC_RUNTIME_SRC_INLINE = config.h smp/upc_access.c smp/upc_access.h \
167 smp/upc_config.h smp/upc_defs.h smp/upc_mem.h smp/upc_pts.h \
168 smp/upc_sup.h smp/upc_sync.h
170 endif ### LIBGUPC_SMP_RUNTIME ####
172 if LIBGUPC_PORTALS4_RUNTIME
174 EXTRA_DIST += portals4/gcc-upc-lib.in
176 UPC_RUNTIME_SRC += portals4/gupcr_access.c portals4/gupcr_access.h \
177 portals4/gupcr_addr.c \
178 portals4/gupcr_alloc.upc portals4/gupcr_alloc.h \
179 portals4/gupcr_atomic.upc \
180 portals4/gupcr_atomic_sup.h portals4/gupcr_atomic_sup.c \
181 $(UPC_BACKTRACE_SUP) \
182 portals4/gupcr_barrier.h portals4/gupcr_barrier.c \
183 portals4/gupcr_broadcast.h portals4/gupcr_broadcast.c \
184 portals4/gupcr_castable.upc \
185 portals4/gupcr_clock.c \
186 portals4/gupcr_coll_sup.h portals4/gupcr_coll_sup.c \
187 portals4/gupcr_config.h portals4/gupcr_defs.h \
188 portals4/gupcr_env.c portals4/gupcr_gmem.h portals4/gupcr_gmem.c \
189 portals4/gupcr_lib.h \
190 portals4/gupcr_lock.upc portals4/gupcr_lock.h \
191 portals4/gupcr_lock_sup.c portals4/gupcr_lock_sup.h \
192 portals4/gupcr_main.c \
193 portals4/gupcr_nb.upc \
194 portals4/gupcr_nb_sup.c portals4/gupcr_nb_sup.h \
195 portals4/gupcr_node.c portals4/gupcr_node.h \
196 portals4/gupcr_mem.c portals4/gupcr_portals.c \
197 portals4/gupcr_pgm_info.c portals4/gupcr_pts.h \
198 portals4/gupcr_runtime.h portals4/gupcr_runtime.c \
199 portals4/gupcr_shutdown.h portals4/gupcr_shutdown.c \
200 portals4/gupcr_sup.h portals4/gupcr_sync.h \
201 portals4/gupcr_tick.c \
202 portals4/gupcr_utils.h portals4/gupcr_utils.c
204 UPC_RUNTIME_SRC_INLINE = config.h portals4/gupcr_access.c \
205 portals4/gupcr_access.h portals4/gupcr_config.h \
206 portals4/gupcr_defs.h portals4/gupcr_gmem.h \
207 portals4/gupcr_node.h \
208 portals4/gupcr_portals.h portals4/gupcr_pts.h \
209 portals4/gupcr_sup.h portals4/gupcr_sync.h \
210 portals4/gupcr_utils.h
212 if LIBGUPC_NODE_LOCAL_MEM_POSIX
213 UPC_RUNTIME_SRC += portals4/gupcr_node_mem_posix.c
215 if LIBGUPC_NODE_LOCAL_MEM_MMAP
216 UPC_RUNTIME_SRC += portals4/gupcr_node_mem_mmap.c
219 include doxygen-include.am
220 MOSTLYCLEANFILES += $(DX_CLEANFILES)
221 EXTRA_DIST += $(DX_CONFIG)
223 # Portals runtime only partialy uses generic collectives
225 # We need full pathnames here, because vpath won't find
226 # the files if they don't exist yet.
227 UPC_COLL_PREFIX_REDUCE_UPC = $(LIBGUPC_COLL_SRCDIR)/upc_coll_prefix_reduce.upc
228 UPC_COLL_REDUCE_UPC = $(LIBGUPC_PORTALS4_SRCDIR)/gupcr_coll_reduce.upc
231 $(UPC_COLL_PREFIX_REDUCE_UPC): gen-upc-coll-reduce.pl \
232 upc_coll_prefix_reduce.in
235 $(UPC_COLL_REDUCE_UPC): gen-upc-coll-reduce.pl gupcr_coll_reduce.in
240 portals4/upc_coll.h portals4/gupcr_coll_broadcast.upc \
241 portals4/gupcr_coll_init.upc $(UPC_COLL_REDUCE_UPC)
243 UPC_COLLECTIVES_SRC = \
244 collectives/upc_coll_err.upc collectives/upc_coll_exchange.upc \
245 collectives/upc_coll_gather_all.upc collectives/upc_coll_gather.upc \
246 collectives/upc_coll_permute.upc $(UPC_COLL_PREFIX_REDUCE_UPC) \
247 collectives/upc_coll_scatter.upc collectives/upc_coll_sort.upc
249 UPC_RUNTIME_SRC += $(UPC_COLLECTIVES_SRC)
251 EXTRA_DIST += gen-upc-coll-reduce.pl \
252 upc_coll_prefix_reduce.in \
255 endif ### LIBGUPC_PORTALS_RUNTIME ####
257 if LIBGUPC_GENERIC_COLLECTIVES
259 # We need full pathnames here, because vpath won't find
260 # the files if they don't exist yet.
261 UPC_COLL_PREFIX_REDUCE_UPC = $(LIBGUPC_COLL_SRCDIR)/upc_coll_prefix_reduce.upc
262 UPC_COLL_REDUCE_UPC = $(LIBGUPC_COLL_SRCDIR)/upc_coll_reduce.upc
265 $(UPC_COLL_PREFIX_REDUCE_UPC): gen-upc-coll-reduce.pl \
266 upc_coll_prefix_reduce.in
269 $(UPC_COLL_REDUCE_UPC): gen-upc-coll-reduce.pl upc_coll_reduce.in
273 UPC_COLLECTIVES_SRC = collectives/upc_coll_broadcast.upc \
274 collectives/upc_coll_err.upc collectives/upc_coll_exchange.upc \
275 collectives/upc_coll_gather_all.upc collectives/upc_coll_gather.upc \
276 collectives/upc_coll.h collectives/upc_coll_init.upc \
277 collectives/upc_coll_permute.upc $(UPC_COLL_PREFIX_REDUCE_UPC) \
278 $(UPC_COLL_REDUCE_UPC) collectives/upc_coll_scatter.upc \
279 collectives/upc_coll_sort.upc
281 UPC_RUNTIME_SRC += $(UPC_COLLECTIVES_SRC)
283 EXTRA_DIST += gen-upc-coll-reduce.pl \
284 upc_coll_prefix_reduce.in \
289 toolexeclib_LTLIBRARIES = libgupc.la $(libgupc_pt)
290 nodist_toolexeclib_HEADERS = upc-crtbegin.spec libgupc.spec upc-crtend.spec
292 gcc-upc-lib.h: gen-inline-libgupc.pl gcc-upc-lib.in \
293 $(UPC_RUNTIME_SRC_INLINE)
296 libsubinclude_HEADERS += gcc-upc-lib.h
298 BUILT_SOURCES = gcc-upc-lib.h
300 if LIBGUPC_LINK_SCRIPT
301 UPC_LINK_SCRIPT = gupc.ld
302 $(UPC_LINK_SCRIPT): gen-upc-ld-script.pl
303 -$(CC) $(LDFLAGS) -Xlinker --verbose -x none /dev/null 2>&1 | \
305 BUILT_SOURCES += $(UPC_LINK_SCRIPT)
309 nodist_toolexeclib_HEADERS += $(UPC_LINK_SCRIPT)
312 libgupc_la_SOURCES = $(UPC_RUNTIME_SRC)
313 libgupc_version_info = -version-info $(libtool_VERSION)
314 libgupc_la_LDFLAGS = $(libgupc_version_info)
315 libgupc_la_LINK = $(LINK) $(libgupc_la_LDFLAGS)
316 libgupc_la_LIBADD = \
317 ../libatomic/libatomic_convenience.la
318 libgupc_la_DEPENDENCIES = $(libgupc_la_LIBADD)
321 nodist_libgupc_pt_la_SOURCES = $(UPC_RUNTIME_SRC)
322 libgupc_pt_la_LIBADD =
323 libgupc_pt_la_DEPENDENCIES = $(libgupc_pt_la_LIBADD)
324 libgupc_pt_la_CPPFLAGS = $(AM_CPPFLAGS) -DGUPCR_USE_PTHREADS=1
325 libgupc_pt_la_UPCFLAGS = $(AM_UPCFLAGS) -fupc-pthreads-model-tls
326 libgupc_pt_la_LINK = $(libgupc_la_LINK)
331 toolexeclib_DATA = @upc_crtstuff_objs@
333 include $(gcc_objdir)/libgcc.mvars
334 include $(upc_crtstuff_mak)
338 # Automake Documentation:
339 # If your package has Texinfo files in many directories, you can use the
340 # variable TEXINFO_TEX to tell Automake where to find the canonical
341 # `texinfo.tex' for your package. The value of this variable should be
342 # the relative path from the current `Makefile.am' to `texinfo.tex'.
343 TEXINFO_TEX = ../../gcc/doc/include/texinfo.tex
345 # Defines info, dvi, pdf and html targets
346 MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
347 info_TEXINFOS = libgupc.texi
349 # AM_CONDITIONAL on configure option --generated-files-in-srcdir
351 STAMP_GENINSRC = stamp-geninsrc
356 # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
358 STAMP_BUILD_INFO = stamp-build-info
363 all-local: $(STAMP_GENINSRC)
365 stamp-geninsrc: libgupc.info
366 cp -p $(top_builddir)/libgupc.info $(srcdir)/libgupc.info
369 libgupc.info: $(STAMP_BUILD_INFO)
371 stamp-build-info: libgupc.texi
372 $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgupc.info $(srcdir)/libgupc.texi
375 CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgupc.info \
376 $(nodist_toolexeclib_HEADERS) gupc.ld gcc-upc-lib.h
377 MAINTAINERCLEANFILES = $(srcdir)/libgupc.info