Skip to content

Commit ce9562a

Browse files
pavanbalajiraffenet
authored andcommitted
MPICH: fixes for embedded builds
In embedded mode: * do not install utility programs * do not install headers and man pages * do not expose functions with visibility "default"
1 parent 2ee68f6 commit ce9562a

File tree

10 files changed

+57
-32
lines changed

10 files changed

+57
-32
lines changed

Makefile.am

+15-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ AM_CPPFLAGS = \
1717
noinst_LTLIBRARIES =
1818
lib_LTLIBRARIES =
1919
noinst_PROGRAMS =
20+
bin_PROGRAMS =
2021

2122
if EMBEDDED
2223
noinst_LTLIBRARIES += src/libfabric.la
@@ -36,11 +37,13 @@ else !HAVE_LD_VERSION_SCRIPT
3637
libfabric_version_script =
3738
endif !HAVE_LD_VERSION_SCRIPT
3839

40+
if !EMBEDDED
3941
rdmaincludedir = $(includedir)/rdma
4042
providersincludedir = $(rdmaincludedir)/providers
4143

4244
rdmainclude_HEADERS =
4345
providersinclude_HEADERS =
46+
endif
4447

4548
# internal utility functions shared by in-tree providers:
4649
common_srcs = \
@@ -148,10 +151,17 @@ common_hook_srcs = \
148151
# ensure dl-built providers link back to libfabric
149152
linkback = src/libfabric.la
150153

151-
bin_PROGRAMS = \
154+
if EMBEDDED
155+
noinst_PROGRAMS += \
152156
util/fi_info \
153157
util/fi_strerror \
154158
util/fi_pingpong
159+
else
160+
bin_PROGRAMS += \
161+
util/fi_info \
162+
util/fi_strerror \
163+
util/fi_pingpong
164+
endif
155165

156166
bin_SCRIPTS =
157167

@@ -227,6 +237,7 @@ src_libfabric_la_LDFLAGS += -version-info 27:0:26
227237
endif
228238
src_libfabric_la_LDFLAGS += -export-dynamic \
229239
$(libfabric_version_script)
240+
if !EMBEDDED
230241
rdmainclude_HEADERS += \
231242
$(top_srcdir)/include/rdma/fabric.h \
232243
$(top_srcdir)/include/rdma/fi_atomic.h \
@@ -263,6 +274,7 @@ else
263274
nodist_rdmainclude_HEADERS += $(top_srcdir)/prov/$(PROVIDER_DIRECT)/include/rdma/fi_direct.h
264275
endif
265276
endif HAVE_DIRECT
277+
endif !EMBEDDED
266278

267279
real_man_pages = \
268280
man/man1/fi_info.1 \
@@ -438,8 +450,10 @@ windows_files = \
438450
prov/verbs/include/windows \
439451
prov/verbs/src/windows
440452

453+
if !EMBEDDED
441454
pkgconfigdir = $(libdir)/pkgconfig
442455
pkgconfig_DATA = libfabric.pc
456+
endif
443457

444458
nroff:
445459
@for file in $(real_man_pages) $(prov_install_man_pages); do \

configure.ac

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ AC_CONFIG_SRCDIR([src/fabric.c])
1414
AC_CONFIG_AUX_DIR(config)
1515
AC_CONFIG_MACRO_DIR(config)
1616
AC_CONFIG_HEADERS(config.h)
17-
AM_INIT_AUTOMAKE([1.11 dist-bzip2 foreign -Wall -Werror subdir-objects parallel-tests tar-pax])
17+
AM_INIT_AUTOMAKE([1.11 dist-bzip2 foreign -Wall -Werror subdir-objects parallel-tests tar-pax no-installman])
1818
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
1919
m4_include(config/fi_check_package.m4)
2020
m4_include(config/fi_strip_optflags.m4)
@@ -415,6 +415,7 @@ AC_ARG_ENABLE([embedded],
415415
icc_symver_hack=1],
416416
[enable_embedded=no])
417417
AM_CONDITIONAL([EMBEDDED], [test x"$enable_embedded" = x"yes"])
418+
AM_COND_IF([EMBEDDED], [AC_DEFINE([ENABLE_EMBEDDED], 1, [define if building as embedded library])])
418419

419420
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$ac_cv_version_script" = "yes")
420421

include/rdma/fabric.h

+6
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@
6363
#define EXTERNALLY_VISIBLE
6464
#endif
6565

66+
#ifdef ENABLE_EMBEDDED
67+
#define API_PREFIX
68+
#else
69+
#define API_PREFIX __attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
70+
#endif
71+
6672
#if defined(_WIN32)
6773
#include <BaseTsd.h>
6874
typedef SSIZE_T ssize_t;

prov/psm2/Makefile.include

+2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,10 @@ src_libfabric_la_LIBADD += libpsmx2.la
135135
src_libfabric_la_DEPENDENCIES += libpsmx2.la
136136
endif !HAVE_PSM2_DL
137137

138+
if !EMBEDDED
138139
rdmainclude_HEADERS += prov/psm2/include/fi_ext_psm2.h
139140
prov_install_man_pages += man/man7/fi_psm2.7
141+
endif
140142

141143
endif HAVE_PSM2
142144

prov/usnic/Makefile.include

+2
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,10 @@ _usnic_cppflags = \
138138
-DHAVE_LIBNL3=$(HAVE_LIBNL3) $(usnic_CPPFLAGS) \
139139
-I$(top_srcdir)/prov/usnic/src/usnic_direct
140140

141+
if !EMBEDDED
141142
rdmainclude_HEADERS += \
142143
prov/usnic/src/fi_ext_usnic.h
144+
endif
143145

144146
if HAVE_USNIC_DL
145147
pkglib_LTLIBRARIES += libusnic-fi.la

src/abi_1_0.c

+13-13
Original file line numberDiff line numberDiff line change
@@ -389,14 +389,14 @@ ofi_dup_info_err_free_base: \
389389
/*
390390
* ABI 1.0
391391
*/
392-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
392+
API_PREFIX
393393
void fi_freeinfo_1_0(struct fi_info_1_0 *info)
394394
{
395395
fi_freeinfo((struct fi_info *) info);
396396
}
397397
COMPAT_SYMVER(fi_freeinfo_1_0, fi_freeinfo, FABRIC_1.0);
398398

399-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
399+
API_PREFIX
400400
struct fi_info_1_0 *fi_dupinfo_1_0(const struct fi_info_1_0 *info)
401401
{
402402
struct fi_info *dup;
@@ -477,7 +477,7 @@ struct fi_info_1_0 *fi_dupinfo_1_0(const struct fi_info_1_0 *info)
477477
}
478478
COMPAT_SYMVER(fi_dupinfo_1_0, fi_dupinfo, FABRIC_1.0);
479479

480-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
480+
API_PREFIX
481481
int fi_getinfo_1_0(uint32_t version, const char *node, const char *service,
482482
uint64_t flags, const struct fi_info_1_0 *hints_1_0,
483483
struct fi_info_1_0 **info)
@@ -500,7 +500,7 @@ int fi_getinfo_1_0(uint32_t version, const char *node, const char *service,
500500
}
501501
COMPAT_SYMVER(fi_getinfo_1_0, fi_getinfo, FABRIC_1.0);
502502

503-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
503+
API_PREFIX
504504
int fi_fabric_1_0(struct fi_fabric_attr_1_0 *attr_1_0,
505505
struct fid_fabric **fabric, void *context)
506506
{
@@ -524,14 +524,14 @@ COMPAT_SYMVER(fi_fabric_1_0, fi_fabric, FABRIC_1.0);
524524
/*
525525
* ABI 1.1
526526
*/
527-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
527+
API_PREFIX
528528
void fi_freeinfo_1_1(struct fi_info_1_1 *info)
529529
{
530530
fi_freeinfo((struct fi_info *) info);
531531
}
532532
COMPAT_SYMVER(fi_freeinfo_1_1, fi_freeinfo, FABRIC_1.1);
533533

534-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
534+
API_PREFIX
535535
struct fi_info_1_1 *fi_dupinfo_1_1(const struct fi_info_1_1 *info)
536536
{
537537
struct fi_info *dup, *base;
@@ -550,7 +550,7 @@ struct fi_info_1_1 *fi_dupinfo_1_1(const struct fi_info_1_1 *info)
550550
}
551551
COMPAT_SYMVER(fi_dupinfo_1_1, fi_dupinfo, FABRIC_1.1);
552552

553-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
553+
API_PREFIX
554554
int fi_getinfo_1_1(uint32_t version, const char *node, const char *service,
555555
uint64_t flags, const struct fi_info_1_1 *hints_1_1,
556556
struct fi_info_1_1 **info)
@@ -576,14 +576,14 @@ COMPAT_SYMVER(fi_getinfo_1_1, fi_getinfo, FABRIC_1.1);
576576
/*
577577
* ABI 1.2
578578
*/
579-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
579+
API_PREFIX
580580
void fi_freeinfo_1_2(struct fi_info_1_2 *info)
581581
{
582582
fi_freeinfo((struct fi_info *) info);
583583
}
584584
COMPAT_SYMVER(fi_freeinfo_1_2, fi_freeinfo, FABRIC_1.2);
585585

586-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
586+
API_PREFIX
587587
struct fi_info_1_2 *fi_dupinfo_1_2(const struct fi_info_1_2 *info)
588588
{
589589
struct fi_info *dup, *base;
@@ -602,7 +602,7 @@ struct fi_info_1_2 *fi_dupinfo_1_2(const struct fi_info_1_2 *info)
602602
}
603603
COMPAT_SYMVER(fi_dupinfo_1_2, fi_dupinfo, FABRIC_1.2);
604604

605-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
605+
API_PREFIX
606606
int fi_getinfo_1_2(uint32_t version, const char *node, const char *service,
607607
uint64_t flags, const struct fi_info_1_2 *hints_1_2,
608608
struct fi_info_1_2 **info)
@@ -628,14 +628,14 @@ COMPAT_SYMVER(fi_getinfo_1_2, fi_getinfo, FABRIC_1.2);
628628
/*
629629
* ABI 1.3
630630
*/
631-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
631+
API_PREFIX
632632
void fi_freeinfo_1_3(struct fi_info_1_3 *info)
633633
{
634634
fi_freeinfo((struct fi_info *) info);
635635
}
636636
COMPAT_SYMVER(fi_freeinfo_1_3, fi_freeinfo, FABRIC_1.3);
637637

638-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
638+
API_PREFIX
639639
struct fi_info_1_3 *fi_dupinfo_1_3(const struct fi_info_1_3 *info)
640640
{
641641
struct fi_info *dup, *base;
@@ -654,7 +654,7 @@ struct fi_info_1_3 *fi_dupinfo_1_3(const struct fi_info_1_3 *info)
654654
}
655655
COMPAT_SYMVER(fi_dupinfo_1_3, fi_dupinfo, FABRIC_1.3);
656656

657-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
657+
API_PREFIX
658658
int fi_getinfo_1_3(uint32_t version, const char *node, const char *service,
659659
uint64_t flags, const struct fi_info_1_3 *hints_1_3,
660660
struct fi_info_1_3 **info)

src/fabric.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ FI_DESTRUCTOR(fi_fini(void))
10451045
pthread_mutex_unlock(&common_locks.ini_lock);
10461046
}
10471047

1048-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1048+
API_PREFIX
10491049
void DEFAULT_SYMVER_PRE(fi_freeinfo)(struct fi_info *info)
10501050
{
10511051
struct fi_info *next;
@@ -1315,7 +1315,7 @@ static int ofi_layering_ok(const struct fi_provider *provider,
13151315
return !strcasecmp(provider->name, prov_name);
13161316
}
13171317

1318-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1318+
API_PREFIX
13191319
int DEFAULT_SYMVER_PRE(fi_getinfo)(uint32_t version, const char *node,
13201320
const char *service, uint64_t flags,
13211321
const struct fi_info *hints, struct fi_info **info)
@@ -1446,7 +1446,7 @@ struct fi_info *ofi_allocinfo_internal(void)
14461446
}
14471447

14481448

1449-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1449+
API_PREFIX
14501450
struct fi_info *DEFAULT_SYMVER_PRE(fi_dupinfo)(const struct fi_info *info)
14511451
{
14521452
struct fi_info *dup;
@@ -1553,7 +1553,7 @@ struct fi_info *DEFAULT_SYMVER_PRE(fi_dupinfo)(const struct fi_info *info)
15531553
}
15541554
DEFAULT_SYMVER(fi_dupinfo_, fi_dupinfo, FABRIC_1.8);
15551555

1556-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1556+
API_PREFIX
15571557
int DEFAULT_SYMVER_PRE(fi_fabric)(struct fi_fabric_attr *attr,
15581558
struct fid_fabric **fabric, void *context)
15591559
{
@@ -1608,7 +1608,7 @@ int DEFAULT_SYMVER_PRE(fi_fabric)(struct fi_fabric_attr *attr,
16081608
}
16091609
DEFAULT_SYMVER(fi_fabric_, fi_fabric, FABRIC_1.1);
16101610

1611-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1611+
API_PREFIX
16121612
int DEFAULT_SYMVER_PRE(fi_fabric2)(struct fi_info *info,
16131613
struct fid_fabric **fabric, uint64_t flags, void *context)
16141614
{
@@ -1619,14 +1619,14 @@ int DEFAULT_SYMVER_PRE(fi_fabric2)(struct fi_info *info,
16191619
}
16201620
DEFAULT_SYMVER(fi_fabric2_, fi_fabric2, FABRIC_1.8);
16211621

1622-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1622+
API_PREFIX
16231623
uint32_t DEFAULT_SYMVER_PRE(fi_version)(void)
16241624
{
16251625
return FI_VERSION(FI_MAJOR_VERSION, FI_MINOR_VERSION);
16261626
}
16271627
DEFAULT_SYMVER(fi_version_, fi_version, FABRIC_1.0);
16281628

1629-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1629+
API_PREFIX
16301630
int DEFAULT_SYMVER_PRE(fi_open)(uint32_t version, const char *name,
16311631
void *attr, size_t attr_len, uint64_t flags,
16321632
struct fid **fid, void *context)
@@ -1660,7 +1660,7 @@ static const char *const errstr[] = {
16601660
[FI_ENOMR - FI_ERRNO_OFFSET] = "Memory registration limit exceeded",
16611661
};
16621662

1663-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1663+
API_PREFIX
16641664
const char *DEFAULT_SYMVER_PRE(fi_strerror)(int errnum)
16651665
{
16661666
if (errnum < 0)

src/fi_tostr.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,7 @@ ofi_tostr_cq_err_entry(char *buf, size_t len,
917917
ofi_strncatf(buf, len, "%serr_data_size: %zu\n", TAB, entry->err_data_size);
918918
}
919919

920-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
920+
API_PREFIX
921921
char *DEFAULT_SYMVER_PRE(fi_tostr_r)(char *buf, size_t len,
922922
const void *data, enum fi_type datatype)
923923
{
@@ -1046,7 +1046,7 @@ char *DEFAULT_SYMVER_PRE(fi_tostr_r)(char *buf, size_t len,
10461046
}
10471047
DEFAULT_SYMVER(fi_tostr_r_, fi_tostr_r, FABRIC_1.4);
10481048

1049-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
1049+
API_PREFIX
10501050
char *DEFAULT_SYMVER_PRE(fi_tostr)(const void *data, enum fi_type datatype)
10511051
{
10521052
static char *buf = NULL;

src/log.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ void fi_log_fini(void)
320320
ofi_free_filter(&prov_log_filter);
321321
}
322322

323-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
323+
API_PREFIX
324324
int DEFAULT_SYMVER_PRE(fi_log_enabled)(const struct fi_provider *prov,
325325
enum fi_log_level level,
326326
enum fi_log_subsys subsys)
@@ -334,7 +334,7 @@ int DEFAULT_SYMVER_PRE(fi_log_enabled)(const struct fi_provider *prov,
334334
}
335335
DEFAULT_SYMVER(fi_log_enabled_, fi_log_enabled, FABRIC_1.0);
336336

337-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
337+
API_PREFIX
338338
int DEFAULT_SYMVER_PRE(fi_log_ready)(const struct fi_provider *prov,
339339
enum fi_log_level level, enum fi_log_subsys subsys,
340340
uint64_t *showtime)
@@ -348,7 +348,7 @@ int DEFAULT_SYMVER_PRE(fi_log_ready)(const struct fi_provider *prov,
348348
}
349349
DEFAULT_SYMVER(fi_log_ready_, fi_log_ready, FABRIC_1.6);
350350

351-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
351+
API_PREFIX
352352
void DEFAULT_SYMVER_PRE(fi_log)(const struct fi_provider *prov, enum fi_log_level level,
353353
enum fi_log_subsys subsys, const char *func, int line,
354354
const char *fmt, ...)

src/var.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ fi_find_param(const struct fi_provider *provider, const char *param_name)
9292
return NULL;
9393
}
9494

95-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
95+
API_PREFIX
9696
int DEFAULT_SYMVER_PRE(fi_getparams)(struct fi_param **params, int *count)
9797
{
9898
struct fi_param *vhead = NULL;
@@ -139,7 +139,7 @@ int DEFAULT_SYMVER_PRE(fi_getparams)(struct fi_param **params, int *count)
139139
}
140140
DEFAULT_SYMVER(fi_getparams_, fi_getparams, FABRIC_1.0);
141141

142-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
142+
API_PREFIX
143143
void DEFAULT_SYMVER_PRE(fi_freeparams)(struct fi_param *params)
144144
{
145145
int i;
@@ -184,7 +184,7 @@ void fi_param_undefine(const struct fi_provider *provider)
184184
}
185185
}
186186

187-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
187+
API_PREFIX
188188
int DEFAULT_SYMVER_PRE(fi_param_define)(const struct fi_provider *provider,
189189
const char *param_name, enum fi_param_type type,
190190
const char *help_string_fmt, ...)
@@ -339,7 +339,7 @@ void ofi_dump_sysconfig(void)
339339
}
340340
}
341341

342-
__attribute__((visibility ("default"),EXTERNALLY_VISIBLE))
342+
API_PREFIX
343343
int DEFAULT_SYMVER_PRE(fi_param_get)(struct fi_provider *provider,
344344
const char *param_name, void *value)
345345
{

0 commit comments

Comments
 (0)