Update from Mark, plus some notes of mine

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1813 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.2
Stéphane Fillod, F8CFE 2004-08-17 20:49:21 +00:00
rodzic 618aa09eae
commit 08c127c240
1 zmienionych plików z 35 dodań i 50 usunięć

Wyświetl plik

@ -3,86 +3,71 @@ From: "Mark J. Fine" <fineware@starpower.net>
Subject: [Hamlib-developer] Building under Cygwin for Windows (Mingw32)
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=hamlib-developer>
Date: Sun, 20 Jun 2004 15:25:24 -0400
<revised by mjf 10 August, 2004>
Found this to be helpful for building hamlib under Cygwin/Mingw32 for
linking with Windows apps:
1. To create the dlls, do the following from within Cygwin (assumes
1. To create the dlls, do the following from within Cygwin (assumes
Cygwin is fully updated):
Modify include/hamlib/rig.h to put the include for sys/time.h in the
windows build, i.e.:
#if defined(__CYGWIN__) || defined(_WIN32)
#include <windows.h> /* HANDLE definition */
#include <sys/time.h> /* required for struct timeval */
#else
#include <sys/time.h> /* required for struct timeval */
#endif
Modify ./configure.ac to put all of the AC_CONFIG_FILES parameters all
Modify ./configure.ac to put all of the AC_CONFIG_FILES parameters all
on one line, i.e.:
AC_CONFIG_FILES([Makefile macros/Makefile include/Makefile
lib/Makefile dummy/Makefile yaesu/Makefile icom/Makefile aor/Makefile
kenwood/Makefile winradio/Makefile pcr/Makefile alinco/Makefile
uniden/Makefile tentec/Makefile kachina/Makefile jrc/Makefile
drake/Makefile lowe/Makefile rft/Makefile kit/Makefile tapr/Makefile
gnuradio/Makefile easycomm/Makefile fodtrack/Makefile sartek/Makefile
rpcrig/Makefile rpcrot/Makefile src/Makefile c++/Makefile
bindings/Makefile tests/Makefile doc/Makefile rotorez/Makefile
microtune/Makefile flexradio/Makefile hamlib.pc hamlib.spec])
AC_CONFIG_FILES([Makefile macros/Makefile include/Makefile
lib/Makefile dummy/Makefile yaesu/Makefile icom/Makefile aor/Makefile
kenwood/Makefile winradio/Makefile pcr/Makefile alinco/Makefile
uniden/Makefile tentec/Makefile kachina/Makefile jrc/Makefile
drake/Makefile lowe/Makefile rft/Makefile kit/Makefile tapr/Makefile
gnuradio/Makefile easycomm/Makefile fodtrack/Makefile sartek/Makefile
rpcrig/Makefile rpcrot/Makefile src/Makefile c++/Makefile
bindings/Makefile bindings/hamlibvb.bas tests/Makefile doc/Makefile
doc/hamlib.cfg rotorez/Makefile microtune/Makefile flexradio/Makefile
hamlib.pc hamlib.spec])
For some reason Cygwin doesn't like it.
# export CC="gcc -mno-cygwin"
# export CXX="g++ -mno-cygwin"
# ./autogen.sh --prefix=/usr/local --disable-static --disable-xmltest
--without-rpc-backends --without-tcl-binding --without-perl-binding
--without-python-binding --build=i686-pc-cygwin --host=i686-pc-mingw32
# ./autogen.sh --prefix=/usr/local --disable-static \
--without-rpc-backends --without-tcl-binding --without-perl-binding \
--without-python-binding --build=i686-pc-cygwin --host=i686-pc-mingw32 \
--target=i686-pc-mingw32
Note: on subsequent runs you can replace ./autogen.sh with ./configure
Modify include/config.h to put the sleep back in, i.e.:
/* Define to 1 if you have win32 Sleep */
/* #undef HAVE_SSLEEP */
#define HAVE_SSLEEP 1
#define HAVE_SLEEP 1
For some reason ./configure doesn't properly recognize it.
Copy /usr/include/iconv.h into /usr/include/mingw/ otherwise rigmem
won't build.
unless there are modifications to any .ac, .m4, or Makefile.am file.
In that case, "make clean", and re-run autogen as above.
# make
Don't run "make install" if you've already made a native Cygwin version
of hamlib, since it will screw up the pkgconfig for Cygwin linking.
Instead, manually go through all of the .libs and copy the resulting
.exes and .dlls in to a single directory, or create a script to do it
for you.
Don't run "make install" if you've already made a native Cygwin version
of hamlib, since it will screw up the pkgconfig for Cygwin linking. In
fact, it's best to have one tree for native Cygwin and another tree for
cross-compiling so you can avoid overwriting any created object files or
libraries.
Also, copy the files in include/hamlib into this directory, but unmodify
rig.h from before, i.e:
#if defined(__CYGWIN__) || defined(_WIN32)
#include <windows.h> /* HANDLE definition */
#else
#include <sys/time.h> /* required for struct timeval */
#endif
Instead of "make install", manually go through all of the .libs and copy
the resulting .exes and .dlls in to a single directory, or create a script
to do it for you. Likewise, copy the .h files in include/hamlib into this
same directory.
Go to the directory you've just put all that stuff in and run:
# strip *.dll
# strip *.exe
This will make the resulting images smaller.
2. To create a MSVC-compatible interface library, do the following in a
2. To create a MSVC-compatible interface library, do the following in a
Windows command window from the directory where you put all that stuff:
> lib /def:libhamlib.def /machine:IX86 /name:libhamlib-1-2-2cvs-2
This will create libhamlib.lib and libhamlib.exp.
libhamlib.lib and the .h includes from include/hamlib can now be used
within any MSVC build (i.e., dream), but all the dlls must be put in the
same directory as the resulting .exe otherwise it won't find it.
REM: Using the (free) Microsoft Visual C++ Toolkit 2003, replace
the "lib" command by "link /lib".
libhamlib.lib and the .h includes from include/hamlib can now be used
within any MSVC build (i.e., dream), but all the dlls must be put in the
same directory or in PATH as the resulting .exe otherwise it won't find it.
--