diff options
author | Tim Newsome <tim@sifive.com> | 2017-12-21 14:04:33 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-21 14:04:33 -0800 |
commit | b01075eaa5f60d1f809263a4bb98da2bd7dd1b1d (patch) | |
tree | 2789a3041a3a4c2112269548c3dbde4621c89773 | |
parent | 105536089b3fc1bfe65b27ce891e60d8136f0737 (diff) | |
parent | 7eceac758ca08c3feeb77167ee2eb9829b1d93bc (diff) | |
download | riscv-openocd-b01075eaa5f60d1f809263a4bb98da2bd7dd1b1d.zip riscv-openocd-b01075eaa5f60d1f809263a4bb98da2bd7dd1b1d.tar.gz riscv-openocd-b01075eaa5f60d1f809263a4bb98da2bd7dd1b1d.tar.bz2 |
Merge pull request #145 from riscv/rbb_win
Fix Windows build
-rw-r--r-- | .travis.yml | 33 | ||||
-rw-r--r-- | src/helper/replacements.h | 11 | ||||
-rw-r--r-- | src/jtag/drivers/remote_bitbang.c | 4 |
3 files changed, 40 insertions, 8 deletions
diff --git a/.travis.yml b/.travis.yml index a99f743..2ec1ede 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,16 @@ dist: trusty matrix: include: - os: linux - env: BUILD=x86_64-linux-gnu + env: + - BUILD=x86_64-linux-gnu + - EXECUTABLE=openocd compiler: gcc - os: linux - env: BUILD=i686-linux-gnu CFLAGS=-m32 + env: + - BUILD=i686-linux-gnu + - CFLAGS=-m32 + - EXECUTABLE=openocd addons: apt: packages: @@ -16,17 +21,33 @@ matrix: compiler: gcc - os: linux - env: BUILD=x86_64-linux-gnu + env: + - BUILD=x86_64-linux-gnu + - EXECUTABLE=openocd compiler: clang - os: linux - env: BUILD=i686-linux-gnu CFLAGS=-m32 + env: + - BUILD=i686-linux-gnu + - CFLAGS=-m32 + - EXECUTABLE=openocd compiler: clang addons: apt: packages: - gcc-multilib + - os: linux + env: + - BUILD=i686-w64-mingw + - CONFIGURE_ARGS="--build=i686-unknown-linux-gnu --host=i686-w64-mingw32" + - EXECUTABLE=openocd.exe + compiler: i686-w64-mingw32-gcc + addons: + apt: + packages: + - binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 + script: - - ./bootstrap && ./configure --enable-remote-bitbang --enable-jtag_vpi && make - - file src/openocd + - ./bootstrap && ./configure --enable-remote-bitbang --enable-jtag_vpi $CONFIGURE_ARGS && make + - file src/$EXECUTABLE diff --git a/src/helper/replacements.h b/src/helper/replacements.h index 1e2fbf2..f43b7e0 100644 --- a/src/helper/replacements.h +++ b/src/helper/replacements.h @@ -199,6 +199,17 @@ static inline int close_socket(int sock) #endif } +static inline void socket_block(int fd) +{ +#ifdef _WIN32 + unsigned long nonblock = 0; + ioctlsocket(fd, FIONBIO, &nonblock); +#else + int oldopts = fcntl(fd, F_GETFL, 0); + fcntl(fd, F_SETFL, oldopts & ~O_NONBLOCK); +#endif +} + static inline void socket_nonblock(int fd) { #ifdef _WIN32 diff --git a/src/jtag/drivers/remote_bitbang.c b/src/jtag/drivers/remote_bitbang.c index 5e78ccb..4e1995c 100644 --- a/src/jtag/drivers/remote_bitbang.c +++ b/src/jtag/drivers/remote_bitbang.c @@ -59,7 +59,7 @@ static int remote_bitbang_buf_full(void) /* Read any incoming data, placing it into the buffer. */ static void remote_bitbang_fill_buf(void) { - fcntl(remote_bitbang_fd, F_SETFL, O_NONBLOCK); + socket_nonblock(remote_bitbang_fd); while (!remote_bitbang_buf_full()) { unsigned contiguous_available_space; if (remote_bitbang_end >= remote_bitbang_start) { @@ -148,7 +148,7 @@ static int remote_bitbang_rread(void) } /* Enable blocking access. */ - fcntl(remote_bitbang_fd, F_SETFL, 0); + socket_block(remote_bitbang_fd); char c; ssize_t count = read(remote_bitbang_fd, &c, 1); if (count == 1) { |