Message-ID: <40D5E4A4.4080305@starpower.net> From: "Mark J. Fine" Subject: [Hamlib-developer] Building under Cygwin for Windows (Mingw32) List-Archive: Date: Sun, 20 Jun 2004 15:25:24 -0400 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 Cygwin is fully updated): 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 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 \ --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 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. 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. 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 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. 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. -- Mark J. Fine Remington, Virginia, USA