1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2006-2015 Los Alamos National Security, LLC. All rights
4 * reserved.
5 * $COPYRIGHT$
6 *
7 * Additional copyrights may follow
8 *
9 * $HEADER$
10 */
11
12 #ifndef OPAL_MCA_INSTALLDIRS_INSTALLDIRS_H
13 #define OPAL_MCA_INSTALLDIRS_INSTALLDIRS_H
14
15 #include "opal_config.h"
16
17 #include "opal/mca/mca.h"
18 #include "opal/mca/base/base.h"
19
20 BEGIN_C_DECLS
21
22 /*
23 * Most of this file is just for ompi_info. The only public interface
24 * once opal_init has been called is the opal_install_dirs structure
25 * and the opal_install_dirs_expand() call */
26 struct opal_install_dirs_t {
27 char* prefix;
28 char* exec_prefix;
29 char* bindir;
30 char* sbindir;
31 char* libexecdir;
32 char* datarootdir;
33 char* datadir;
34 char* sysconfdir;
35 char* sharedstatedir;
36 char* localstatedir;
37 char* libdir;
38 char* includedir;
39 char* infodir;
40 char* mandir;
41
42 /* Note that the following fields intentionally have an "ompi"
43 prefix, even though they're down in the OPAL layer. This is
44 not abstraction break because the "ompi" they're referring to
45 is for the build system of the overall software tree -- not an
46 individual project within that overall tree.
47
48 Rather than using pkg{data,lib,includedir}, use our own
49 ompi{data,lib,includedir}, which is always set to
50 {datadir,libdir,includedir}/openmpi. This will keep us from
51 having help files in prefix/share/open-rte when building
52 without Open MPI, but in prefix/share/openmpi when building
53 with Open MPI.
54
55 Note that these field names match macros set by configure that
56 are used in Makefile.am files. E.g., project help files are
57 installed into $(opaldatadir). */
58 char* opaldatadir;
59 char* opallibdir;
60 char* opalincludedir;
61 };
62 typedef struct opal_install_dirs_t opal_install_dirs_t;
63
64 /* Install directories. Only available after opal_init() */
65 OPAL_DECLSPEC extern opal_install_dirs_t opal_install_dirs;
66
67 /**
68 * Expand out path variables (such as ${prefix}) in the input string
69 * using the current opal_install_dirs structure */
70 OPAL_DECLSPEC char * opal_install_dirs_expand(const char* input);
71
72
73 /**
74 * Structure for installdirs components.
75 */
76 struct opal_installdirs_base_component_2_0_0_t {
77 /** MCA base component */
78 mca_base_component_t component;
79 /** MCA base data */
80 mca_base_component_data_t component_data;
81 /** install directories provided by the given component */
82 opal_install_dirs_t install_dirs_data;
83 };
84 /**
85 * Convenience typedef
86 */
87 typedef struct opal_installdirs_base_component_2_0_0_t opal_installdirs_base_component_t;
88
89 /*
90 * Macro for use in components that are of type installdirs
91 */
92 #define OPAL_INSTALLDIRS_BASE_VERSION_2_0_0 \
93 OPAL_MCA_BASE_VERSION_2_1_0("installdirs", 2, 0, 0)
94
95 END_C_DECLS
96
97 #endif /* OPAL_MCA_INSTALLDIRS_INSTALLDIRS_H */