Skip to content

Commit 4550779

Browse files
committed
Fix runloop integration for libdispatch from swift
1 parent 69f7130 commit 4550779

File tree

5 files changed

+42
-24
lines changed

5 files changed

+42
-24
lines changed

.travis.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
language: cpp
2-
dist: trusty
2+
dist: xenial
33
compiler:
44
- clang
55
- gcc
@@ -18,22 +18,31 @@ matrix:
1818
sudo: required
1919
before_install:
2020
- sudo apt-get -qq update
21-
- sudo apt-get install -y cmake pkg-config libgnutls28-dev libgmp-dev libffi-dev libicu-dev libxml2-dev libxslt1-dev libssl-dev libavahi-client-dev zlib1g-dev libblocksruntime-dev
21+
- sudo apt-get install -y cmake pkg-config libgnutls28-dev libgmp-dev libffi-dev libicu-dev libxml2-dev libxslt1-dev libssl-dev libavahi-client-dev zlib1g-dev
2222
- >
2323
if [ $LIBRARY_COMBO = 'gnu-gnu-gnu' ];
2424
then
2525
if [ $CC = 'gcc' ];
2626
then
2727
sudo apt-get install -y gobjc;
2828
fi;
29-
sudo apt-get install -y libobjc-4.8-dev;
29+
sudo apt-get install -y libobjc-4.8-dev libblocksruntime-dev;
3030
else
3131
sudo apt-get install -y libkqueue-dev libpthread-workqueue-dev;
3232
fi;
33+
# libdispatch requires a fairly recent version of cmake
34+
- >
35+
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ];
36+
then
37+
curl -LO https://cmake.org/files/v3.15/cmake-3.15.5-Linux-x86_64.tar.gz;
38+
tar xf cmake-3.15.5-Linux-x86_64.tar.gz;
39+
mv cmake-3.15.5-Linux-x86_64 $HOME/cmake;
40+
export PATH=$HOME/cmake/:$HOME/cmake/bin:$PATH
41+
fi;
3342
install: ./travis-deps.sh
3443
before_script: >
35-
export LIBRARY_PATH=$HOME/staging/lib:$LIBRARY_PATH;
36-
export LD_LIBRARY_PATH=$HOME/staging/lib:$LD_LIBRARY_PATH;
44+
export LIBRARY_PATH=$HOME/staging/lib:$HOME/staging/lib64:$LIBRARY_PATH;
45+
export LD_LIBRARY_PATH=$HOME/staging/lib:$HOME/staging/lib64:$LD_LIBRARY_PATH;
3746
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ];
3847
then
3948
export CPATH=$HOME/staging/include;

ChangeLog

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
2019-11-26 Niels Grewe <[email protected]>
2+
3+
* Source/NSRunLoop.m:
4+
* Tests/base/NSRunLoop/dispatch.m:
5+
Fix runloop integration for libdispatch from swift-corelibs
6+
* .travis.yml:
7+
* travis-deps.yml:
8+
Fix CI related to libdispatch.
9+
110
2019-11-15 Frederik Seiffert <[email protected]>
211

312
* configure.ac: check for unwind.h

Source/NSRunLoop.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
#include <math.h>
6363
#include <time.h>
6464

65-
#if HAVE_LIBDISPATCH_RUNLOOP
65+
#if GS_USE_LIBDISPATCH_RUNLOOP
6666
# define RL_INTEGRATE_DISPATCH 1
6767
# ifdef HAVE_DISPATCH_H
6868
# include <dispatch.h>
@@ -403,7 +403,7 @@ + (void*) mainQueueFileDescriptor
403403
#if HAVE_DISPATCH_GET_MAIN_QUEUE_HANDLE_NP
404404
return (void*)(uintptr_t)dispatch_get_main_queue_handle_np();
405405
#elif HAVE__DISPATCH_GET_MAIN_QUEUE_HANDLE_4CF
406-
return (void*)_dispatch_get_main_queue_handle_4CF();
406+
return (void*)(uintptr_t)_dispatch_get_main_queue_handle_4CF();
407407
#else
408408
#error libdispatch missing main queue handle function
409409
#endif
@@ -417,7 +417,7 @@ - (void) receivedEvent: (void*)data
417417
#if HAVE_DISPATCH_MAIN_QUEUE_DRAIN_NP
418418
dispatch_main_queue_drain_np();
419419
#elif HAVE__DISPATCH_MAIN_QUEUE_CALLBACK_4CF
420-
_dispatch_main_queue_callback_4CF(NULL)
420+
_dispatch_main_queue_callback_4CF(NULL);
421421
#else
422422
#error libdispatch missing main queue callback function
423423
#endif

Tests/base/NSRunLoop/dispatch.m

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88

99
const NSTimeInterval kDelay = 0.01;
1010

11-
#if HAVE_LIBDISPATCH_RUNLOOP && __has_feature(blocks)
11+
#if GS_USE_LIBDISPATCH_RUNLOOP && __has_feature(blocks)
1212
# define DISPATCH_RL_INTEGRATION 1
13-
# ifdef HAVE_DISPATCH_H
13+
# if __has_include(<dispatch.h>)
1414
# include <dispatch.h>
1515
# else
16-
# ifdef HAVE_DISPATCH_DISPATCH_H
17-
# include <dispatch/dispatch.h>
18-
# endif
16+
# include <dispatch/dispatch.h>
1917
# endif
2018
#endif
2119

travis-deps.sh

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33
set -ex
44

55
DEP_SRC=$HOME/dependency_source/
6+
DEP_ROOT=$HOME/staging
67

78
install_gnustep_make() {
89
cd $DEP_SRC
910
git clone https://github.com/gnustep/make.git
1011
cd make
11-
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ]
12+
if [ "$LIBRARY_COMBO" = 'ng-gnu-gnu' ]
1213
then
1314
ADDITIONAL_FLAGS="--enable-objc-nonfragile-abi"
1415
else
1516
ADDITIONAL_FLAGS=""
1617
fi
17-
./configure --prefix=$HOME/staging --with-library-combo=$LIBRARY_COMBO $ADDITIONAL_FLAGS
18+
./configure --prefix=$DEP_ROOT --with-library-combo=$LIBRARY_COMBO $ADDITIONAL_FLAGS
1819
make install
1920
}
2021

@@ -31,26 +32,27 @@ install_ng_runtime() {
3132
export CC="clang"
3233
export CXX="clang++"
3334
export CXXFLAGS="-std=c++11"
34-
cmake -DTESTS=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGNUSTEP_INSTALL_TYPE=NONE -DCMAKE_INSTALL_PREFIX:PATH=$HOME/staging ../
35+
cmake -DTESTS=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGNUSTEP_INSTALL_TYPE=NONE -DCMAKE_INSTALL_PREFIX:PATH=$DEP_ROOT ../
3536
make install
3637
}
3738

3839
install_libdispatch() {
3940
cd $DEP_SRC
40-
git clone https://github.com/ngrewe/libdispatch.git
41-
mkdir libdispatch/build
42-
cd libdispatch/build
41+
# will reference upstream after https://github.com/apple/swift-corelibs-libdispatch/pull/534 is merged
42+
git clone -b system-blocksruntime https://github.com/ngrewe/swift-corelibs-libdispatch.git
43+
mkdir swift-corelibs-libdispatch/build
44+
cd swift-corelibs-libdispatch/build
4345
export CC="clang"
4446
export CXX="clang++"
45-
export LIBRARY_PATH=$HOME/staging/lib;
46-
export LD_LIBRARY_PATH=$HOME/staging/lib:$LD_LIBRARY_PATH;
47-
export CPATH=$HOME/staging/include;
48-
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX:PATH=$HOME/staging ../
47+
export LIBRARY_PATH=$DEP_ROOT/lib;
48+
export LD_LIBRARY_PATH=$DEP_ROOT/lib:$LD_LIBRARY_PATH;
49+
export CPATH=$DEP_ROOT/include;
50+
cmake -DBUILD_TESTING=off -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX:PATH=$HOME/staging -DINSTALL_PRIVATE_HEADERS=1 -DBlocksRuntime_INCLUDE_DIR=$DEP_ROOT/include -DBlocksRuntime_LIBRARIES=$DEP_ROOT/lib/libobjc.so ../
4951
make install
5052
}
5153

5254
mkdir -p $DEP_SRC
53-
if [ $LIBRARY_COMBO = 'ng-gnu-gnu' ]
55+
if [ "$LIBRARY_COMBO" = 'ng-gnu-gnu' ]
5456
then
5557
install_ng_runtime
5658
install_libdispatch

0 commit comments

Comments
 (0)