diff --git BUILD.bazel BUILD.bazel
new file mode 100644
index 000000000..e663b43ee
--- /dev/null
+++ BUILD.bazel
@@ -0,0 +1,313 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"])
+
+load(
+    "@cmake_configure_file//:cmake_configure_file.bzl",
+    "cmake_configure_file",
+)
+
+cmake_configure_file(
+    name = "configure_file",
+    src = "include/fastrtps/config.h.in",
+    out = "include/fastrtps/config.h",
+    #cmakelists = [
+    #    "CMakeLists.txt",
+    #],
+    defines = [
+        "HAVE_CXX17",
+        "FASTDDS_IS_BIG_ENDIAN_TARGET",
+        "HAVE_SECURITY=0",
+        "HAVE_STRICT_REALTIME=0",
+        "HAVE_SQLITE3=0",
+        "ENABLE_OLD_LOG_MACROS_=1",
+        "HAVE_LOG_NO_ERROR=1",
+        "HAVE_LOG_NO_INFO=1",
+        "HAVE_LOG_NO_WARNING=1",
+        "TLS_FOUND=0",
+        "PROJECT_VERSION_MAJOR=2",
+        "PROJECT_VERSION_MINOR=14",
+        "PROJECT_VERSION_PATCH=3",
+        "PROJECT_VERSION=2.14.3"
+    ],
+    undefines = [
+        "HAVE_CXX20",
+        "HAVE_CXX14",
+        "HAVE_CXX1Y",
+        "HAVE_CXX11",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+cc_library(
+    name = "fastdds",
+    hdrs = glob([
+        "include/**/*.h",
+        "include/**/*.hpp",
+        "include/**/*.ipp",
+        "src/cpp/**/*.h",
+        "src/cpp/**/*.hpp",
+        "src/cpp/**/*.ipp",
+        "thirdparty/boost/include/**/*.h",
+        "thirdparty/boost/include/**/*.hpp",
+        "thirdparty/boost/include/**/*.ipp",
+        "thirdparty/taocpp-pegtl/**/*.hpp",
+    ]) + [
+        "thirdparty/filewatch/FileWatch.hpp",
+        "thirdparty/nlohmann-json/nlohmann/json.hpp",
+        ":configure_file",
+    ],
+    srcs = [
+        "src/cpp/fastdds/log/Log.cpp",
+        "src/cpp/fastdds/log/OStreamConsumer.cpp",
+        "src/cpp/fastdds/log/StdoutErrConsumer.cpp",
+        "src/cpp/fastdds/log/StdoutConsumer.cpp",
+        "src/cpp/fastdds/log/FileConsumer.cpp",
+
+        "src/cpp/rtps/common/GuidPrefix_t.cpp",
+        "src/cpp/rtps/common/LocatorWithMask.cpp",
+        "src/cpp/rtps/common/Time_t.cpp",
+        "src/cpp/rtps/resources/ResourceEvent.cpp",
+        "src/cpp/rtps/resources/TimedEvent.cpp",
+        "src/cpp/rtps/resources/TimedEventImpl.cpp",
+        "src/cpp/rtps/writer/LivelinessManager.cpp",
+        "src/cpp/rtps/writer/LocatorSelectorSender.cpp",
+        "src/cpp/rtps/writer/RTPSWriter.cpp",
+        "src/cpp/rtps/writer/StatefulWriter.cpp",
+        "src/cpp/rtps/writer/ReaderProxy.cpp",
+        "src/cpp/rtps/writer/StatelessWriter.cpp",
+        "src/cpp/rtps/writer/ReaderLocator.cpp",
+        "src/cpp/rtps/history/CacheChangePool.cpp",
+        "src/cpp/rtps/history/History.cpp",
+        "src/cpp/rtps/history/WriterHistory.cpp",
+        "src/cpp/rtps/history/ReaderHistory.cpp",
+        "src/cpp/rtps/history/TopicPayloadPool.cpp",
+        "src/cpp/rtps/history/TopicPayloadPoolRegistry.cpp",
+        "src/cpp/rtps/DataSharing/DataSharingPayloadPool.cpp",
+        "src/cpp/rtps/DataSharing/DataSharingListener.cpp",
+        "src/cpp/rtps/DataSharing/DataSharingNotification.cpp",
+        "src/cpp/rtps/reader/WriterProxy.cpp",
+        "src/cpp/rtps/reader/reader_utils.cpp",
+        "src/cpp/rtps/reader/StatefulReader.cpp",
+        "src/cpp/rtps/reader/StatelessReader.cpp",
+        "src/cpp/rtps/reader/RTPSReader.cpp",
+        "src/cpp/rtps/messages/RTPSMessageCreator.cpp",
+        "src/cpp/rtps/messages/RTPSMessageGroup.cpp",
+        "src/cpp/rtps/messages/RTPSGapBuilder.cpp",
+        "src/cpp/rtps/messages/SendBuffersManager.cpp",
+        "src/cpp/rtps/messages/MessageReceiver.cpp",
+        "src/cpp/rtps/messages/submessages/AckNackMsg.hpp",
+        "src/cpp/rtps/messages/submessages/DataMsg.hpp",
+        "src/cpp/rtps/messages/submessages/GapMsg.hpp",
+        "src/cpp/rtps/messages/submessages/HeartbeatMsg.hpp",
+        "src/cpp/rtps/network/NetworkFactory.cpp",
+        "src/cpp/rtps/network/ReceiverResource.cpp",
+        "src/cpp/rtps/network/utils/external_locators.cpp",
+        "src/cpp/rtps/network/utils/netmask_filter.cpp",
+        "src/cpp/rtps/network/utils/network.cpp",
+        "src/cpp/rtps/attributes/RTPSParticipantAttributes.cpp",
+        "src/cpp/rtps/participant/RTPSParticipant.cpp",
+        "src/cpp/rtps/participant/RTPSParticipantImpl.cpp",
+        "src/cpp/rtps/RTPSDomain.cpp",
+        "src/cpp/fastrtps_deprecated/Domain.cpp",
+        "src/cpp/fastrtps_deprecated/participant/Participant.cpp",
+        "src/cpp/fastrtps_deprecated/participant/ParticipantImpl.cpp",
+        "src/cpp/fastrtps_deprecated/publisher/Publisher.cpp",
+        "src/cpp/fastrtps_deprecated/publisher/PublisherImpl.cpp",
+        "src/cpp/fastrtps_deprecated/publisher/PublisherHistory.cpp",
+        "src/cpp/fastrtps_deprecated/subscriber/Subscriber.cpp",
+        "src/cpp/fastrtps_deprecated/subscriber/SubscriberImpl.cpp",
+        "src/cpp/fastrtps_deprecated/subscriber/SubscriberHistory.cpp",
+        "src/cpp/fastdds/publisher/DataWriter.cpp",
+        "src/cpp/fastdds/publisher/DataWriterImpl.cpp",
+        "src/cpp/fastdds/publisher/DataWriterHistory.cpp",
+        "src/cpp/fastdds/topic/ContentFilteredTopic.cpp",
+        "src/cpp/fastdds/topic/ContentFilteredTopicImpl.cpp",
+        "src/cpp/fastdds/topic/Topic.cpp",
+        "src/cpp/fastdds/topic/TopicImpl.cpp",
+        "src/cpp/fastdds/topic/TopicProxyFactory.cpp",
+        "src/cpp/fastdds/topic/TypeSupport.cpp",
+        "src/cpp/fastdds/topic/TopicDataType.cpp",
+        "src/cpp/fastdds/topic/qos/TopicQos.cpp",
+        "src/cpp/fastdds/publisher/qos/DataWriterQos.cpp",
+        "src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp",
+        "src/cpp/fastdds/publisher/PublisherImpl.cpp",
+        "src/cpp/fastdds/publisher/qos/PublisherQos.cpp",
+        "src/cpp/fastdds/publisher/Publisher.cpp",
+        "src/cpp/fastdds/subscriber/SubscriberImpl.cpp",
+        "src/cpp/fastdds/subscriber/qos/SubscriberQos.cpp",
+        "src/cpp/fastdds/subscriber/Subscriber.cpp",
+        "src/cpp/fastdds/subscriber/DataReader.cpp",
+        "src/cpp/fastdds/subscriber/DataReaderImpl.cpp",
+        "src/cpp/fastdds/subscriber/ReadCondition.cpp",
+        "src/cpp/fastdds/subscriber/history/DataReaderHistory.cpp",
+        "src/cpp/fastdds/domain/DomainParticipantFactory.cpp",
+        "src/cpp/fastdds/domain/DomainParticipantImpl.cpp",
+        "src/cpp/fastdds/domain/DomainParticipant.cpp",
+        "src/cpp/fastdds/domain/qos/DomainParticipantQos.cpp",
+        "src/cpp/fastdds/domain/qos/DomainParticipantFactoryQos.cpp",
+        "src/cpp/fastdds/builtin/typelookup/common/TypeLookupTypes.cpp",
+        "src/cpp/fastdds/builtin/common/RPCHeadersImpl.cpp",
+        "src/cpp/fastdds/builtin/typelookup/TypeLookupManager.cpp",
+        "src/cpp/fastdds/builtin/typelookup/TypeLookupRequestListener.cpp",
+        "src/cpp/fastdds/builtin/typelookup/TypeLookupReplyListener.cpp",
+        "src/cpp/rtps/transport/TransportInterface.cpp",
+        "src/cpp/rtps/transport/ChainingTransport.cpp",
+        "src/cpp/rtps/transport/ChannelResource.cpp",
+        "src/cpp/rtps/transport/network/NetmaskFilterKind.cpp",
+        "src/cpp/rtps/transport/network/NetworkInterface.cpp",
+        "src/cpp/rtps/transport/network/NetworkInterfaceWithFilter.cpp",
+        "src/cpp/rtps/transport/PortBasedTransportDescriptor.cpp",
+        "src/cpp/rtps/transport/shared_mem/SharedMemTransportDescriptor.cpp",
+        "src/cpp/rtps/transport/tcp/RTCPMessageManager.cpp",
+        "src/cpp/rtps/transport/tcp/TCPControlMessage.cpp",
+        "src/cpp/rtps/transport/TCPAcceptor.cpp",
+        "src/cpp/rtps/transport/TCPAcceptorBasic.cpp",
+        "src/cpp/rtps/transport/TCPChannelResource.cpp",
+        "src/cpp/rtps/transport/TCPChannelResourceBasic.cpp",
+        "src/cpp/rtps/transport/TCPTransportInterface.cpp",
+        "src/cpp/rtps/transport/TCPv4Transport.cpp",
+        "src/cpp/rtps/transport/TCPv6Transport.cpp",
+        "src/cpp/rtps/transport/test_UDPv4Transport.cpp",
+        "src/cpp/rtps/transport/UDPChannelResource.cpp",
+        "src/cpp/rtps/transport/UDPTransportInterface.cpp",
+        "src/cpp/rtps/transport/UDPv4Transport.cpp",
+        "src/cpp/rtps/transport/UDPv6Transport.cpp",
+
+        "src/cpp/dynamic-types/AnnotationDescriptor.cpp",
+        "src/cpp/dynamic-types/AnnotationParameterValue.cpp",
+        "src/cpp/dynamic-types/DynamicData.cpp",
+        "src/cpp/dynamic-types/DynamicDataFactory.cpp",
+        "src/cpp/dynamic-types/DynamicType.cpp",
+        "src/cpp/dynamic-types/DynamicPubSubType.cpp",
+        "src/cpp/dynamic-types/DynamicTypePtr.cpp",
+        "src/cpp/dynamic-types/DynamicDataPtr.cpp",
+        "src/cpp/dynamic-types/DynamicTypeBuilder.cpp",
+        "src/cpp/dynamic-types/DynamicTypeBuilderPtr.cpp",
+        "src/cpp/dynamic-types/DynamicTypeBuilderFactory.cpp",
+        "src/cpp/dynamic-types/DynamicTypeMember.cpp",
+        "src/cpp/dynamic-types/MemberDescriptor.cpp",
+        "src/cpp/dynamic-types/TypeDescriptor.cpp",
+        "src/cpp/dynamic-types/TypeIdentifier.cpp",
+        "src/cpp/dynamic-types/TypeIdentifierTypes.cpp",
+        "src/cpp/dynamic-types/TypeObject.cpp",
+        "src/cpp/dynamic-types/TypeObjectHashId.cpp",
+        "src/cpp/dynamic-types/TypeObjectFactory.cpp",
+        "src/cpp/dynamic-types/TypeNamesGenerator.cpp",
+        "src/cpp/dynamic-types/TypesBase.cpp",
+        "src/cpp/dynamic-types/BuiltinAnnotationsTypeObject.cpp",
+        "src/cpp/dynamic-types/DynamicDataHelper.cpp",
+
+        "src/cpp/fastrtps_deprecated/attributes/TopicAttributes.cpp",
+        "src/cpp/fastdds/core/Entity.cpp",
+        "src/cpp/fastdds/core/condition/Condition.cpp",
+        "src/cpp/fastdds/core/condition/ConditionNotifier.cpp",
+        "src/cpp/fastdds/core/condition/GuardCondition.cpp",
+        "src/cpp/fastdds/core/condition/StatusCondition.cpp",
+        "src/cpp/fastdds/core/condition/StatusConditionImpl.cpp",
+        "src/cpp/fastdds/core/condition/WaitSet.cpp",
+        "src/cpp/fastdds/core/condition/WaitSetImpl.cpp",
+        "src/cpp/fastdds/core/policy/ParameterList.cpp",
+        "src/cpp/fastdds/core/policy/QosPolicyUtils.cpp",
+        "src/cpp/fastdds/publisher/qos/WriterQos.cpp",
+        "src/cpp/fastdds/subscriber/qos/ReaderQos.cpp",
+        "src/cpp/fastdds/utils/QosConverters.cpp",
+        "src/cpp/rtps/builtin/BuiltinProtocols.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/DirectMessageSender.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDP.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/ServerAttributes.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDPSimple.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDPListener.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPSimple.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPSimpleListeners.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPStatic.cpp",
+        "src/cpp/rtps/builtin/liveliness/WLP.cpp",
+        "src/cpp/rtps/builtin/liveliness/WLPListener.cpp",
+        "src/cpp/rtps/builtin/data/ParticipantProxyData.cpp",
+        "src/cpp/rtps/builtin/data/WriterProxyData.cpp",
+        "src/cpp/rtps/builtin/data/ReaderProxyData.cpp",
+        "src/cpp/rtps/flowcontrol/ThroughputControllerDescriptor.cpp",
+        "src/cpp/rtps/flowcontrol/FlowControllerConsts.cpp",
+        "src/cpp/rtps/flowcontrol/FlowControllerFactory.cpp",
+        "src/cpp/rtps/exceptions/Exception.cpp",
+        "src/cpp/rtps/attributes/PropertyPolicy.cpp",
+        "src/cpp/rtps/attributes/ThreadSettings.cpp",
+        "src/cpp/rtps/common/Token.cpp",
+        "src/cpp/rtps/xmlparser/XMLParserCommon.cpp",
+        "src/cpp/rtps/xmlparser/XMLElementParser.cpp",
+        "src/cpp/rtps/xmlparser/XMLDynamicParser.cpp",
+        "src/cpp/rtps/xmlparser/XMLEndpointParser.cpp",
+        "src/cpp/rtps/xmlparser/XMLParser.cpp",
+        "src/cpp/rtps/xmlparser/XMLProfileManager.cpp",
+        "src/cpp/rtps/writer/PersistentWriter.cpp",
+        "src/cpp/rtps/writer/StatelessPersistentWriter.cpp",
+        "src/cpp/rtps/writer/StatefulPersistentWriter.cpp",
+        "src/cpp/rtps/reader/StatelessPersistentReader.cpp",
+        "src/cpp/rtps/reader/StatefulPersistentReader.cpp",
+        "src/cpp/rtps/persistence/PersistenceFactory.cpp",
+
+        "src/cpp/rtps/builtin/discovery/database/backup/SharedBackupFunctions.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPClient.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPServer.cpp",
+        "src/cpp/rtps/builtin/discovery/endpoint/EDPServerListeners.cpp",
+        "src/cpp/rtps/builtin/discovery/database/DiscoveryDataBase.cpp",
+        "src/cpp/rtps/builtin/discovery/database/DiscoveryParticipantInfo.cpp",
+        "src/cpp/rtps/builtin/discovery/database/DiscoveryParticipantsAckStatus.cpp",
+        "src/cpp/rtps/builtin/discovery/database/DiscoverySharedInfo.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDPClient.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDPServer.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/PDPServerListener.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/timedevent/DSClientEvent.cpp",
+        "src/cpp/rtps/builtin/discovery/participant/timedevent/DServerEvent.cpp",
+
+        "src/cpp/utils/IPFinder.cpp",
+        "src/cpp/utils/md5.cpp",
+        "src/cpp/utils/StringMatching.cpp",
+        "src/cpp/utils/IPLocator.cpp",
+        "src/cpp/utils/System.cpp",
+        "src/cpp/utils/SystemInfo.cpp",
+        "src/cpp/utils/TimedConditionVariable.cpp",
+        "src/cpp/utils/string_convert.cpp",
+        "src/cpp/utils/UnitsParser.cpp",
+
+        "src/cpp/dds/core/types.cpp",
+        "src/cpp/dds/core/Exception.cpp",
+        "src/cpp/dds/domain/DomainParticipant.cpp",
+        "src/cpp/dds/pub/Publisher.cpp",
+        "src/cpp/dds/pub/AnyDataWriter.cpp",
+        "src/cpp/dds/pub/DataWriter.cpp",
+        "src/cpp/dds/sub/Subscriber.cpp",
+        "src/cpp/dds/sub/DataReader.cpp",
+        "src/cpp/dds/topic/Topic.cpp",
+
+        "src/cpp/statistics/fastdds/domain/DomainParticipant.cpp",
+        "src/cpp/statistics/fastdds/publisher/qos/DataWriterQos.cpp",
+        "src/cpp/statistics/fastdds/subscriber/qos/DataReaderQos.cpp",
+    ] + [
+        "src/cpp/rtps/transport/shared_mem/test_SharedMemTransport.cpp",
+        "src/cpp/rtps/transport/shared_mem/SharedMemTransport.cpp"
+    ] + glob([
+        "src/cpp/fastdds/topic/DDSSQLFilter/*.cpp",
+    ]),
+    includes = [
+        "include",
+        "src/cpp",
+        "src/cpp/utils",
+        "thirdparty/filewatch",
+        "thirdparty/nlohmann-json",
+        "thirdparty/boost/include",
+        "thirdparty/taocpp-pegtl",
+        "thirdparty/taocpp-pegtl/pegtl",
+        "thirdparty/taocpp-pegtl/pegtl/contrib",
+        "thirdparty/taocpp-pegtl/pegtl/internal",
+    ],
+    deps = [
+        "@fastcdr//:fastcdr",
+        "@foonathan_memory",
+        "@tinyxml2",
+        "@asio//:asio",
+    ]
+)
