delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1999/11/11/15:19:25

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT sourceware DOT cygnus DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
From: Steve Jorgensen <steve AT khoral DOT com>
Message-Id: <199911112018.NAA12033@benson>
Subject: Re: More Cygwin 1.0 CD
To: khan AT thor DOT xraylith DOT wisc DOT edu (Mumit Khan)
Date: Thu, 11 Nov 1999 13:18:03 -0700 (MST)
Cc: steve AT khoral DOT com, fralinjh AT ei DOT dupont DOT com, cygwin AT sourceware DOT cygnus DOT com
In-Reply-To: <199911111713.LAA07043@mercury.xraylith.wisc.edu> from "Mumit Khan" at Nov 11, 99 11:13:16 am
X-Mailer: ELM [version 2.4 PL25]

Mumit Khan wrote
>> > 	I've never gotten dllwrap or the gcc set of instructions for
>> > 	creating DLL's to work under B20.1 or 1.0.. I just figured it
>> > 	was yet another stupid artifact of windows dll's.. I'm using
>> > 	a combination calls to nm, dlltool, and ld to create dll, which
>> > 	seems to be working for me.  I can send you a perl script that
>> > 	does the right sequence if you like.
>> 
>> Please post. BTW, dllwrap does nothing more than your perl script, just
>> that it handles a few defaults more intelligently.
>> 
>>   $ dllwrap --dry-run [....]
>> 
>> shows exactly what it's going to do. The -v option shows the actual
>> invocations.

	Yes, I know.  Using --dry-run and looking at the available
	online information was how I figured out how to make my perl
	script work.  :)  I've included the script below..  Enjoy.

	The script below is setup to work in the Khoros make system,
	so you'll have to change the first section for you're environment.
	I've added comments to help explain what I'm doing.   The Khoros
	make rules which call this script install libmylib_stub.a as
	libmylib.a in our dynamic library dir.  The libmylib.dll gets
	installed in the binary dir.

						Steve

----------------createdll.pl-----------------------------------------
eval 'exec perl -S $0 ${1+"$@"}'
                if $runnning_under_some_shell;

#========================================================================
# Program Name: kpacktb - Create a khoros package and cdrom image
#
#      Purpose: This program creates shared library DLL's and stub
#		files for the cygwin environment.
#
#		It's invoked like the following:
#		% createdll.pl mylib
#
#		and it produces:
#
#		libmylib_stub.a and libmylib.dll
#
#    Written By: Steve Jorgensen
#          Date: Oct 30, 1999
#
#========================================================================
#-- This section sets things to work in the Khoros environment should
#-- changed for your environment

$BINARY_NAME = shift @ARGV;  # should be the name of your library without
			     # the lib prefix or any extensions at the end.

exit unless $BINARY_NAME;

chop($KHOROS_LIBDIRS = `kmake echolibdirs`);  # directories where -l's exist

chop($KHOROS_LIBS = `kmake echolibs`); # dependant libraries
$KHOROS_LIBS =~ s/^.*-l${BINARY_NAME}(.*)/$1/;

chop($BDIR = `kmake echobindir`);  # dir to install dll
chop($LDIR = `kmake echolibdir`);  # dir to install stub file.
chop($OBJS= `kmake echoobjs`);     # list of *.o's separated by spaces

#--Boiler plate --
#--Don't change below here--
$BNAME="lib${BINARY_NAME}";
$DLLNAME="${BNAME}.dll";
$LIBDIRS="${KHOROS_LIBDIRS} -L/usr/lib/gcc-lib/i686-cygwin/2.9-cygwin-990830 -L/usr/lib/gcc-lib/i686-cygwin/2.9-cygwin-990830/../../..";
$LIBS= "${KHOROS_LIBS} -lgcc -lcygwin -lkernel32 -ladvapi32 -lshell32 -lgcc";
$LD="ld";
$AS="as";
$EXPFILE="${BNAME}.exp";
$DLLTOOL="dlltool";
$DEFFILE="${BNAME}.def";
$BASEFILE="${BNAME}.base";
$ENTRY= "_cygwin_dll_entry";
$LIBFILE="${BNAME}_stub.a";

#-- Create def file from *.o's
print "echo EXPORTS > ${DEFFILE}\n";
system "echo EXPORTS > ${DEFFILE}";
print "nm ${OBJS} | grep '^........ [TDC] _' | sed 's/[^_]*_//' >> ${DEFFILE}\n";
system "nm ${OBJS} | grep '^........ [TDC] _' | sed 's/[^_]*_//' >> ${DEFFILE}";

#-- Begin magic incantation.  Pray to Bill Gates, and sacrafice a chicken :)
print "${LD} -s --base-file ${BASEFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12\n";
system "${LD} -s --base-file ${BASEFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12";
print "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --base-file ${BASEFILE} --output-exp ${EXPFILE}\n";
system "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --base-file ${BASEFILE} --output-exp ${EXPFILE}";
print "${LD} -s --base-file ${BASEFILE} ${EXPFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12\n";
system "${LD} -s --base-file ${BASEFILE} ${EXPFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12";
print "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --base-file ${BASEFILE} --output-exp ${EXPFILE}\n";
system "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --base-file ${BASEFILE} --output-exp ${EXPFILE}";
print "${LD} ${EXPFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12\n";
system "${LD} ${EXPFILE} --dll -o ${DLLNAME} ${OBJS} ${LIBDIRS} ${LIBS} -e __cygwin_dll_entry\@12";
print "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --output-lib ${LIBFILE}\n";
system "${DLLTOOL} --as=${AS} --dllname ${DLLNAME} --def ${DEFFILE} --output-lib ${LIBFILE}";
exit 0;
----------------createdll.pl-----------------------------------------

-- 
-----------------------------------------------------------
Steven Jorgensen      steve AT khoral DOT com	    steve AT haunt DOT com
------------------------------+----------------------------
Khoral Research Inc.          | PHONE: (505) 837-6500
6200 Uptown Blvd, Suite 200   | FAX:   (505) 881-3842
Albuquerque, NM 87110         | URL: http://www.khoral.com/
-----------------------------------------------------------

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019