From: Markus I. <ma...@co...> - 2001-05-09 12:53:32
|
Has any of you tried to compile Apache for WinNT using mingw? I have the problem, that I need to write my own Apache module and incorporate it as either a compiled-in module or as a shared-module (.so or .dll). Currently Apache comes with a makefile.win - which is written for Microsoft VC++ and nmake and thus does not work with mingw. Any points or hints for this task are welcomed. Thanks! Markus Illenseer |
From: Craig H. <hu...@sp...> - 2001-05-09 16:05:28
|
You can make a lib out of the ApacheCore.dll that is built with VC++ and use that - that's what I did when building the mod_dtcl module for Apache/Win32. This method will generate a dll you can use with Apache. I *did* have to do some funky stuff to the ApacheCore.def file - you can download the mod_dtcl package source (http://tcl.apache.org) and take a look at my notes/make file. HTH, Craig ----- Original Message ----- From: "Markus Illenseer" <ma...@co...> To: <min...@li...> Sent: Wednesday, May 09, 2001 8:53 AM Subject: [Mingw-users] Compiling Apache > > Has any of you tried to compile Apache for WinNT using mingw? > > I have the problem, that I need to write my own Apache module and > incorporate it as either a compiled-in module or as a shared-module (.so > or .dll). > > Currently Apache comes with a makefile.win - which is written for > Microsoft VC++ and nmake and thus does not work with mingw. > > Any points or hints for this task are welcomed. Thanks! > > Markus Illenseer > > > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options at: > http://lists.sourceforge.net/lists/listinfo/mingw-users > |
From: Craig H. <hu...@sp...> - 2001-05-09 16:24:59
|
Oh, and I did have to modify the win32 os.h that is distributed with pache - again see the mod_dtcl sources for info. Mainly commenting out a few #defines and wrapping one inline function - probably could be done better/cleaner. --Craig ----- Original Message ----- From: "Craig Huckabee" <hu...@sp...> To: "Markus Illenseer" <ma...@co...>; <min...@li...> Sent: Wednesday, May 09, 2001 12:05 PM Subject: Re: [Mingw-users] Compiling Apache > > You can make a lib out of the ApacheCore.dll that is built with VC++ and use > that - that's what I did when building the mod_dtcl module for Apache/Win32. > This method will generate a dll you can use with Apache. I *did* have to do > some funky stuff to the ApacheCore.def file - you can download the mod_dtcl > package source (http://tcl.apache.org) and take a look at my notes/make > file. > > HTH, > Craig > > > > ----- Original Message ----- > From: "Markus Illenseer" <ma...@co...> > To: <min...@li...> > Sent: Wednesday, May 09, 2001 8:53 AM > Subject: [Mingw-users] Compiling Apache > > > > > > Has any of you tried to compile Apache for WinNT using mingw? > > > > I have the problem, that I need to write my own Apache module and > > incorporate it as either a compiled-in module or as a shared-module (.so > > or .dll). > > > > Currently Apache comes with a makefile.win - which is written for > > Microsoft VC++ and nmake and thus does not work with mingw. > > > > Any points or hints for this task are welcomed. Thanks! > > > > Markus Illenseer > > > > > > _______________________________________________ > > MinGW-users mailing list > > Min...@li... > > > > You may change your MinGW Account Options at: > > http://lists.sourceforge.net/lists/listinfo/mingw-users > > > > > _______________________________________________ > MinGW-users mailing list > Min...@li... > > You may change your MinGW Account Options at: > http://lists.sourceforge.net/lists/listinfo/mingw-users > |
From: Markus I. <ma...@co...> - 2001-05-15 11:00:28
|
> Oh, and I did have to modify the win32 os.h that is distributed with > pache - again see the mod_dtcl sources for info. Mainly commenting out a > few #defines and wrapping one inline function - probably could be done > better/cleaner. I tried to compile my module - and failed of course: (I didnt patched the os.h so far) apache/src/os/win32/os.h includes a non existant file: <mswsock.h>. I can comment it out, mingw compiles my module without any hassle, but I failed to do this: [citation from your mod_:dtcl makefile for win32] apache_libs: -@mkdir $(TEMP_LIBS) -@rm $(APACHE_DEF) echo EXPORTS > $(APACHE_DEF) nm $(APACHE_SRC)\\src\\CoreR\\ApacheCore.exp |grep " U _" | sed "s/.* U _//" >> $(APACHE_DEF) sed -e "s/ap_log_error$$/ap_log_error@0/g" \ -e "s/ap_log_rerror$$/ap_log_rerror@0/g" \ -e "s/ap_table_do$$/ap_table_do@0/g" \ $(APACHE_DEF) > $(APACHE_DEF).new mv $(APACHE_DEF).new $(APACHE_DEF) dlltool --def $(APACHE_DEF) --dllname ApacheCore.dll \ --output-lib $(TEMP_LIBS)\libapachecore.a -k The "nm" command does not work, because the current Apache distribution does not come with a src/CoreR/ directory (any more?). Currently my module compiles to the .o file and now doesnt find the apache core stuff: E:\src\zebra>make gcc -O3 -fnative-struct -shared -mwindows -DSHARED_MODULE --dll --kill-at --disable-stdcall-fixup -o ApacheModuleZebra.dll mod_zebra.o -LC:\\TEMP mod_zebra.o(.text+0x88):mod_zebra.c: undefined reference to `_imp__ap_pstrdup@8' mod_zebra.o(.text+0xda):mod_zebra.c: undefined reference to `_imp__ap_pstrdup@8' [... and so on, lot of errors] What might be missing and where can I get it or compile it? Any help is appreciated! Markus Illenseer |
From: Craig H. <hu...@sp...> - 2001-05-15 11:53:58
|
Hi, > > I tried to compile my module - and failed of course: > (I didnt patched the os.h so far) > > apache/src/os/win32/os.h includes a non existant file: <mswsock.h>. Yep. I think the patches include wrapping some of the includes with #ifdef's for mingw32. Also be sure you have the latest win32api fileset. > > I can comment it out, mingw compiles my module without any hassle, but I > failed to do this: > > [citation from your mod_:dtcl makefile for win32] > apache_libs: > -@mkdir $(TEMP_LIBS) > -@rm $(APACHE_DEF) > echo EXPORTS > $(APACHE_DEF) > nm $(APACHE_SRC)\\src\\CoreR\\ApacheCore.exp |grep " U _" | sed > "s/.* U _//" >> $(APACHE_DEF) > sed -e "s/ap_log_error$$/ap_log_error@0/g" \ > -e "s/ap_log_rerror$$/ap_log_rerror@0/g" \ > -e "s/ap_table_do$$/ap_table_do@0/g" \ > $(APACHE_DEF) > $(APACHE_DEF).new > mv $(APACHE_DEF).new $(APACHE_DEF) > dlltool --def $(APACHE_DEF) --dllname ApacheCore.dll \ > --output-lib $(TEMP_LIBS)\libapachecore.a -k > > > The "nm" command does not work, because the current Apache distribution > does not come with a src/CoreR/ directory (any more?). CoreR is now Release - make sure you use the makefile and readme info from the "win32" directory and NOT the "windows" directory in the mod_dtcl source distribution. "windows" was to be removed or cleaned up, I'll send a note to ask David W. why that didn't happen. > > > Currently my module compiles to the .o file and now doesnt find the > apache core stuff: > > E:\src\zebra>make gcc -O3 -fnative-struct -shared -mwindows > -DSHARED_MODULE --dll --kill-at --disable-stdcall-fixup -o ApacheModuleZebra.dll mod_zebra.o -LC:\\TEMP > > Well, yes - because the steps you didn't do above create the libapachecore.a that you need (which you would link against with -lapachecore). --Craig |
From: Markus I. <ma...@co...> - 2001-05-15 13:10:58
|
> > apache_libs: > > -@mkdir $(TEMP_LIBS) > > -@rm $(APACHE_DEF) > > echo EXPORTS > $(APACHE_DEF) > > nm $(APACHE_SRC)\\src\\CoreR\\ApacheCore.exp |grep " U _" | sed > > "s/.* U _//" >> $(APACHE_DEF) > > sed -e "s/ap_log_error$$/ap_log_error@0/g" \ > > -e "s/ap_log_rerror$$/ap_log_rerror@0/g" \ > > -e "s/ap_table_do$$/ap_table_do@0/g" \ > > $(APACHE_DEF) > $(APACHE_DEF).new > > mv $(APACHE_DEF).new $(APACHE_DEF) > > dlltool --def $(APACHE_DEF) --dllname ApacheCore.dll \ > > --output-lib $(TEMP_LIBS)\libapachecore.a -k > > > > > > The "nm" command does not work, because the current Apache distribution > > does not come with a src/CoreR/ directory (any more?). > > CoreR is now Release - make sure you use the makefile and readme info from > the "win32" directory and NOT the "windows" directory in the mod_dtcl > source distribution. "windows" was to be removed or cleaned up, I'll > send a note to ask David W. why that didn't happen. I did. There is no ApacheCore.exp in the current release of Apache sources. And apache/src/support/httpd.exp seems to be something different; nm doesnt loike it. But current Apache comes with ApacheCore.def already. For a test, I simply tried to do this in order to get my libapachecore.a: dlltool --def e:\src\apache\src\ApacheCore.def --dllname ApacheCore.dll --output-lib c:\temp\libapachecore.a -k Works like a champ, libapachecore.a is generated. But still: gcc -O3 -fnative-struct -shared -mwindows -DSHARED_MODULE --dll --kill-at --disable-stdcall-fixup -o ApacheModuleMY.dll mod_MY.o -LC:\\TEMP -lapachecore yields to errors: mod_MY.o(.text+0x88):mod_MY.c: undefined reference to `_imp__ap_pstrdup@8' mod_MY.o(.text+0xda):mod_MY.c: undefined reference to `_imp__ap_pstrdup@8' [and a dozen more following] Looking into libapachecore.a, I see the entries, but probably a "_" is missing? 00000000 ? __imp__ap_pstrdup 00000000 T _ap_pstrdup Grrr :-) What might by missing? Markus Illenseer |
From: Craig H. <hu...@sp...> - 2001-05-15 13:36:40
|
On Tue, 15 May 2001, Markus Illenseer wrote: > > I did. There is no ApacheCore.exp in the current release of Apache > sources. And apache/src/support/httpd.exp seems to be something different; > nm doesnt loike it. It is there when you do a build - this is as of 1.3.19 which I've built as of three days ago. You have to build Apache at least once with VC++ to get that file. > > But current Apache comes with ApacheCore.def already. For a test, I > simply tried to do this in order to get my libapachecore.a: > Yes, but the def file they send needs to be modified - they don't have ordinals on all of the function declarations. You'll have to add them by hand or create your own def file using nm (as done in the makefile). The extra sed step takes care of some functions that still come out wrong. Someone with more expertise than I can probably explain why this happens or maybe even a better solution. --Craig |
From: Markus I. <ma...@co...> - 2001-05-15 14:23:36
|
> > I did. There is no ApacheCore.exp in the current release of Apache > > sources. And apache/src/support/httpd.exp seems to be something different; > > nm doesnt loike it. > > It is there when you do a build - this is as of 1.3.19 which I've built as > of three days ago. You have to build Apache at least once with VC++ to get > that file. Arf. Now I understand the whole process - quite ugly though. Thanks for beeing so helpful! Need to look for a ApacheCore.xyz now - or get VC++. (I wonder why you buildt mod_dtcl with mingw - when you were using VC++ anyway?) Markus Illenseer |
From: Craig H. <hu...@sp...> - 2001-05-15 14:46:38
|
On Tue, 15 May 2001, Markus Illenseer wrote: > > Arf. Now I understand the whole process - quite ugly though. Thanks for > beeing so helpful! Need to look for a ApacheCore.xyz now - or get VC++. It may also be possible to create a def file from an ApacheCore.lib file, you'll need a different command line for nm though. > > (I wonder why you buildt mod_dtcl with mingw - when you were using VC++ > anyway?) > Easy answer - mod_dtcl wouldn't work when built with VC++. It would build, load, then throw an exception the first time you used it :) Never could figure it out. --Craig |
From: Markus I. <ma...@co...> - 2001-05-09 19:32:16
|
> You can make a lib out of the ApacheCore.dll that is built with VC++ and use > that - that's what I did when building the mod_dtcl module for Apache/Win32. > This method will generate a dll you can use with Apache. I *did* have to do > some funky stuff to the ApacheCore.def file - you can download the mod_dtcl > package source (http://tcl.apache.org) and take a look at my notes/make > file. thanks a lot - best news is, that I do not have to compile Apache from scratch in order to compile my module. Markus Illenseer |