Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions recipes/libobjc2/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
sources:
"2.2.1":
url: "https://github.com/gnustep/libobjc2/archive/v2.2.1.zip"
sha256: "b0afc1d98a6f7208fb5ce1fc8b5848b5ba6dba1f4fcd755fbe3fc78b5e4b3308"
73 changes: 73 additions & 0 deletions recipes/libobjc2/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
from conan import ConanFile
from conan.errors import ConanInvalidConfiguration
from conan.tools.apple import is_apple_os
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
from conan.tools.files import copy, get, rm, rmdir
import os

required_conan_version = ">=2.1"

class PackageConan(ConanFile):
name = "libobjc2"
description = "Objective-C runtime library intended for use with Clang."
license = "MIT"
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/gnustep/libobjc2"
topics = ("objective-c", "objective-c-plus-plus", "clang", "gnustep", "objective-c-runtime", "runtime-library")
package_type = "library"
settings = "os", "arch", "compiler", "build_type"
options = {
"shared": [True, False],
"fPIC": [True, False],
}
default_options = {
"shared": False,
"fPIC": True,
}
implements = ["auto_shared_fpic"]

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

def requirements(self):
self.requires("tsl-robin-map/1.2.1")

def validate(self):
if self.settings.compiler != "clang":
raise ConanInvalidConfiguration("libobjc2 supports clang only.")

if is_apple_os(self):
raise ConanInvalidConfiguration("libobjc2 does not support macOS.")

def build_requirements(self):
self.tool_requires("cmake/[>=3.16 <5]")

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)
replace_in_file(self, os.path.join(self.source_folder, "CMakeLists.txt"), "set(CMAKE_CXX_STANDARD 17)", "")

def generate(self):
tc = CMakeToolchain(self)
# Prevent picking up a default install location through gnustep-config
tc.cache_variables["GNUSTEP_INSTALL_TYPE"] = "NONE"
tc.generate()

deps = CMakeDeps(self)
deps.generate()

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

def package(self):
copy(self, "COPYING", self.source_folder, os.path.join(self.package_folder, "licenses"))
cmake = CMake(self)
cmake.install()

rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
rm(self, "*.pdb", self.package_folder, recursive=True)

def package_info(self):
self.cpp_info.libs = ["objc"]
self.cpp_info.set_property("pkg_config_name", "libobjc")
7 changes: 7 additions & 0 deletions recipes/libobjc2/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 LANGUAGES C)

find_package(libobjc2 REQUIRED CONFIG)

add_executable(${PROJECT_NAME} test_package.c)
target_link_libraries(${PROJECT_NAME} PRIVATE libobjc2::libobjc2)
25 changes: 25 additions & 0 deletions recipes/libobjc2/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.cmake import cmake_layout, CMake
import os


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

def layout(self):
cmake_layout(self)

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

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")
9 changes: 9 additions & 0 deletions recipes/libobjc2/all/test_package/test_package.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <stdlib.h>
#include "objc/objc.h"
#include "objc/encoding.h"

int main(void) {
char type = _C_CLASS;
objc_sizeof_type(&type);
return EXIT_SUCCESS;
}
3 changes: 3 additions & 0 deletions recipes/libobjc2/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
"2.2.1":
folder: all