Skip to content

Commit

Permalink
Merge branch 'conan-io:master' into conan-io#7646
Browse files Browse the repository at this point in the history
  • Loading branch information
lederernc authored Oct 25, 2021
2 parents 84eed5e + b22c0a5 commit 17542bf
Show file tree
Hide file tree
Showing 19 changed files with 300 additions and 33 deletions.
7 changes: 6 additions & 1 deletion recipes/libusb/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from conans import ConanFile, AutoToolsBuildEnvironment, MSBuild, tools
from conans.errors import ConanInvalidConfiguration
import os
import re

required_conan_version = ">=1.33.0"

Expand Down Expand Up @@ -106,8 +107,12 @@ def _build_visual_studio(self):

solution_file = os.path.join("msvc", "libusb_{}.sln".format(solution_msvc_year))
platforms = {"x86":"Win32"}
properties = {
# Enable LTO when CFLAGS contains -GL
"WholeProgramOptimization": "true" if any(re.finditer("(^| )[/-]GL($| )", tools.get_env("CFLAGS", ""))) else "false",
}
msbuild = MSBuild(self)
msbuild.build(solution_file, platforms=platforms, upgrade_project=False)
msbuild.build(solution_file, platforms=platforms, upgrade_project=False, properties=properties)

def _configure_autotools(self):
if not self._autotools:
Expand Down
33 changes: 18 additions & 15 deletions recipes/meson/all/conandata.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,24 @@ sources:
"0.57.2":
url: "https://github.com/mesonbuild/meson/archive/0.57.2.tar.gz"
sha256: "cd3773625253df4fd1c380faf03ffae3d02198d6301e7c8bc7bba6c66af66096"
"0.58.0":
url: "https://github.com/mesonbuild/meson/archive/0.58.0.tar.gz"
sha256: "991b882bfe4d37acc23c064a29ca209458764a580d52f044f3d50055a132bed4"
"0.58.1":
url: "https://github.com/mesonbuild/meson/archive/0.58.1.tar.gz"
sha256: "78e0f553dd3bc632d5f96ab943b1bbccb599c2c84ff27c5fb7f7fff9c8a3f6b4"
"0.59.0":
url: "https://github.com/mesonbuild/meson/archive/0.59.0.tar.gz"
sha256: "fdbbe8ea8a47f9e21cf4f578f85be8ec3d9c030df3d8cb17df1ae59d8683813a"
"0.59.1":
url: "https://github.com/mesonbuild/meson/archive/0.59.1.tar.gz"
sha256: "f256eb15329a6064f8cc1f23b29de1fa8d21e324f939041e1a4efe77cf1362ef"
"0.59.2":
url: "https://github.com/mesonbuild/meson/archive/0.59.2.tar.gz"
sha256: "e6d5ccd503d41f938f6cfc4dc9e7326ffe28acabe091b1ff0c6535bdf09732dd"
# "0.58.0":
# url: "https://github.com/mesonbuild/meson/archive/0.58.0.tar.gz"
# sha256: "991b882bfe4d37acc23c064a29ca209458764a580d52f044f3d50055a132bed4"
# "0.58.1":
# url: "https://github.com/mesonbuild/meson/archive/0.58.1.tar.gz"
# sha256: "78e0f553dd3bc632d5f96ab943b1bbccb599c2c84ff27c5fb7f7fff9c8a3f6b4"
# "0.59.0":
# url: "https://github.com/mesonbuild/meson/archive/0.59.0.tar.gz"
# sha256: "fdbbe8ea8a47f9e21cf4f578f85be8ec3d9c030df3d8cb17df1ae59d8683813a"
# "0.59.1":
# url: "https://github.com/mesonbuild/meson/archive/0.59.1.tar.gz"
# sha256: "f256eb15329a6064f8cc1f23b29de1fa8d21e324f939041e1a4efe77cf1362ef"
# "0.59.2":
# url: "https://github.com/mesonbuild/meson/archive/0.59.2.tar.gz"
# sha256: "e6d5ccd503d41f938f6cfc4dc9e7326ffe28acabe091b1ff0c6535bdf09732dd"
"0.59.3":
url: "https://github.com/mesonbuild/meson/archive/0.59.3.tar.gz"
sha256: "b2c5bfd5032189a66cf6a32d98ba82d94d7d314577d8efe4d9dc159c4073f282"
"0.60.0":
url: "https://github.com/mesonbuild/meson/archive/0.60.0.tar.gz"
sha256: "5672a560fc4094c88ca5b8be0487e099fe84357e5045f5aecf1113084800e6fd"
6 changes: 2 additions & 4 deletions recipes/meson/all/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class MesonInstallerConan(ConanFile):
name = "meson"
description = "Meson is a project to create the best possible next-generation build system"
topics = ("conan", "meson", "mesonbuild", "build-system")
topics = ("meson", "mesonbuild", "build-system")
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/mesonbuild/meson"
license = "Apache-2.0"
Expand All @@ -27,9 +27,7 @@ def package_id(self):
self.info.header_only()

def source(self):
tools.get(**self.conan_data["sources"][self.version])
extracted_dir = "meson-" + self.version
os.rename(extracted_dir, self._source_subfolder)
tools.get(**self.conan_data["sources"][self.version], strip_root=True, destination=self._source_subfolder)

# create wrapper scripts
with open(os.path.join(self._source_subfolder, "meson.cmd"), "w") as f:
Expand Down
22 changes: 12 additions & 10 deletions recipes/meson/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,17 @@ versions:
# folder: all
"0.57.2":
folder: all
"0.58.0":
folder: all
"0.58.1":
folder: all
"0.59.0":
folder: all
"0.59.1":
folder: all
"0.59.2":
folder: all
# "0.58.0":
# folder: all
# "0.58.1":
# folder: all
# "0.59.0":
# folder: all
# "0.59.1":
# folder: all
# "0.59.2":
# folder: all
"0.59.3":
folder: all
"0.60.0":
folder: all
6 changes: 6 additions & 0 deletions recipes/norm/all/conandata.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,9 @@ sources:
"1.5.9":
url: "https://github.com/USNavalResearchLaboratory/norm/releases/download/v1.5.9/src-norm-1.5.9.tgz"
sha256: ef6d7bbb7b278584e057acefe3bc764d30122e83fa41d41d8211e39f25b6e3fa
patches:
"1.5.9":
- base_path: "source_subfolder/protolib"
patch_file: "patches/0001-fix-pthread.patch"
- base_path: "source_subfolder/protolib"
patch_file: "patches/0002-fix-fpic.patch"
10 changes: 8 additions & 2 deletions recipes/norm/all/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
class NormConan(ConanFile):
name = "norm"
description = "A reliable multicast transport protocol"
topics = ("conan", "norm", "multicast", "transport protocol")
topics = ("norm", "multicast", "transport protocol", "nack-oriented reliable multicast")
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://www.nrl.navy.mil/itd/ncs/products/norm"
exports_sources = ["CMakeLists.txt"]
exports_sources = "CMakeLists.txt", "patches/**"
generators = "cmake"
license = "NRL"
settings = "os", "compiler", "build_type", "arch"
Expand Down Expand Up @@ -42,7 +42,13 @@ def _configure_cmake(self):
self._cmake.configure()
return self._cmake

def configure(self):
if self.options.shared:
del self.options.fPIC

def build(self):
for patch in self.conan_data.get("patches", {}).get(self.version, []):
tools.patch(**patch)
cmake = self._configure_cmake()
cmake.build()

Expand Down
20 changes: 20 additions & 0 deletions recipes/norm/all/patches/0001-fix-pthread.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15735c6ab31e92f781decc72d71dde0b0ec3c81f..3e3ad34d01a7e88af2232391411330b24387d43d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -92,6 +92,7 @@ if(LibXml2_FOUND)
list(APPEND PUBLIC_HEADER_FILES include/protoXml.h)
list(APPEND COMMON_SOURCE_FILES ${COMMON}/protoXml.cpp)
endif()
+list(APPEND PLATFORM_LIBS Threads::Threads)

if(PROTOKIT_ENABLE_WX)
find_package(wxWidgets REQUIRED COMPONENTS core base)
@@ -203,7 +204,6 @@ if(MSVC)
list(APPEND PLATFORM_FLAGS /EHsc)
elseif(UNIX)
list(APPEND PLATFORM_DEFINITIONS UNIX _FILE_OFFSET_BITS=64)
- list(APPEND PLATFORM_LIBS pthread)
list(APPEND PLATFORM_SOURCE_FILES src/unix/unixNet.cpp
src/unix/unixSerial.cpp
src/unix/unixVif.cpp
14 changes: 14 additions & 0 deletions recipes/norm/all/patches/0002-fix-fpic.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15735c6ab31e92f781decc72d71dde0b0ec3c81f..1f3e55c640d09088dae9acc2aea09b152bab540a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,7 @@ cmake_policy(SET CMP0077 NEW)
# set the project name
project(protokit)
-
+if(BUILD_SHARED_LIBS)
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
set(COMMON src/common)
-
option(PROTOKIT_BUILD_EXAMPLES "Enables building of the examples in /examples." OFF)
2 changes: 1 addition & 1 deletion recipes/norm/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ def build(self):
cmake.build()

def test(self):
if not tools.cross_building(self.settings):
if not tools.cross_building(self):
bin_path = os.path.join("bin", "test_package")
self.run(bin_path, run_environment=True)
7 changes: 7 additions & 0 deletions recipes/soxr/all/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 2.8.11)
project(cmake_wrapper)

include(conanbuildinfo.cmake)
conan_basic_setup()

add_subdirectory("source_subfolder")
10 changes: 10 additions & 0 deletions recipes/soxr/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
sources:
"0.1.3":
url: https://sourceforge.net/projects/soxr/files/soxr-0.1.3-Source.tar.xz
sha1: "32ea46b1a8c0c15f835422892d02fce8286aec3c"
patches:
"0.1.3":
- base_path: source_subfolder
patch_file: "patches/findpackage-openmp.patch"
- base_path: source_subfolder
patch_file: "patches/cmake-source-dir.patch"
116 changes: 116 additions & 0 deletions recipes/soxr/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
from conans import ConanFile, CMake, tools
import os
import re

required_conan_version = ">=1.33.0"


class SoxrConan(ConanFile):
name = "soxr"
description = "The SoX Resampler library libsoxr performs fast, high-quality one-dimensional sample rate conversion."
homepage = "https://sourceforge.net/projects/soxr/"
topics = ("resampling", "audio", "sample-rate", "conversion")
license = "LGPL-2.1-or-later"
url = "https://github.com/conan-io/conan-center-index"
settings = "os", "compiler", "build_type", "arch"
options = {
"shared": [True, False],
"fPIC": [True, False],
"with_openmp": [True, False],
"with_lsr_bindings": [True, False]
}
default_options = {
"shared": False,
"fPIC": True,
"with_openmp": False,
"with_lsr_bindings": True
}
generators = "cmake"
exports_sources = ["CMakeLists.txt", "patches/**"]

_cmake = None

@property
def _source_subfolder(self):
return "source_subfolder"

@property
def _build_subfolder(self):
return "build_subfolder"

def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC

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

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

def _configure_cmake(self):
if self._cmake:
return self._cmake
self._cmake = CMake(self)
if self.settings.compiler == "Visual Studio":
self._cmake.definitions["BUILD_SHARED_RUNTIME"] = "MD" in self.settings.compiler.runtime
elif self.settings.compiler == "msvc":
self._cmake.definitions["BUILD_SHARED_RUNTIME"] = self.settings.compiler.runtime == "dynamic"
self._cmake.definitions["BUILD_TESTS"] = False
self._cmake.definitions["WITH_OPENMP"] = self.options.with_openmp
self._cmake.definitions["WITH_LSR_BINDINGS"] = self.options.with_lsr_bindings
self._cmake.configure(build_folder=self._build_subfolder)
return self._cmake

def build(self):
for patch in self.conan_data.get("patches", {}).get(self.version, []):
tools.patch(**patch)
cmake = self._configure_cmake()
cmake.build()

def _extract_pffft_license(self):
# extract license header from pffft.c and store it in the package folder
pffft_c = tools.load(os.path.join(self._source_subfolder, "src", "pffft.c"))
license_header = re.search(r"/\* (Copyright.*?)\*/", pffft_c, re.DOTALL).group(1)
license_header = "\n".join(line.lstrip() for line in license_header.splitlines())
tools.save(os.path.join(self.package_folder, "licenses", "pffft"), license_header)

def package(self):
self.copy("LICENCE", dst="licenses", src=self._source_subfolder)
self._extract_pffft_license()
cmake = self._configure_cmake()
cmake.install()
tools.rmdir(os.path.join(self.package_folder, "doc"))
tools.rmdir(os.path.join(self.package_folder, "lib", "pkgconfig"))
tools.rmdir(os.path.join(self.package_folder, "share"))

def package_info(self):
# core component
self.cpp_info.components["core"].names["pkg_config"] = "soxr"
self.cpp_info.components["core"].libs = ["soxr"]
if self.settings.os in ("FreeBSD", "Linux"):
self.cpp_info.components["core"].system_libs = ["m"]
if self.settings.os == "Windows" and self.options.shared:
self.cpp_info.components["core"].defines.append("SOXR_DLL")
if not self.options.shared and self.options.with_openmp:
if self.settings.compiler in ("Visual Studio", "msvc"):
openmp_flags = ["-openmp"]
elif self.settings.compiler in ("gcc", "clang"):
openmp_flags = ["-fopenmp"]
elif self.settings.compiler == "apple-clang":
openmp_flags = ["-Xpreprocessor", "-fopenmp"]
else:
openmp_flags = []
self.cpp_info.components["core"].exelinkflags = openmp_flags
self.cpp_info.components["core"].sharedlinkflags = openmp_flags
# lsr component
if self.options.with_lsr_bindings:
self.cpp_info.components["lsr"].names["pkg_config"] = "soxr-lsr"
self.cpp_info.components["lsr"].libs = ["soxr-lsr"]
if self.settings.os == "Windows" and self.options.shared:
self.cpp_info.components["lsr"].defines.append("SOXR_DLL")
self.cpp_info.components["lsr"].requires = ["core"]
12 changes: 12 additions & 0 deletions recipes/soxr/all/patches/cmake-source-dir.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Patch required for proper resolving of CMake modules when using the CMake conan helper wrapper.
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -84,7 +84,7 @@ mark_as_advanced (WITH_HI_PREC_CLOCK WITH_FLOAT_STD_PREC_CLOCK

# Introspection:

-list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
+list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)

include (CheckFunctionExists)
include (CheckIncludeFiles)
15 changes: 15 additions & 0 deletions recipes/soxr/all/patches/findpackage-openmp.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Adds the REQUIRED flag to find_package for OpenMP so that
we can be sure in the conanfile that if with_openmp is set
that OpenMP is indeed used. This is important since we need to add
compiler flags in package_info() in this case.
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -105,7 +105,7 @@ if (${BUILD_EXAMPLES})
endif ()

if (WITH_OPENMP)
- find_package (OpenMP)
+ find_package (OpenMP REQUIRED)
if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
15 changes: 15 additions & 0 deletions recipes/soxr/all/test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.1)
project(test_package C)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

find_package(soxr CONFIG REQUIRED)

add_executable(test_package_core test_package_core.c)
target_link_libraries(test_package_core soxr::core)

if(TARGET soxr::lsr)
add_executable(test_package_lsr test_package_lsr.c)
target_link_libraries(test_package_lsr soxr::lsr)
endif()
21 changes: 21 additions & 0 deletions recipes/soxr/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import os
from conans import ConanFile, CMake, tools

class TestPackageConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake", "cmake_find_package_multi"

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

def test(self):
if not tools.cross_building(self):
# core component
bin_path = os.path.join("bin", "test_package_core")
self.run(bin_path, run_environment=True)
# lsr component
if self.options["soxr"].with_lsr_bindings:
bin_path = os.path.join("bin", "test_package_lsr")
self.run(bin_path, run_environment=True)
Loading

0 comments on commit 17542bf

Please sign in to comment.