aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2017-12-21 14:04:33 -0800
committerGitHub <noreply@github.com>2017-12-21 14:04:33 -0800
commitb01075eaa5f60d1f809263a4bb98da2bd7dd1b1d (patch)
tree2789a3041a3a4c2112269548c3dbde4621c89773
parent105536089b3fc1bfe65b27ce891e60d8136f0737 (diff)
parent7eceac758ca08c3feeb77167ee2eb9829b1d93bc (diff)
downloadriscv-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.yml33
-rw-r--r--src/helper/replacements.h11
-rw-r--r--src/jtag/drivers/remote_bitbang.c4
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) {