Browse Source

Merge branch 'windows-cross-compile'

nfactor-troky
Noel Maersk 11 years ago
parent
commit
cd5fa8d3cb
  1. 19
      compat.h
  2. 31
      configure.ac
  3. 99
      doc/windows-build.txt

19
compat.h

@ -47,15 +47,16 @@ static inline int nanosleep(const struct timespec *req, struct timespec *rem)
} }
#endif #endif
static inline int sleep(unsigned int secs) /* 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; /* struct timespec req, rem; */
req.tv_nsec = 0; /* req.tv_sec = secs; */
if (!nanosleep(&req, &rem)) /* req.tv_nsec = 0; */
return 0; /* if (!nanosleep(&req, &rem)) */
return rem.tv_sec + (rem.tv_nsec ? 1 : 0); /* return 0; */
} /* return rem.tv_sec + (rem.tv_nsec ? 1 : 0); */
/* } */
enum { enum {
PRIO_PROCESS = 0, PRIO_PROCESS = 0,

31
configure.ac

@ -186,18 +186,35 @@ if test "x$has_winpthread" != xtrue; then
fi fi
AC_ARG_ENABLE([adl], 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] [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 "$found_opencl" = 1; then
if test "x$adl" != xno; then if test "x$adl" != xno; then
ADL_CPPFLAGS= dnl FIXME: force ADL usage if disable-checks specified
AC_CHECK_FILE([$srcdir/ADL_SDK/adl_sdk.h], [have_adl=true; ADL_CPPFLAGS=-I$srcdir], have_adl=false,) 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 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,) AC_CHECK_FILE([$SGMINER_SDK/include/ADL_SDK/adl_sdk.h], [have_adl=true; ADL_CPPFLAGS=-I$SGMINER_SDK/include], have_adl=false,)
fi fi
if test x$have_adl = xtrue
if test "x$have_adl" = xtrue
then then
AC_DEFINE([HAVE_ADL], [1], [Defined if ADL headers were found]) AC_DEFINE([HAVE_ADL], [1], [Defined if ADL headers were found])
else else
@ -379,7 +396,11 @@ fi
if test "x$adl" != xno; then if test "x$adl" != xno; then
if test x$have_adl = xtrue; 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 else
echo " ADL..................: SDK NOT found, GPU monitoring support DISABLED" echo " ADL..................: SDK NOT found, GPU monitoring support DISABLED"
fi fi

99
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 * * Introduction *
************************************************************************************** **************************************************************************************
@ -36,8 +38,8 @@ what you copied.
************************************************************************************** **************************************************************************************
Download and install the following Mingw32 version by doing a google search for: Download and install the following Mingw32 version by doing a google search for:
"mingw-get-inst-20120426" "mingw-get-inst-20120426"
*This is currently a known working version as of SGMINER 4.0.0, but this could be a This is currently a known working version, but this could be a different version
different version later. later.
During installation, select all the check boxes (excluding "Fortran Compiler") so that During installation, select all the check boxes (excluding "Fortran Compiler") so that
everything is installed. 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 * * Some ./configure options *
************************************************************************************** **************************************************************************************
--enable-opencl Enable support for GPU mining with opencl --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 --disable-libcurl Disable building with libcurl for getwork and GBT support
--without-curses Compile support for curses TUI (default enabled) --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.)

Loading…
Cancel
Save