summaryrefslogblamecommitdiffstats
path: root/3rdparty/CMakeLists.txt
blob: 8a4cea04c4fe8df3779e85b21b61a24e6f14fbd4 (plain) (tree)
1
2
3
4
5
6
7



                                                                                
                               
 
                                 







                                          
                                                      













































                                              




























                                    



















                                                                                         

                   

                                   













                                                                                                                           










                         
               


                    



                         







                        
################################################################################
# Build OpenPGM
################################################################################

INCLUDE(../OpenPGMConfig.cmake)

ADD_DEFINITIONS(${LIBPGM_CFLAGS})

# Set up build
SET(pgm_VERSION
    5.0.63alpha1
)

# OpenPGM will be built in the binary tree
SET(pgm
    ${CMAKE_CURRENT_BINARY_DIR}/libpgm-src/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_HDRS
    ${pgm}/include/pgm/atomic.h
    ${pgm}/include/pgm/backtrace.h
    ${pgm}/include/pgm/engine.h
    ${pgm}/include/pgm/error.h
    ${pgm}/include/pgm/gsi.h
    ${pgm}/include/pgm/http.h
    ${pgm}/include/pgm/if.h
    ${pgm}/include/pgm/list.h
    ${pgm}/include/pgm/log.h
    ${pgm}/include/pgm/macros.h
    ${pgm}/include/pgm/mem.h
    ${pgm}/include/pgm/messages.h
    ${pgm}/include/pgm/msgv.h
    ${pgm}/include/pgm/packet.h
    ${pgm}/include/pgm/pgm.h
    ${pgm}/include/pgm/signal.h
    ${pgm}/include/pgm/skbuff.h
    ${pgm}/include/pgm/snmp.h
    ${pgm}/include/pgm/socket.h
    ${pgm}/include/pgm/time.h
    ${pgm}/include/pgm/tsi.h
    ${pgm}/include/pgm/types.h
    ${pgm}/include/pgm/version.h
    ${pgm}/include/pgm/winint.h
    ${pgm}/include/pgm/wininttypes.h
)
    

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_HDRS}
        ${pgm}/galois_generator.pl 
        ${pgm}/version_generator.py
    DEPENDS
        "${CMAKE_CURRENT_SOURCE_DIR}/libpgm-${pgm_VERSION}.tar.bz2"
    COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/libpgm-src"
    COMMAND bzip2 -dc "${CMAKE_CURRENT_SOURCE_DIR}/libpgm-${pgm_VERSION}.tar.bz2" | tar -C "${CMAKE_CURRENT_BINARY_DIR}" -x
    COMMAND mv "${CMAKE_CURRENT_BINARY_DIR}/libpgm-${pgm_VERSION}" "${CMAKE_CURRENT_BINARY_DIR}/libpgm-src" 
)

ADD_CUSTOM_COMMAND(TARGET clean
    COMMAND rm -rf "${CMAKE_CURRENT_BINARY_DIR}/libpgm-src"
)

ADD_CUSTOM_TARGET(
    unpack_libpgm
    DEPENDS ${pgm_SRCS} ${pgm_HDRS}
)

INCLUDE_DIRECTORIES(
    ${pgm}/include
    ${GLIB_INCLUDES_DIRS}
)

ADD_LIBRARY(
    pgm
    STATIC
    ${pgm_SRCS}
    ${pgm_HDRS}
    ${pgm_GENERATED}
)

TARGET_LINK_LIBRARIES(pgm
    ${LIBPGM_LIBRARIES}
)

LINK_DIRECTORIES(
    ${GLIB_LIBRARY_DIRS}
)

ADD_DEFINITIONS(
    ${GLIB_CFLAGS}
)