diff --git a/CMakeLists.txt b/CMakeLists.txt
index 09c69ff..ff285d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -243,6 +243,12 @@ target_include_directories(
$
)
+target_include_directories(
+ ${target_name}
+ PRIVATE
+ src
+)
+
set(
warning_options
$<$>:-Wall -Wextra -Werror=return-type -Wundef>
diff --git a/src/binary/elf.cpp b/src/binary/elf.cpp
index ea2c1e6..27c2a20 100644
--- a/src/binary/elf.cpp
+++ b/src/binary/elf.cpp
@@ -1,4 +1,4 @@
-#include "elf.hpp"
+#include "binary/elf.hpp"
#if IS_LINUX
diff --git a/src/binary/elf.hpp b/src/binary/elf.hpp
index 094cf56..f638756 100644
--- a/src/binary/elf.hpp
+++ b/src/binary/elf.hpp
@@ -1,8 +1,8 @@
#ifndef ELF_HPP
#define ELF_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#if IS_LINUX
diff --git a/src/binary/mach-o.cpp b/src/binary/mach-o.cpp
index 941c385..7a8cda0 100644
--- a/src/binary/mach-o.cpp
+++ b/src/binary/mach-o.cpp
@@ -1,7 +1,7 @@
-#include "mach-o.hpp"
+#include "binary/mach-o.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#if IS_APPLE
diff --git a/src/binary/mach-o.hpp b/src/binary/mach-o.hpp
index 7705ea4..62a8862 100644
--- a/src/binary/mach-o.hpp
+++ b/src/binary/mach-o.hpp
@@ -1,8 +1,8 @@
#ifndef MACHO_HPP
#define MACHO_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#if IS_APPLE
diff --git a/src/binary/module_base.cpp b/src/binary/module_base.cpp
index 8b3d00b..12e2f7c 100644
--- a/src/binary/module_base.cpp
+++ b/src/binary/module_base.cpp
@@ -1,7 +1,7 @@
-#include "module_base.hpp"
+#include "binary/module_base.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
@@ -12,13 +12,13 @@
#include
#include
#if IS_APPLE
- #include "mach-o.hpp"
+ #include "binary/mach-o.hpp"
#else
- #include "elf.hpp"
+ #include "binary/elf.hpp"
#endif
#elif IS_WINDOWS
#include
- #include "pe.hpp"
+ #include "binary/pe.hpp"
#endif
namespace cpptrace {
diff --git a/src/binary/module_base.hpp b/src/binary/module_base.hpp
index 42fa796..5053be0 100644
--- a/src/binary/module_base.hpp
+++ b/src/binary/module_base.hpp
@@ -1,8 +1,8 @@
#ifndef IMAGE_MODULE_BASE_HPP
#define IMAGE_MODULE_BASE_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/binary/object.cpp b/src/binary/object.cpp
index 766e7a0..9cce4aa 100644
--- a/src/binary/object.cpp
+++ b/src/binary/object.cpp
@@ -1,8 +1,8 @@
-#include "object.hpp"
+#include "binary/object.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
-#include "module_base.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
+#include "binary/module_base.hpp"
#include
#include
diff --git a/src/binary/object.hpp b/src/binary/object.hpp
index bbbfdae..9200642 100644
--- a/src/binary/object.hpp
+++ b/src/binary/object.hpp
@@ -1,9 +1,9 @@
#ifndef OBJECT_HPP
#define OBJECT_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
-#include "module_base.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
+#include "binary/module_base.hpp"
#include
#include
diff --git a/src/binary/pe.cpp b/src/binary/pe.cpp
index c1316a3..04d9961 100644
--- a/src/binary/pe.cpp
+++ b/src/binary/pe.cpp
@@ -1,8 +1,8 @@
-#include "pe.hpp"
+#include "binary/pe.hpp"
-#include "../utils/common.hpp"
-#include "../utils/error.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
#if IS_WINDOWS
#include
diff --git a/src/binary/pe.hpp b/src/binary/pe.hpp
index 9426c14..c81d335 100644
--- a/src/binary/pe.hpp
+++ b/src/binary/pe.hpp
@@ -1,8 +1,8 @@
#ifndef PE_HPP
#define PE_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#if IS_WINDOWS
#include
diff --git a/src/binary/safe_dl.cpp b/src/binary/safe_dl.cpp
index a4ecf0c..4ed6db7 100644
--- a/src/binary/safe_dl.cpp
+++ b/src/binary/safe_dl.cpp
@@ -1,8 +1,8 @@
-#include "safe_dl.hpp"
+#include "binary/safe_dl.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
-#include "../utils/program_name.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
+#include "platform/program_name.hpp"
#include
#include
diff --git a/src/binary/safe_dl.hpp b/src/binary/safe_dl.hpp
index 6e789d0..714bfff 100644
--- a/src/binary/safe_dl.hpp
+++ b/src/binary/safe_dl.hpp
@@ -1,7 +1,7 @@
#ifndef SAFE_DL_HPP
#define SAFE_DL_HPP
-#include "../utils/common.hpp"
+#include "utils/common.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/cpptrace.cpp b/src/cpptrace.cpp
index 0941f0e..d919987 100644
--- a/src/cpptrace.cpp
+++ b/src/cpptrace.cpp
@@ -14,7 +14,7 @@
#include "symbols/symbols.hpp"
#include "unwind/unwind.hpp"
#include "demangle/demangle.hpp"
-#include "utils/exception_type.hpp"
+#include "platform/exception_type.hpp"
#include "utils/common.hpp"
#include "utils/utils.hpp"
#include "binary/object.hpp"
diff --git a/src/ctrace.cpp b/src/ctrace.cpp
index a84b4b0..eacf15e 100644
--- a/src/ctrace.cpp
+++ b/src/ctrace.cpp
@@ -5,7 +5,7 @@
#include "symbols/symbols.hpp"
#include "unwind/unwind.hpp"
#include "demangle/demangle.hpp"
-#include "utils/exception_type.hpp"
+#include "platform/exception_type.hpp"
#include "utils/common.hpp"
#include "utils/utils.hpp"
#include "binary/object.hpp"
diff --git a/src/demangle/demangle_with_cxxabi.cpp b/src/demangle/demangle_with_cxxabi.cpp
index a2e5155..15dfb63 100644
--- a/src/demangle/demangle_with_cxxabi.cpp
+++ b/src/demangle/demangle_with_cxxabi.cpp
@@ -1,6 +1,6 @@
#ifdef CPPTRACE_DEMANGLE_WITH_CXXABI
-#include "demangle.hpp"
+#include "demangle/demangle.hpp"
#include
diff --git a/src/demangle/demangle_with_nothing.cpp b/src/demangle/demangle_with_nothing.cpp
index 8ccd23d..a3fcd98 100644
--- a/src/demangle/demangle_with_nothing.cpp
+++ b/src/demangle/demangle_with_nothing.cpp
@@ -1,6 +1,6 @@
#ifdef CPPTRACE_DEMANGLE_WITH_NOTHING
-#include "demangle.hpp"
+#include "demangle/demangle.hpp"
#include
diff --git a/src/demangle/demangle_with_winapi.cpp b/src/demangle/demangle_with_winapi.cpp
index 6cd9769..a41f93b 100644
--- a/src/demangle/demangle_with_winapi.cpp
+++ b/src/demangle/demangle_with_winapi.cpp
@@ -1,6 +1,6 @@
#ifdef CPPTRACE_DEMANGLE_WITH_WINAPI
-#include "demangle.hpp"
+#include "demangle/demangle.hpp"
#include
diff --git a/src/utils/dbghelp_syminit_manager.hpp b/src/platform/dbghelp_syminit_manager.hpp
similarity index 94%
rename from src/utils/dbghelp_syminit_manager.hpp
rename to src/platform/dbghelp_syminit_manager.hpp
index e43fb2b..7a1ca93 100644
--- a/src/utils/dbghelp_syminit_manager.hpp
+++ b/src/platform/dbghelp_syminit_manager.hpp
@@ -1,8 +1,8 @@
#ifndef DBGHELP_SYMINIT_MANAGER_HPP
#define DBGHELP_SYMINIT_MANAGER_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
diff --git a/src/utils/exception_type.hpp b/src/platform/exception_type.hpp
similarity index 94%
rename from src/utils/exception_type.hpp
rename to src/platform/exception_type.hpp
index a8e9d82..b42f8de 100644
--- a/src/utils/exception_type.hpp
+++ b/src/platform/exception_type.hpp
@@ -8,7 +8,7 @@
#include
#endif
-#include "../demangle/demangle.hpp"
+#include "demangle/demangle.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/utils/path.hpp b/src/platform/path.hpp
similarity index 97%
rename from src/utils/path.hpp
rename to src/platform/path.hpp
index be23302..d4cb5ee 100644
--- a/src/utils/path.hpp
+++ b/src/platform/path.hpp
@@ -1,7 +1,7 @@
#ifndef PATH_HPP
#define PATH_HPP
-#include "common.hpp"
+#include "utils/common.hpp"
#if IS_WINDOWS
#include
diff --git a/src/platform/platform.hpp b/src/platform/platform.hpp
new file mode 100644
index 0000000..4d6ddfe
--- /dev/null
+++ b/src/platform/platform.hpp
@@ -0,0 +1,38 @@
+#ifndef PLATFORM_HPP
+#define PLATFORM_HPP
+
+#define IS_WINDOWS 0
+#define IS_LINUX 0
+#define IS_APPLE 0
+
+#if defined(_WIN32)
+ #undef IS_WINDOWS
+ #define IS_WINDOWS 1
+#elif defined(__linux)
+ #undef IS_LINUX
+ #define IS_LINUX 1
+#elif defined(__APPLE__)
+ #undef IS_APPLE
+ #define IS_APPLE 1
+#else
+ #error "Unexpected platform"
+#endif
+
+#define IS_CLANG 0
+#define IS_GCC 0
+#define IS_MSVC 0
+
+#if defined(__clang__)
+ #undef IS_CLANG
+ #define IS_CLANG 1
+#elif defined(__GNUC__) || defined(__GNUG__)
+ #undef IS_GCC
+ #define IS_GCC 1
+#elif defined(_MSC_VER)
+ #undef IS_MSVC
+ #define IS_MSVC 1
+#else
+ #error "Unsupported compiler"
+#endif
+
+#endif
diff --git a/src/utils/program_name.hpp b/src/platform/program_name.hpp
similarity index 100%
rename from src/utils/program_name.hpp
rename to src/platform/program_name.hpp
diff --git a/src/snippets/snippet.cpp b/src/snippets/snippet.cpp
index 83b61d7..ffa19d3 100644
--- a/src/snippets/snippet.cpp
+++ b/src/snippets/snippet.cpp
@@ -1,4 +1,4 @@
-#include "snippet.hpp"
+#include "snippets/snippet.hpp"
#include
#include
@@ -8,8 +8,8 @@
#include
#include
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/symbols/dwarf/debug_map_resolver.cpp b/src/symbols/dwarf/debug_map_resolver.cpp
index f56bf13..1bc6a6e 100644
--- a/src/symbols/dwarf/debug_map_resolver.cpp
+++ b/src/symbols/dwarf/debug_map_resolver.cpp
@@ -1,14 +1,14 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF
-#include "resolver.hpp"
+#include "symbols/dwarf/resolver.hpp"
#include
-#include "../symbols.hpp"
-#include "../../utils/common.hpp"
-#include "../../utils/error.hpp"
-#include "../../binary/object.hpp"
-#include "../../binary/mach-o.hpp"
-#include "../../utils/utils.hpp"
+#include "symbols/symbols.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "binary/object.hpp"
+#include "binary/mach-o.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/utils/dwarf.hpp b/src/symbols/dwarf/dwarf.hpp
similarity index 99%
rename from src/utils/dwarf.hpp
rename to src/symbols/dwarf/dwarf.hpp
index 28bbb9e..8583f1b 100644
--- a/src/utils/dwarf.hpp
+++ b/src/symbols/dwarf/dwarf.hpp
@@ -2,8 +2,8 @@
#define DWARF_HPP
#include
-#include "../utils/error.hpp"
-#include "../utils/utils.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/symbols/dwarf/dwarf_resolver.cpp b/src/symbols/dwarf/dwarf_resolver.cpp
index 163e27b..144a90d 100644
--- a/src/symbols/dwarf/dwarf_resolver.cpp
+++ b/src/symbols/dwarf/dwarf_resolver.cpp
@@ -1,16 +1,16 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF
-#include "resolver.hpp"
+#include "symbols/dwarf/resolver.hpp"
#include
-#include "../symbols.hpp"
-#include "../../utils/common.hpp"
-#include "../../utils/dwarf.hpp" // has dwarf #includes
-#include "../../utils/error.hpp"
-#include "../../utils/utils.hpp"
-#include "../../utils/path.hpp"
-#include "../../utils/program_name.hpp" // For CPPTRACE_MAX_PATH
-#include "../../binary/mach-o.hpp"
+#include "symbols/dwarf/dwarf.hpp" // has dwarf #includes
+#include "symbols/symbols.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
+#include "platform/path.hpp"
+#include "platform/program_name.hpp" // For CPPTRACE_MAX_PATH
+#include "binary/mach-o.hpp"
#include
#include
diff --git a/src/symbols/dwarf/resolver.hpp b/src/symbols/dwarf/resolver.hpp
index c58cc73..20734d3 100644
--- a/src/symbols/dwarf/resolver.hpp
+++ b/src/symbols/dwarf/resolver.hpp
@@ -2,8 +2,8 @@
#define SYMBOL_RESOLVER_HPP
#include
-#include "../symbols.hpp"
-#include "../../utils/common.hpp"
+#include "symbols/symbols.hpp"
+#include "utils/common.hpp"
#include
diff --git a/src/symbols/symbols.hpp b/src/symbols/symbols.hpp
index 657e112..dfe4a7b 100644
--- a/src/symbols/symbols.hpp
+++ b/src/symbols/symbols.hpp
@@ -7,7 +7,7 @@
#include
#include
-#include "../binary/object.hpp"
+#include "binary/object.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/symbols/symbols_core.cpp b/src/symbols/symbols_core.cpp
index 9275c2d..a77896e 100644
--- a/src/symbols/symbols_core.cpp
+++ b/src/symbols/symbols_core.cpp
@@ -1,10 +1,10 @@
-#include "symbols.hpp"
+#include "symbols/symbols.hpp"
#include
#include
-#include "../utils/common.hpp"
-#include "../binary/object.hpp"
+#include "utils/common.hpp"
+#include "binary/object.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/symbols/symbols_with_addr2line.cpp b/src/symbols/symbols_with_addr2line.cpp
index f580f60..8a47238 100644
--- a/src/symbols/symbols_with_addr2line.cpp
+++ b/src/symbols/symbols_with_addr2line.cpp
@@ -1,9 +1,9 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_ADDR2LINE
#include
-#include "symbols.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "symbols/symbols.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
@@ -20,7 +20,7 @@
#include
#endif
-#include "../binary/object.hpp"
+#include "binary/object.hpp"
namespace cpptrace {
namespace detail {
diff --git a/src/symbols/symbols_with_dbghelp.cpp b/src/symbols/symbols_with_dbghelp.cpp
index d00bb6f..877f552 100644
--- a/src/symbols/symbols_with_dbghelp.cpp
+++ b/src/symbols/symbols_with_dbghelp.cpp
@@ -1,8 +1,8 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_DBGHELP
#include
-#include "symbols.hpp"
-#include "../utils/dbghelp_syminit_manager.hpp"
+#include "symbols/symbols.hpp"
+#include "utils/dbghelp_syminit_manager.hpp"
#include
#include
diff --git a/src/symbols/symbols_with_dl.cpp b/src/symbols/symbols_with_dl.cpp
index b4b5eb2..8b3d35a 100644
--- a/src/symbols/symbols_with_dl.cpp
+++ b/src/symbols/symbols_with_dl.cpp
@@ -1,7 +1,7 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_LIBDL
#include
-#include "symbols.hpp"
+#include "symbols/symbols.hpp"
#include
#include
diff --git a/src/symbols/symbols_with_libbacktrace.cpp b/src/symbols/symbols_with_libbacktrace.cpp
index ce76442..360ff94 100644
--- a/src/symbols/symbols_with_libbacktrace.cpp
+++ b/src/symbols/symbols_with_libbacktrace.cpp
@@ -1,8 +1,8 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_LIBBACKTRACE
#include
-#include "symbols.hpp"
-#include "../utils/program_name.hpp"
+#include "symbols/symbols.hpp"
+#include "platform/program_name.hpp"
#include
#include
diff --git a/src/symbols/symbols_with_libdwarf.cpp b/src/symbols/symbols_with_libdwarf.cpp
index c6d8891..5456057 100644
--- a/src/symbols/symbols_with_libdwarf.cpp
+++ b/src/symbols/symbols_with_libdwarf.cpp
@@ -1,12 +1,12 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF
-#include "symbols.hpp"
+#include "symbols/symbols.hpp"
#include
#include "dwarf/resolver.hpp"
-#include "../utils/common.hpp"
-#include "../utils/error.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/symbols/symbols_with_nothing.cpp b/src/symbols/symbols_with_nothing.cpp
index f2d7741..c1c4c6c 100644
--- a/src/symbols/symbols_with_nothing.cpp
+++ b/src/symbols/symbols_with_nothing.cpp
@@ -1,7 +1,7 @@
#ifdef CPPTRACE_GET_SYMBOLS_WITH_NOTHING
#include
-#include "symbols.hpp"
+#include "symbols/symbols.hpp"
#include
diff --git a/src/unwind/unwind.hpp b/src/unwind/unwind.hpp
index 7f9450c..28bab60 100644
--- a/src/unwind/unwind.hpp
+++ b/src/unwind/unwind.hpp
@@ -1,8 +1,8 @@
#ifndef UNWIND_HPP
#define UNWIND_HPP
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_dbghelp.cpp b/src/unwind/unwind_with_dbghelp.cpp
index 676af22..6a87273 100644
--- a/src/unwind/unwind_with_dbghelp.cpp
+++ b/src/unwind/unwind_with_dbghelp.cpp
@@ -1,10 +1,10 @@
#ifdef CPPTRACE_UNWIND_WITH_DBGHELP
#include
-#include "unwind.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
-#include "../utils/dbghelp_syminit_manager.hpp"
+#include "unwind/unwind.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
+#include "utils/dbghelp_syminit_manager.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_execinfo.cpp b/src/unwind/unwind_with_execinfo.cpp
index 62632b3..d5734ba 100644
--- a/src/unwind/unwind_with_execinfo.cpp
+++ b/src/unwind/unwind_with_execinfo.cpp
@@ -1,8 +1,8 @@
#ifdef CPPTRACE_UNWIND_WITH_EXECINFO
-#include "unwind.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "unwind/unwind.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_libunwind.cpp b/src/unwind/unwind_with_libunwind.cpp
index fc22a58..f537abd 100644
--- a/src/unwind/unwind_with_libunwind.cpp
+++ b/src/unwind/unwind_with_libunwind.cpp
@@ -1,9 +1,9 @@
#ifdef CPPTRACE_UNWIND_WITH_LIBUNWIND
-#include "unwind.hpp"
-#include "../utils/common.hpp"
-#include "../utils/error.hpp"
-#include "../utils/utils.hpp"
+#include "unwind/unwind.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_nothing.cpp b/src/unwind/unwind_with_nothing.cpp
index 3b7c9b9..8099d4a 100644
--- a/src/unwind/unwind_with_nothing.cpp
+++ b/src/unwind/unwind_with_nothing.cpp
@@ -1,6 +1,6 @@
#ifdef CPPTRACE_UNWIND_WITH_NOTHING
-#include "unwind.hpp"
+#include "unwind/unwind.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_unwind.cpp b/src/unwind/unwind_with_unwind.cpp
index a6376b0..da3cc57 100644
--- a/src/unwind/unwind_with_unwind.cpp
+++ b/src/unwind/unwind_with_unwind.cpp
@@ -1,9 +1,9 @@
#ifdef CPPTRACE_UNWIND_WITH_UNWIND
-#include "unwind.hpp"
-#include "../utils/common.hpp"
-#include "../utils/error.hpp"
-#include "../utils/utils.hpp"
+#include "unwind/unwind.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/unwind/unwind_with_winapi.cpp b/src/unwind/unwind_with_winapi.cpp
index 2eaf5ee..e5888e9 100644
--- a/src/unwind/unwind_with_winapi.cpp
+++ b/src/unwind/unwind_with_winapi.cpp
@@ -1,9 +1,9 @@
#ifdef CPPTRACE_UNWIND_WITH_WINAPI
#include
-#include "unwind.hpp"
-#include "../utils/common.hpp"
-#include "../utils/utils.hpp"
+#include "unwind/unwind.hpp"
+#include "utils/common.hpp"
+#include "utils/utils.hpp"
#include
#include
diff --git a/src/utils/common.hpp b/src/utils/common.hpp
index ad4c191..05c6273 100644
--- a/src/utils/common.hpp
+++ b/src/utils/common.hpp
@@ -1,46 +1,14 @@
#ifndef COMMON_HPP
#define COMMON_HPP
-#define IS_WINDOWS 0
-#define IS_LINUX 0
-#define IS_APPLE 0
-
-#if defined(_WIN32)
- #undef IS_WINDOWS
- #define IS_WINDOWS 1
-#elif defined(__linux)
- #undef IS_LINUX
- #define IS_LINUX 1
-#elif defined(__APPLE__)
- #undef IS_APPLE
- #define IS_APPLE 1
-#else
- #error "Unexpected platform"
-#endif
-
-#define IS_CLANG 0
-#define IS_GCC 0
-#define IS_MSVC 0
-
-#if defined(__clang__)
- #undef IS_CLANG
- #define IS_CLANG 1
-#elif defined(__GNUC__) || defined(__GNUG__)
- #undef IS_GCC
- #define IS_GCC 1
-#elif defined(_MSC_VER)
- #undef IS_MSVC
- #define IS_MSVC 1
-#else
- #error "Unsupported compiler"
-#endif
-
#include
#include
#include
#include
+#include "platform/platform.hpp"
+
#define ESC "\033["
#define RESET ESC "0m"
#define RED ESC "31m"
diff --git a/src/utils/error.hpp b/src/utils/error.hpp
index 4365f93..19f017f 100644
--- a/src/utils/error.hpp
+++ b/src/utils/error.hpp
@@ -6,8 +6,8 @@
#include
#include
-#include "common.hpp"
-#include "microfmt.hpp"
+#include "utils/common.hpp"
+#include "utils/microfmt.hpp"
#if IS_MSVC
#define CPPTRACE_PFUNC __FUNCSIG__
diff --git a/src/utils/utils.hpp b/src/utils/utils.hpp
index 729e3d1..123f871 100644
--- a/src/utils/utils.hpp
+++ b/src/utils/utils.hpp
@@ -18,9 +18,9 @@
#include
#include
-#include "common.hpp"
-#include "error.hpp"
-#include "microfmt.hpp"
+#include "utils/common.hpp"
+#include "utils/error.hpp"
+#include "utils/microfmt.hpp"
#if IS_WINDOWS
#include