forked from lthn/blockchain
Updated Makefile and GitHub workflow to use configurable build and configure presets, improving flexibility for different environments. Adjusted CMakePresets.json to fix preset naming and version, and refactored conanfile.py to set build folders based on compiler type, ensuring correct folder structure for MSVC and other compilers.
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import os
|
|
|
|
from conan import ConanFile
|
|
from conan.tools.cmake import CMakeDeps, CMakeToolchain, CMake
|
|
|
|
|
|
class BlockchainConan(ConanFile):
|
|
name = "blockchain"
|
|
version = "6.0.1"
|
|
settings = "os", "compiler", "build_type", "arch"
|
|
|
|
options = {
|
|
"static": [True, False],
|
|
"testnet": [True, False],
|
|
"ci": [True, False]
|
|
}
|
|
default_options = {
|
|
"static": False,
|
|
"testnet": False,
|
|
"ci": False,
|
|
"boost/*:without_test": True
|
|
}
|
|
|
|
requires = [
|
|
"zlib/1.3.1",
|
|
"boost/1.85.0",
|
|
"openssl/3.2.0",
|
|
"miniupnpc/2.2.5",
|
|
"jwt-cpp/0.7.1"
|
|
]
|
|
|
|
def generate(self):
|
|
tc = CMakeToolchain(self)
|
|
|
|
os_val = str(self.settings.os).lower()
|
|
# arch_val = str(self.settings.arch).lower()
|
|
# compiler_val = str(self.settings.compiler).lower()
|
|
# tc.presets_prefix = f"{os_val}"
|
|
|
|
tc.user_presets_path = "ConanPresets.json"
|
|
tc.variables["STATIC"] = self.options.static
|
|
tc.variables["TESTNET"] = self.options.testnet
|
|
# tc.preprocessor_definitions["TESTNET"] = None
|
|
# tc.variables["BUILD_VERSION"] = self.options.build_version
|
|
tc.generate()
|
|
|
|
deps = CMakeDeps(self)
|
|
deps.generate()
|
|
|
|
def layout(self):
|
|
if self.settings.compiler == "msvc":
|
|
# For multi-config, all configurations go into the same "build" folder.
|
|
self.folders.build = "build/release"
|
|
self.folders.generators = "build/release/generators"
|
|
else:
|
|
# For single-config, we create a subfolder for each build type.
|
|
build_type_str = str(self.settings.build_type).lower()
|
|
self.folders.build = os.path.join("build", build_type_str)
|
|
self.folders.generators = os.path.join(self.folders.build, "generators")
|
|
|
|
def build(self):
|
|
cmake = CMake(self)
|
|
cmake.configure()
|
|
cmake.build()
|