You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-analyzer/zmap/files/zmap-9999-cmake.patch

179 lines
4.1 KiB

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..8e2d2b4
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,72 @@
+cmake_minimum_required (VERSION 2.6)
+project (ZMAP C)
+
+option(WITH_REDIS "Build with support for Redis DB" OFF)
+option(WITH_JSON "Build with support for JSON" OFF)
+option(ENABLE_DEVELOPMENT "Enable development specific compiler and linker flags" OFF)
+option(ENABLE_HARDENING "Add hardening specific compiler and linker flags" OFF)
+
+if(ENABLE_DEVELOPMENT)
+ # Hardening and warnings for building with gcc
+ # Maybe add -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
+ set(GCCWARNINGS
+ "-Wall -Wformat=2 -Wno-format-nonliteral"
+ "-pedantic -fno-strict-aliasing"
+ "-Wextra"
+ "-Wfloat-equal -Wundef -Wwrite-strings -Wredundant-decls"
+ "-Wnested-externs -Wbad-function-cast -Winit-self"
+ "-Wmissing-noreturn -Wnormalized=id"
+ "-Wstack-protector"
+ "-Werror"
+ )
+
+ # Fix line breaks
+ string(REPLACE ";" " " GCCWARNINGS "${GCCWARNINGS}")
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCCWARNINGS} -g")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g")
+endif()
+
+if(ENABLE_HARDENING)
+ set(GCCHARDENING "-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all -fwrapv -fPIC --param ssp-buffer-size=1")
+ set(LDHARDENING "-z relro -z now")
+
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCCHARDENING}")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LDHARDENING}")
+endif()
+
+if(WITH_REDIS)
+ set(REDIS_LIBS hiredis)
+ add_definitions("-DREDIS")
+endif()
+
+if(WITH_JSON)
+ include(FindPkgConfig)
+ pkg_check_modules(JSON json-c)
+ if(NOT JSON_FOUND)
+ set(JSON_CFLAGS "")
+ set(JSON_LIBS "-ljson-c")
+ include_directories("/usr/local/include/json-c/")
+ endif()
+
+ add_definitions("-DJSON")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${JSON_CFLAGS}")
+endif()
+
+# Standard FLAGS
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
+
+# Extra target FLAGS
+set(CMAKE_C_FLAGS_DEBUG "-O2 -g")
+set(CMAKE_C_FLAGS_RELEASE "-O2")
+
+add_subdirectory(src)
+
+# Install conf files
+FILE(GLOB CONF_FILES "conf/*")
+install(
+ FILES
+ ${CONF_FILES}
+ DESTINATION "/etc/zmap/"
+ )
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..50bf1ee
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,94 @@
+include_directories(
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ ${PROJECT_SOURCE_DIR}/lib
+ ${PROJECT_SOURCE_DIR}/src
+ ${PROJECT_SOURCE_DIR}/src/output_modules
+ )
+
+SET(LIB_SOURCES
+ ${PROJECT_SOURCE_DIR}/lib/blacklist.c
+ ${PROJECT_SOURCE_DIR}/lib/constraint.c
+ ${PROJECT_SOURCE_DIR}/lib/logger.c
+ ${PROJECT_SOURCE_DIR}/lib/random.c
+ ${PROJECT_SOURCE_DIR}/lib/rijndael-alg-fst.c
+)
+
+# ADD YOUR PROBE MODULE HERE
+SET(EXTRA_PROBE_MODULES
+
+ )
+
+# ADD YOUR OUTPUT MODULE HERE
+SET(EXTRA_OUTPUT_MODULES
+
+ )
+
+SET(OUTPUT_MODULE_SOURCES
+# output_modules/module_extended_file.c
+# output_modules/module_simple_file.c
+ output_modules/module_csv.c
+ output_modules/output_modules.c
+ )
+
+SET(PROBE_MODULE_SOURCES
+ probe_modules/module_icmp_echo.c
+ probe_modules/module_tcp_synscan.c
+ probe_modules/module_udp.c
+ probe_modules/packet.c
+ probe_modules/probe_modules.c
+ )
+
+SET(SOURCES
+ aesrand.c
+ cyclic.c
+ fieldset.c
+ get_gateway.c
+ monitor.c
+ recv.c
+ send.c
+ state.c
+ validate.c
+ zmap.c
+ zopt_compat.c
+ "${CMAKE_CURRENT_BINARY_DIR}/zopt.h"
+ ${EXTRA_PROBE_MODULES}
+ ${EXTRA_OUTPUT_MODULES}
+ ${PROBE_MODULE_SOURCES}
+ ${OUTPUT_MODULE_SOURCES}
+ ${LIB_SOURCES}
+ )
+
+if (WITH_JSON)
+ SET(SOURCES ${SOURCES} output_modules/module_json.c)
+endif()
+
+if (WITH_REDIS)
+ SET(SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/lib/redis.c output_modules/module_redis.c)
+endif()
+
+add_custom_command(OUTPUT zopt.h
+ COMMAND gengetopt -C --no-help --no-version -i "${CMAKE_CURRENT_SOURCE_DIR}/zopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zopt"
+ )
+
+add_executable(zmap ${SOURCES})
+
+target_link_libraries(
+ zmap
+ pcap gmp m
+ ${REDIS_LIBS}
+ ${JSON_LIBRARIES}
+ )
+
+# Install binary
+install(
+ TARGETS
+ zmap
+ RUNTIME DESTINATION sbin
+)
+
+# Install Manpages
+install(
+ FILES
+ zmap.1
+ DESTINATION share/man/man1
+ )