simh-testsetgenerator/slirp/CMakeLists.txt
B. Scott Michel 8b14bb69be
CMake build infrastructure II (#53)
* CMake build infrastructure

The squashed commit that builds and packages releases for the SIMH
simulator suite with CMake, version 3.14 or newer.

See README-CMake.md for documentation.
2023-05-17 20:18:42 -04:00

56 lines
2 KiB
CMake

## Compile SLirp as its own standalone library
if (WITH_NETWORK)
set(SLIRP_SOURCES
"${CMAKE_SOURCE_DIR}/slirp/arp_table.c"
"${CMAKE_SOURCE_DIR}/slirp/bootp.c"
"${CMAKE_SOURCE_DIR}/slirp/bootp.h"
"${CMAKE_SOURCE_DIR}/slirp/cksum.c"
"${CMAKE_SOURCE_DIR}/slirp/dnssearch.c"
"${CMAKE_SOURCE_DIR}/slirp/if.c"
"${CMAKE_SOURCE_DIR}/slirp/ip_icmp.c"
"${CMAKE_SOURCE_DIR}/slirp/ip_input.c"
"${CMAKE_SOURCE_DIR}/slirp/ip_output.c"
"${CMAKE_SOURCE_DIR}/slirp/mbuf.c"
"${CMAKE_SOURCE_DIR}/slirp/misc.c"
"${CMAKE_SOURCE_DIR}/slirp/sbuf.c"
"${CMAKE_SOURCE_DIR}/slirp/slirp.c"
"${CMAKE_SOURCE_DIR}/slirp/socket.c"
"${CMAKE_SOURCE_DIR}/slirp/tcp_input.c"
"${CMAKE_SOURCE_DIR}/slirp/tcp_output.c"
"${CMAKE_SOURCE_DIR}/slirp/tcp_subr.c"
"${CMAKE_SOURCE_DIR}/slirp/tcp_timer.c"
"${CMAKE_SOURCE_DIR}/slirp/tftp.c"
"${CMAKE_SOURCE_DIR}/slirp/udp.c"
"${CMAKE_SOURCE_DIR}/slirp_glue/glib_qemu_stubs.c"
"${CMAKE_SOURCE_DIR}/slirp_glue/sim_slirp.c")
add_library(slirp STATIC "${SLIRP_SOURCES}")
target_compile_definitions(slirp
PRIVATE
HAVE_SLIRP_NETWORK
USE_SIMH_SLIRP_DEBUG
$<$<AND:$<BOOL:${WIN32}>,$<NOT:$<BOOL:${WINAPI_DEPRECATION}>>>:
_WINSOCK_DEPRECATED_NO_WARNINGS
_CRT_NONSTDC_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS>
INTERFACE
HAVE_SLIRP_NETWORK
USE_SIMH_SLIRP_DEBUG)
target_include_directories(slirp
PRIVATE
"${CMAKE_SOURCE_DIR}"
"${CMAKE_SOURCE_DIR}/slirp"
"${CMAKE_SOURCE_DIR}/slirp_glue/qemu"
PUBLIC
"${CMAKE_SOURCE_DIR}/slirp_glue"
$<$<BOOL:${WIN32}>:${CMAKE_SOURCE_DIR}/slirp_glue/qemu/win32/include>)
target_compile_options(slirp PRIVATE ${EXTRA_TARGET_CFLAGS})
target_link_options(slirp PRIVATE ${EXTRA_TARGET_LFLAGS})
target_link_libraries(slirp PUBLIC $<$<BOOL:${WIN32}>:Iphlpapi>)
else (WITH_NETWORK)
# Otherwise, just make slirp an empty interface library.
add_library(slirp INTERFACE)
endif (WITH_NETWORK)