diff --git a/recipes/stb/all/CMakeLists.txt b/recipes/stb/all/CMakeLists.txt new file mode 100644 index 0000000000000..3f8449cdbcf9e --- /dev/null +++ b/recipes/stb/all/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.18) +project(stb LANGUAGES CXX) + +set(STB_SOURCES "") +if(STB_IMAGE) + list(APPEND STB_SOURCES "stb_image.cpp") +endif() + +if(STB_SOURCES) + add_library(${PROJECT_NAME} ${STB_SOURCES}) + target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") +endif() + diff --git a/recipes/stb/all/conanfile.py b/recipes/stb/all/conanfile.py index c1669e45a6c47..72d78d62b4712 100644 --- a/recipes/stb/all/conanfile.py +++ b/recipes/stb/all/conanfile.py @@ -1,5 +1,6 @@ from conan import ConanFile -from conan.tools.files import copy, get, rmdir +from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout +from conan.tools.files import copy, get, rmdir, rm from conan.tools.layout import basic_layout from conan.tools.scm import Version import os @@ -19,10 +20,12 @@ class StbConan(ConanFile): no_copy_source = True options = { "with_deprecated": [True, False], + "image": [True, False], } default_options = { "with_deprecated": True, + "image": False, } @property @@ -31,10 +34,18 @@ def _version(self): # of the format cci.YYYYMMDD in tools.Version return str(self.version)[4:] + @property + def _build_library(self): + return self.options.image + def config_options(self): if Version(self._version) < "20210713": del self.options.with_deprecated + def export_sources(self): + copy(self, pattern="CMakeLists.txt", src=self.recipe_folder, dst=os.path.join(self.export_sources_folder, "src")) + copy(self, pattern="stb_image.cpp", src=self.recipe_folder, dst=os.path.join(self.export_sources_folder, "src")) + def layout(self): basic_layout(self, src_folder="src") @@ -51,6 +62,20 @@ def package_id(self): def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True) + def layout(self): + cmake_layout(self, src_folder="src") + + def generate(self): + tc = CMakeToolchain(self) + if self.options.image: + tc.variables["STB_IMAGE"] = "ON" + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + def package(self): copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) copy(self, "*.h", src=self.source_folder, dst=os.path.join(self.package_folder, "include")) @@ -61,10 +86,13 @@ def package(self): if self.options.get_safe("with_deprecated"): copy(self, "*.h", src=os.path.join(self.source_folder, "deprecated"), dst=os.path.join(self.package_folder, "include")) copy(self, "stb_image.c", src=os.path.join(self.source_folder, "deprecated"), dst=os.path.join(self.package_folder, "include")) + copy(self, "lib*.a", src=self.build_folder, dst=os.path.join(self.package_folder, "lib")) + if not self.options.image: + rm(self, pattern="stb_image.h", folder=os.path.join(self.package_folder, "include")) def package_info(self): self.cpp_info.bindirs = [] - self.cpp_info.libdirs = [] + self.cpp_info.libs = ["stb"] if self._build_library else [] self.cpp_info.defines.append("STB_TEXTEDIT_KEYTYPE=unsigned") if self.settings.os in ["Linux", "FreeBSD"]: self.cpp_info.system_libs.append("m") diff --git a/recipes/stb/all/stb_image.cpp b/recipes/stb/all/stb_image.cpp new file mode 100644 index 0000000000000..8ddfd1f54636d --- /dev/null +++ b/recipes/stb/all/stb_image.cpp @@ -0,0 +1,2 @@ +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h"