1## -*- Mode: Makefile; -*-
2## vim: set ft=automake :
3##
4## (C) 2011 by Argonne National Laboratory.
5##     See COPYRIGHT in top-level directory.
6##
7
8## will define $smpd_sock_src and $smpd_sock_hdrs
9include $(top_srcdir)/src/pm/smpd/sock/Makefile.mk
10
11if BUILD_PM_SMPD
12
13other_smpd_src =                      \
14    src/pm/smpd/smpd_hash.c           \
15    src/pm/smpd/smpd_authenticate.c   \
16    src/pm/smpd/smpd_printf.c         \
17    src/pm/smpd/smpd_read_write.c     \
18    src/pm/smpd/smpd_user_data.c      \
19    src/pm/smpd/smpd_connect.c        \
20    src/pm/smpd/smpd_get_opt.c        \
21    src/pm/smpd/smpd_launch_process.c \
22    src/pm/smpd/smpd_command.c        \
23    src/pm/smpd/smpd_database.c       \
24    src/pm/smpd/smpd_state_machine.c  \
25    src/pm/smpd/smpd_handle_command.c \
26    src/pm/smpd/smpd_session.c        \
27    src/pm/smpd/smpd_start_mgr.c      \
28    src/pm/smpd/smpd_barrier.c        \
29    src/pm/smpd/smpd_do_console.c     \
30    src/pm/smpd/smpd_restart.c        \
31    src/pm/smpd/smpd_host_util.c      \
32    src/pm/smpd/smpd_handle_spawn.c   \
33    $(smpd_sock_src)
34
35# these files appear to be unused in the old simplemake-based UNIX build system
36smpd_win_src =                       \
37    src/pm/smpd/smpd_job.c           \
38    src/pm/smpd/smpd_mapdrive.c      \
39    src/pm/smpd/smpd_register.c      \
40    src/pm/smpd/smpd_ad.cpp          \
41    src/pm/smpd/smpd_affinitize.c    \
42    src/pm/smpd/smpd_ccp_util.c      \
43    src/pm/smpd/smpd_hpc_js_rmk.cpp  \
44    src/pm/smpd/smpd_hpc_js_bs.cpp   \
45    src/pm/smpd/smpd_hpc_js_util.cpp
46
47if PRIMARY_PM_SMPD
48
49## SMPD is built in a totally disgusting way, in the sense that it links
50## directly against libmpich and the other libraries that make up the core of
51## MPICH2.  This is slightly easier to manage now in the flattened automake
52## implementation, but the real fix is that SMPD shouldn't be using
53## MPICH2-interal routines directly.  Linking against only MPL makes much more
54## sense.
55
56# this shouldn't be necessary, ideally, but the smpd PMI impl wants to
57# use symbols from the smpd PM impl
58lib_lib@MPILIBNAME@_la_SOURCES += $(other_smpd_src)
59
60bin_PROGRAMS += src/pm/smpd/mpiexec src/pm/smpd/smpd
61src_pm_smpd_mpiexec_SOURCES = src/pm/smpd/mpiexec.c \
62			      src/pm/smpd/mp_parse_command_line.c \
63			      src/pm/smpd/mp_parse_oldconfig.c \
64			      src/pm/smpd/mpiexec_rsh.c
65src_pm_smpd_mpiexec_LDADD = lib/lib@MPILIBNAME@.la $(external_libs)
66src_pm_smpd_mpiexec_LDFLAGS = $(external_ldflags)
67
68src_pm_smpd_smpd_SOURCES = src/pm/smpd/smpd.c \
69			   src/pm/smpd/smpd_cmd_args.c \
70			   src/pm/smpd/smpd_watchprocs.c
71src_pm_smpd_smpd_LDADD = lib/lib@MPILIBNAME@.la $(external_libs)
72src_pm_smpd_smpd_LDFLAGS = $(external_ldflags)
73
74noinst_HEADERS += $(smpd_sock_hdrs) src/pm/smpd/sock/include/smpd_util_sock.h
75# should this go into a per-target _CPPFLAGS var instead for greater safety?
76AM_CPPFLAGS += -I$(top_srcdir)/src/pm/smpd \
77	       -I$(top_srcdir)/src/pm/smpd/sock/include \
78	       $(smpd_sock_cppflags)
79
80else !PRIMARY_PM_SMPD
81## TODO we currently do not handle this case
82endif !PRIMARY_PM_SMPD
83
84endif BUILD_PM_SMPD
85
86