project "event"
    kind "StaticLib"

    local EVENT_VERSION = (io.readfile("configure") or ""):match("NUMERIC_VERSION%s+0x(%x+)")
    if not EVENT_VERSION then
        print("Warning: Could not determine libevent version from the configure file, assuming 2.1.12.")
        EVENT_VERSION = "02010c00" -- 2.1.12
    end
    EVENT_VERSION = tonumber(EVENT_VERSION, 16)
    if EVENT_VERSION>=0x02020000 then
        print("Warning: Using libevent version 2.2.x is not supported, please use 2.1.x, otherwise you may encounter issues.")
    end
    if EVENT_VERSION>=0x02010000 and WINXP_SUPPORT then
        print("Warning: libevent 2.1 uses some new APIs which require Windows Vista or later, so WinXP support will be not valid.")
    end

    includedirs { "include", "compat" }

    files { "event.c", "evthread.c", "buffer.c", "bufferevent.c", "bufferevent_sock.c",
            "bufferevent_filter.c", "bufferevent_pair.c", "listener.c", "bufferevent_ratelim.c",
            "evmap.c", "log.c", "evutil.c", "evutil_rand.c", "strlcpy.c", "signal.c", 
            "event_tagging.c", "http.c", "evdns.c", "evrpc.c" }

    if EVENT_VERSION>=0x02010000 then
        files { "evutil_time.c" }
    end

    filter "system:windows"
        prebuildcommands { "xcopy /E /Y $(ProjectDir)..\\event\\WIN32-Code $(ProjectDir)..\\event\\include" }
        files { "win32select.c", "evthread_win32.c", "buffer_iocp.c", "event_iocp.c", "bufferevent_async.c" }
        if EVENT_VERSION>=0x02010000 then
            prebuildcommands { "xcopy /E /Y $(ProjectDir)..\\event\\WIN32-Code\\nmake $(ProjectDir)..\\event\\include" }
            defines { "UINT32_MAX=0xffffffffU" } -- quirk of libevent 2.1
        end
        if EVENT_VERSION<0x02010000 then
            defines { "WIN32" } -- quirk of old libevent
        end

    filter "system:linux"
        files { "evthread_pthread.c", "epoll.c", "epoll_sub.c", "poll.c", "select.c" }

    filter "system:macosx"
        files { "evthread_pthread.c", "kqueue.c", "poll.c", "select.c" }
