mirror of https://github.com/ipxe/ipxe.git
[linux] Fail at link time if building slirp.linux without libslirp
The iPXE build system is constructed for a standalone codebase with no external dependencies, and does not have any equivalent of the standard userspace ./configure script. We currently check for the ability to include slirp/libslirp.h and conditionalise portions of linux_api.c on its presence. The actual slirp driver code is built unconditionally, as with all iPXE drivers. This currently leads to a silent runtime failure if attempting to use slirp.linux built on a system that was missing slirp/libslirp.h. Convert this to a link-time failure by deliberately omitting the relevant symbols from linux_api.c when slirp/libslirp.h is not present. This allows other builds (e.g. tap.linux or tests.linux) to succeed: the link-time failure will occur only if the slirp driver is included within the build target. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/310/head
parent
65bd5c05db
commit
7c8fc2cae8
|
@ -486,35 +486,6 @@ linux_slirp_pollfds_poll ( struct Slirp *slirp, int select_error,
|
||||||
slirp_pollfds_poll ( slirp, select_error, get_revents, opaque );
|
slirp_pollfds_poll ( slirp, select_error, get_revents, opaque );
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* HAVE_LIBSLIRP */
|
|
||||||
|
|
||||||
struct Slirp * __asmcall
|
|
||||||
linux_slirp_new ( const struct slirp_config *config,
|
|
||||||
const struct slirp_callbacks *callbacks, void *opaque ) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __asmcall linux_slirp_cleanup ( struct Slirp *slirp ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void __asmcall linux_slirp_input ( struct Slirp *slirp, const uint8_t *pkt,
|
|
||||||
int pkt_len ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void __asmcall
|
|
||||||
linux_slirp_pollfds_fill ( struct Slirp *slirp, uint32_t *timeout,
|
|
||||||
int ( __asmcall * add_poll ) ( int fd, int events,
|
|
||||||
void *opaque ),
|
|
||||||
void *opaque ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void __asmcall
|
|
||||||
linux_slirp_pollfds_poll ( struct Slirp *slirp, int select_error,
|
|
||||||
int ( __asmcall * get_revents ) ( int idx,
|
|
||||||
void *opaque ),
|
|
||||||
void *opaque ) {
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_LIBSLIRP */
|
#endif /* HAVE_LIBSLIRP */
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
@ -544,8 +515,11 @@ PROVIDE_IPXE_SYM ( linux_socket );
|
||||||
PROVIDE_IPXE_SYM ( linux_bind );
|
PROVIDE_IPXE_SYM ( linux_bind );
|
||||||
PROVIDE_IPXE_SYM ( linux_sendto );
|
PROVIDE_IPXE_SYM ( linux_sendto );
|
||||||
PROVIDE_IPXE_SYM ( linux_strerror );
|
PROVIDE_IPXE_SYM ( linux_strerror );
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBSLIRP
|
||||||
PROVIDE_IPXE_SYM ( linux_slirp_new );
|
PROVIDE_IPXE_SYM ( linux_slirp_new );
|
||||||
PROVIDE_IPXE_SYM ( linux_slirp_cleanup );
|
PROVIDE_IPXE_SYM ( linux_slirp_cleanup );
|
||||||
PROVIDE_IPXE_SYM ( linux_slirp_input );
|
PROVIDE_IPXE_SYM ( linux_slirp_input );
|
||||||
PROVIDE_IPXE_SYM ( linux_slirp_pollfds_fill );
|
PROVIDE_IPXE_SYM ( linux_slirp_pollfds_fill );
|
||||||
PROVIDE_IPXE_SYM ( linux_slirp_pollfds_poll );
|
PROVIDE_IPXE_SYM ( linux_slirp_pollfds_poll );
|
||||||
|
#endif /* HAVE_LIBSLIRP */
|
||||||
|
|
Loading…
Reference in New Issue