274 lines
7.0 KiB
CMake
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
|
|
)
|