Skip to content
Draft
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
14 changes: 12 additions & 2 deletions BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,14 @@ It fixes some source files to add missing `#include`s.
conan export --version 2.0.8 external/nudb
```

Export our [Conan recipe for LLVM](./conan/llvm).

```
# Conan 1.x
conan export -k conan/llvm llvm/20.1.1@
conan export -k conan/wamr wamr/2.2.0@
```

### Build and Test

1. Create a build directory and move into it.
Expand All @@ -225,8 +233,10 @@ It fixes some source files to add missing `#include`s.
2. Generate CMake files for every configuration you want to build.

```
conan install .. --output-folder . --build missing --settings build_type=Release
conan install .. --output-folder . --build missing --settings build_type=Debug
#release
conan install .. --output-folder . -b missing -s build_type=Release
#debug
conan install .. --output-folder . -b missing -s build_type=Release -s "&:build_type=Debug"
```

For a single-configuration generator, e.g. `Unix Makefiles` or `Ninja`,
Expand Down
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ add_subdirectory(external/secp256k1)
add_library(secp256k1::secp256k1 ALIAS secp256k1)
add_subdirectory(external/ed25519-donna)
add_subdirectory(external/antithesis-sdk)
add_subdirectory(external/wasmedge)
add_subdirectory(external/wasmtime)
add_subdirectory(external/wasmer)
add_subdirectory(external/wasmi)
add_subdirectory(external/wamr)

find_package(gRPC REQUIRED)
find_package(lz4 REQUIRED)
# Target names with :: are not allowed in a generator expression.
Expand All @@ -103,6 +109,9 @@ endif()
find_package(nudb REQUIRED)
find_package(date REQUIRED)
find_package(xxHash REQUIRED)
#find_package(wasmedge REQUIRED)
#find_package(wasmtime REQUIRED)
#find_package(wasmer REQUIRED)

target_link_libraries(ripple_libs INTERFACE
ed25519::ed25519
Expand Down
5 changes: 5 additions & 0 deletions cmake/RippledCore.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ target_link_libraries(xrpl.imports.main
xrpl.libpb
xxHash::xxhash
$<$<BOOL:${voidstar}>:antithesis-sdk-cpp>
wasmedge_so::wasmedge_so
wasmtime_so::wasmtime_so
wasmer_so::wasmer_so
wasmi_so::wasmi_so
wamr_so::wamr_so
)

include(add_module)
Expand Down
9 changes: 9 additions & 0 deletions conan/llvm-18/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
patches:
18.1.8:
- patch_description: disable default verification of fixed endpoints
patch_file: patches/no_verify_fix_endpoints.patch
patch_type: conan
sources:
18.1.8:
sha256: 09c08693a9afd6236f27a2ebae62cda656eba19021ef3f94d59e931d662d4856
url: https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-18.1.8.tar.gz
267 changes: 267 additions & 0 deletions conan/llvm-18/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
from conans import ConanFile
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps, cmake_layout
from conan.tools.files import apply_conandata_patches, export_conandata_patches, get, copy
import os

required_conan_version = ">=1.53.0"

class Llvm_18Conan(ConanFile):
name = "llvm-18"
version = "18.1.8"
license = "Apache License v2.0 with LLVM Exceptions"
url = "https://github.com/llvm/llvm-project.git"
description = "LLVM with fixes"
package_type = "library"
settings = "os", "compiler", "build_type", "arch"
options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}
generators = "CMakeToolchain", "CMakeDeps"
#exports_sources = "patches/no_verify_fix_endpoints.patch"


def export_sources(self):
export_conandata_patches(self)


def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC


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


def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)


def generate(self):
tc = CMakeToolchain(self)

#tc.settings.build_type = "Release"
tc.variables["LLVM_ENABLE_PROJECTS"] = "llvm"
#tc.variables["LLVM_BUILD_LLVM_DYLIB"] = 1
tc.generate()

# This generates "foo-config.cmake" and "bar-config.cmake" in self.generators_folder
#deps = CMakeDeps(self)
#deps.generate()


def build(self):
apply_conandata_patches(self)
cmake = CMake(self)
cmake.verbose = True
cmake.configure(build_script_folder=os.path.join(self.source_folder, "llvm"))
cmake.build()
#self.run(f'echo {self.source_folder}')
# Explicit way:
# self.run('cmake %s/hello %s' % (self.source_folder, cmake.command_line))
# self.run("cmake --build . %s" % cmake.build_config)


def package(self):
cmake = CMake(self)
cmake.verbose = True
cmake.install()


def package_info(self):
self.cpp_info.libs = [
"LLVMDemangle",
"LLVMSupport",
"LLVMTableGen",
"LLVMTableGenGlobalISel",
"LLVMTableGenCommon",
"LLVMCore",
"LLVMFuzzerCLI",
"LLVMFuzzMutate",
"LLVMFileCheck",
"LLVMInterfaceStub",
"LLVMIRPrinter",
"LLVMIRReader",
"LLVMCodeGenTypes",
"LLVMCodeGen",
"LLVMSelectionDAG",
"LLVMAsmPrinter",
"LLVMMIRParser",
"LLVMGlobalISel",
"LLVMBinaryFormat",
"LLVMBitReader",
"LLVMBitWriter",
"LLVMBitstreamReader",
"LLVMDWARFLinker",
"LLVMDWARFLinkerClassic",
"LLVMDWARFLinkerParallel",
"LLVMExtensions",
"LLVMFrontendDriver",
"LLVMFrontendHLSL",
"LLVMFrontendOpenACC",
"LLVMFrontendOpenMP",
"LLVMFrontendOffloading",
"LLVMTransformUtils",
"LLVMInstrumentation",
"LLVMAggressiveInstCombine",
"LLVMInstCombine",
"LLVMScalarOpts",
"LLVMipo",
"LLVMVectorize",
"LLVMObjCARCOpts",
"LLVMCoroutines",
"LLVMCFGuard",
"LLVMHipStdPar",
"LLVMLinker",
"LLVMAnalysis",
"LLVMLTO",
"LLVMMC",
"LLVMMCParser",
"LLVMMCDisassembler",
"LLVMMCA",
"LLVMObjCopy",
"LLVMObject",
"LLVMObjectYAML",
"LLVMOption",
"LLVMRemarks",
"LLVMDebuginfod",
"LLVMDebugInfoDWARF",
"LLVMDebugInfoGSYM",
"LLVMDebugInfoLogicalView",
"LLVMDebugInfoMSF",
"LLVMDebugInfoCodeView",
"LLVMDebugInfoPDB",
"LLVMSymbolize",
"LLVMDebugInfoBTF",
"LLVMDWP",
"LLVMExecutionEngine",
"LLVMInterpreter",
"LLVMJITLink",
"LLVMMCJIT",
"LLVMOrcJIT",
"LLVMOrcDebugging",
"LLVMOrcShared",
"LLVMOrcTargetProcess",
"LLVMRuntimeDyld",
"LLVMTarget",
"LLVMAArch64CodeGen",
"LLVMAArch64AsmParser",
"LLVMAArch64Disassembler",
"LLVMAArch64Desc",
"LLVMAArch64Info",
"LLVMAArch64Utils",
"LLVMAMDGPUCodeGen",
"LLVMAMDGPUAsmParser",
"LLVMAMDGPUDisassembler",
"LLVMAMDGPUTargetMCA",
"LLVMAMDGPUDesc",
"LLVMAMDGPUInfo",
"LLVMAMDGPUUtils",
"LLVMARMCodeGen",
"LLVMARMAsmParser",
"LLVMARMDisassembler",
"LLVMARMDesc",
"LLVMARMInfo",
"LLVMARMUtils",
"LLVMAVRCodeGen",
"LLVMAVRAsmParser",
"LLVMAVRDisassembler",
"LLVMAVRDesc",
"LLVMAVRInfo",
"LLVMBPFCodeGen",
"LLVMBPFAsmParser",
"LLVMBPFDisassembler",
"LLVMBPFDesc",
"LLVMBPFInfo",
"LLVMHexagonCodeGen",
"LLVMHexagonAsmParser",
"LLVMHexagonDisassembler",
"LLVMHexagonDesc",
"LLVMHexagonInfo",
"LLVMLanaiCodeGen",
"LLVMLanaiAsmParser",
"LLVMLanaiDisassembler",
"LLVMLanaiDesc",
"LLVMLanaiInfo",
"LLVMLoongArchCodeGen",
"LLVMLoongArchAsmParser",
"LLVMLoongArchDisassembler",
"LLVMLoongArchDesc",
"LLVMLoongArchInfo",
"LLVMMipsCodeGen",
"LLVMMipsAsmParser",
"LLVMMipsDisassembler",
"LLVMMipsDesc",
"LLVMMipsInfo",
"LLVMMSP430CodeGen",
"LLVMMSP430Desc",
"LLVMMSP430Info",
"LLVMMSP430AsmParser",
"LLVMMSP430Disassembler",
"LLVMNVPTXCodeGen",
"LLVMNVPTXDesc",
"LLVMNVPTXInfo",
"LLVMPowerPCCodeGen",
"LLVMPowerPCAsmParser",
"LLVMPowerPCDisassembler",
"LLVMPowerPCDesc",
"LLVMPowerPCInfo",
"LLVMRISCVCodeGen",
"LLVMRISCVAsmParser",
"LLVMRISCVDisassembler",
"LLVMRISCVDesc",
"LLVMRISCVTargetMCA",
"LLVMRISCVInfo",
"LLVMSparcCodeGen",
"LLVMSparcAsmParser",
"LLVMSparcDisassembler",
"LLVMSparcDesc",
"LLVMSparcInfo",
"LLVMSystemZCodeGen",
"LLVMSystemZAsmParser",
"LLVMSystemZDisassembler",
"LLVMSystemZDesc",
"LLVMSystemZInfo",
"LLVMVECodeGen",
"LLVMVEAsmParser",
"LLVMVEDisassembler",
"LLVMVEInfo",
"LLVMVEDesc",
"LLVMWebAssemblyCodeGen",
"LLVMWebAssemblyAsmParser",
"LLVMWebAssemblyDisassembler",
"LLVMWebAssemblyDesc",
"LLVMWebAssemblyInfo",
"LLVMWebAssemblyUtils",
"LLVMX86CodeGen",
"LLVMX86AsmParser",
"LLVMX86Disassembler",
"LLVMX86TargetMCA",
"LLVMX86Desc",
"LLVMX86Info",
"LLVMXCoreCodeGen",
"LLVMXCoreDisassembler",
"LLVMXCoreDesc",
"LLVMXCoreInfo",
"LLVMAsmParser",
"LLVMLineEditor",
"LLVMProfileData",
"LLVMCoverage",
"LLVMPasses",
"LLVMTargetParser",
"LLVMTextAPI",
"LLVMTextAPIBinaryReader",
"LLVMDlltoolDriver",
"LLVMLibDriver",
"LLVMXRay",
"LLVMWindowsDriver",
"LLVMWindowsManifest",
"LLVMCFIVerify",
"LLVMDiff",
"LLVMExegesisX86",
"LLVMExegesisAArch64",
"LLVMExegesisPowerPC",
"LLVMExegesisMips",
"LLVMExegesis",
]


13 changes: 13 additions & 0 deletions conan/llvm-18/patches/no_verify_fix_endpoints.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 99e78d3b6..e61f9b534 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -848,7 +848,7 @@ Expected<InstCombineOptions> parseInstCombineOptions(StringRef Params) {
InstCombineOptions Result;
// When specifying "instcombine" in -passes enable fix-point verification by
// default, as this is what most tests should use.
- Result.setVerifyFixpoint(true);
+ // Result.setVerifyFixpoint(true);
while (!Params.empty()) {
StringRef ParamName;
std::tie(ParamName, Params) = Params.split(';');
9 changes: 9 additions & 0 deletions conan/llvm/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
patches:
20.1.1:
- patch_description: disable default verification of fixed endpoints
patch_file: patches/no_verify_fix_endpoints.patch
patch_type: conan
sources:
20.1.1:
sha256: edde69aa3e48a3892a8f01332ff79cfb6179151b42503c4ba77d2cd408b013bf
url: https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-20.1.1.tar.gz
Loading
Loading