From f65df2384ab84327e61b96a5bc6bca4529c97c0a Mon Sep 17 00:00:00 2001 From: gianlourbano Date: Wed, 16 Oct 2024 14:35:40 +0200 Subject: [PATCH] Replaced autotools with CMake --- .github/workflows/ci.yml | 12 +- .gitignore | 5 + CMakeLists.txt | 286 ++++++++++++++++++++ INSTALL | 31 +-- Macros.cmake | 76 ++++++ Makefile.am | 65 ----- Uninstall.cmake | 22 ++ configure.ac | 371 -------------------------- doc/CMakeLists.txt | 39 +++ doc/Makefile.am | 25 -- include/CMakeLists.txt | 18 ++ include/Makefile.am | 12 - man/CMakeLists.txt | 26 ++ man/Makefile | 31 +++ man/Makefile.am | 31 --- src/CMakeLists.txt | 54 ++++ src/Makefile.am | 61 ----- src/common/CMakeLists.txt | 31 +++ src/common/Makefile.am | 11 - src/lib/CMakeLists.txt | 44 +++ src/lib/Makefile.am | 28 -- src/lib/vdemgmt/CMakeLists.txt | 34 +++ src/lib/vdemgmt/Makefile.am | 18 -- src/vde_cryptcab/CMakeLists.txt | 32 +++ src/vde_cryptcab/Makefile.am | 14 - src/vde_over_ns/CMakeLists.txt | 33 +++ src/vde_over_ns/Makefile.am | 22 -- src/vde_router/CMakeLists.txt | 50 ++++ src/vde_router/Makefile.am | 37 --- src/vde_switch/CMakeLists.txt | 55 ++++ src/vde_switch/Makefile.am | 47 ---- src/vde_switch/plugins/CMakeLists.txt | 26 ++ src/vde_switch/plugins/Makefile.am | 30 --- src/vde_vxlan/CMakeLists.txt | 25 ++ src/vde_vxlan/Makefile.am | 23 -- src/vdetaplib/CMakeLists.txt | 25 ++ src/vdetaplib/Makefile.am | 19 -- 37 files changed, 924 insertions(+), 845 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 Macros.cmake delete mode 100644 Makefile.am create mode 100644 Uninstall.cmake delete mode 100644 configure.ac create mode 100644 doc/CMakeLists.txt delete mode 100644 doc/Makefile.am create mode 100644 include/CMakeLists.txt delete mode 100644 include/Makefile.am create mode 100644 man/CMakeLists.txt create mode 100644 man/Makefile delete mode 100644 man/Makefile.am create mode 100644 src/CMakeLists.txt delete mode 100644 src/Makefile.am create mode 100644 src/common/CMakeLists.txt delete mode 100644 src/common/Makefile.am create mode 100644 src/lib/CMakeLists.txt delete mode 100644 src/lib/Makefile.am create mode 100644 src/lib/vdemgmt/CMakeLists.txt delete mode 100644 src/lib/vdemgmt/Makefile.am create mode 100644 src/vde_cryptcab/CMakeLists.txt delete mode 100644 src/vde_cryptcab/Makefile.am create mode 100644 src/vde_over_ns/CMakeLists.txt delete mode 100644 src/vde_over_ns/Makefile.am create mode 100644 src/vde_router/CMakeLists.txt delete mode 100644 src/vde_router/Makefile.am create mode 100644 src/vde_switch/CMakeLists.txt delete mode 100644 src/vde_switch/Makefile.am create mode 100644 src/vde_switch/plugins/CMakeLists.txt delete mode 100644 src/vde_switch/plugins/Makefile.am create mode 100644 src/vde_vxlan/CMakeLists.txt delete mode 100644 src/vde_vxlan/Makefile.am create mode 100644 src/vdetaplib/CMakeLists.txt delete mode 100644 src/vdetaplib/Makefile.am diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26dd551c..94da39a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,16 +20,12 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update - sudo apt-get install -y autoconf automake - - name: "Install dependencies (macOS)" - if: runner.os == 'macOS' - run: | - brew install autoconf automake libtool - autoupdate + sudo apt-get install -y cmake - name: "Build" run: | - autoreconf -fis - ./configure --prefix=/opt/vde + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/opt/vde make sudo make install - name: "Smoke test" diff --git a/.gitignore b/.gitignore index 3241d087..0098ece0 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,8 @@ src/wirefilter src/kvde_switch/kvde_switch src/vde_router/vde_router +# cmake + +build + + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..763cafc1 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,286 @@ +cmake_minimum_required(VERSION 3.10) +project(vde2 + VERSION 2.3.3 + LANGUAGES C +) + +include(GNUInstallDirs) +include(./Macros.cmake) + +add_definitions(-DSYSCONFDIR=\"${CMAKE_INSTALL_SYSCONFDIR}\" -DLOCALSTATEDIR=\"${CMAKE_INSTALL_LOCALSTATEDIR}\") + +cm_define_project( + ${PROJECT_VERSION} + ${PROJECT_NAME} + ${PROJECT_NAME} + "${PROJECT_NAME} ${PROJECT_VERSION}" + "info@v2.cs.unibo.it" + " " + ${PROJECT_NAME} +) + +# Options +option(ENABLE_VXLAN "Enable VDE VXLAN" ON) +option(ENABLE_CRYPTCAB "Enable VDE CryptCab" ON) +option(ENABLE_VDE_OVER_NS "Enable VDE over NS" ON) +option(ENABLE_ROUTER "Enable VDE Router" ON) +option(ENABLE_PCAP "Enable pcap support" ON) +option(ENABLE_TUNTAP "Enable tuntap support" ON) +option(ENABLE_EXPERIMENTAL "Enable experimental features" OFF) +option(ENABLE_PROFILE "Enable profiling options" OFF) +set(WITH_CRYPT "wolfssl" CACHE STRING "Choose implementation for cryptcab (wolfssl or mbedtls)") +set(crypt ${WITH_CRYPT}) + +# Set compiler flags +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") + +# Check for required libraries +find_library(DL_LIBRARY dl) +find_library(HAVE_WOLFSSL wolfssl) +find_library(PTHREAD_LIBRARY pthread) +find_library(PCAP_LIBRARY pcap) +find_library(HAVE_MBEDTLS mbedtls) + +# Check for headers + +cm_check_include(arpa/inet.h HAVE_ARPA_INET_H) +cm_check_include(fcntl.h HAVE_FCNTL_H) +cm_check_include(netdb.h HAVE_NETDB_H) +cm_check_include(netinet/in.h HAVE_NETINET_IN_H) +cm_check_include(stddef.h HAVE_STDDEF_H) +cm_check_include(stdint.h HAVE_STDINT_H) +cm_check_include(stdlib.h HAVE_STDLIB_H) +cm_check_include(string.h HAVE_STRING_H) +cm_check_include(strings.h HAVE_STRINGS_H) +cm_check_include(sys/ioctl.h HAVE_SYS_IOCTL_H) +cm_check_include(sys/param.h HAVE_SYS_PARAM_H) +cm_check_include(sys/socket.h HAVE_SYS_SOCKET_H) +cm_check_include(sys/time.h HAVE_SYS_TIME_H) +cm_check_include(syslog.h HAVE_SYSLOG_H) +cm_check_include(termio.h HAVE_TERMIO_H) +cm_check_include(termios.h HAVE_TERMIOS_H) +cm_check_include(unistd.h HAVE_UNISTD_H) +cm_check_include(sys/filio.h HAVE_SYS_FILIO_H) +cm_check_include(sys/bitypes.h HAVE_SYS_BITYPES_H) +cm_check_include(sys/wait.h HAVE_SYS_WAIT_H) +cm_check_include(sys/select.h HAVE_SYS_SELECT_H) +cm_check_include(sys/signal.h HAVE_SYS_SIGNAL_H) +cm_check_include(sys/stropts.h HAVE_SYS_STROPTS_H) +cm_check_include(sys/type32.h HAVE_SYS_TYPE32_H) + +cm_check_include(syslimits.h HAVE_SYSLIMITS_H) +cm_check_include(sys/syslimits.h HAVE_SYS_SYSLIMITS_H) +cm_check_include(sysexits.h HAVE_SYSEXITS_H) + +cm_check_include(wolfssl/wolfcrypt/chacha.h HAVE_WOLFSSL_CHACHA_H) +cm_check_include(mbedtls/chacha20.h HAVE_MBEDTLS_CHACHA20_H) + +# Check for functions +cm_check_function(atexit HAVE_ATEXIT) +cm_check_function(dup2 HAVE_DUP2) +cm_check_function(gethostbyname HAVE_GETHOSTBYNAME) +cm_check_function(gethostname HAVE_GETHOSTNAME) +cm_check_function(gettimeofday HAVE_GETTIMEOFDAY) +cm_check_function(inet_ntoa HAVE_INET_NTOA) +cm_check_function(memmove HAVE_MEMMOVE) +cm_check_function(memset HAVE_MEMSET) +cm_check_function(putenv HAVE_PUTENV) +cm_check_function(select HAVE_SELECT) +cm_check_function(setenv HAVE_SETENV) +cm_check_function(socket HAVE_SOCKET) +cm_check_function(strchr HAVE_STRCHR) +cm_check_function(strdup HAVE_STRDUP) +cm_check_function(strerror HAVE_STRERROR) +cm_check_function(strstr HAVE_STRSTR) + +cm_check_function(poll HAVE_POLL) +if(HAVE_POLL) + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + message(STATUS "poll present but broken, emulating with select") + set(EMULATE_DARWIN_POLL TRUE) + cm_define_var(poll "vde_poll") + set(HAVE_POLL NO) + endif() +endif() + +cm_check_function(uname HAVE_UNAME) +cm_check_function(inet_aton HAVE_INET_ATON) +cm_check_function(sprintf HAVE_SNPRINTF) +cm_check_function(readv HAVE_READV) +cm_check_function(random HAVE_RANDOM) +cm_check_function(srandom HAVE_SRANDOM) +cm_check_function(index HAVE_INDEX) +cm_check_function(bcmp HAVE_BCMP) +cm_check_function(drand48 HAVE_DRAND48) +cm_check_function(memmove HAVE_MEMMOVE) +cm_check_function(gethostid HAVE_GETHOSTID) +cm_check_function(revoke HAVE_REVOKE) +cm_check_function(fchmod HAVE_FCHMOD) +cm_check_function(getopt_long_only HAVE_GETOPT_LONG_ONLY) +cm_check_function(funopen HAVE_FUNOPEN) + +cm_check_function(open_memstream HAVE_OPEN_MEMSTREAM) +cm_check_function(strndup HAVE_STRNDUP) + +cm_check_type_size(char SIZEOF_CHAR) +cm_check_type_size(int SIZEOF_INT) +cm_check_type_size(short SIZEOF_SHORT) +cm_check_type_size("char*" SIZEOF_CHAR_P) + +set(MODULES_EXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) + +cm_define_var(MODULES_EXT \"${CMAKE_SHARED_LIBRARY_SUFFIX}\") + +# Platform-specific configurations +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + cm_define_var(VDE_LINUX 1) +elseif(CMAKE_SYSTEM_NAME MATCHES "Android") + cm_define_var(VDE_BIONIC 1) +elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") + cm_define_var(VDE_DARWIN 1) +elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + cm_define_var(VDE_FREEBSD 1) +else() + message(FATAL_ERROR "Unsupported OS: ${CMAKE_SYSTEM_NAME}") +endif() + +if(${crypt} STREQUAL "wolfssl") + if(HAVE_WOLFSSL AND HAVE_WOLFSSL_CHACHA_H) + set(CAN_MAKE_CRYPTCAB ON) + else() + set(CAN_MAKE_CRYPTCAB OFF) + endif() + add_definitions(-DUSE_WOLFSSL=1) + set(SSL_LIB "wolfssl") + cm_define_var(HAVE_WOLFSSL 1) +elseif(${crypt} STREQUAL "mbedtls") + if(HAVE_MBEDTLS AND HAVE_MBEDTLS_CHACHA20_H) + set(CAN_MAKE_CRYPTCAB ON) + else() + set(CAN_MAKE_CRYPTCAB OFF) + endif() + add_definitions(-DUSE_WOLFSSL=0) + cm_define_var(HAVE_MBEDTLS 1) + set(SSL_LIB "mbedcrypto") +else() + message(FATAL_ERROR "Unsupported crypt option: ${crypt}. At the moment, only wolfssl and mbedlts are supported. Contributions are appreciated! :-)") +endif() + +# Configure features based on options and available libraries +if(CAN_MAKE_CRYPTCAB AND NOT ENABLE_CRYPTCAB) + set(ENABLE_CRYPTCAB OFF) +elseif(CAN_MAKE_CRYPTCAB AND ENABLE_CRYPTCAB) + set(ENABLE_CRYPTCAB ON) +elseif(NOT CAN_MAKE_CRYPTCAB AND ENABLE_CRYPTCAB) + message(WARNING "Cannot make vde_cryptcab: required library (${SSL_LIB}) not found") + set(ENABLE_CRYPTCAB OFF) +endif() + +if(ENABLE_ROUTER AND PTHREAD_LIBRARY) + set(CAN_MAKE_VDE_ROUTER TRUE) +endif() + +if(ENABLE_PCAP AND HAVE_PCAP_OPEN_DEAD) + set(CAN_MAKE_VDE_PCAP TRUE) +endif() + +if(HAVE_SYSEXITS_H) + set(CAN_MAKE_VDE_OVER_NS TRUE) +else() + set(CAN_MAKE_VDE_OVER_NS FALSE) + message(WARNING "Cannot make vde_over_ns: sysexits.h not found") +endif() + +if(ENABLE_TUNTAP) + if(CMAKE_SYSTEM_NAME MATCHES "Linux") + include(CheckIncludeFile) + cm_check_include("linux/if_tun.h" HAVE_LINUX_IF_TUN_H) + if(HAVE_LINUX_IF_TUN_H) + set(CAN_MAKE_LIBVDETAP YES) + set(HAVE_TUNTAP YES) + + else() + set(CAN_MAKE_LIBVDETAP NO) + set(ENABLE_TUNTAP NO) + message(WARNING "TunTap support is not available on this Linux system.") + endif() + + + elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") + set(TUNTAP_FILES + "/dev/tap0" + "/Library/Extensions/tap.kext" + "/System/Library/Extensions/tap.kext" + ) + + foreach(FILE ${TUNTAP_FILES}) + if(EXISTS ${FILE}) + string(MAKE_C_IDENTIFIER "${FILE}" DEFINE_NAME) + string(TOUPPER "${DEFINE_NAME}" DEFINE_NAME) + add_definitions(-DHAVE_${DEFINE_NAME}=1) + set(HAVE_${DEFINE_NAME} YES) + cm_define_var(HAVE_${DEFINE_NAME} 1) + endif() + endforeach() + + if(HAVE__DEV_TAP0_) + add_definitions(-DHAVE_TUNTAP=1) + if(NOT HAVE__LIBRARY_EXTENSIONS_TAP_KEXT_ AND NOT HAVE__SYSTEM_LIBRARY_EXTENSIONS_TAP_KEXT_) + message(WARNING "/dev/tap0 exists, but the kext cannot be found. Let's hope your configuration does work...") + endif() + else() + message(WARNING "You do not have TunTap support. You can get it here: http://tuntaposx.sourceforge.net/") + set(ENABLE_TUNTAP OFF) + endif() + + elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + include(CheckIncludeFile) + cm_check_include("net/if_tun.h" HAVE_NET_IF_TUN_H) + if(HAVE_NET_IF_TUN_H) + add_definitions(-DHAVE_TUNTAP=1) + else() + message(WARNING "TunTap support is not available on this FreeBSD system.") + endif() + endif() +endif() + +if(VDEPLUG4_LIBRARY) + message(STATUS "VDE plug4 library found: ${VDEPLUG4_LIBRARY}") +endif() + +if(ENABLE_EXPERIMENTAL) + add_definitions(-DENABLE_EXPERIMENTAL) +endif() + +if(ENABLE_PROFILE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") +endif() + +# Add subdirectories +add_subdirectory(src) +add_subdirectory(include) +add_subdirectory(man) +add_subdirectory(doc) + +cm_configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h) + +# Install configuration +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/config.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/vde2) + +# Output configuration summary +message(STATUS "") +message(STATUS "Configure results:") +message(STATUS "") +message(STATUS " VDE VXLAN............... ${ENABLE_VXLAN}") +message(STATUS " VDE CryptCab............ ${ENABLE_CRYPTCAB}") +message(STATUS " VDE Router.............. ${ENABLE_ROUTER}") +message(STATUS " TAP support............. ${ENABLE_TUNTAP}") +message(STATUS " pcap support............ ${ENABLE_PCAP}") +message(STATUS " Experimental features... ${ENABLE_EXPERIMENTAL}") +message(STATUS " Profiling options....... ${ENABLE_PROFILE}") +message(STATUS "") +message(STATUS "") + +add_custom_target(uninstall + "${CMAKE_COMMAND}" -P "${PROJECT_SOURCE_DIR}/Uninstall.cmake") diff --git a/INSTALL b/INSTALL index 9221127f..28d36d53 100644 --- a/INSTALL +++ b/INSTALL @@ -1,25 +1,10 @@ -If you've just downloaded the distribution from the SVN repository, a: +To build and install the project, run: -$ autoreconf --install +```bash + $ mkdir build + $ cd build + $ cmake .. + $ make + $ sudo make install +``` -builds up the building infrastructure (if you want to come back to a "svn -status", go through the ./configure and then 'make extraclean'). - -If you've downloaded an official distribution, or already you've made the step -before, do a: - -$ ./configure -(./configure --help to have a list of pertinent arguments, like --disable-tuntap) - -then: - -$ make - -and if you want: - -$ make install - - -MACOS 10.3: -these extra tools must be installed first: -autoconf-2.59, automake-1.9, libtool-1.5.20 diff --git a/Macros.cmake b/Macros.cmake new file mode 100644 index 00000000..c0d8c7e5 --- /dev/null +++ b/Macros.cmake @@ -0,0 +1,76 @@ +include(CheckIncludeFile) +include(CheckFunctionExists) +include(CheckLibraryExists) +include(CheckTypeSize) + +set(defines "// autogenerated by cmake macro\n\n") + +macro(cm_define_project version name tarname string bugreport url package) + set(defines ${defines} "#define PACKAGE_VERSION \"${version}\"\n\n") + set(defines ${defines} "#define PACKAGE_NAME \"${name}\"\n\n") + set(defines ${defines} "#define PACKAGE_TARNAME \"${tarname}\"\n\n") + set(defines ${defines} "#define PACKAGE_STRING \"${string}\"\n\n") + set(defines ${defines} "#define PACKAGE_BUGREPORT \"${bugreport}\"\n\n") + set(defines ${defines} "#define PACKAGE_URL \"${url}\"\n\n") + set(defines ${defines} "#define PACKAGE \"${package}\"\n\n") +endmacro() + +macro(cm_define_var varname varvalue) + set(defines ${defines} "#define ${varname} ${varvalue}\n\n") +endmacro() + +macro(cm_check_lib libname) + find_library(${libname}_LIBRARY ${libname}) + if(${libname}_LIBRARY) + string(TOUPPER ${libname} libname) + set(defines ${defines} "#cmakedefine HAVE_${libname}\n\n") + else() + set(defines ${defines} "/* #undef HAVE_${libname} */\n\n") + endif() +endmacro() + +macro(cm_check_include include var) + check_include_file(${include} ${var}) + if(${var}) + set(defines ${defines} "#cmakedefine ${var}\n\n") + else() + set(defines ${defines} "/* #undef ${var} */\n\n") + endif() +endmacro() + +macro(cm_check_function func var) + check_function_exists(${func} ${var}) + if(${var}) + set(defines ${defines} "#cmakedefine ${var}\n\n") + else() + set(defines ${defines} "/* #undef ${var} */\n\n") + endif() +endmacro() + +macro(cm_check_type_size type var) + check_type_size(${type} ${var}) + if(${var}) + set(defines ${defines} "#cmakedefine ${var} ${${var}}\n\n") + else() + set(defines ${defines} "/* #undef ${var} */\n\n") + endif() +endmacro() + +macro(cm_replace_functions sources) + foreach(name ${ARGN}) + string(TOUPPER have_${name} SYMBOL_NAME) + cm_check_function(${name} ${SYMBOL_NAME}) + message(${defines}) + if(NOT ${SYMBOL_NAME}) + set(${sources} ${${sources}} ${name}.c) + endif() + endforeach() +endmacro() + +set(default_conf_file "config.h.template") + +macro(cm_configure_file to_file) + file(WRITE ${default_conf_file} ${defines}) + configure_file(${default_conf_file} ${to_file}) + file(REMOVE ${default_conf_file}) # uncomment if you want to check the template +endmacro() \ No newline at end of file diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 01c8c668..00000000 --- a/Makefile.am +++ /dev/null @@ -1,65 +0,0 @@ -SUBDIRS = include src man doc -ACLOCAL_AMFLAGS = -I m4 - -EXTRA_DIST = Changelog COPYING COPYING.libvdeplug COPYING.slirpvde INSTALL README - -DISTCHECK_CONFIGURE_FLAGS = --enable-experimental - -extraclean: distclean - rm -f \ - aclocal.m4 \ - autom4te.cache \ - autoscan.log \ - configure.scan \ - configure \ - depcomp \ - install-sh \ - Makefile.in \ - config.guess \ - config.sub \ - ltmain.sh \ - missing \ - compile \ - include/config.h.in* \ - vde2-*.tar.gz \ - vde2-*.tar.bz2 \ - `find . -name Makefile.in` \ - $(cksum_file) - -# release stuff -# https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download - -cksum_file=$(distdir).checksum -trunk_url=https://vde.svn.sourceforge.net/svnroot/vde/trunk/vde-2 -tag_url=https://vde.svn.sourceforge.net/svnroot/vde/tags/vde-2/$(PACKAGE_VERSION) - -release_checksums: dist - rm -f $(cksum_file) - which sha1sum >/dev/null && sha1sum $(DIST_ARCHIVES) >> $(cksum_file) - which sha256sum >/dev/null && sha256sum $(DIST_ARCHIVES) >> $(cksum_file) -# error if the file is empty (or non existant) - /usr/bin/test -s $(cksum_file) || exit 1 - -release_steps: - @/usr/bin/test -f release_ready || { \ - echo "File release_ready not found, complete these steps first:"; \ - echo "- check any outstanding bug on sf.net"; \ - echo "- check any outstanding bug on bugs.debian.org"; \ - echo "- update the changelog"; \ - echo "- increase version number in configure.ac"; \ - echo "Once you're done you can 'touch release_ready' to proceed"; exit 1; } - -release_tag: -# check if release tag exists, othewise tag the release - svn ls $(tag_url) 1>/dev/null || svn copy -m "Tag release $(PACKAGE_VERSION)" $(trunk_url) $(tag_url) - -release: release_steps release_tag release_checksums - reldir=`mktemp -d -t vde.XXXXXX`/$(PACKAGE_VERSION); \ - mkdir -p $$reldir; \ - cp -v $(DIST_ARCHIVES) $(cksum_file) $$reldir; \ - rm -f release_ready - echo "***" - echo "*** release ready at $$reldir, manual steps left:"; \ - echo "***" - echo "gpg -o $$reldir/$(cksum_file).asc --clearsign $$reldir/$(cksum_file)"; \ - echo "rsync -e ssh -vaz $$reldir ,vde@frs.sourceforge.net:/home/frs/project/v/vd/vde/vde2/" diff --git a/Uninstall.cmake b/Uninstall.cmake new file mode 100644 index 00000000..7a7fba08 --- /dev/null +++ b/Uninstall.cmake @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.13) +set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") + +if(NOT EXISTS ${MANIFEST}) + message(FATAL_ERROR "Cannot find install manifest: '${MANIFEST}'") +endif() + +file(STRINGS ${MANIFEST} files) +foreach(file ${files}) + if(EXISTS ${file} OR IS_SYMLINK ${file}) + message(STATUS "Removing: ${file}") + + execute_process( + COMMAND rm -f ${file} + RESULT_VARIABLE retcode + ) + + if(NOT "${retcode}" STREQUAL "0") + message(WARNING "Failed to remove: ${file}") + endif() + endif() +endforeach(file) \ No newline at end of file diff --git a/configure.ac b/configure.ac deleted file mode 100644 index dfa36b76..00000000 --- a/configure.ac +++ /dev/null @@ -1,371 +0,0 @@ -# -*- Autoconf -*-/ -# Process this file with autoconf to produce a configure script. - -AC_PREREQ([2.59]) -AC_INIT([vde2],[2.3.3],[info@v2.cs.unibo.it]) -AC_CONFIG_MACRO_DIR([m4]) -AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects]) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -AC_CONFIG_SRCDIR([include/vde.h]) -AC_CONFIG_LIBOBJ_DIR(src/common) -AC_CONFIG_HEADERS([include/config.h]) - -# Checks for programs. -AC_PROG_CC -AC_PROG_INSTALL -AC_PROG_LN_S -LT_INIT -AM_PROG_CC_C_O - -AC_DEFINE_UNQUOTED(MODULES_EXT, "$shrext_cmds", [Extension of shared objects]) - -# Checks for libraries. -AC_CHECK_LIB([dl], [dlopen]) -AC_CHECK_LIB([wolfssl], [wc_Chacha_Process], - [have_wolfssl=yes], - [have_wolfssl=no]) -AC_CHECK_LIB([mbedcrypto], [mbedtls_chacha20_starts], - [have_mbedtls=yes], - [have_mbedtls=no]) - -AC_CHECK_LIB([pthread], [pthread_create], - [enable_router=yes], - [enable_router=no ; warn_router=yes]) -AC_CHECK_LIB([pcap], [pcap_open_dead], - [add_pcap=yes], - [add_pcap=no ; warn_pcap=yes]) - -# Checks for header files. -AC_PROG_EGREP - -AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stddef.h stdint.h \ - stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/socket.h \ - sys/time.h syslog.h termio.h termios.h unistd.h sys/filio.h sys/bitypes.h \ - sys/wait.h sys/select.h sys/signal.h sys/stropts.h termios.h sys/type32.h]) - -AC_CHECK_HEADERS([syslimits.h sys/syslimits.h]) - -AC_CHECK_HEADERS([wolfssl/wolfcrypt/chacha.h], [], - [have_wolfssl=no]) - -AC_CHECK_HEADERS([mbedtls/chacha20.h], [], - [have_mbedtls=no]) - -AC_CHECK_HEADERS([sysexits.h], - [add_over_ns_support=yes], - [add_over_ns_support=no ; warn_over_ns=yes]) - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_INLINE -AC_C_BIGENDIAN -AC_C_PROTOTYPES -AC_TYPE_MODE_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T - -# Checks for library functions. -AC_FUNC_CHOWN -AC_FUNC_FORK -AC_FUNC_MALLOC -AC_FUNC_MEMCMP -AC_FUNC_REALLOC -AC_FUNC_SELECT_ARGTYPES -AC_FUNC_VPRINTF -AC_CHECK_FUNCS([atexit dup2 gethostbyname gethostname gettimeofday inet_ntoa \ - memmove memset putenv select setenv socket strchr strdup strerror strstr \ - uname inet_aton sprintf readv random srandom index bcmp drand48 memmove \ - gethostid revoke fchmod getopt_long_only funopen]) -AC_REPLACE_FUNCS([open_memstream strndup]) -AC_CHECK_FUNC([poll], - [ - AC_MSG_CHECKING([for poll sanity]) - if expr "$build_os" : "darwin*" > /dev/null; then - AC_MSG_RESULT([present but broken, emulating with select]) - AC_LIBOBJ([poll]) - AC_DEFINE([poll], [vde_poll], - [Define to vde_poll if the replacement function should be used.]) - else - AC_DEFINE([HAVE_POLL], 1, [Define to 1 if your system has a working poll() function.]) - AC_MSG_RESULT([yes]) - fi - ], - []) - -# All other nice checks I have to make for recostructing missing parts of -# slirp's config.h file -AC_CHECK_SIZEOF(char) -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(char *) - -# Define VDE_LINUX or VDE_DARWIN -case "$build_os" in - linux*) - if expr "$host_os" : ".*android" > /dev/null; then - AC_DEFINE([VDE_BIONIC], 1, [If defined, this is a Linux/bionic system]) - else - AC_DEFINE([VDE_LINUX], 1, [If defined, this is a Linux system]) - fi - ;; - darwin*) - AC_DEFINE([VDE_DARWIN], 1, [If defined, this is a Darwin system]) - darwin_gcc=yes - ;; - freebsd*) - AC_DEFINE([VDE_FREEBSD], 1, [If defined, this is a FreeBSD system]) - ;; - *) - AC_MSG_ERROR([Unsupported OS: $build_os. At the moment, only Linux, Darwin -and FreeBSD are supported. Contributions are appreciated! :-)]) - ;; -esac - -# Enable profiling options -AC_ARG_ENABLE([profile], - AS_HELP_STRING([--enable-profile], - [Compile with debugging/profiling options]), - [if test $enableval = "yes"; then enable_profile=yes; fi]) - -# Enable experimental features -AC_ARG_ENABLE([experimental], - AS_HELP_STRING([--enable-experimental], - [Enable experimental features (async notifies, plugin support, packet counter)]), - [if test $enableval = "yes"; then enable_experimental=yes; fi]) - -# Select crypt implementation for cryptcab -AC_ARG_WITH([crypt], - AS_HELP_STRING([--with-crypt=wolfssl|mbedtls], - [Choose implementation for cryptcab]), - [crypt="$withval"], - [crypt='wolfssl']) - -case "$crypt" in - 'wolfssl') - if test $have_wolfssl = yes; then - add_cryptcab_support=yes - warn_cryptcab=no - else - add_cryptcab_support=no - warn_cryptcab=yes - fi - AC_DEFINE([USE_WOLFSSL], 1, [Define to 1 if you want to use the wolfssl crypt implementation.]) - SSL_LIB="-lwolfssl" - AC_SUBST(SSL_LIB) - ;; - 'mbedtls') - if test $have_mbedtls = yes; then - add_cryptcab_support=yes - warn_cryptcab=no - else - add_cryptcab_support=no - warn_cryptcab=yes - fi - AC_DEFINE([USE_WOLFSSL], 0, [Define to 1 if you want to use the wolfssl crypt implementation.]) - SSL_LIB="-lmbedcrypto" - AC_SUBST(SSL_LIB) - ;; - *) - AC_MSG_ERROR([Unsupported crypt option: $crypt. At the moment, only wolfssl and mbedlts are supported. Contributions are appreciated! :-)]) -esac - -# Disable vde_cryptcab? (depends on wolfssl/mbedtls, maybe unwanted) -AC_ARG_ENABLE([cryptcab], - AS_HELP_STRING([--disable-cryptcab], - [Disable vde_cryptcab compilation]), - [if test $enableval = "no" ; then add_cryptcab_support=no ; warn_cryptcab=no ; fi]) - -# Disable vde_over_ns? (not working on android, maybe unwanted) -AC_ARG_ENABLE([vde_over_ns], - AS_HELP_STRING([--disable-vde_over_ns], - [Disable vde_over_ns compilation]), - [if test $enableval = "no" ; then add_over_ns_support=no ; warn_over_ns=no ; fi]) - -# Disable vde_router? (depends on lpthread, maybe unwanted) -AC_ARG_ENABLE([router], - AS_HELP_STRING([--disable-router], - [Disable libpthread-dependent vde_router compilation]), - [if test $enableval = "no" ; then enable_router=no ; warn_router=no ; fi]) - -enable_vxlan=yes -# Disable vde_vxlan? -AC_ARG_ENABLE([vxlan], - AS_HELP_STRING([--disable-vxlan], - [Disable vde_vxlan compilation]), - [if test $enableval = "no" ; then enable_vxlan=no ; warn_vxlan=no ; fi]) - -# Check of tuntap device -AC_ARG_ENABLE([tuntap], - AS_HELP_STRING([--disable-tuntap], [Disable tuntap compilation]), [:], - [case "$build_os" in - linux*) - AC_CHECK_HEADER([linux/if_tun.h], - [AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in])], - [warn_tuntap=yes]) - can_make_libvdetap=yes - ;; - darwin*) - # I don't use AC_CHECK_FILES because I need test -e and not test -r - for i in /dev/tap0 /Library/Extensions/tap.kext ; do - AC_MSG_CHECKING([for $i]) - if test -e "$i" ; then - AC_MSG_RESULT([yes]) - definename="`echo "$i" | tr "a-z*" "A-ZP" | tr -c "0-9A-Z" "_"`" - AC_DEFINE_UNQUOTED([HAVE_$definename]) - eval HAVE_$definename=yes - else - AC_MSG_RESULT([no]) - warn_tuntap=yes - fi - done - - if test "$HAVE__DEV_TAP0_" ; then - AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in]) - if ! test "$HAVE__LIBRARY_EXTENSIONS_TAP_KEXT_" || "$HAVE__SYSTEM_LIBRARY_EXTENSIONS_TAP_KEXT_" ; then - AC_MSG_WARN([/dev/tap0 exists, but the kext cannot be found. Let's hope your -configuration does work...]) - fi - else - warn_tuntap=yes - AC_MSG_WARN([You do not have tuntap support. You can get it here: -http://tuntaposx.sourceforge.net/]) - fi - ;; - freebsd*) - AC_CHECK_HEADER([net/if_tun.h], - [AC_DEFINE([HAVE_TUNTAP], 1, [If defined, tuntap support is compiled in])], - [warn_tuntap=yes]) - ;; - esac]) - -# Disable pcap support (pdump)? (depends on libpcap, maybe unwanted) -AC_ARG_ENABLE([pcap], - AS_HELP_STRING([--disable-pcap], - [Disable pcap support (pdump plugin)]), - [if test $enableval = "no" ; then add_pcap=no ; warn_pcap=no ; fi]) - -AM_CONDITIONAL(ENABLE_CRYPTCAB, test "$add_cryptcab_support" = yes) -AM_CONDITIONAL(ENABLE_VDE_OVER_NS, test "$add_over_ns_support" = yes) -AM_CONDITIONAL(ENABLE_ROUTER, test "$enable_router" = yes) -AM_CONDITIONAL(ENABLE_PCAP, test "$add_pcap" = yes) -AM_CONDITIONAL(CAN_MAKE_LIBVDETAP, test "$can_make_libvdetap" = yes) -AM_CONDITIONAL(ENABLE_EXPERIMENTAL, test "$enable_experimental" = yes) -AM_CONDITIONAL(ENABLE_PROFILE, test "$enable_profile" = yes) -AM_CONDITIONAL(DARWIN_GCC, test "$darwin_gcc" = yes) - - -CFLAGS="-Wall -O2 $CFLAGS" -AC_SUBST(CFLAGS) - -AC_CONFIG_FILES( - [Makefile] - [doc/Makefile] - [include/Makefile] - [man/Makefile] - [src/Makefile] - [src/lib/Makefile] - [src/lib/vdesnmp.pc] - [src/lib/vdeplug.pc] - [src/lib/vdehist.pc] - [src/lib/vdemgmt/Makefile] - [src/lib/vdemgmt/vdemgmt.pc] - [src/vde_switch/Makefile] - [src/vde_over_ns/Makefile] - [src/common/Makefile] - [src/vdetaplib/Makefile] - [src/vde_cryptcab/Makefile] - [src/vde_router/Makefile] - [src/vde_switch/plugins/Makefile] -) -AC_OUTPUT - - -AS_ECHO -AS_ECHO -AS_ECHO "Configure results:" -AS_ECHO -if test x$add_cryptcab_support = "xyes" ; then - AS_ECHO " + VDE CryptCab............ enabled" -else - AS_ECHO " - VDE CryptCab............ disabled" -fi - -if test x$enable_router = "xyes" ; then - AS_ECHO " + VDE Router.............. enabled" -else - AS_ECHO " - VDE Router.............. disabled" -fi - -if test x$warn_tuntap = "xyes" ; then - AS_ECHO " - TAP support............. disabled" -else - AS_ECHO " + TAP support............. enabled" -fi - -if test x$add_pcap = "xyes" ; then - AS_ECHO " + pcap support............ enabled" -else - AS_ECHO " - pcap support............ disabled" -fi - -if test x$enable_experimental = "xyes" ; then - AS_ECHO " + Experimental features... enabled" -else - AS_ECHO " - Experimental features... disabled" -fi - -if test x$enable_profile = "xyes" ; then - AS_ECHO " + Profiling options....... enabled" -else - AS_ECHO " - Profiling options....... disabled" -fi - -AS_ECHO -AS_ECHO -if ! test x$add_cryptcab_support = "xyes" ; then - if test x$warn_cryptcab = "xyes" && test x$crypt = "xwolfssl"; then - AC_MSG_WARN([VDE CryptCab support has been disabled because wolfSSL is -not installed on your system, or because wolfssl/wolfcrypt/chacha.h could not be found. -Please install libwolfssl if you want CryptCab to be compiled and installed.]) - AS_ECHO - fi - if test x$warn_cryptcab = "xyes" && test x$crypt = "xmbedtls"; then - AC_MSG_WARN([VDE CryptCab support has been disabled because MbedTLS is -not installed on your system, or because mbedtls/chacha20.h could not be found. -Please install mbedtls if you want CryptCab to be compiled and installed.]) - AS_ECHO - fi -fi - -if ! test x$add_over_ns_support = "xyes" ; then - if test x$warn_over_ns = "xyes" ; then - AC_MSG_WARN([VDE vde_over_ns support has been disabled because your libc - sysexits.h could not be found.]) - AS_ECHO - fi -fi - -if ! test x$enable_router = "xyes" ; then - if test x$warn_router = "xyes" ; then - AC_MSG_WARN([VDE Router support has been disabled because libpthread is -not installed on your system.]) - AS_ECHO - fi -fi - -if ! test x$add_pcap = "xyes" ; then - if test x$warn_pcap = "xyes" ; then - AC_MSG_WARN([VDE vde_pcapplug and packet dump plugin have been disabled -because libpcap is not installed on your system, or because it is too old. -Please install it if you want vde_pcapplug and pdump to be compiled and -installed.]) - AS_ECHO - fi -fi - -AS_ECHO -AS_ECHO "Type 'make' to compile $PACKAGE $VERSION," -AS_ECHO "or type 'make V=1' for verbose compiling" -AS_ECHO "and then type 'make install' to install it into $prefix" -AS_ECHO diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 00000000..8996e3bf --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,39 @@ +# Define the files to be distributed +set(EXTRA_DIST + libvdemgmt/asyncrecv.rc + libvdemgmt/sendcmd.rc + libvdemgmt/openmachine.rc + libvdemgmt/closemachine.rc + vde_autolink-HOWTO + vdeqemu-HOWTO + vdecmd + freebsd_tap-HOWTO + bochs/eth_vde.cc + bochs/eth.cc.diff + README.UML + README.bochs + README.qemu + README.slirpvde + README.vde_over_ns + README.VirtualBox + VirtualBox-3.1.6_OSE_VDE.patch +) + +# Install the files +install(FILES ${EXTRA_DIST} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/vde2) + +# Define the directories for installation +set(vdecmddir ${CMAKE_INSTALL_SYSCONFDIR}/vde2) +set(libvdemgmtdir ${CMAKE_INSTALL_SYSCONFDIR}/vde2/libvdemgmt) + +# Install the vdecmd file +install(FILES vdecmd DESTINATION ${vdecmddir}) + +# Install the libvdemgmt files +install(FILES + libvdemgmt/asyncrecv.rc + libvdemgmt/closemachine.rc + libvdemgmt/openmachine.rc + libvdemgmt/sendcmd.rc + DESTINATION ${libvdemgmtdir} +) \ No newline at end of file diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index 5740fd43..00000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -EXTRA_DIST = \ - libvdemgmt/asyncrecv.rc \ - libvdemgmt/sendcmd.rc \ - libvdemgmt/openmachine.rc \ - libvdemgmt/closemachine.rc \ - vde_autolink-HOWTO \ - vdeqemu-HOWTO \ - vdecmd \ - freebsd_tap-HOWTO \ - bochs/eth_vde.cc \ - bochs/eth.cc.diff \ - README.UML \ - README.bochs \ - README.qemu \ - README.slirpvde \ - README.vde_over_ns \ - README.VirtualBox \ - VirtualBox-3.1.6_OSE_VDE.patch - -vdecmddir = $(sysconfdir)/vde2/ -dist_vdecmd_DATA = vdecmd -libvdemgmtdir = $(sysconfdir)/vde2/libvdemgmt/ -dist_libvdemgmt_DATA = libvdemgmt/asyncrecv.rc libvdemgmt/closemachine.rc \ - libvdemgmt/openmachine.rc libvdemgmt/sendcmd.rc - diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 00000000..1332ccb6 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1,18 @@ +# Include directories +include_directories(${CMAKE_SOURCE_DIR}) + +# Define the headers to be installed +install(FILES libvdesnmp.h libvdemgmt.h DESTINATION include) +install(FILES libvdeplug.h libvdeplug_dyn.h libvdehist.h DESTINATION include) + +# Extra distribution files (not directly used in CMake, but listed for reference) +set(EXTRA_DIST + canonicalize.h + cmdparse.h + open_memstream.h + strndup.h + vdecommon.h + vde.h + vdeplugin.h + vdepoll.h +) diff --git a/include/Makefile.am b/include/Makefile.am deleted file mode 100644 index e2e5bf40..00000000 --- a/include/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -include_HEADERS = libvdesnmp.h libvdemgmt.h -nobase_include_HEADERS = libvdeplug.h libvdeplug_dyn.h libvdehist.h - -EXTRA_DIST = \ - canonicalize.h \ - cmdparse.h \ - open_memstream.h \ - strndup.h \ - vdecommon.h \ - vde.h \ - vdeplugin.h \ - vdepoll.h diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt new file mode 100644 index 00000000..5548c046 --- /dev/null +++ b/man/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.7) + +set(PANDOC_ORG "VirtualSquare") + +# ### pandoc pages + +file(GLOB VU_PANDOC_PAGES ${CMAKE_CURRENT_SOURCE_DIR}/*.[1-8].md) +set(VU_MAN_FILES) +foreach(VU_PANDOC_PATH IN LISTS VU_PANDOC_PAGES) +# VU_PANDOCPAGE: basename of VU_PANDOC_PATH + get_filename_component(VU_PANDOCPAGE ${VU_PANDOC_PATH} NAME) +# VU_MANPAGE: VU_PANDOCPAGE without the suffix + string(REGEX REPLACE "\.md$" "" VU_MANPAGE ${VU_PANDOCPAGE}) + list(APPEND VU_MAN_FILES ${VU_MANPAGE}) +endforeach(VU_PANDOC_PATH) + +add_custom_target(${PROJECT_NAME}_manpages ALL make PANDOC_ORG="${PANDOC_ORG}" ${VU_MAN_FILES} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + +### man pages +file(GLOB VU_MAN_PAGES ${CMAKE_CURRENT_SOURCE_DIR}/*.[1-8]) +foreach(VU_MAN_PATH IN LISTS VU_MAN_PAGES) + get_filename_component(VU_MANPAGE ${VU_MAN_PATH} NAME) + string(REGEX REPLACE ".*\\." "" MAN_CHAPTER ${VU_MANPAGE}) + install(FILES ${VU_MAN_PATH} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${MAN_CHAPTER}) +endforeach(VU_MAN_PATH) \ No newline at end of file diff --git a/man/Makefile b/man/Makefile new file mode 100644 index 00000000..488f3633 --- /dev/null +++ b/man/Makefile @@ -0,0 +1,31 @@ +MAKEFLAGS += --silent +PANDOC=pandoc +PANDOCOK := $(shell command -v ${PANDOC} 2> /dev/null) +PANDOCMINVER=3.1.7 + +ifdef PANDOCOK +PANDOCVER := $(shell ${PANDOC} -v | head -1 | cut -d ' ' -f 2) +PANDOCVEROK := $(shell printf '%s\n' ${PANDOCMINVER} ${PANDOCVER} | sort -C -V; echo $$?) +endif + +none: + +% : %.md +ifdef PANDOCOK +ifeq (${PANDOCVEROK}, 1) + echo "${PANDOC} ${PANDOCVER} < ${PANDOCMINVER}. $@ can create font warnings with man/groff" >/dev/stderr >&2 +endif +# copy copyright notice + grep "^\.\\\\\"" $< > $@ || true +# run pandoc + $(eval SECTION := $(subst .,,$(suffix $@))) + $(eval BASENAME := $(basename $@)) + $(eval TITLE := $(shell echo "${BASENAME}\(${SECTION}\)" | tr [:lower:] [:upper:])) + $(eval HEADER := "$(shell man ${SECTION} intro | head -1 | sed -e 's/^[^[:blank:]]*[[:blank:]]*//' -e 's/[[:blank:]]*[^[:blank:]]*$$//' )") + $(PANDOC) -standalone -M title=${TITLE} -M section=${SECTION} -M header=${HEADER} -M footer=${PANDOC_ORG} -M "date=`date +\"%B %Y\"`" --to man $< >> $@ +# workaround for boldface rendering + sed -i -e 's/\\f\[CR\]/\\f\[CB\]/g' $@ || true + echo "$@ manpage updated" >/dev/stderr >&2 +else + echo "${PANDOC} is not available. Manpage $@ cannot be updated" >/dev/stderr >&2 +endif \ No newline at end of file diff --git a/man/Makefile.am b/man/Makefile.am deleted file mode 100644 index 2b3ab090..00000000 --- a/man/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -static_mans = dpipe.1 slirpvde.1 unixterm.1 vde_plug.1 vdeq.1 vde_switch.1 wirefilter.1 vde_cryptcab.1 vde_plug2tap.1 vde_over_ns.1 vde_l3.1 vde_tunctl.8 vde_autolink.1 unixcmd.1 vdeterm.1 vde_router.1 vde_vxlan.1 -if ENABLE_PCAP - static_mans += vde_pcapplug.1 -endif -generated_mans = vdetaplib.1 - -man_MANS = $(static_mans) $(generated_mans) - - -CLEANFILES = $(generated_mans) -EXTRA_DIST = $(static_mans) vdetaplib.1.in vde_pcapplug.1 - -vdetaplib.1: vdetaplib.1.in - sed 's/%PKGLIBDIR%/$(subst /,\/,$(pkglibdir))/g' \ - $(srcdir)/vdetaplib.1.in > $(builddir)/vdetaplib.1 - -install-data-hook: - rm -f $(DESTDIR)$(mandir)/man1/vdeqemu.1 - rm -f $(DESTDIR)$(mandir)/man1/vdekvm.1 - rm -f $(DESTDIR)$(mandir)/man1/vdecmd.1 - (cd $(DESTDIR)$(mandir)/man1 && $(LN_S) vdeq.1 vdeqemu.1) - (cd $(DESTDIR)$(mandir)/man1 && $(LN_S) vdeq.1 vdekvm.1) - (cd $(DESTDIR)$(mandir)/man1 && $(LN_S) unixcmd.1 vdecmd.1) - -uninstall-local: - rm -f $(DESTDIR)$(mandir)/man1/vdeqemu.1 - rm -f $(DESTDIR)$(mandir)/man1/vdekvm.1 - rm -f $(DESTDIR)$(mandir)/man1/vdecmd.1 - -#clean: -# rm -f vdetaplib.1 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..d580f9e8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,54 @@ + +include_directories(${CMAKE_SOURCE_DIR}/include) + +add_subdirectory(common) +add_subdirectory(lib) +add_subdirectory(vde_switch) + +if(CAN_MAKE_LIBVDETAP) + add_subdirectory(vdetaplib) +endif() + +if (ENABLE_CRYPTCAB) + add_subdirectory(vde_cryptcab) +endif() + +if (CAN_MAKE_VDE_OVER_NS) + add_subdirectory(vde_over_ns) +endif() + +if (CAN_MAKE_VDE_ROUTER) + add_subdirectory(vde_router) +endif() + +if (CAN_MAKE_VDE_PCAP) + add_executable(vde_pcapplug vde_pcapplug.c) + target_link_libraries(vde_pcapplug vdeplug pcap) +endif() + +if(ENABLE_VXLAN) + add_subdirectory(vde_vxlan) +endif() + +add_executable(vde_plug vde_plug.c) +target_link_libraries(vde_plug vdeplug vdecommon) + +add_executable(dpipe dpipe.c) + +add_executable(unixcmd unixcmd.c) +target_link_libraries(unixcmd vdecommon) + +add_executable(vde_plug2tap vde_plug2tap.c) +target_link_libraries(vde_plug2tap vdeplug vdecommon) + +add_executable(vde_autolink vde_autolink.c) +target_link_libraries(vde_autolink vdecommon vdemgmt) + +add_executable(wirefilter wirefilter.c) +target_link_libraries(wirefilter vdeplug m vdecommon) + +add_executable(vdeterm vdeterm.c) +target_link_libraries(vdeterm vdeplug vdehist vdecommon) + +install(TARGETS vde_plug dpipe unixcmd vde_plug2tap vde_autolink wirefilter vdeterm + DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 477c21c4..00000000 --- a/src/Makefile.am +++ /dev/null @@ -1,61 +0,0 @@ -SUBDIRS = \ - common \ - lib \ - vde_switch - -bin_PROGRAMS = \ - dpipe \ - unixcmd \ - vde_autolink \ - vde_plug2tap \ - vde_plug \ - wirefilter \ - vdeterm - - -if CAN_MAKE_LIBVDETAP - SUBDIRS += vdetaplib -endif - -if ENABLE_CRYPTCAB - SUBDIRS += vde_cryptcab -endif - -if ENABLE_VDE_OVER_NS - SUBDIRS += vde_over_ns -endif - -if ENABLE_ROUTER - SUBDIRS += vde_router -endif - -if ENABLE_PCAP - bin_PROGRAMS += vde_pcapplug -endif - -AM_CPPFLAGS = -I$(top_srcdir)/include \ - -DSYSCONFDIR="\"$(sysconfdir)\"" -DLOCALSTATEDIR="\"$(localstatedir)\"" -LDADD = common/libvdecommon.la -lm - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -vde_autolink_LDADD = $(LDADD) lib/vdemgmt/libvdemgmt.la -vde_plug2tap_LDADD = $(LDADD) lib/libvdeplug.la -if ENABLE_PCAP - vde_pcapplug_LDADD = $(LDADD) lib/libvdeplug.la -lpcap -endif -vde_plug_LDADD = $(LDADD) lib/libvdeplug.la -wirefilter_LDADD = $(LDADD) lib/libvdeplug.la -vdeterm_LDADD = $(LDADD) lib/libvdeplug.la lib/libvdehist.la - -install-exec-hook: - rm -f $(DESTDIR)$(bindir)/vdecmd - (cd $(DESTDIR)$(bindir) && $(LN_S) unixcmd vdecmd) - rm -f $(DESTDIR)$(bindir)/vdeo - -uninstall-local: - rm -f $(bindir)/vdecmd - diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt new file mode 100644 index 00000000..8b4d809d --- /dev/null +++ b/src/common/CMakeLists.txt @@ -0,0 +1,31 @@ +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Source files +set(SOURCES + cmdparse.c + canonicalize.c +) + +#cm_replace_functions(SOURCES strndup open_memstream) + +if(NOT HAVE_OPEN_MEMSTREAM) + set(SOURCES ${SOURCES} open_memstream.c) +endif() + +if(NOT HAVE_STRNDUP) + set(SOURCES ${SOURCES} strndup.c) +endif() + +if(EMULATE_DARWIN_POLL) + set(SOURCES ${SOURCES} poll.c) +endif() + +# Add library +add_library(vdecommon STATIC ${SOURCES}) + +# Profiling and coverage options +if(ENABLE_PROFILE) + target_compile_options(vdecommon PRIVATE -pg --coverage) + target_link_options(vdecommon PRIVATE -pg --coverage) +endif() \ No newline at end of file diff --git a/src/common/Makefile.am b/src/common/Makefile.am deleted file mode 100644 index 5d276cd2..00000000 --- a/src/common/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -noinst_LTLIBRARIES = libvdecommon.la - -libvdecommon_la_SOURCES = cmdparse.c canonicalize.c -libvdecommon_la_LIBADD = $(LTLIBOBJS) $(LTALLOCA) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt new file mode 100644 index 00000000..c8566f2c --- /dev/null +++ b/src/lib/CMakeLists.txt @@ -0,0 +1,44 @@ +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Add subdirectories +add_subdirectory(vdemgmt) + +# Enable profiling if requested +if(ENABLE_PROFILE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg --coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg --coverage") +endif() + +# Define libraries +add_library(vdesnmp SHARED libvdesnmp.c) +add_library(vdeplug SHARED libvdeplug.c) +add_library(vdehist SHARED libvdehist.c) + +# Link libraries +target_link_libraries(vdesnmp PRIVATE vdecommon vdemgmt) +target_link_libraries(vdeplug PRIVATE vdecommon) +target_link_libraries(vdehist PRIVATE vdecommon) + +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + target_compile_options(vdehist PRIVATE -Wall -O2 -g -O2 -fno-common -DPIC) + target_link_options(vdehist PRIVATE -Wl,-undefined -Wl,dynamic_lookup -Wl,-no_fixup_chains -Wl,-force_load -O2 -g -O2) +endif() + +# Set version numbers and export symbols +set_target_properties(vdesnmp PROPERTIES VERSION 0.0.1 SOVERSION 0) +set_target_properties(vdeplug PROPERTIES VERSION 3.0.1 SOVERSION 3) +set_target_properties(vdehist PROPERTIES VERSION 0.0.1 SOVERSION 0) + +# Install pkgconfig files +# Configure pkg-config files +configure_file(vdesnmp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/vdesnmp.pc @ONLY) +configure_file(vdeplug.pc.in ${CMAKE_CURRENT_BINARY_DIR}/vdeplug.pc @ONLY) +configure_file(vdehist.pc.in ${CMAKE_CURRENT_BINARY_DIR}/vdehist.pc @ONLY) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vdesnmp.pc ${CMAKE_CURRENT_BINARY_DIR}/vdeplug.pc ${CMAKE_CURRENT_BINARY_DIR}/vdehist.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +# Install the libraries +install(TARGETS vdesnmp vdeplug vdehist + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am deleted file mode 100644 index a68f0bc9..00000000 --- a/src/lib/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include \ - -DSYSCONFDIR="\"$(sysconfdir)\"" -DLOCALSTATEDIR="\"$(localstatedir)\"" -LIBADD = $(top_builddir)/src/common/libvdecommon.la -SUBDIRS = vdemgmt - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -lib_LTLIBRARIES = \ - libvdesnmp.la \ - libvdeplug.la \ - libvdehist.la - -# read before touching http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info - -libvdesnmp_la_LIBADD = $(LIBADD) $(top_builddir)/src/lib/vdemgmt/libvdemgmt.la -libvdesnmp_la_LDFLAGS = $(AM_LDFLAGS) -version-number 0:0:1 -export-dynamic - -libvdeplug_la_LIBADD = $(LIBADD) -libvdeplug_la_LDFLAGS = $(AM_LDFLAGS) -version-number 3:0:1 -export-dynamic - -libvdehist_la_LIBADD = $(LIBADD) -libvdehist_la_LDFLAGS = $(AM_LDFLAGS) -version-number 0:0:1 -export-dynamic - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = vdesnmp.pc vdeplug.pc vdehist.pc diff --git a/src/lib/vdemgmt/CMakeLists.txt b/src/lib/vdemgmt/CMakeLists.txt new file mode 100644 index 00000000..d0fa686f --- /dev/null +++ b/src/lib/vdemgmt/CMakeLists.txt @@ -0,0 +1,34 @@ +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Source files +set(SOURCES + libvdemgmt.c + ${CMAKE_SOURCE_DIR}/src/common/canonicalize.c + ${CMAKE_SOURCE_DIR}/src/common/cmdparse.c +) + +# Library +add_library(vdemgmt SHARED ${SOURCES}) + +# Profiling and coverage options +if(ENABLE_PROFILE) + target_compile_options(vdemgmt PRIVATE -pg --coverage) + target_link_libraries(vdemgmt PRIVATE -pg --coverage) +endif() + +# Set version information +set_target_properties(vdemgmt PROPERTIES + VERSION 0.0.1 + SOVERSION 0 +) + +target_link_libraries(vdemgmt PRIVATE vdecommon) + + +# Install pkgconfig file +configure_file(vdemgmt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/vdemgmt.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/vdemgmt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +# Install the library +install(TARGETS vdemgmt LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/lib/vdemgmt/Makefile.am b/src/lib/vdemgmt/Makefile.am deleted file mode 100644 index 82233e75..00000000 --- a/src/lib/vdemgmt/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include \ - -DSYSCONFDIR="\"$(sysconfdir)\"" -DLOCALSTATEDIR="\"$(localstatedir)\"" -LIBADD = $(top_builddir)/src/common/libvdecommon.la - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -lib_LTLIBRARIES = libvdemgmt.la - -# read before touching http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info - -libvdemgmt_la_LIBADD = $(LIBADD) -libvdemgmt_la_LDFLAGS = $(AM_LDFLAGS) -version-number 0:0:1 -export-dynamic - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = vdemgmt.pc diff --git a/src/vde_cryptcab/CMakeLists.txt b/src/vde_cryptcab/CMakeLists.txt new file mode 100644 index 00000000..6968b951 --- /dev/null +++ b/src/vde_cryptcab/CMakeLists.txt @@ -0,0 +1,32 @@ +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Source files +set(SOURCES + crc32.c + cryptcab.c + vde_cryptcab_server.c + vde_cryptcab_client.c +) + +# Add executable +add_executable(vde_cryptcab ${SOURCES}) + +# Link libraries +target_link_libraries(vde_cryptcab + vdecommon + ${SSL_LIB} + vdeplug +) + +# Compiler flags +target_compile_options(vde_cryptcab PRIVATE -fno-strict-aliasing -DHAVE_CHACHA -DTFM_TIMING_RESISTANT -DNO_ECC -DNO_RSA) + +# Profile flags +if(ENABLE_PROFILE) + target_compile_options(vde_cryptcab PRIVATE -pg --coverage) + target_link_libraries(vde_cryptcab PRIVATE -pg --coverage) +endif() + +# Install the executable +install(TARGETS vde_cryptcab DESTINATION ${CMAKE_INSTALL_BINDIR}) \ No newline at end of file diff --git a/src/vde_cryptcab/Makefile.am b/src/vde_cryptcab/Makefile.am deleted file mode 100644 index f4de771b..00000000 --- a/src/vde_cryptcab/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include -bin_PROGRAMS = vde_cryptcab - -# Avoid wrong optimizations due to strict aliasing rules when making casts -# between socket structs. -AM_CFLAGS = -fno-strict-aliasing -DHAVE_CHACHA -DTFM_TIMING_RESISTANT -DNO_ECC -DNO_RSA - -if ENABLE_PROFILE - AM_CFLAGS += -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -vde_cryptcab_SOURCES = crc32.c crc32.h cryptcab.h cryptcab.c vde_cryptcab_server.c vde_cryptcab_client.c -vde_cryptcab_LDADD = $(top_builddir)/src/common/libvdecommon.la $(SSL_LIB) $(top_builddir)/src/lib/libvdeplug.la diff --git a/src/vde_over_ns/CMakeLists.txt b/src/vde_over_ns/CMakeLists.txt new file mode 100644 index 00000000..4a3d0343 --- /dev/null +++ b/src/vde_over_ns/CMakeLists.txt @@ -0,0 +1,33 @@ + +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Source files +set(SOURCES + vde_over_ns.c + dns.c + encode.c + pstack.c + queue.c + util.c + vde_io.c + dns.h + dns_proto.h + fun.h + pstack.h +) + +# Add executable +add_executable(vde_over_ns ${SOURCES}) + +# Link libraries +target_link_libraries(vde_over_ns vdecommon vdeplug) + +# Enable profiling if requested +if(ENABLE_PROFILE) + target_compile_options(vde_over_ns PRIVATE -pg --coverage) + target_link_libraries(vde_over_ns PRIVATE -pg --coverage) +endif() + +# Install the executable +install(TARGETS vde_over_ns DESTINATION ${CMAKE_INSTALL_BINDIR}) \ No newline at end of file diff --git a/src/vde_over_ns/Makefile.am b/src/vde_over_ns/Makefile.am deleted file mode 100644 index 6506e404..00000000 --- a/src/vde_over_ns/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include -bin_PROGRAMS = vde_over_ns - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -vde_over_ns_SOURCES = \ - vde_over_ns.c \ - dns.c \ - encode.c \ - pstack.c \ - queue.c \ - util.c \ - vde_io.c \ - dns.h \ - dns_proto.h \ - fun.h \ - pstack.h - -vde_over_ns_LDADD = $(top_builddir)/src/common/libvdecommon.la $(top_builddir)/src/lib/libvdeplug.la diff --git a/src/vde_router/CMakeLists.txt b/src/vde_router/CMakeLists.txt new file mode 100644 index 00000000..e3373df2 --- /dev/null +++ b/src/vde_router/CMakeLists.txt @@ -0,0 +1,50 @@ +# Set the include directory +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Define the source files +set(SOURCES + rbtree.c + vde_router.c + vder_arp.c + vder_datalink.c + vder_dhcp.c + vder_icmp.c + vder_olsr.c + vder_packet.c + vder_queue.c + vder_udp.c +) + +# Define the header files +set(HEADERS + rbtree.h + vde_headers.h + vde_router.h + vder_arp.h + vder_datalink.h + vder_dhcp.h + vder_icmp.h + vder_olsr.h + vder_packet.h + vder_queue.h + vder_udp.h +) + +# Add the executable +add_executable(vde_router ${SOURCES} ${HEADERS}) + +# Link libraries +target_link_libraries(vde_router + vdecommon + vdeplug + pthread +) + +# Add profiling flags if enabled +if(ENABLE_PROFILE) + target_compile_options(vde_router PRIVATE -pg --coverage) + target_link_options(vde_router PRIVATE -pg --coverage) +endif() + +# Install the executable +install(TARGETS vde_router DESTINATION ${CMAKE_INSTALL_BINDIR}) \ No newline at end of file diff --git a/src/vde_router/Makefile.am b/src/vde_router/Makefile.am deleted file mode 100644 index d0552593..00000000 --- a/src/vde_router/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ - -moddir = $(pkglibdir)/vde_router - -AM_LDFLAGS = -avoid-version -export-dynamic -AM_LIBTOOLFLAGS = --tag=disable-static -AM_CPPFLAGS = -I$(top_srcdir)/include - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS += -pg --coverage -endif - -bin_PROGRAMS = vde_router -vde_router_SOURCES = \ - rbtree.c \ - rbtree.h \ - vde_headers.h \ - vde_router.c \ - vde_router.h \ - vder_arp.c \ - vder_arp.h \ - vder_datalink.c \ - vder_datalink.h \ - vder_dhcp.c \ - vder_dhcp.h \ - vder_icmp.c \ - vder_icmp.h \ - vder_olsr.c \ - vder_olsr.h \ - vder_packet.c \ - vder_packet.h \ - vder_queue.c \ - vder_queue.h \ - vder_udp.c \ - vder_udp.h - -vde_router_LDADD = $(top_builddir)/src/common/libvdecommon.la $(top_builddir)/src/lib/libvdeplug.la -lpthread diff --git a/src/vde_switch/CMakeLists.txt b/src/vde_switch/CMakeLists.txt new file mode 100644 index 00000000..ba2dcd21 --- /dev/null +++ b/src/vde_switch/CMakeLists.txt @@ -0,0 +1,55 @@ + + +set(SOURCES + hash.c + port.c + vde_switch.c + sockutils.c + qtimer.c + datasock.c + consmgmt.c + fstp.c + packetq.c + tuntap.c +) + +set(HEADERS + hash.h + port.h + switch.h + sockutils.h + qtimer.h + datasock.h + consmgmt.h + fstp.h + packetq.h + bitarray.h + tuntap.h +) + +add_executable(vde_switch ${SOURCES} ${HEADERS}) + +target_include_directories(vde_switch PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}) + +target_link_libraries(vde_switch PRIVATE vdecommon) + +target_compile_options(vde_switch PRIVATE -Wall) + +if(ENABLE_PROFILE) + target_compile_options(vde_switch PRIVATE -pg --coverage) + target_link_options(vde_switch PRIVATE -pg --coverage) +endif() + +if(APPLE) + set(EXP_CFLAGS -dynamic) +else() + set(EXP_CFLAGS -rdynamic) +endif() + +if(ENABLE_EXPERIMENTAL) + add_subdirectory(plugins) + target_compile_options(vde_switch PRIVATE ${EXP_CFLAGS}) + target_compile_definitions(vde_switch PRIVATE -DDEBUGOPT -DPORTCOUNTERS -DVDEPLUGIN -DPLUGINS_DIR="${CMAKE_INSTALL_PREFIX}/lib/plugins") +endif() + +install(TARGETS vde_switch DESTINATION ${CMAKE_INSTALL_BINDIR}) \ No newline at end of file diff --git a/src/vde_switch/Makefile.am b/src/vde_switch/Makefile.am deleted file mode 100644 index 3ad74958..00000000 --- a/src/vde_switch/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -bin_PROGRAMS = vde_switch -vde_switch_SOURCES = \ - hash.c \ - hash.h \ - port.c \ - port.h \ - vde_switch.c \ - switch.h \ - sockutils.c \ - sockutils.h \ - qtimer.c \ - qtimer.h \ - datasock.c \ - datasock.h \ - consmgmt.c \ - consmgmt.h \ - fstp.c \ - fstp.h \ - packetq.c \ - packetq.h \ - bitarray.h \ - tuntap.c \ - tuntap.h - -vde_switch_LDADD = $(top_builddir)/src/common/libvdecommon.la - -AM_CPPFLAGS = -I$(top_srcdir)/include -AM_CFLAGS = -Wall - -if ENABLE_PROFILE - AM_CFLAGS += -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -if DARWIN_GCC - EXP_CFLAGS = -dynamic -else - EXP_CFLAGS = -rdynamic -endif - -DIST_SUBDIRS = plugins -if ENABLE_EXPERIMENTAL - SUBDIRS = plugins - AM_CFLAGS += $(EXP_CFLAGS) - AM_CPPFLAGS += -DDEBUGOPT -DPORTCOUNTERS -DVDEPLUGIN -DPLUGINS_DIR=\"$(pkglibdir)/plugins\" -endif - diff --git a/src/vde_switch/plugins/CMakeLists.txt b/src/vde_switch/plugins/CMakeLists.txt new file mode 100644 index 00000000..e61b7d30 --- /dev/null +++ b/src/vde_switch/plugins/CMakeLists.txt @@ -0,0 +1,26 @@ + +# Set the include directory +include_directories(${CMAKE_SOURCE_DIR}/include) + +# Define the libraries +add_library(dump MODULE dump.c) +target_link_libraries(dump vdecommon) + +add_library(iplog MODULE iplog.c) +target_link_libraries(iplog vdecommon) + +# Handle ENABLE_EXPERIMENTAL flag +if(ENABLE_EXPERIMENTAL) + add_definitions(-DDEBUGOPT -DPORTCOUNTERS -DVDEPLUGIN) +endif() + +# Handle ENABLE_PCAP flag +if(ENABLE_PCAP) + add_library(pdump MODULE pdump.c) + target_link_libraries(pdump vdecommon pcap) +else() + set(EXTRA_DIST pdump.c) +endif() + +# install modules +install(TARGETS dump iplog pdump DESTINATION ${CMAKE_INSTALL_LIBDIR}/modules) \ No newline at end of file diff --git a/src/vde_switch/plugins/Makefile.am b/src/vde_switch/plugins/Makefile.am deleted file mode 100644 index 150a5e13..00000000 --- a/src/vde_switch/plugins/Makefile.am +++ /dev/null @@ -1,30 +0,0 @@ -moddir = $(pkglibdir)/plugins - - -AM_LDFLAGS = -module -avoid-version -export-dynamic -AM_LIBTOOLFLAGS = --tag=disable-static -AM_CPPFLAGS = -I$(top_srcdir)/include - -if ENABLE_EXPERIMENTAL - AM_CPPFLAGS += -DDEBUGOPT -DPORTCOUNTERS -DVDEPLUGIN -endif - -#install-data-hook: -# cd "$(DESTDIR)/$(moddir)" && rm -f $(mod_LTLIBRARIES) - - -mod_LTLIBRARIES = dump.la iplog.la - -dump_la_SOURCES = dump.c -dump_la_LIBADD = $(top_builddir)/src/common/libvdecommon.la - -iplog_la_SOURCES = iplog.c -iplog_la_LIBADD = $(top_builddir)/src/common/libvdecommon.la - -if ENABLE_PCAP - mod_LTLIBRARIES += pdump.la - pdump_la_SOURCES = pdump.c - pdump_la_LIBADD = $(top_builddir)/src/common/libvdecommon.la -lpcap -else - EXTRA_DIST = pdump.c -endif diff --git a/src/vde_vxlan/CMakeLists.txt b/src/vde_vxlan/CMakeLists.txt new file mode 100644 index 00000000..725c177e --- /dev/null +++ b/src/vde_vxlan/CMakeLists.txt @@ -0,0 +1,25 @@ + +set(SOURCES + log.c + log.h + plug.c + plug.h + vde_vxlan.c + vxlan.c + vxlan.h + vxlan_hash.c + vxlan_hash.h +) + +include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/vde_switch) + +add_executable(vde_vxlan ${SOURCES}) + +target_link_libraries(vde_vxlan PRIVATE vdecommon vdeplug) + +if(ENABLE_PROFILE) + target_compile_options(vde_vxlan PRIVATE -pg --coverage) + target_link_options(vde_vxlan PRIVATE -pg --coverage) +endif() + +install(TARGETS vde_vxlan DESTINATION ${CMAKE_INSTALL_BINDIR}) \ No newline at end of file diff --git a/src/vde_vxlan/Makefile.am b/src/vde_vxlan/Makefile.am deleted file mode 100644 index 00e63af5..00000000 --- a/src/vde_vxlan/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -moddir = $(pkglibdir)/vde_vxlan - -AM_LDFLAGS = -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src/vde_switch -I. - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS += -pg --coverage -endif - -bin_PROGRAMS = vde_vxlan -vde_vxlan_SOURCES = \ - log.c \ - log.h \ - plug.c \ - plug.h \ - vde_vxlan.c \ - vxlan.c \ - vxlan.h \ - vxlan_hash.c \ - vxlan_hash.h -vde_vxlan_LDADD = $(top_builddir)/src/common/libvdecommon.la \ - $(top_builddir)/src/lib/libvdeplug.la diff --git a/src/vdetaplib/CMakeLists.txt b/src/vdetaplib/CMakeLists.txt new file mode 100644 index 00000000..8edded13 --- /dev/null +++ b/src/vdetaplib/CMakeLists.txt @@ -0,0 +1,25 @@ +if(ENABLE_PROFILE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg --coverage") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg --coverage") +endif() + +# Include directories +include_directories(${CMAKE_SOURCE_DIR}/include) +add_definitions(-DLIBEXECDIR=\"${CMAKE_INSTALL_FULL_LIBEXECDIR}\") + +# Define the library +add_library(libvdetap STATIC libvdetap.c) +set_target_properties(libvdetap PROPERTIES + PREFIX "" + SUFFIX ".la" + LINK_FLAGS "-avoid-version -export-dynamic -Wl,-init -Wl,libvdetap_init -Wl,-fini -Wl,libvdetap_fini" +) +target_compile_options(libvdetap PRIVATE -fno-strict-aliasing) + +# Define the executable +add_executable(vdetap vdetap.c) +target_link_libraries(vdetap vdecommon vdeplug) + +# Install the library +install(TARGETS libvdetap ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/packages) +install(TARGETS vdetap RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_LIBEXECDIR}) \ No newline at end of file diff --git a/src/vdetaplib/Makefile.am b/src/vdetaplib/Makefile.am deleted file mode 100644 index dff66d3b..00000000 --- a/src/vdetaplib/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -pkglib_LTLIBRARIES = libvdetap.la -libexec_PROGRAMS = vdetap - -if ENABLE_PROFILE - AM_CFLAGS = -pg --coverage - AM_LDFLAGS = -pg --coverage -endif - -libvdetap_la_SOURCES = libvdetap.c -libvdetap_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version -export-dynamic -module -Wl,-init -Wl,libvdetap_init -Wl,-fini -Wl,libvdetap_fini -# vdetaplib/libvdetap.c|85| warning: dereferencing type-punned pointer will break strict-aliasing rules -libvdetap_la_CFLAGS = $(AM_CFLAGS) -fno-strict-aliasing - -AM_CPPFLAGS = -I$(top_srcdir)/include -DLIBEXECDIR=\"$(libexecdir)\" - -vdetap_SOURCES = vdetap.c -vdetap_LDADD = $(top_builddir)/src/common/libvdecommon.la $(top_builddir)/src/lib/libvdeplug.la - -EXTRA_DIST = test.c