overte/conanfile.py

150 lines
20 KiB
Python
Raw Permalink Normal View History

import os
from conan import ConanFile
2024-02-27 13:39:21 +01:00
from conan.tools.cmake import CMakeToolchain, CMakeDeps
from conan.tools.files import copy, save
class Overte(ConanFile):
name = "Overte"
settings = "os", "compiler", "build_type", "arch"
options = {
"qt_source": ["system", "aqt", "source"],
}
2023-09-17 14:00:18 +02:00
default_options = {
"qt_source": "system",
2023-10-01 11:35:56 +02:00
"sdl*:alsa": "False",
"sdl*:pulse": "False",
"sdl*:wayland": "False",
"sdl*:xcursor": "False",
"sdl*:xinerama": "False",
"sdl*:xrandr": "False",
"sdl*:xscrnsaver": "False",
"sdl*:xshape": "False",
"sdl*:xvm": "False",
"openssl*:shared": "True",
2023-09-17 14:00:18 +02:00
"qt*:shared": "True",
"qt*:gui": "True",
"qt*:qtdeclarative": "True",
"qt*:qtlocation": "True",
2023-09-22 16:08:50 +02:00
"qt*:qtmultimedia": "True",
2023-09-17 14:00:18 +02:00
"qt*:qtquickcontrols2": "True",
"qt*:qtscxml": "True",
2023-09-22 16:08:50 +02:00
"qt*:qtsvg": "True",
2023-09-17 14:00:18 +02:00
"qt*:qtwebchannel": "True",
2023-09-22 16:08:50 +02:00
"qt*:qtwebengine": "True",
"qt*:qtwebsockets": "True",
"qt*:qtwebview": "True",
"qt*:qtxmlpatterns": "True",
"glad*:spec": "gl",
"glad*:gl_profile": "core",
"glad*:gl_version": "4.6",
"glad*:extensions": "GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shade
2023-09-17 14:00:18 +02:00
}
def layout(self):
self.folders.generators = os.path.join(self.folders.build, "generators")
def requirements(self):
2024-06-11 11:05:00 +02:00
self.requires("artery-font-format/1.0.1")
self.requires("bullet3/3.25")
2024-06-11 10:57:13 +02:00
self.requires("cgltf/1.14@overte/stable")
# self.requires("crashpad/cci.20220219" ) # Broken
self.requires("discord-rpc/3.4.0@anotherfoxguy/stable")
self.requires("draco/1.3.5")
self.requires("etc2comp/cci.20170424")
self.requires("gifcreator/2016.11@overte/stable")
self.requires("glad/0.1.36")
2023-09-17 13:39:04 +02:00
self.requires("gli/cci.20210515")
2025-05-31 21:53:55 +02:00
self.requires("glslang/1.3.268.0")
2023-09-17 13:39:04 +02:00
self.requires("liblo/0.30@overte/stable")
2025-05-31 21:53:55 +02:00
self.requires("libnode/18.20.8@overte/stable")
2023-09-17 13:39:04 +02:00
self.requires("nlohmann_json/3.11.2")
self.requires("nvidia-texture-tools/2023.01@overte/stable")
self.requires("onetbb/2021.10.0")
self.requires("openexr/3.1.9")
self.requires("openvr/2.2.3@overte/stable")
2025-04-06 13:49:50 +02:00
self.requires("openxr/1.1.46@overte/stable")
2023-10-01 11:35:56 +02:00
self.requires("opus/1.4")
self.requires("polyvox/0.2.1@overte/stable")
2025-03-04 12:24:27 +01:00
self.requires("quazip/1.4")
2023-09-17 13:39:04 +02:00
self.requires("scribe/2019.02@overte/stable")
2024-06-09 17:48:33 +02:00
self.requires("sdl/2.30.3")
2025-05-31 21:53:55 +02:00
self.requires("spirv-cross/1.3.268.0")
self.requires("spirv-tools/1.3.268.0")
self.requires("steamworks/158a@overte/prebuild")
2023-09-17 13:39:04 +02:00
self.requires("v-hacd/4.1.0")
self.requires("vulkan-memory-allocator/3.0.1")
self.requires("webrtc-audio-processing/2.1@overte/stable")
2023-09-17 13:39:04 +02:00
self.requires("zlib/1.2.13")
2024-05-25 11:38:03 +02:00
self.requires("glm/0.9.9.5", force=True)
2025-04-06 13:49:50 +02:00
self.requires("jsoncpp/1.9.6", force=True)
2025-05-17 22:51:09 +02:00
# Fixes build errors on GCC 15. Check if this is still required when upgrading from sdl/2.30.3.
# https://github.com/conan-io/conan-center-index/issues/27265
2025-05-31 21:53:55 +02:00
self.requires("libiconv/1.18", force=True)
openssl = "openssl/1.1.1q"
2024-09-27 13:02:41 +02:00
if self.options.qt_source == "system":
self.requires("qt/5.15.2@overte/system", force=True)
if self.settings.os == "Linux":
openssl = "openssl/system@anotherfoxguy/stable"
elif self.options.qt_source == "aqt":
self.requires("qt/5.15.2@overte/aqt", force=True)
else:
self.requires("qt/5.15.16-2025.01.23@overte/stable", force=True)
# Upstream NSS is broken, so we use https://github.com/conan-io/conan-center-index/pull/19262/commits/735df499341924901089fd512a8ac56ac83d1e6a
self.requires("nss/3.107@overte/stable", force=True)
2024-02-13 10:29:42 +01:00
if self.settings.os == "Windows":
self.requires("neuron/12.2@overte/prebuild")
self.requires("ovr-skd/1.35.0@overte/prebuild")
self.requires("ovr-platform-skd/1.10.0@overte/prebuild")
self.requires(openssl, force=True)
def generate(self):
2024-02-27 13:39:21 +01:00
tc = CMakeToolchain(self)
tc.generate()
deps = CMakeDeps(self)
deps.generate()
if self.settings.build_type == "Release":
2024-02-27 13:39:21 +01:00
deps.configuration = "RelWithDebInfo"
deps.generate()
for dep in self.dependencies.values():
2024-02-27 16:31:52 +01:00
for f in dep.cpp_info.bindirs:
self.cp_libs(f)
for f in dep.cpp_info.libdirs:
self.cp_libs(f)
toolspath = """
set(GLSLANG_DIR "%s")
set(SCRIBE_DIR "%s/tools")
set(SPIRV_CROSS_DIR "%s")
set(SPIRV_TOOLS_DIR "%s")
""" % (
";".join(self.dependencies["glslang"].cpp_info.bindirs).replace("\\", "/"),
self.dependencies["scribe"].package_folder.replace("\\", "/"),
";".join(self.dependencies["spirv-cross"].cpp_info.bindirs).replace(
"\\", "/"
),
";".join(self.dependencies["spirv-tools"].cpp_info.bindirs).replace(
"\\", "/"
),
)
save(
self,
os.path.join(self.build_folder, "cmake", "ConanToolsDirs.cmake"),
toolspath,
)
2024-02-27 16:31:52 +01:00
def cp_libs(self, src):
2024-05-25 11:38:03 +02:00
bindir = os.path.join(
self.build_folder, "conanlibs", f"{self.settings.build_type}"
)
2024-02-27 16:31:52 +01:00
copy(self, "*.dll", src, bindir, False)
2024-05-25 11:38:03 +02:00
copy(self, "*.so*", src, bindir, False)
if self.settings.build_type == "Release":
bindir = os.path.join(self.build_folder, "conanlibs", "RelWithDebInfo")
2024-06-11 10:57:13 +02:00
copy(self, "*.dll", src, bindir, False)
copy(self, "*.so*", src, bindir, False)