aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-04-28 22:01:40 +0200
committerHampusM <hampus@hampusmat.com>2022-04-28 22:01:40 +0200
commit1f97ab2ef846462d7a599fbd3ac9415da8f0953b (patch)
tree10641b65e57f642aaa402d2b4b945496cc7c6bfc
parentd2a87d5803c7aaa9a47791a5a0f1494c19671ebc (diff)
build: change to static library
-rw-r--r--CMakeLists.txt41
-rw-r--r--include/yacppdic/detail/container-impl.hpp8
-rw-r--r--include/yacppdic/object_type.hpp2
-rw-r--r--src/container.cpp17
-rw-r--r--src/object_type.cpp (renamed from include/yacppdic/detail/object_type-impl.hpp)2
5 files changed, 54 insertions, 16 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9810762..25ead17 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,12 +1,45 @@
cmake_minimum_required(VERSION 3.2.0)
+set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+
project(yacppdic CXX)
-add_library(${PROJECT_NAME} INTERFACE)
+add_library(${PROJECT_NAME} STATIC)
+
+target_sources(
+ ${PROJECT_NAME}
+ PRIVATE
+ src/container.cpp
+ src/object_type.cpp
+)
+
+target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20)
+
+target_compile_options(
+ ${PROJECT_NAME}
+ PRIVATE
+ -Wall -Wextra -Wpedantic -Wshadow
+ -Wold-style-cast -Wcast-align -Wno-unused
+ -Wconversion -Wcast-qual -Wctor-dtor-privacy
+ -Wdisabled-optimization -Wformat=2 -Winit-self
+ -Wmissing-declarations -Wmissing-include-dirs
+ -Woverloaded-virtual -Wredundant-decls
+ -Wsign-conversion -Wsign-promo
+ -Wstrict-overflow=5 -Wswitch-default
+ -Wundef -Werror
+ -pedantic -fsanitize=address -fno-exceptions -stdlib=libc++
+)
+
+target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address -stdlib=libc++)
-target_include_directories(
- ${PROJECT_NAME}
- INTERFACE
+target_include_directories(${PROJECT_NAME}
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
diff --git a/include/yacppdic/detail/container-impl.hpp b/include/yacppdic/detail/container-impl.hpp
index 897b8c3..584c0d0 100644
--- a/include/yacppdic/detail/container-impl.hpp
+++ b/include/yacppdic/detail/container-impl.hpp
@@ -83,12 +83,4 @@ auto Container::get() const noexcept -> AFactory
return wrapper->get();
}
-void Container::add(
- BaseObjectType type,
- const WrapperPtr<IGenericWrapper> &wrapper
-) noexcept
-{
- _bindings.insert({ type, wrapper });
-}
-
} // namespace yacppdic
diff --git a/include/yacppdic/object_type.hpp b/include/yacppdic/object_type.hpp
index eb4ce0c..5107dbf 100644
--- a/include/yacppdic/object_type.hpp
+++ b/include/yacppdic/object_type.hpp
@@ -30,5 +30,3 @@ class ObjectTypeHasher
public:
auto operator()(const BaseObjectType &object_type) const noexcept -> std::size_t;
};
-
-#include "yacppdic/detail/object_type-impl.hpp"
diff --git a/src/container.cpp b/src/container.cpp
new file mode 100644
index 0000000..d906f1e
--- /dev/null
+++ b/src/container.cpp
@@ -0,0 +1,17 @@
+#include "yacppdic/container.hpp"
+
+#include "yacppdic/detail/internal/wrapper/function_wrapper.hpp"
+#include "yacppdic/detail/internal/wrapper/object_wrapper.hpp"
+
+namespace yacppdic
+{
+
+void Container::add(
+ BaseObjectType type,
+ const WrapperPtr<IGenericWrapper> &wrapper
+) noexcept
+{
+ _bindings.insert({ type, wrapper });
+}
+
+} // namespace yacppdic
diff --git a/include/yacppdic/detail/object_type-impl.hpp b/src/object_type.cpp
index f12f99e..4384e37 100644
--- a/include/yacppdic/detail/object_type-impl.hpp
+++ b/src/object_type.cpp
@@ -1,5 +1,3 @@
-#pragma once
-
#include "yacppdic/object_type.hpp"
BaseObjectType::BaseObjectType(const std::type_info &type_info) noexcept