From cf1ddf0b9d55b8ca8544b0ae25e8fa08738b2049 Mon Sep 17 00:00:00 2001 From: Sebastien Braun Date: Sat, 10 Jul 2010 04:03:20 +0200 Subject: Import OpenPGM into the tree, and provide a rudimentary build script. OpenPGM will serve as the network layer for Multicast File Transfer. --- 3rdparty/CMakeLists.txt | 160 +++++++++++++++++++++++++++++++++++ 3rdparty/libpgm-5.0.63alpha1.tar.bz2 | Bin 0 -> 358887 bytes 2 files changed, 160 insertions(+) create mode 100644 3rdparty/CMakeLists.txt create mode 100644 3rdparty/libpgm-5.0.63alpha1.tar.bz2 (limited to '3rdparty') diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt new file mode 100644 index 0000000..84f366b --- /dev/null +++ b/3rdparty/CMakeLists.txt @@ -0,0 +1,160 @@ +################################################################################ +# Build OpenPGM +################################################################################ + +# We need GLib +INCLUDE(${CMAKE_ROOT}/Modules/FindPkgConfig.cmake) + +PKG_CHECK_MODULES(GLIB glib-2.0>=2.10) +IF(NOT GLIB_FOUND) + MESSAGE(FATAL_ERROR "You don't seem to have GLib2 installed.") +ELSE(NOT GLIB_FOUND) + MESSAGE("-- GLib2 found. Libraries: ${GLIB_LIBRARIES}, CFLAGS: ${GLIB_CFLAGS}") +ENDIF(NOT GLIB_FOUND) + +# Set up build +SET(pgm_VERSION + 5.0.63alpha1 +) + +# OpenPGM will be built in the binary tree +SET(pgm + ${CMAKE_CURRENT_BINARY_DIR}/libpgm-${pgm_VERSION}/openpgm/pgm +) + +# This has been adapted from SConscript.libpgm +SET(pgm_SRCS + ${pgm}/thread.c + ${pgm}/mem.c + ${pgm}/string.c + ${pgm}/list.c + ${pgm}/slist.c + ${pgm}/queue.c + ${pgm}/hashtable.c + ${pgm}/messages.c + ${pgm}/error.c + ${pgm}/math.c + ${pgm}/packet_parse.c + ${pgm}/packet_test.c + ${pgm}/sockaddr.c + ${pgm}/time.c + ${pgm}/if.c + ${pgm}/getifaddrs.c + ${pgm}/getnodeaddr.c + ${pgm}/indextoaddr.c + ${pgm}/indextoname.c + ${pgm}/nametoindex.c + ${pgm}/inet_network.c + ${pgm}/md5.c + ${pgm}/rand.c + ${pgm}/gsi.c + ${pgm}/tsi.c + ${pgm}/txw.c + ${pgm}/rxw.c + ${pgm}/skbuff.c + ${pgm}/socket.c + ${pgm}/source.c + ${pgm}/receiver.c + ${pgm}/recv.c + ${pgm}/engine.c + ${pgm}/timer.c + ${pgm}/net.c + ${pgm}/rate_control.c + ${pgm}/checksum.c + ${pgm}/reed_solomon.c + ${pgm}/wsastrerror.c + ${pgm}/histogram.c +) + +SET(pgm_GENERATED + ${CMAKE_CURRENT_BINARY_DIR}/version.c + ${CMAKE_CURRENT_BINARY_DIR}/galois_tables.c +) + +# We need to generate galois_tables.c ... +ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/galois_tables.c + COMMAND perl ${pgm}/galois_generator.pl > ${CMAKE_CURRENT_BINARY_DIR}/galois_tables.c + DEPENDS ${pgm}/galois_generator.pl +) + +# ... and version.c ... +ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.c + COMMAND python ${pgm}/version_generator.py > ${CMAKE_CURRENT_BINARY_DIR}/version.c + DEPENDS ${pgm}/version_generator.py +) + +# ... and we need to unpack the tree. +ADD_CUSTOM_COMMAND( + OUTPUT + ${pgm_SRCS} + ${pgm}/galois_generator.pl + ${pgm}/version_generator.py + COMMAND bzip2 -dc ${CMAKE_CURRENT_SOURCE_DIR}/libpgm-${pgm_VERSION}.tar.bz2 | tar -C ${CMAKE_CURRENT_BINARY_DIR} -x +) + +INCLUDE_DIRECTORIES( + ${pgm}/include + ${GLIB_INCLUDES_DIRS} +) + +ADD_LIBRARY( + pgm + STATIC + ${pgm_SRCS} + ${pgm_GENERATED} +) + +LINK_DIRECTORIES( + ${GLIB_LIBRARY_DIRS} +) + +ADD_DEFINITIONS( + ${GLIB_CFLAGS} +) + +IF(UNIX) + IF(CMAKE_COMPILER_IS_GNUCC) + # The scripts are fine for Linux/GCC, other platforms may or may + # not work. + ADD_DEFINITIONS( + -std=gnu99 + -D_XOPEN_SOURCE=600 + -D_BSD_SOURCE + -D_REENTRANT + -DCONFIG_HAVE_GETPROTOBYNAME_R2 + -DCONFIG_HAVE_ISO_VARARGS + -DCONFIG_HAVE_ALLOCA_H + -DCONFIG_16BIT_CHECKSUM + -DCONFIG_HAVE_PROC + -DCONFIG_HAVE_BACKTRACE + -DCONFIG_HAVE_PSELECT + -DCONFIG_HAVE_RTC + -DCONFIG_HAVE_TSC + -DCONFIG_HAVE_HPET + -DCONFIG_HAVE_POLL + -DCONFIG_HAVE_EPOLL + -DCONFIG_HAVE_GETIFADDRS + -DCONFIG_HAVE_IFR_NETMASK + -DCONFIG_HAVE_MCAST_JOIN + -DCONFIG_HAVE_IP_MREQN + -DCONFIG_HAVE_SPRINTF_GROUPING + -DCONFIG_HAVE_VASPRINTF + -DCONFIG_HAVE_DSO_VISIBILITY + -DCONFIG_BIND_INADDR_ANY + -DCONFIG_GALOIS_MUL_LUT + -DCONFIG_HAVE_GETOPT + ) + + TARGET_LINK_LIBRARIES(pgm + m rt + ${GLIB_LIBRARIES}) + + SET(_SYSTEM_SPECIFICS_SET 1) + ENDIF(CMAKE_COMPILER_IS_GNUCC) +ENDIF(UNIX) + +# Complain if this is NOT Linux/GCC. +IF(NOT _SYSTEM_SPECIFICS_SET) + MESSAGE(FATAL_ERROR "Can only build libpgm on Unix with gcc.") +ENDIF(NOT _SYSTEM_SPECIFICS_SET) + diff --git a/3rdparty/libpgm-5.0.63alpha1.tar.bz2 b/3rdparty/libpgm-5.0.63alpha1.tar.bz2 new file mode 100644 index 0000000..ab4903c Binary files /dev/null and b/3rdparty/libpgm-5.0.63alpha1.tar.bz2 differ -- cgit v1.2.3-55-g7522