Skip to content

Commit 912f784

Browse files
authored
Merge pull request #94 from ofalk/devel
Prepare new release, including cmake support, updated autotools and a few small fixes
2 parents 8a0163b + 926b3a3 commit 912f784

File tree

9 files changed

+158
-104
lines changed

9 files changed

+158
-104
lines changed

CMakeLists.txt

Lines changed: 108 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.14)
22

3-
project(libdnet VERSION 1.16.4 LANGUAGES C)
3+
project(dnet VERSION 1.17.0 LANGUAGES C)
44

55
find_package(TCL)
66

@@ -11,8 +11,9 @@ include(CheckStructHasMember)
1111
include(CheckSymbolExists)
1212
include(CheckTypeSize)
1313
include(CheckCSourceCompiles)
14+
include(GNUInstallDirs)
1415

15-
set(WINDOWS_EXPORT_ALL_SYMBOLS True)
16+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS True)
1617
option(BUILD_SHARED_LIBS "Build in shared lib mode" OFF)
1718

1819
foreach (header stdio.h stdlib.h string.h inttypes.h)
@@ -40,10 +41,10 @@ if(UNIX)
4041
foreach (header strings.h
4142
unistd.h sys/bufmod.h sys/dlpi.h sys/dlpihdr.h sys/dlpi_ext.h
4243
sys/ioctl.h sys/mib.h sys/ndd_var.h sys/socket.h sys/sockio.h
43-
sys/sysctl.h sys/time.h sys/stat.h net/if.h net/if_var.h
44-
net/if_arp.h net/if_dl.h net/pfilt.h
45-
net/pfvar.h net/radix.h net/raw.h net/route.h netinet/in_var.h
46-
net/if_tun.h linux/if_tun.h netinet/ip_fw.h linux/ip_fw.h
44+
sys/time.h sys/stat.h net/if.h net/if_var.h
45+
net/if_dl.h net/pfilt.h
46+
net/radix.h net/raw.h net/route.h netinet/in_var.h
47+
linux/if_tun.h netinet/ip_fw.h linux/ip_fw.h
4748
linux/ip_fwchains.h linux/netfilter_ipv4/ipchains_core.h
4849
ip_fil_compat.h netinet/ip_fil_compat.h ip_compat.h
4950
netinet/ip_compat.h ip_fil.h netinet/ip_fil.h
@@ -54,6 +55,10 @@ if(UNIX)
5455
endforeach ()
5556

5657
check_include_files("sys/types.h;net/bpf.h" HAVE_NET_BPF_H)
58+
check_include_files("sys/types.h;net/if_arp.h" HAVE_NET_IF_ARP_H)
59+
check_include_files("sys/types.h;net/if_tun.h" HAVE_NET_IF_TUN_H)
60+
check_include_files("sys/types.h;net/if.h;net/pfvar.h" HAVE_NET_PFVAR_H)
61+
check_include_files("sys/types.h;sys/sysctl.h" HAVE_SYS_SYSCTL_H)
5762
endif()
5863

5964
set(CMAKE_REQUIRED_LIBRARIES )
@@ -69,7 +74,7 @@ if (UNIX)
6974

7075
CHECK_STRUCT_HAS_MEMBER("struct arpreq" arp_dev net/if_arp.h HAVE_ARPREQ_ARP_DEV LANGUAGE C)
7176
CHECK_STRUCT_HAS_MEMBER("struct sockaddr" sa_len sys/socket.h HAVE_SOCKADDR_SA_LEN LANGUAGE C)
72-
check_symbol_exists(rt_msghdr net/route.h HAVE_ROUTE_RT_MSGHDR)
77+
CHECK_STRUCT_HAS_MEMBER("struct rt_msghdr" rtm_msglen "sys/socket.h;net/if.h;net/route.h" HAVE_ROUTE_RT_MSGHDR LANGUAGE C)
7378

7479
set(CMAKE_EXTRA_INCLUDE_FILES "netinet/in.h")
7580
check_type_size("struct sockaddr_in6" HAVE_SOCKADDR_IN6 LANGUAGE C)
@@ -272,10 +277,103 @@ else()
272277
list(APPEND PLATFORM_SOURCES src/tun-none.c)
273278
endif()
274279

275-
add_library(${PROJECT_NAME} src/addr-util.c src/addr.c src/blob.c src/ip-util.c src/ip6.c src/rand.c ${PLATFORM_SOURCES})
276-
277-
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR} )
280+
add_library(${PROJECT_NAME}
281+
src/addr-util.c
282+
src/addr.c
283+
src/blob.c
284+
src/err.c
285+
src/ip-util.c
286+
src/ip6.c
287+
src/rand.c
288+
${PLATFORM_SOURCES})
289+
290+
target_include_directories(${PROJECT_NAME} PUBLIC
291+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
292+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
293+
$<INSTALL_INTERFACE:include>
294+
$<INSTALL_INTERFACE:include/dnet>
295+
)
296+
297+
set(DNET_HEADERS
298+
include/dnet/addr.h
299+
include/dnet/arp.h
300+
include/dnet/blob.h
301+
include/dnet/eth.h
302+
include/dnet/fw.h
303+
include/dnet/icmp.h
304+
include/dnet/intf.h
305+
include/dnet/ip.h
306+
include/dnet/ip6.h
307+
include/dnet/ndisc.h
308+
include/dnet/os.h
309+
include/dnet/rand.h
310+
include/dnet/route.h
311+
include/dnet/sctp.h
312+
include/dnet/tcp.h
313+
include/dnet/tun.h
314+
include/dnet/udp.h
315+
)
316+
set(DNET_HEADERS1
317+
include/dnet.h
318+
include/err.h
319+
include/queue.h
320+
${CMAKE_CURRENT_BINARY_DIR}/config.h
321+
)
322+
set_target_properties(
323+
${PROJECT_NAME}
324+
PROPERTIES
325+
PUBLIC_HEADER "${DNET_HEADERS}"
326+
)
278327

279328
if (MSVC)
280329
target_link_libraries(${PROJECT_NAME} PUBLIC Iphlpapi ws2_32)
281330
endif()
331+
332+
install(TARGETS ${PROJECT_NAME}
333+
EXPORT ${PROJECT_NAME}Targets DESTINATION ${CMAKE_INSTALL_LIBDIR}
334+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
335+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT devel
336+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/${PROJECT_NAME} COMPONENT devel
337+
)
338+
339+
340+
install(FILES ${DNET_HEADERS1}
341+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
342+
COMPONENT devel)
343+
344+
install(EXPORT ${PROJECT_NAME}Targets
345+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/
346+
FILE ${PROJECT_NAME}Targets.cmake
347+
NAMESPACE ${PROJECT_NAME}::
348+
COMPONENT devel
349+
)
350+
351+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in
352+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
353+
@ONLY
354+
)
355+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config-version.cmake.in
356+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
357+
@ONLY
358+
)
359+
install(
360+
FILES
361+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
362+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
363+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/
364+
COMPONENT devel
365+
)
366+
367+
if(UNIX)
368+
if(NOT CPACK_GENERATOR)
369+
set(CPACK_GENERATOR "DEB")
370+
endif()
371+
372+
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
373+
set(CPACK_STRIP_FILES 1)
374+
if(${CMAKE_VERSION} VERSION_GREATER "3.5")
375+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
376+
endif()
377+
endif()
378+
379+
include(CPack)

aclocal.m4

Lines changed: 6 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ If you have problems, you may need to regenerate the build system entirely.
2121
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
2222

2323
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
24-
# serial 11 (pkg-config-0.29.1)
24+
# serial 12 (pkg-config-0.29.2)
2525

2626
dnl Copyright © 2004 Scott James Remnant <[email protected]>.
2727
dnl Copyright © 2012-2015 Dan Nicholson <[email protected]>
@@ -63,7 +63,7 @@ dnl
6363
dnl See the "Since" comment for each macro you use to see what version
6464
dnl of the macros you require.
6565
m4_defun([PKG_PREREQ],
66-
[m4_define([PKG_MACROS_VERSION], [0.29.1])
66+
[m4_define([PKG_MACROS_VERSION], [0.29.2])
6767
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
6868
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
6969
])dnl PKG_PREREQ
@@ -164,7 +164,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
164164
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
165165
166166
pkg_failed=no
167-
AC_MSG_CHECKING([for $1])
167+
AC_MSG_CHECKING([for $2])
168168
169169
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
170170
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -174,11 +174,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
174174
See the pkg-config man page for more details.])
175175
176176
if test $pkg_failed = yes; then
177-
AC_MSG_RESULT([no])
177+
AC_MSG_RESULT([no])
178178
_PKG_SHORT_ERRORS_SUPPORTED
179179
if test $_pkg_short_errors_supported = yes; then
180180
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
181-
else
181+
else
182182
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
183183
fi
184184
# Put the nasty error message in config.log where it belongs
@@ -195,7 +195,7 @@ installed software in a non-standard prefix.
195195
_PKG_TEXT])[]dnl
196196
])
197197
elif test $pkg_failed = untried; then
198-
AC_MSG_RESULT([no])
198+
AC_MSG_RESULT([no])
199199
m4_default([$4], [AC_MSG_FAILURE(
200200
[The pkg-config script could not be found or is too old. Make sure it
201201
is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -296,74 +296,6 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
296296
AS_VAR_IF([$1], [""], [$5], [$4])dnl
297297
])dnl PKG_CHECK_VAR
298298

299-
dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
300-
dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
301-
dnl [DESCRIPTION], [DEFAULT])
302-
dnl ------------------------------------------
303-
dnl
304-
dnl Prepare a "--with-" configure option using the lowercase
305-
dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
306-
dnl PKG_CHECK_MODULES in a single macro.
307-
AC_DEFUN([PKG_WITH_MODULES],
308-
[
309-
m4_pushdef([with_arg], m4_tolower([$1]))
310-
311-
m4_pushdef([description],
312-
[m4_default([$5], [build with ]with_arg[ support])])
313-
314-
m4_pushdef([def_arg], [m4_default([$6], [auto])])
315-
m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
316-
m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
317-
318-
m4_case(def_arg,
319-
[yes],[m4_pushdef([with_without], [--without-]with_arg)],
320-
[m4_pushdef([with_without],[--with-]with_arg)])
321-
322-
AC_ARG_WITH(with_arg,
323-
AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
324-
[AS_TR_SH([with_]with_arg)=def_arg])
325-
326-
AS_CASE([$AS_TR_SH([with_]with_arg)],
327-
[yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
328-
[auto],[PKG_CHECK_MODULES([$1],[$2],
329-
[m4_n([def_action_if_found]) $3],
330-
[m4_n([def_action_if_not_found]) $4])])
331-
332-
m4_popdef([with_arg])
333-
m4_popdef([description])
334-
m4_popdef([def_arg])
335-
336-
])dnl PKG_WITH_MODULES
337-
338-
dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
339-
dnl [DESCRIPTION], [DEFAULT])
340-
dnl -----------------------------------------------
341-
dnl
342-
dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
343-
dnl check._[VARIABLE-PREFIX] is exported as make variable.
344-
AC_DEFUN([PKG_HAVE_WITH_MODULES],
345-
[
346-
PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
347-
348-
AM_CONDITIONAL([HAVE_][$1],
349-
[test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
350-
])dnl PKG_HAVE_WITH_MODULES
351-
352-
dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
353-
dnl [DESCRIPTION], [DEFAULT])
354-
dnl ------------------------------------------------------
355-
dnl
356-
dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
357-
dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
358-
dnl and preprocessor variable.
359-
AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
360-
[
361-
PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
362-
363-
AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
364-
[AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
365-
])dnl PKG_HAVE_DEFINE_WITH_MODULES
366-
367299
# Copyright (C) 2002-2021 Free Software Foundation, Inc.
368300
#
369301
# This file is free software; the Free Software Foundation

cmake/dnet-config-version.cmake.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
SET(PACKAGE_VERSION @PROJECT_VERSION@)
2+
IF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
3+
SET(PACKAGE_VERSION_EXACT "true")
4+
ENDIF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
5+
IF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
6+
SET(PACKAGE_VERSION_COMPATIBLE "true")
7+
ELSE (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
8+
SET(PACKAGE_VERSION_UNSUITABLE "true")
9+
ENDIF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
10+
IF (PACKAGE_VERSION_UNSUITABLE)
11+
MESSAGE("VERSION CHECK FAILED FOR ${PACKAGE_FIND_NAME}. WANTED ${PACKAGE_FIND_VERSION}, HAVE ${PACKAGE_VERSION}")
12+
ENDIF(PACKAGE_VERSION_UNSUITABLE)

cmake/dnet-config.cmake.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
SET(prefix "@CMAKE_INSTALL_PREFIX@")
2+
SET(exec_prefix "@CMAKE_INSTALL_PREFIX@")
3+
SET(dnet_FOUND "TRUE")
4+
5+
include("${CMAKE_CURRENT_LIST_DIR}/dnetTargets.cmake")

config.h.cmake.in

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
/* Define if arpreq struct has arp_dev. */
44
#cmakedefine HAVE_ARPREQ_ARP_DEV
55

6-
/* Define if you have the Berkeley Packet Filter. */
7-
#cmakedefine HAVE_BSD_BPF
8-
96
/* Define to 1 if you have the <dlfcn.h> header file. */
107
#cmakedefine HAVE_DLFCN_H
118

0 commit comments

Comments
 (0)