#ifndef TERMKIT_DEBUG_H
#define TERMKIT_DEBUG_H

#ifdef __APPLE__
    #include "TargetConditionals.h"
#endif

//
// Platform macros
//

#ifdef __APPLE__

    #if TARGET_OS_IPHONE
        #define TERMKIT_IOS

    #elif TARGET_IPHONE_SIMULATOR
        #define TERMKIT_IOS

    #elif TARGET_OS_MAC
        #define TERMKIT_MAC

    #endif

#elif __linux

    #define TERMKIT_LINUX

#endif

//
// Asserts
//

#ifdef DEBUG

    #ifdef __APPLE__

        #if TARGET_OS_IPHONE
            #include <signal.h>
            #define TERMKIT_ASSERT(b) { if (!(b)) raise(SIGINT); }

        #elif TARGET_IPHONE_SIMULATOR
            #include <signal.h>
            #define TERMKIT_ASSERT(b) { if (!(b)) raise(SIGINT); }

        #elif TARGET_OS_MAC
            #include <signal.h>
            #define TERMKIT_ASSERT(b) { if (!(b)) raise(SIGINT); }

        #endif

    #elif __linux

        #define TERMKIT_ASSERT(b) { if (!(b)) kill(getpid(), SIGINT); }

    #endif

#else // RELEASE

    #define TERMKIT_ASSERT(b) // nothing

#endif

#define TERMKIT_NEVER TERMKIT_ASSERT(false)

#endif // TERMKIT_DEBUG_H
