Skip to content

Commit

Permalink
Fix checking whether kqueue is available.
Browse files Browse the repository at this point in the history
It seems like the newer OS X versions don't put headers into the
system include directories. Switch to using a test file instead.
  • Loading branch information
SadieCat committed Jul 21, 2015
1 parent 539abb9 commit 3fbba60
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 16 deletions.
18 changes: 2 additions & 16 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -382,22 +382,8 @@ print "yes\n" if $config{HAS_STRLCPY} eq "true";
print "no\n" if $config{HAS_STRLCPY} eq "false";

printf "Checking if kqueue exists... ";
$has_kqueue = 0;
$fail = 0;
open(KQUEUE, "</usr/include/sys/event.h") or $fail = 1;
if (!$fail) {
while (defined(my $line = <KQUEUE>)) {
chomp($line);
# try and find the delcaration of:
# int kqueue(void);
if ($line =~ /int(\0x9|\s)+kqueue/) {
$has_kqueue = 1;
}
}
close(KQUEUE);
}
print "yes\n" if $has_kqueue == 1;
print "no\n" if $has_kqueue == 0;
$has_kqueue = test_compile('kqueue');
print $has_kqueue ? "yes\n" : "no\n";

printf "Checking for epoll support... ";
$has_epoll = test_compile('epoll');
Expand Down
26 changes: 26 additions & 0 deletions make/check_kqueue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2015 Peter Powell <petpow@saberuk.com>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation, version 2.
*
* This program 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/


#include <sys/types.h>
#include <sys/event.h>

int main() {
int fd = kqueue();
return (fd < 0);
}

0 comments on commit 3fbba60

Please sign in to comment.