Final work on Conan v2 support
This commit is contained in:
parent
1dbe9df091
commit
1dbe69cd8b
13
Jenkinsfile
vendored
13
Jenkinsfile
vendored
@ -12,7 +12,6 @@ pipeline {
|
||||
stage('Prepare') {
|
||||
steps {
|
||||
cleanWs()
|
||||
rtConanClient(id: "conan", userHome: "/home/jackcartersmith")
|
||||
}
|
||||
}
|
||||
stage('Build') {
|
||||
@ -22,20 +21,16 @@ pipeline {
|
||||
dir("linux") {
|
||||
checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/JCS-Prod/RSE-Model'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Model.git']]])
|
||||
sh 'git submodule update --init --recursive'
|
||||
dir("build") {
|
||||
rtConanRun(clientId: "conan", command: "install .. -s build_type=Release -pr:b=default -pr:h=default --build=missing")
|
||||
}
|
||||
cmakeBuild buildDir: 'build', cmakeArgs: '-DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release', installation: 'latest', steps: [[args: 'all']]
|
||||
sh 'conan install . -of build -s build_type=Release -o "&:tools=True" -pr:b=default -pr:h=default --build=missing'
|
||||
cmakeBuild buildDir: 'build', cmakeArgs: '-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -RSPMODEL_SHARED=ON -RSPMODEL_STATIC=OFF -DBUILD_TOOLS=ON -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release', installation: 'latest', steps: [[args: 'all']]
|
||||
}
|
||||
},
|
||||
windows: {
|
||||
dir("windows") {
|
||||
checkout([$class: 'GitSCM', branches: [[name: '**']], browser: [$class: 'GiteaBrowser', repoUrl: 'https://git.jcsmith.fr/JCS-Prod/RSE-Model'], extensions: [], userRemoteConfigs: [[credentialsId: 'jenkins-ssh', url: 'ssh://git@git.jcsmith.fr:2322/JCS-Prod/RSE-Model.git']]])
|
||||
sh 'git submodule update --init --recursive'
|
||||
dir("build") {
|
||||
rtConanRun(clientId: "conan", command: "install .. -s build_type=Release -pr:b=default -pr:h=windows --build=missing")
|
||||
}
|
||||
cmakeBuild buildDir: 'build', cmakeArgs: '-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_RC_COMPILER=x86_64-w64-mingw32-windres -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release', installation: 'latest', steps: [[args: 'all']]
|
||||
sh 'conan install . -of build -s build_type=Release -o "&:tools=True" -pr:b=default -pr:h=windows --build=missing'
|
||||
cmakeBuild buildDir: 'build', cmakeArgs: '-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -RSPMODEL_SHARED=ON -RSPMODEL_STATIC=OFF -DBUILD_TOOLS=ON -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_RC_COMPILER=x86_64-w64-mingw32-windres', installation: 'latest', steps: [[args: 'all']]
|
||||
}
|
||||
}
|
||||
)
|
||||
|
132
conanfile.py
Normal file
132
conanfile.py
Normal file
@ -0,0 +1,132 @@
|
||||
import os
|
||||
from conan import ConanFile
|
||||
from conan.tools.cmake import CMakeToolchain, CMakeDeps, CMake
|
||||
from conan.tools.files import copy
|
||||
from conan.tools.scm import Git, Version
|
||||
|
||||
required_conan_version = ">=2.3"
|
||||
|
||||
class rse_model(ConanFile):
|
||||
name = "rspmodellib"
|
||||
package_type = "library"
|
||||
version = "2.3.1"
|
||||
revision_mode = "scm"
|
||||
license = "GPL-3.0"
|
||||
author = "JackCarterSmith <jackcartersmith@jcsmith.fr>"
|
||||
url = "https://git.jcsmith.fr/JCS-Prod/RSE-Model"
|
||||
description = "Rogue Squadron 3D (PC) game models files (HOB) extractor"
|
||||
settings = "os", "compiler", "build_type", "arch"
|
||||
generators = "CMakeDeps"
|
||||
options = {
|
||||
"shared": [True, False],
|
||||
"tools": [True, False],
|
||||
"fPIC": [True, False]
|
||||
}
|
||||
|
||||
default_options = {
|
||||
"shared": True,
|
||||
"tools": False,
|
||||
"fPIC": True
|
||||
}
|
||||
|
||||
@property
|
||||
def _is_msvc(self):
|
||||
return str(self.settings.compiler) in ["Visual Studio", "msvc"]
|
||||
|
||||
#def validate(self):
|
||||
# if self.settings.os == "Macos":
|
||||
# raise ConanInvalidConfiguration("MacOS not supported")
|
||||
|
||||
def config_options(self):
|
||||
if self.settings.os == "Windows":
|
||||
del self.options.fPIC
|
||||
|
||||
def configure(self):
|
||||
self.options["glew"].shared = True
|
||||
#self.options["vulkan-loader"].shared = True
|
||||
if self.options.shared:
|
||||
self.options.rm_safe("fPIC")
|
||||
|
||||
def requirements(self):
|
||||
if self.options.tools:
|
||||
#self.requires("opengl/system")
|
||||
#self.requires("glu/system")
|
||||
self.requires("glew/2.2.0")
|
||||
#self.requires("vulkan-headers/1.3.236.0")
|
||||
#self.requires("vulkan-memory-allocator/3.0.1")
|
||||
#self.requires("vulkan-loader/1.3.236.0")
|
||||
|
||||
def source(self):
|
||||
git = Git(self)
|
||||
cargs = ['--single-branch', '--recursive', '--depth', '1', '--branch', 'v' + self.version]
|
||||
git.clone(url="https://git.jcsmith.fr/JCS-Prod/RSE-Model.git", target=".", args=cargs)
|
||||
|
||||
# def _patch(self):
|
||||
# replace_in_file(self, os.path.join(self.source_folder, "RSPModelLib", "CMakeLists.txt"),
|
||||
# 'set_target_properties(rsp-texture-libstatic PROPERTIES OUTPUT_NAME "${RSP_TEXTURE_LIB_NAME}_static")',
|
||||
# 'set_target_properties(rsp-texture-libstatic PROPERTIES OUTPUT_NAME "${RSP_TEXTURE_LIB_NAME}")')
|
||||
|
||||
def export_sources(self):
|
||||
copy(self, "CMakeLists.txt", self.recipe_folder, self.export_sources_folder)
|
||||
|
||||
# def layout(self):
|
||||
# cmake_layout(self, src_folder='.', build_folder='build')
|
||||
|
||||
def generate(self):
|
||||
tc = CMakeToolchain(self)
|
||||
tc.cache_variables["RSPMODEL_SHARED"] = self.options.shared
|
||||
tc.cache_variables["RSPMODEL_STATIC"] = not self.options.shared
|
||||
tc.cache_variables["BUILD_TOOLS"] = self.options.tools
|
||||
#tc.cache_variables["BUILD_DEBUG"] = self.settings.build_type == "Debug"
|
||||
tc.generate()
|
||||
|
||||
#cmdeps = CMakeDeps(self)
|
||||
#cmpdeps.set_property("glew", "cmake_find_mode", "both")
|
||||
#if self.options.shared:
|
||||
#cmdeps.configuration = "ReleaseShared"
|
||||
#cmdeps.generate()
|
||||
|
||||
for dep in self.dependencies.values():
|
||||
if len(dep.cpp_info.bindirs) > 0:
|
||||
if self.settings.os == "Windows":
|
||||
if self._is_msvc:
|
||||
copy(self, "*.dll", dep.cpp_info.bindirs[0], os.path.join(self.build_folder, "bin", str(self.settings.build_type)))
|
||||
else:
|
||||
copy(self, "*.dll", dep.cpp_info.bindirs[0], os.path.join(self.build_folder, "bin"))
|
||||
else:
|
||||
copy(self, "*.so", dep.cpp_info.bindirs[0], os.path.join(self.build_folder, "bin"))
|
||||
|
||||
def build(self):
|
||||
cmbuilder = CMake(self)
|
||||
#self._patch()
|
||||
cmbuilder.configure()
|
||||
cmbuilder.build()
|
||||
|
||||
def package(self):
|
||||
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
|
||||
copy(self, pattern="*.h", src=os.path.join(self.source_folder, "include"), dst=os.path.join(self.package_folder, "include"))
|
||||
copy(self, pattern="*.a", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False)
|
||||
copy(self, pattern="*.so", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False)
|
||||
copy(self, pattern="*.lib", src=self.build_folder, dst=os.path.join(self.package_folder, "lib"), keep_path=False)
|
||||
copy(self, pattern="*.dll", src=self.build_folder, dst=os.path.join(self.package_folder, "bin"), keep_path=False)
|
||||
|
||||
def package_info(self):
|
||||
self.cpp_info.set_property("cmake_file_name", "RSEModel")
|
||||
self.cpp_info.set_property("cmake_target_name", "RSEModel")
|
||||
self.cpp_info.set_property("cmake_module_target_name", "RSEModel::RSEModel")
|
||||
self.cpp_info.set_property("cmake_find_mode", "both")
|
||||
|
||||
self.cpp_info.names["cmake_find_package"] = "RSEModel"
|
||||
self.cpp_info.names["cmake_find_package_multi"] = "RSEModel"
|
||||
|
||||
self.cpp_info.includedirs = ["include"]
|
||||
|
||||
prefix = "lib" if self._is_msvc else ""
|
||||
#suffix = "d" if self.settings.build_type == "Debug" else ""
|
||||
suffix = ""
|
||||
major_min_version = f"{Version(self.version).major}{Version(self.version).minor}"
|
||||
|
||||
self.cpp_info.libs = ["{}RSEModel{}{}".format(prefix, major_min_version, suffix)]
|
||||
if self.settings.os in ["Linux", "Android", "FreeBSD", "SunOS", "AIX"]:
|
||||
self.cpp_info.system_libs.append("m")
|
||||
self.cpp_info.system_libs.append("dl")
|
@ -1,18 +0,0 @@
|
||||
[requires]
|
||||
#opengl/system
|
||||
#glu/system
|
||||
glew/2.2.0
|
||||
#vulkan-headers/1.3.236.0
|
||||
#vulkan-memory-allocator/3.0.1
|
||||
#vulkan-loader/1.3.236.0
|
||||
|
||||
[generators]
|
||||
CMakeDeps
|
||||
CMakeToolchain
|
||||
|
||||
[options]
|
||||
glew/*:shared=True
|
||||
#vulkan-loader/*:shared=True
|
||||
|
||||
[imports]
|
||||
bin, *.dll -> ./bin
|
Loading…
x
Reference in New Issue
Block a user