1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-27 20:24:26 +01:00
Files
libtins/src/CMakeLists.txt
Jim Hague 3f204321ce Ensure local include directory comes before system. (#293)
If building (say) libtins 4.0 on a system with 3.4 installed, you need
the libtins include files to come from the repository include, not the
system include directory. The OpenSSL and PCAP includes may be from
the system include, so we need to ensure the libtins include is the
first on the list - which means the last on the before list.
2018-05-09 20:30:58 -07:00

237 lines
7.1 KiB
CMake

SET(LIBTINS_INCLUDE_DIR ../include/)
IF(HAVE_PCAP_IMMEDIATE_MODE)
ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE=1")
ENDIF()
IF(HAVE_PCAP_TIMESTAMP_PRECISION)
ADD_DEFINITIONS("-DHAVE_PCAP_TIMESTAMP_PRECISION=1")
ENDIF()
INCLUDE_DIRECTORIES(BEFORE
${OPENSSL_INCLUDE_DIR}
${PCAP_INCLUDE_DIR}
${LIBTINS_INCLUDE_DIR}
)
set(SOURCES
address_range.cpp
arp.cpp
bootp.cpp
crypto.cpp
detail/address_helpers.cpp
detail/icmp_extension_helpers.cpp
detail/pdu_helpers.cpp
detail/sequence_number_helpers.cpp
dhcp.cpp
dhcpv6.cpp
dns.cpp
dot3.cpp
dot1q.cpp
eapol.cpp
ethernetII.cpp
handshake_capturer.cpp
hw_address.cpp
icmp_extension.cpp
icmp.cpp
icmpv6.cpp
ip_reassembler.cpp
ip.cpp
ip_address.cpp
ipv6.cpp
ipv6_address.cpp
ipsec.cpp
llc.cpp
loopback.cpp
mpls.cpp
memory_helpers.cpp
network_interface.cpp
packet_sender.cpp
pdu.cpp
pdu_iterator.cpp
pdu_option.cpp
pppoe.cpp
radiotap.cpp
rawpdu.cpp
rsn_information.cpp
sll.cpp
snap.cpp
stp.cpp
tcp.cpp
tcp_ip/ack_tracker.cpp
tcp_ip/flow.cpp
tcp_ip/data_tracker.cpp
tcp_ip/stream.cpp
tcp_ip/stream_follower.cpp
tcp_ip/stream_identifier.cpp
timestamp.cpp
udp.cpp
utils/checksum_utils.cpp
utils/frequency_utils.cpp
utils/radiotap_parser.cpp
utils/radiotap_writer.cpp
utils/routing_utils.cpp
utils/resolve_utils.cpp
utils/pdu_utils.cpp
)
set(HEADERS
${LIBTINS_INCLUDE_DIR}/tins/address_range.h
${LIBTINS_INCLUDE_DIR}/tins/arp.h
${LIBTINS_INCLUDE_DIR}/tins/bootp.h
${LIBTINS_INCLUDE_DIR}/tins/handshake_capturer.h
${LIBTINS_INCLUDE_DIR}/tins/stp.h
${LIBTINS_INCLUDE_DIR}/tins/pppoe.h
${LIBTINS_INCLUDE_DIR}/tins/config.h
${LIBTINS_INCLUDE_DIR}/tins/constants.h
${LIBTINS_INCLUDE_DIR}/tins/crypto.h
${LIBTINS_INCLUDE_DIR}/tins/cxxstd.h
${LIBTINS_INCLUDE_DIR}/tins/data_link_type.h
${LIBTINS_INCLUDE_DIR}/tins/detail/address_helpers.h
${LIBTINS_INCLUDE_DIR}/tins/detail/icmp_extension_helpers.h
${LIBTINS_INCLUDE_DIR}/tins/detail/pdu_helpers.h
${LIBTINS_INCLUDE_DIR}/tins/detail/sequence_number_helpers.h
${LIBTINS_INCLUDE_DIR}/tins/detail/smart_ptr.h
${LIBTINS_INCLUDE_DIR}/tins/detail/type_traits.h
${LIBTINS_INCLUDE_DIR}/tins/dhcp.h
${LIBTINS_INCLUDE_DIR}/tins/dhcpv6.h
${LIBTINS_INCLUDE_DIR}/tins/dns.h
${LIBTINS_INCLUDE_DIR}/tins/dot3.h
${LIBTINS_INCLUDE_DIR}/tins/dot1q.h
${LIBTINS_INCLUDE_DIR}/tins/eapol.h
${LIBTINS_INCLUDE_DIR}/tins/endianness.h
${LIBTINS_INCLUDE_DIR}/tins/ethernetII.h
${LIBTINS_INCLUDE_DIR}/tins/exceptions.h
${LIBTINS_INCLUDE_DIR}/tins/hw_address.h
${LIBTINS_INCLUDE_DIR}/tins/icmp_extension.h
${LIBTINS_INCLUDE_DIR}/tins/icmp.h
${LIBTINS_INCLUDE_DIR}/tins/icmpv6.h
${LIBTINS_INCLUDE_DIR}/tins/ieee802_3.h
${LIBTINS_INCLUDE_DIR}/tins/internals.h
${LIBTINS_INCLUDE_DIR}/tins/ip_reassembler.h
${LIBTINS_INCLUDE_DIR}/tins/ip.h
${LIBTINS_INCLUDE_DIR}/tins/ip_address.h
${LIBTINS_INCLUDE_DIR}/tins/ipv6.h
${LIBTINS_INCLUDE_DIR}/tins/ipv6_address.h
${LIBTINS_INCLUDE_DIR}/tins/ipsec.h
${LIBTINS_INCLUDE_DIR}/tins/llc.h
${LIBTINS_INCLUDE_DIR}/tins/loopback.h
${LIBTINS_INCLUDE_DIR}/tins/macros.h
${LIBTINS_INCLUDE_DIR}/tins/mpls.h
${LIBTINS_INCLUDE_DIR}/tins/memory_helpers.h
${LIBTINS_INCLUDE_DIR}/tins/network_interface.h
${LIBTINS_INCLUDE_DIR}/tins/packet.h
${LIBTINS_INCLUDE_DIR}/tins/packet_sender.h
${LIBTINS_INCLUDE_DIR}/tins/pdu.h
${LIBTINS_INCLUDE_DIR}/tins/pdu_allocator.h
${LIBTINS_INCLUDE_DIR}/tins/pdu_cacher.h
${LIBTINS_INCLUDE_DIR}/tins/pdu_iterator.h
${LIBTINS_INCLUDE_DIR}/tins/pdu_option.h
${LIBTINS_INCLUDE_DIR}/tins/radiotap.h
${LIBTINS_INCLUDE_DIR}/tins/rawpdu.h
${LIBTINS_INCLUDE_DIR}/tins/rsn_information.h
${LIBTINS_INCLUDE_DIR}/tins/sll.h
${LIBTINS_INCLUDE_DIR}/tins/small_uint.h
${LIBTINS_INCLUDE_DIR}/tins/snap.h
${LIBTINS_INCLUDE_DIR}/tins/tcp.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/ack_tracker.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/flow.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/data_tracker.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/stream.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/stream_follower.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_ip/stream_identifier.h
${LIBTINS_INCLUDE_DIR}/tins/timestamp.h
${LIBTINS_INCLUDE_DIR}/tins/tins.h
${LIBTINS_INCLUDE_DIR}/tins/udp.h
${LIBTINS_INCLUDE_DIR}/tins/utils.h
${LIBTINS_INCLUDE_DIR}/tins/utils/checksum_utils.h
${LIBTINS_INCLUDE_DIR}/tins/utils/frequency_utils.h
${LIBTINS_INCLUDE_DIR}/tins/utils/radiotap_parser.h
${LIBTINS_INCLUDE_DIR}/tins/utils/radiotap_writer.h
${LIBTINS_INCLUDE_DIR}/tins/utils/routing_utils.h
${LIBTINS_INCLUDE_DIR}/tins/utils/resolve_utils.h
${LIBTINS_INCLUDE_DIR}/tins/utils/pdu_utils.h
)
SET(DOT11_DEPENDENT_SOURCES
dot11/dot11_base.cpp
dot11/dot11_data.cpp
dot11/dot11_mgmt.cpp
dot11/dot11_beacon.cpp
dot11/dot11_assoc.cpp
dot11/dot11_auth.cpp
dot11/dot11_probe.cpp
dot11/dot11_control.cpp
)
SET(DOT11_DEPENDENT_HEADERS
${LIBTINS_INCLUDE_DIR}/tins/dot11.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_base.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_data.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_mgmt.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_beacon.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_assoc.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_auth.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_probe.h
${LIBTINS_INCLUDE_DIR}/tins/dot11/dot11_control.h
)
IF(LIBTINS_ENABLE_DOT11)
SET(SOURCES ${SOURCES} ${DOT11_DEPENDENT_SOURCES})
SET(HEADERS ${HEADERS} ${DOT11_DEPENDENT_HEADERS})
ENDIF()
SET(PCAP_DEPENDENT_SOURCES
sniffer.cpp
packet_writer.cpp
pktap.cpp
tcp_stream.cpp
offline_packet_filter.cpp
ppi.cpp
)
SET(PCAP_DEPENDENT_HEADERS
${LIBTINS_INCLUDE_DIR}/tins/offline_packet_filter.h
${LIBTINS_INCLUDE_DIR}/tins/packet_writer.h
${LIBTINS_INCLUDE_DIR}/tins/pktap.h
${LIBTINS_INCLUDE_DIR}/tins/ppi.h
${LIBTINS_INCLUDE_DIR}/tins/sniffer.h
${LIBTINS_INCLUDE_DIR}/tins/tcp_stream.h
)
IF(LIBTINS_ENABLE_PCAP)
SET(SOURCES ${SOURCES} ${PCAP_DEPENDENT_SOURCES})
SET(HEADERS ${HEADERS} ${PCAP_DEPENDENT_HEADERS})
ENDIF()
ADD_LIBRARY(
tins ${LIBTINS_TYPE}
${SOURCES}
${HEADERS}
)
TARGET_LINK_LIBRARIES(tins ${PCAP_LIBRARY} ${OPENSSL_LIBRARIES} ${LIBTINS_OS_LIBS})
SET_TARGET_PROPERTIES(tins PROPERTIES OUTPUT_NAME tins)
SET_TARGET_PROPERTIES(tins PROPERTIES VERSION ${LIBTINS_VERSION} SOVERSION ${LIBTINS_VERSION} )
# Install instructions for this target
INSTALL(
TARGETS tins
EXPORT libtinsTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT dev
)
MACRO(INSTALL_HEADERS_WITH_DIRECTORY HEADER_LIST)
FOREACH(HEADER ${HEADERS})
# Extract directory name and remove leading '../'
get_filename_component(DIR ${HEADER} PATH)
STRING(REGEX REPLACE "^\\.\\.\\/" "" DIR ${DIR})
INSTALL(FILES ${HEADER} DESTINATION ${DIR})
ENDFOREACH(HEADER)
ENDMACRO()
INSTALL_HEADERS_WITH_DIRECTORY(${HEADERS})