diff --git a/src/misc/macros/debug.h b/src/misc/macros/debug.h new file mode 100644 index 0000000..b0f7d5b --- /dev/null +++ b/src/misc/macros/debug.h @@ -0,0 +1,11 @@ +#ifdef __GNUC__ // GCC and Clang + #define BREAKPOINT() __builtin_debugtrap() +#elif defined(_MSC_VER) // MSVC + #define BREAKPOINT() __debugbreak() +#elif defined(__APPLE__) && defined(__MACH__) // macOS with Clang and LLDB + #include + #define BREAKPOINT() raise(SIGTRAP) +#else + #include + #define BREAKPOINT() std::raise(SIGTRAP) +#endif diff --git a/src/misc/macros/meson.build b/src/misc/macros/meson.build new file mode 100644 index 0000000..f91a3b9 --- /dev/null +++ b/src/misc/macros/meson.build @@ -0,0 +1,21 @@ +# *********************************************************************** +# +# Copyright (C) 2025 -- The 4D-STAR Collaboration +# File Author: Emily Boudreaux +# Last Modified: March 19, 2025 +# +# 4DSSE is free software; you can use it and/or modify +# it under the terms and restrictions the GNU General Library Public +# License version 3 (GPLv3) as published by the Free Software Foundation. +# +# 4DSSE is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this software; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# *********************************************************************** # +macros_dep = declare_dependency(include_directories: include_directories('.')) diff --git a/src/misc/macros/warning_control.h b/src/misc/macros/warning_control.h new file mode 100644 index 0000000..23bf5a8 --- /dev/null +++ b/src/misc/macros/warning_control.h @@ -0,0 +1,16 @@ +#ifndef WARNING_CONTROL_H +#define WARNING_CONTROL_H + +#if defined(__GNUC__) || defined(__clang__) + #define DEPRECATION_WARNING_OFF _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") + #define DEPRECATION_WARNING_ON _Pragma("GCC diagnostic pop") +#elif defined(_MSC_VER) + #define DEPRECATION_WARNING_OFF __pragma(warning(push)) __pragma(warning(disable: 4996)) + #define DEPRECATION_WARNING_ON __pragma(warning(pop)) +#else + #define DEPRECATION_WARNING_OFF + #define DEPRECATION_WARNING_ON +#endif + +#endif // WARNING_CONTROL_H diff --git a/src/misc/meson.build b/src/misc/meson.build new file mode 100644 index 0000000..196a8e4 --- /dev/null +++ b/src/misc/meson.build @@ -0,0 +1,2 @@ +# IMPORTANT: DO NOT MAKE MISC DEPEND ON ANY OTHER MODULE AS IT IS THE FIRST MODULE TO BE BUILT +subdir('macros')