summaryrefslogtreecommitdiffstats
path: root/3rdparty
diff options
context:
space:
mode:
authorSebastien Braun2010-07-10 04:03:20 +0200
committerSebastien Braun2010-07-10 04:03:20 +0200
commitcf1ddf0b9d55b8ca8544b0ae25e8fa08738b2049 (patch)
treef659cd600471f07445aecdfffcb340ed8df6b963 /3rdparty
parentDefect #715, apply patch by Sébastien (diff)
downloadpvs-cf1ddf0b9d55b8ca8544b0ae25e8fa08738b2049.tar.gz
pvs-cf1ddf0b9d55b8ca8544b0ae25e8fa08738b2049.tar.xz
pvs-cf1ddf0b9d55b8ca8544b0ae25e8fa08738b2049.zip
Import OpenPGM into the tree, and provide a rudimentary build script.
OpenPGM will serve as the network layer for Multicast File Transfer.
Diffstat (limited to '3rdparty')
-rw-r--r--3rdparty/CMakeLists.txt160
-rw-r--r--3rdparty/libpgm-5.0.63alpha1.tar.bz2bin0 -> 358887 bytes
2 files changed, 160 insertions, 0 deletions
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
--- /dev/null
+++ b/3rdparty/libpgm-5.0.63alpha1.tar.bz2
Binary files differ