Skip to content

Commit

Permalink
libmd: new recipe
Browse files Browse the repository at this point in the history
  • Loading branch information
valgur committed Dec 27, 2023
1 parent b8b014e commit 50286d6
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 0 deletions.
6 changes: 6 additions & 0 deletions recipes/libmd/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
sources:
"1.1.0":
url:
- "https://libbsd.freedesktop.org/releases/libmd-1.1.0.tar.xz"
- "https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz"
sha256: "1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332"
64 changes: 64 additions & 0 deletions recipes/libmd/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import os

from conan import ConanFile
from conan.tools.apple import fix_apple_shared_install_name
from conan.tools.files import copy, get, rmdir, rm
from conan.tools.gnu import Autotools, AutotoolsToolchain
from conan.tools.layout import basic_layout

required_conan_version = ">=1.53.0"

class LibMDConan(ConanFile):
name = "libmd"
description = "Message Digest functions from BSD systems"
license = "BSD-2-Clause AND BSD-3-Clause AND ISC AND Beerware AND DocumentRef-COPYING:LicenseRef-libmd-Public-Domain"
homepage = "https://gitlab.freedesktop.org/libbsd/libmd"
url = "/~https://github.com/conan-io/conan-center-index"
topics = ("message-digest", "hash", "bsd",
"md2", "md4", "md5", "ripemd", "rmd160",
"sha", "sha1", "sha2", "sha256", "sha512")

package_type = "library"
settings = "os", "arch", "compiler", "build_type"
options = {
"shared": [True, False],
"fPIC": [True, False],
}
default_options = {
"shared": False,
"fPIC": True,
}

def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")
self.settings.rm_safe("compiler.libcxx")
self.settings.rm_safe("compiler.cppstd")

def generate(self):
tc = AutotoolsToolchain(self)
tc.generate()

def layout(self):
basic_layout(self, src_folder="src")

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)

def build(self):
autotools = Autotools(self)
autotools.configure()
autotools.make()

def package(self):
copy(self, "COPYING", self.source_folder, os.path.join(self.package_folder, "licenses"))
autotools = Autotools(self)
autotools.install()
rm(self, "*.la", os.path.join(self.package_folder, "lib"))
rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
rmdir(self, os.path.join(self.package_folder, "share"))
fix_apple_shared_install_name(self)

def package_info(self):
self.cpp_info.set_property("pkg_config_name", "libmd")
self.cpp_info.libs = ["md"]
7 changes: 7 additions & 0 deletions recipes/libmd/all/test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.15)
project(test_package C)

find_package(libmd REQUIRED)

add_executable(${PROJECT_NAME} test_package.c)
target_link_libraries(${PROJECT_NAME} PRIVATE libmd::libmd)
27 changes: 27 additions & 0 deletions recipes/libmd/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import os

from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.cmake import cmake_layout, CMake


class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv"
test_type = "explicit"

def requirements(self):
self.requires(self.tested_reference_str)

def layout(self):
cmake_layout(self)

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def test(self):
if can_run(self):
bin_path = os.path.join(self.cpp.build.bindir, "test_package")
self.run(bin_path, env="conanrun")
12 changes: 12 additions & 0 deletions recipes/libmd/all/test_package/test_package.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include <md5.h>
#include <string.h>

int main() {
const char data[] = "12345";
uint8_t hash[MD5_DIGEST_LENGTH];
MD5_CTX md5_ctx;
MD5Init(&md5_ctx);
MD5Update(&md5_ctx, (const uint8_t *)data, strlen(data));
MD5Final(hash, &md5_ctx);
return 0;
}
3 changes: 3 additions & 0 deletions recipes/libmd/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
"1.1.0":
folder: "all"

0 comments on commit 50286d6

Please sign in to comment.