diff --git a/compat.h b/compat.h index ed18baa5..08d0dcec 100644 --- a/compat.h +++ b/compat.h @@ -47,15 +47,16 @@ static inline int nanosleep(const struct timespec *req, struct timespec *rem) } #endif -static inline int sleep(unsigned int secs) -{ - struct timespec req, rem; - req.tv_sec = secs; - req.tv_nsec = 0; - if (!nanosleep(&req, &rem)) - return 0; - return rem.tv_sec + (rem.tv_nsec ? 1 : 0); -} +/* Reported unneded in https://github.com/veox/sgminer/issues/37 */ +/* static inline int sleep(unsigned int secs) */ +/* { */ +/* struct timespec req, rem; */ +/* req.tv_sec = secs; */ +/* req.tv_nsec = 0; */ +/* if (!nanosleep(&req, &rem)) */ +/* return 0; */ +/* return rem.tv_sec + (rem.tv_nsec ? 1 : 0); */ +/* } */ enum { PRIO_PROCESS = 0, diff --git a/configure.ac b/configure.ac index f86c21e6..6b651b7e 100644 --- a/configure.ac +++ b/configure.ac @@ -186,18 +186,35 @@ if test "x$has_winpthread" != xtrue; then fi AC_ARG_ENABLE([adl], - [AC_HELP_STRING([--disable-adl],[Override detection and disable building with adl])], + [AC_HELP_STRING([--disable-adl],[Override detection and disable building with ADL])], [adl=$enableval] ) +AC_ARG_ENABLE([adl_checks], + [AC_HELP_STRING([--disable-adl-checks],[Override detection and assume ADL is available])], + [adl_checks=$enableval] + ) + if test "$found_opencl" = 1; then if test "x$adl" != xno; then - ADL_CPPFLAGS= - AC_CHECK_FILE([$srcdir/ADL_SDK/adl_sdk.h], [have_adl=true; ADL_CPPFLAGS=-I$srcdir], have_adl=false,) + dnl FIXME: force ADL usage if disable-checks specified + if test "x$adl_checks" = xno; then + have_adl=true + ADL_CPPFLAGS=-I$srcdir + fi + + dnl Check if include files are in $srcdir/ADL_SDK + if test "x$have_adl" != xtrue; then + ADL_CPPFLAGS= + AC_CHECK_FILE([$srcdir/ADL_SDK/adl_sdk.h], [have_adl=true; ADL_CPPFLAGS=-I$srcdir], have_adl=false,) + fi + + dnl FIXME: Check if SGMINER_SDK present if test x$have_adl+$have_sgminer_sdk = xfalse+true; then AC_CHECK_FILE([$SGMINER_SDK/include/ADL_SDK/adl_sdk.h], [have_adl=true; ADL_CPPFLAGS=-I$SGMINER_SDK/include], have_adl=false,) fi - if test x$have_adl = xtrue + + if test "x$have_adl" = xtrue then AC_DEFINE([HAVE_ADL], [1], [Defined if ADL headers were found]) else @@ -379,7 +396,11 @@ fi if test "x$adl" != xno; then if test x$have_adl = xtrue; then - echo " ADL..................: SDK found, GPU monitoring support enabled" + if test "x$adl_checks" = xno; then + echo " ADL..................: SDK use FORCED" + else + echo " ADL..................: SDK found, GPU monitoring support enabled" + fi else echo " ADL..................: SDK NOT found, GPU monitoring support DISABLED" fi diff --git a/doc/windows-build.txt b/doc/windows-build.txt index 784a533b..56b2571a 100644 --- a/doc/windows-build.txt +++ b/doc/windows-build.txt @@ -1,9 +1,11 @@ ###################################################################################### # # -# SGMINER WIN32 setup and build instructions (on mingw32/Windows): # +# Native WIN32 setup and build instructions (on mingw32/Windows): # # # ###################################################################################### +(See bottom of file for steps to cross-build for Win32 from Linux.) + ************************************************************************************** * Introduction * ************************************************************************************** @@ -36,8 +38,8 @@ what you copied. ************************************************************************************** Download and install the following Mingw32 version by doing a google search for: "mingw-get-inst-20120426" -*This is currently a known working version as of SGMINER 4.0.0, but this could be a -different version later. +This is currently a known working version, but this could be a different version +later. During installation, select all the check boxes (excluding "Fortran Compiler") so that everything is installed. @@ -202,12 +204,99 @@ For you. Make sure you never remove the ADL_SDK folder from your home folder. * Some ./configure options * ************************************************************************************** --enable-opencl Enable support for GPU mining with opencl ---disable-adl Override detection and disable building with adl +--disable-adl Override detection and disable building with ADL +--disable-adl-checks Override detection and assume ADL is present --disable-libcurl Disable building with libcurl for getwork and GBT support --without-curses Compile support for curses TUI (default enabled) + + ###################################################################################### # # -# Native WIN32 setup and build instructions (on mingw32/Windows) complete # +# Cross-compiling for Windows from Linux # # # ###################################################################################### + +It is possible to cross-compile Windows binaries from Linux. The +process is a bit different to the native steps shown above (it is also +possible to use wine and the native steps, but this is more messing +around, very slow, and not advisable.) + +** Install mingw cross compiler + +On Ubuntu/Debian: + +sudo apt-get install mingw32 + +** create a directory to hold our cross-library dependencies + +We'll create a directory outside the source tree to hold non-system +libraries we depend on. We could put these in +/usr/i586-mingw32msvc/lib or anywhere else, instead (though keeping it +outside /usr means we can set it up without root privileges.) + +IMPORTANT: If you put this directory inside your sgminer directory, +remember 'make distclean' may delete it! + +mkdir -p ../win32/lib +cd ../win32 +mkdir include +mkdir bin + +NB: All following steps assume you are in the "win32" directory. Adjust as necessary. + +** pdcurses + +wget http://internode.dl.sourceforge.net/project/pdcurses/pdcurses/3.4/pdc34dllw.zip +unzip /home/gus/Downloads/pdc34dllw.zip +mv *.h include/ +mv pdcurses.lib lib/ +mv pdcurses.dll bin/ + +** pthreads-w32 + +(NB: I found pthreads-w32 2.9.1 doesn't seem to work properly, transfers time out +early due to sem_timedwait exiting immediately(?)) + +wget -O lib/libpthread.a ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/lib/libpthreadGC2.a +wget -O include/pthread.h ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/include/pthread.h +wget -O include/sched.h ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/include/sched.h +wget -O include/semaphore.h ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/include/semaphore.h +wget -O lib/libpthread.a ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/lib/libpthreadGC2.a +wget -O bin/pthreadGC2.dll ftp://sourceware.org/pub/pthreads-win32/prebuilt-dll-2-8-0-release/lib/pthreadGC2.dll + +** libcurl + +wget http://curl.haxx.se/gknw.net/7.33.0/dist-w32/curl-7.33.0-devel-mingw32.zip +unzip curl-7.33.0-devel-mingw32.zip +mv curl-7.33.0-devel-mingw32/include/* include/ +mv curl-7.33.0-devel-mingw32/lib/* lib/ +mv curl-7.33.0-devel-mingw32/bin/* bin/ +rm -rf curl-7.33.0-devel-mingw32 + + +** clean up + +rm *.zip + + +** Building + +Below assumes you're building in a "build-win32" or similar directory +inside the sgminer directory. Fix up the -I and -L paths appropriately +if you're building in-tree or someplace else. + +Configure command: + +CPPFLAGS="-I`pwd`/../../win32/include" LDFLAGS="-L`pwd`/../../win32/lib -lcurldll" ../autogen.sh --prefix=/usr/local/i586-mingw32 --host=i586-mingw32msvc --build=i686-linux + +^^^ Plus whatever configure arguments you want to add. Note the paths + to win32 that you may need to change. + +And make: + +make + +After building, the next steps are the same as for native +building as given under "Copy files to a build directory/folder" +(DLLs can all be found in the win32/bin directory.)