Skip to content

Commit c631a5e

Browse files
AntonMartin Valgurjcar87
authored
(#16372) dnet: add 1.16.3
* Init libdnet * move to cmake * prepare for cmake * rename package * fix license * fix write header * fix libcxx and cppstd * bump to upstream * Apply suggestions from code review Co-authored-by: Martin Valgur <[email protected]> * Remove test_v1_package, fix configure method --------- Co-authored-by: Martin Valgur <[email protected]> Co-authored-by: Luis Caro Campos <[email protected]>
1 parent 99ecffb commit c631a5e

File tree

6 files changed

+149
-0
lines changed

6 files changed

+149
-0
lines changed

recipes/dnet/all/conandata.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
sources:
2+
"1.17.0":
3+
url: "https://github.com/ofalk/libdnet/archive/refs/tags/libdnet-1.17.0.tar.gz"
4+
sha256: "6be1ed0763151ede4c9665a403f1c9d974b2ffab2eacdb26b22078e461aae1dc"

recipes/dnet/all/conanfile.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from conan import ConanFile
2+
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
3+
from conan.tools.files import copy, get, rmdir
4+
import os
5+
6+
7+
required_conan_version = ">=1.56.0"
8+
9+
10+
class dnetConan(ConanFile):
11+
name = "dnet"
12+
description = "Provides a simplified, portable interface to several low-level networking routines."
13+
homepage = "https://github.com/ofalk/libdnet"
14+
topics = ("dnet", "libdnet", "libdumbnet")
15+
license = "BSD-3-Clause"
16+
url = "https://github.com/conan-io/conan-center-index"
17+
package_type = "library"
18+
options = {
19+
"shared": [True, False],
20+
"fPIC": [True, False],
21+
}
22+
default_options = {
23+
"shared": False,
24+
"fPIC": True
25+
}
26+
settings = "os", "arch", "compiler", "build_type"
27+
28+
29+
def layout(self):
30+
cmake_layout(self, src_folder="src")
31+
32+
def config_options(self):
33+
if self.settings.os == "Windows":
34+
del self.options.fPIC
35+
36+
def configure(self):
37+
if self.options.shared:
38+
self.options.rm_safe("fPIC")
39+
# This is a pure C project
40+
self.settings.rm_safe("compiler.cppstd")
41+
self.settings.rm_safe("compiler.libcxx")
42+
43+
def source(self):
44+
get(self, **self.conan_data["sources"][self.version], strip_root=True)
45+
46+
def generate(self):
47+
tc = CMakeToolchain(self)
48+
tc.generate()
49+
50+
deps = CMakeDeps(self)
51+
deps.generate()
52+
53+
def build(self):
54+
cmake = CMake(self)
55+
cmake.configure()
56+
cmake.build()
57+
58+
def package(self):
59+
copy(self,"LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
60+
cmake = CMake(self)
61+
cmake.configure()
62+
cmake.install()
63+
rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
64+
65+
def package_info(self):
66+
self.cpp_info.libs.append("dnet")
67+
self.cpp_info.includedirs.append(os.path.join("include", "dnet"))
68+
69+
if self.settings.os == 'Windows':
70+
self.cpp_info.system_libs = ['Iphlpapi', 'wsock32']
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
cmake_minimum_required(VERSION 3.1)
2+
project(test_package C)
3+
4+
find_package(dnet REQUIRED CONFIG)
5+
6+
add_executable(${PROJECT_NAME} test_package.c)
7+
target_link_libraries(${PROJECT_NAME} PRIVATE dnet::dnet)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from conan import ConanFile
2+
from conan.tools.build import can_run
3+
from conan.tools.cmake import CMake, cmake_layout
4+
import os
5+
6+
7+
class TestPackageConan(ConanFile):
8+
settings = "os", "arch", "compiler", "build_type"
9+
generators = "CMakeToolchain", "CMakeDeps", "VirtualRunEnv"
10+
test_type = "explicit"
11+
12+
def layout(self):
13+
cmake_layout(self)
14+
15+
def requirements(self):
16+
self.requires(self.tested_reference_str)
17+
18+
def build(self):
19+
cmake = CMake(self)
20+
cmake.configure()
21+
cmake.build()
22+
23+
def test(self):
24+
if can_run(self):
25+
bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
26+
self.run("{} {}".format(bin_path, "127.0.0.1"), env="conanrun")
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <dnet/dnet.h>
2+
#include <dnet/config.h>
3+
#include <dnet/err.h>
4+
5+
#include <sys/types.h>
6+
#include <stdio.h>
7+
#include <stdlib.h>
8+
9+
#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))
10+
#include <unistd.h>
11+
#elif defined(_WIN32)
12+
#include <io.h>
13+
#endif
14+
15+
void addr_usage(void)
16+
{
17+
fprintf(stderr, "Usage: dnet addr <address> ...\n");
18+
exit(1);
19+
}
20+
21+
int main(int argc, char *argv[])
22+
{
23+
struct addr addr;
24+
int c, len;
25+
26+
if (argc == 1 || *(argv[1]) == '-')
27+
addr_usage();
28+
29+
for (c = 1; c < argc; c++) {
30+
if (addr_aton(argv[c], &addr) < 0)
31+
addr_usage();
32+
33+
len = addr.addr_bits / 8;
34+
35+
if (write(1, addr.addr_data8, len) != len)
36+
err(1, "write");
37+
}
38+
return 0;
39+
}

recipes/dnet/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
versions:
2+
"1.17.0":
3+
folder: "all"

0 commit comments

Comments
 (0)