Edit

kc3-lang/libevent/cmake/CheckWorkingKqueue.cmake

Branch :

  • Show log

    Commit

  • Author : Christopher Chavez
    Date : 2021-11-11 20:12:14
    Hash : 89505f85
    Message : CheckWorkingKqueue.cmake: fix missing headers Avoid implicitly declaring functions memset() and exit() as it is considered an error by some compilers (e.g. Xcode clang 12 and later)

  • cmake/CheckWorkingKqueue.cmake
  • include(CheckCSourceRuns)
    
    check_c_source_runs(
    "
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/time.h>
    #include <sys/event.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <fcntl.h>
    
    int
    main(int argc, char **argv)
    {
        int kq;
        int n;
        int fd[2];
        struct kevent ev;
        struct timespec ts;
        char buf[80000];
    
        if (pipe(fd) == -1)
            exit(1);
        if (fcntl(fd[1], F_SETFL, O_NONBLOCK) == -1)
            exit(1);
    
        while ((n = write(fd[1], buf, sizeof(buf))) == sizeof(buf))
            ;
    
        if ((kq = kqueue()) == -1)
            exit(1);
    
        memset(&ev, 0, sizeof(ev));
        ev.ident = fd[1];
        ev.filter = EVFILT_WRITE;
        ev.flags = EV_ADD | EV_ENABLE;
        n = kevent(kq, &ev, 1, NULL, 0, NULL);
        if (n == -1)
            exit(1);
    
        read(fd[0], buf, sizeof(buf));
    
        ts.tv_sec = 0;
        ts.tv_nsec = 0;
        n = kevent(kq, NULL, 0, &ev, 1, &ts);
        if (n == -1 || n == 0)
            exit(1);
    
        exit(0);
    }
    
    " EVENT__HAVE_WORKING_KQUEUE)