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 */