Merge trunk version 204345 into gupc branch.
[official-gcc.git] / libgupc / Makefile.am
blob3cf862ca676c91ef7e94fe4a4d41f0f14d6c4b9a
1 # Process this file with automake to produce Makefile.in
3  WARN_CFLAGS =
4 if LIBGUPC_SMP_RUNTIME
5   targ_runtime_dir = smp
6   WARN_CFLAGS += -W -Wall -Wwrite-strings -Wstrict-prototypes -Werror
7   INC_CFLAGS =
8 endif
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)
14 endif
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 \
38            include/upc_nb.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
53 SUBDIRS = testsuite
56 if LIBGUPC_GENERIC_COLLECTIVES
57   collectives_dir = $(addprefix $(top_srcdir)/, collectives)
58 else
59   collectives_dir =
60 endif
62 search_path =   $(addprefix $(top_srcdir)/config/, $(config_path)) \
63                 $(addprefix $(top_srcdir)/, $(targ_runtime_dir)) \
64                 $(collectives_dir) \
65                 $(addprefix $(top_srcdir)/, include) \
66                 $(top_srcdir)
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)
81 MOSTLYCLEANFILES =
82 UPC_RUNTIME_SRC =
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)
95 AUTOGEN = autogen
97 UPC_BACKTRACE_SUP =
98 if LIBGUPC_BACKTRACE
99 if LIBGUPC_PORTALS4_RUNTIME
100     UPC_BACKTRACE_SUP += portals4/gupcr_backtrace.h portals4/gupcr_backtrace.c
101 else
102     UPC_BACKTRACE_SUP += smp/upc_backtrace.h smp/upc_backtrace.c
103 endif
104 endif
105 if LIBGUPC_SMP_RUNTIME
107 EXTRA_DIST += smp/gcc-upc-lib.in
109 if LIBGUPC_PTHREADS
110 libgupc_pt = libgupc_pt.la
111 else
112 libgupc_pt =
113 endif
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)
120 if LIBGUPC_AFFINITY
121   UPC_AFFINITY_SUP = smp/upc_affinity.c
122 else
123   UPC_AFFINITY_SUP = smp/upc_affinity_stub.c
124 endif
125 if LIBGUPC_GUM
126   UPC_GUM_SUP = smp/upc_gum.c
127 else
128   UPC_GUM_SUP =
129 endif
130 if LIBGUPC_NUMA
131   UPC_NUMA_SUP = smp/upc_numa.c
132 else
133   UPC_NUMA_SUP = smp/upc_numa_stub.c
134 endif
136 if MAINTAINER_MODE
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
148 endif
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 \
153         smp/upc_atomic.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
214 endif
215 if LIBGUPC_NODE_LOCAL_MEM_MMAP
216   UPC_RUNTIME_SRC += portals4/gupcr_node_mem_mmap.c
217 endif
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
230 if MAINTAINER_MODE
231 $(UPC_COLL_PREFIX_REDUCE_UPC): gen-upc-coll-reduce.pl \
232                                upc_coll_prefix_reduce.in
233         $(PERL) $+ > $@
235 $(UPC_COLL_REDUCE_UPC): gen-upc-coll-reduce.pl gupcr_coll_reduce.in
236         $(PERL) $+ > $@
237 endif
239 UPC_RUNTIME_SRC += \
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 \
253              gupcr_coll_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
264 if MAINTAINER_MODE
265 $(UPC_COLL_PREFIX_REDUCE_UPC): gen-upc-coll-reduce.pl \
266                                upc_coll_prefix_reduce.in
267         $(PERL) $+ > $@
269 $(UPC_COLL_REDUCE_UPC): gen-upc-coll-reduce.pl upc_coll_reduce.in
270         $(PERL) $+ > $@
271 endif
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 \
285              upc_coll_reduce.in
287 endif
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)
294         $(PERL) $+ > $@
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 | \
304          $(PERL) $+ > $@
305 BUILT_SOURCES += $(UPC_LINK_SCRIPT)
306 else
307 UPC_LINK_SCRIPT =
308 endif
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)
320 if LIBGUPC_PTHREADS
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)
327 endif
329 if LIBGUPC_CRTSTUFF
331 toolexeclib_DATA = @upc_crtstuff_objs@
333 include $(gcc_objdir)/libgcc.mvars
334 include $(upc_crtstuff_mak)
336 endif
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
350 if GENINSRC
351 STAMP_GENINSRC = stamp-geninsrc
352 else
353 STAMP_GENINSRC =
354 endif
356 # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
357 if BUILD_INFO
358 STAMP_BUILD_INFO = stamp-build-info
359 else
360 STAMP_BUILD_INFO =
361 endif
363 all-local: $(STAMP_GENINSRC)
365 stamp-geninsrc: libgupc.info
366         cp -p $(top_builddir)/libgupc.info $(srcdir)/libgupc.info
367         @touch $@
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
373         @touch $@
375 CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgupc.info \
376         $(nodist_toolexeclib_HEADERS) gupc.ld gcc-upc-lib.h
377 MAINTAINERCLEANFILES = $(srcdir)/libgupc.info