zmap-mark-ii/src/CMakeLists.txt

274 lines
7.0 KiB
CMake

include_directories(
"${CMAKE_CURRENT_BINARY_DIR}"
${PROJECT_SOURCE_DIR}/lib
${PROJECT_SOURCE_DIR}/src
${PROJECT_SOURCE_DIR}/src/output_modules
${PROJECT_SOURCE_DIR}/src/tests
)
# 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_csv.c
output_modules/module_json.c
output_modules/output_modules.c
)
set(PROBE_MODULE_SOURCES
probe_modules/module_icmp_echo.c
probe_modules/module_icmp_echo_time.c
probe_modules/module_tcp_synscan.c
probe_modules/module_tcp_synackscan.c
#probe_modules/module_tcp_cisco_backdoor.c
probe_modules/module_udp.c
probe_modules/packet.c
probe_modules/probe_modules.c
probe_modules/module_ntp.c
probe_modules/module_upnp.c
probe_modules/module_dns.c
probe_modules/module_bacnet.c
)
set(SOURCES
aesrand.c
cyclic.c
expression.c
fieldset.c
filter.c
get_gateway.c
iterator.c
monitor.c
ports.c
recv.c
send.c
shard.c
socket.c
state.c
summary.c
utility.c
validate.c
zmap.c
zopt_compat.c
"${CMAKE_CURRENT_BINARY_DIR}/zopt.h"
"${CMAKE_CURRENT_BINARY_DIR}/lexer.c"
"${CMAKE_CURRENT_BINARY_DIR}/parser.c"
${EXTRA_PROBE_MODULES}
${EXTRA_OUTPUT_MODULES}
${PROBE_MODULE_SOURCES}
${OUTPUT_MODULE_SOURCES}
)
set(ZTESTSOURCES
aesrand.c
cyclic.c
expression.c
fieldset.c
filter.c
get_gateway.c
iterator.c
monitor.c
ports.c
recv.c
send.c
shard.c
socket.c
state.c
summary.c
validate.c
ztopt_compat.c
${PROBE_MODULE_SOURCES}
${OUTPUT_MODULE_SOURCES}
tests/test_harness.c
"${CMAKE_CURRENT_BINARY_DIR}/ztopt.h"
"${CMAKE_CURRENT_BINARY_DIR}/lexer.c"
"${CMAKE_CURRENT_BINARY_DIR}/parser.c"
${EXTRA_PROBE_MODULES}
${EXTRA_OUTPUT_MODULES}
)
set(ZBLSOURCES
zblocklist.c
zbopt_compat.c
"${CMAKE_CURRENT_BINARY_DIR}/zbopt.h"
)
set(ZITSOURCES
aesrand.c
cyclic.c
iterator.c
ports.c
shard.c
state.c
validate.c
zitopt_compat.c
ziterate.c
"${CMAKE_CURRENT_BINARY_DIR}/zitopt.h"
)
set(ZTEESOURCES
ztee.c
topt_compat.c
"${CMAKE_CURRENT_BINARY_DIR}/topt.h"
)
# Handle various versions of socket
if(WITH_PFRING)
set(SOURCES ${SOURCES} socket-pfring.c)
set(ZTESTSOURCES ${ZTESTSOURCES} socket-pfring.c)
elseif (APPLE OR BSD)
set(SOURCES ${SOURCES} socket-bsd.c)
set(ZTESTSOURCES ${ZTESTSOURCES} socket-bsd.c)
else()
set(SOURCES ${SOURCES} socket-linux.c send-linux.c)
set(ZTESTSOURCES ${ZTESTSOURCES} socket-linux.c send-linux.c)
endif()
# Handle various versions of recv
if(WITH_PFRING)
set(SOURCES ${SOURCES} recv-pfring.c)
set(ZTESTSOURCES ${ZTESTSOURCES} recv-pfring.c)
else()
set(SOURCES ${SOURCES} recv-pcap.c)
set(ZTESTSOURCES ${ZTESTSOURCES} recv-pcap.c)
endif()
# Set configure time zmap version
configure_file(topt.ggo.in ${CMAKE_BINARY_DIR}/src/topt.ggo @ONLY)
configure_file(zbopt.ggo.in ${CMAKE_BINARY_DIR}/src/zbopt.ggo @ONLY)
configure_file(zitopt.ggo.in ${CMAKE_BINARY_DIR}/src/zitopt.ggo @ONLY)
configure_file(zopt.ggo.in ${CMAKE_BINARY_DIR}/src/zopt.ggo @ONLY)
configure_file(ztopt.ggo.in ${CMAKE_BINARY_DIR}/src/ztopt.ggo @ONLY)
# Additional ggo.in's should be added here and CMakeVersion.txt
# This sets a *build* time dependency that checks git
if("${ZMAP_VERSION}" STREQUAL "DEVELOPMENT")
add_custom_target(git_versioning ALL
COMMAND ${CMAKE_COMMAND} -D ORIG_SRC_DIR:STRING="${CMAKE_SOURCE_DIR}" -P "${CMAKE_SOURCE_DIR}/src/CMakeVersion.txt"
)
endif()
add_custom_command(OUTPUT zopt.h
COMMAND gengetopt -C --no-help --no-version --unamed-opts=SUBNETS -i "${CMAKE_CURRENT_BINARY_DIR}/zopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zopt"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/zopt.ggo"
)
add_custom_command(OUTPUT topt.h
COMMAND gengetopt -S --no-help --no-version --unamed-opts=FILE -i "${CMAKE_CURRENT_BINARY_DIR}/topt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/topt"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/topt.ggo"
)
add_custom_command(OUTPUT zbopt.h
COMMAND gengetopt -C --no-help --no-version -i "${CMAKE_CURRENT_BINARY_DIR}/zbopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zbopt"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/zbopt.ggo"
)
add_custom_command(OUTPUT zitopt.h
COMMAND gengetopt -C --no-help --no-version --unamed-opts=SUBNETS -i "${CMAKE_CURRENT_BINARY_DIR}/zitopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/zitopt"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/zitopt.ggo"
)
add_custom_command(OUTPUT ztopt.h
COMMAND gengetopt -C --no-help --no-version -i "${CMAKE_CURRENT_BINARY_DIR}/ztopt.ggo" -F "${CMAKE_CURRENT_BINARY_DIR}/ztopt"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ztopt.ggo"
)
add_custom_command(OUTPUT lexer.c
COMMAND flex -o "${CMAKE_CURRENT_BINARY_DIR}/lexer.c" --header-file="${CMAKE_CURRENT_BINARY_DIR}/lexer.h" "${CMAKE_CURRENT_SOURCE_DIR}/lexer.l"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lexer.l"
)
if(NetBSD)
add_custom_command(OUTPUT parser.c
COMMAND yacc -d -o "${CMAKE_CURRENT_BINARY_DIR}/parser.c" "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
)
else()
add_custom_command(OUTPUT parser.c
COMMAND byacc -d -o "${CMAKE_CURRENT_BINARY_DIR}/parser.c" "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/parser.y"
)
endif()
add_custom_target(manpages ronn "${CMAKE_CURRENT_SOURCE_DIR}/zmap.1.ronn" --organization="ZMap" --manual="zmap"
COMMAND ronn "${CMAKE_CURRENT_SOURCE_DIR}/zblocklist.1.ronn" --organization="ZMap" --manual="zblocklist"
COMMAND ronn "${CMAKE_CURRENT_SOURCE_DIR}/ziterate.1.ronn" --organization="ZMap" --manual="ziterate"
COMMAND ronn "${CMAKE_CURRENT_SOURCE_DIR}/ztee.1.ronn" --organization="ZMap" --manual="ztee"
SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/zblocklist.1.ronn" "${CMAKE_CURRENT_SOURCE_DIR}/ziterate.1.ronn" "${CMAKE_CURRENT_SOURCE_DIR}/zmap.1.ronn" "${CMAKE_CURRENT_SOURCE_DIR}/ztee.1.ronn"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
add_executable(zmap ${SOURCES})
add_executable(zblocklist ${ZBLSOURCES})
add_executable(ziterate ${ZITSOURCES})
add_executable(ztee ${ZTEESOURCES})
add_executable(ztests ${ZTESTSOURCES})
if(APPLE OR BSD)
else()
set(ZTESTSOURCES ${ZTESTSOURCES} send-linux.c)
set(SOURCES ${SOURCES} send-linux.c)
endif()
target_link_libraries(
zmap
zmaplib
${PFRING_LIBRARIES}
pcap gmp m unistring
${JSON_LIBRARIES}
${JUDY_LIBRARIES}
)
target_link_libraries(
zblocklist
zmaplib
m
)
target_link_libraries(
ziterate
zmaplib
gmp
m
)
target_link_libraries(
ztee
zmaplib
m
)
target_link_libraries(
ztests
zmaplib
${PFRING_LIBRARIES}
pcap gmp m unistring
${JSON_LIBRARIES}
${JUDY_LIBRARIES}
)
# Install binary
install(
TARGETS
zmap
zblocklist
ziterate
ztee
RUNTIME DESTINATION sbin
)
# Install Manpages
install(
FILES
zmap.1
zblocklist.1
ziterate.1
ztee.1
DESTINATION share/man/man1
)