diff options
Diffstat (limited to 'plugins/perl')
-rw-r--r-- | plugins/perl/makefile-512.mak | 40 | ||||
-rw-r--r-- | plugins/perl/makefile-514.mak | 42 | ||||
-rw-r--r-- | plugins/perl/perl.c | 11 |
3 files changed, 91 insertions, 2 deletions
diff --git a/plugins/perl/makefile-512.mak b/plugins/perl/makefile-512.mak new file mode 100644 index 00000000..7f2fbe04 --- /dev/null +++ b/plugins/perl/makefile-512.mak @@ -0,0 +1,40 @@ +include "..\..\src\makeinc.mak" + +DIRENTLIB = ..\..\src\common\dirent-win32.lib +TARGET = $(PERL512OUTPUT) + +all: $(TARGET) + +perl.def: + echo EXPORTS > perl.def + echo xchat_plugin_init >> perl.def + echo xchat_plugin_deinit >> perl.def + echo xchat_plugin_get_info >> perl.def + +perl.obj: perl.c + $(CC) $(CFLAGS) perl.c $(GLIB) /I$(PERL512PATH)\perl\lib\CORE /I.. /DPERL_DLL=\"$(PERL512LIB).dll\" + +perl512.def: + gendef $(PERL512PATH)\perl\bin\perl512.dll + +$(PERL512LIB).lib: perl512.def +!ifdef X64 + lib /nologo /machine:x64 /def:perl512.def +!else + lib /nologo /machine:x86 /def:perl512.def +!endif + +perl.c: xchat.pm.h + +xchat.pm.h: lib/Xchat.pm lib/IRC.pm + perl.exe generate_header + +$(TARGET): perl.obj perl.def $(PERL512LIB).lib + $(LINK) /DLL /out:$(TARGET) perl.obj $(LDFLAGS) $(PERL512LIB).lib /delayload:$(PERL512LIB).dll $(DIRENTLIB) delayimp.lib user32.lib shell32.lib advapi32.lib /def:perl.def + +clean: + @del $(TARGET) + @del *.obj + @del *.def + @del *.lib + @del *.exp diff --git a/plugins/perl/makefile-514.mak b/plugins/perl/makefile-514.mak new file mode 100644 index 00000000..4c8d0ebd --- /dev/null +++ b/plugins/perl/makefile-514.mak @@ -0,0 +1,42 @@ +include "..\..\src\makeinc.mak" + +DIRENTLIB = ..\..\src\common\dirent-win32.lib +TARGET = $(PERL514OUTPUT) + +all: $(TARGET) + +perl.def: + echo EXPORTS > perl.def + echo xchat_plugin_init >> perl.def + echo xchat_plugin_deinit >> perl.def + echo xchat_plugin_get_info >> perl.def + +# MSVC only supports __inline, while GCC only supports __inline__. This is defined incorretly +# in lib\CORE\config.h in Strawberry Perl, see #define PERL_STATIC_INLINE static __inline__ +perl.obj: perl.c + $(CC) $(CFLAGS) perl.c $(GLIB) /I$(PERL514PATH)\perl\lib\CORE /I.. /DPERL_DLL=\"$(PERL514LIB).dll\" /D__inline__=__inline + +perl514.def: + gendef $(PERL514PATH)\perl\bin\perl514.dll + +$(PERL514LIB).lib: perl514.def +!ifdef X64 + lib /nologo /machine:x64 /def:perl514.def +!else + lib /nologo /machine:x86 /def:perl514.def +!endif + +perl.c: xchat.pm.h + +xchat.pm.h: lib/Xchat.pm lib/IRC.pm + perl.exe generate_header + +$(TARGET): perl.obj perl.def $(PERL514LIB).lib + $(LINK) /DLL /out:$(TARGET) perl.obj $(LDFLAGS) $(PERL514LIB).lib /delayload:$(PERL514LIB).dll $(DIRENTLIB) delayimp.lib user32.lib shell32.lib advapi32.lib /def:perl.def + +clean: + @del $(TARGET) + @del *.obj + @del *.def + @del *.lib + @del *.exp diff --git a/plugins/perl/perl.c b/plugins/perl/perl.c index 1be7562e..719ef292 100644 --- a/plugins/perl/perl.c +++ b/plugins/perl/perl.c @@ -22,12 +22,15 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> -#include <dirent.h> #ifdef ENABLE_NLS #include <locale.h> #endif #ifdef WIN32 #include <windows.h> +#define _INC_DIRENT /* disable inclusion of perl's dirent.h, we use an own version for win32 */ +#include "../../src/common/dirent-win32.h" +#else +#include <dirent.h> #endif #undef PACKAGE @@ -1342,7 +1345,11 @@ perl_load_file (char *filename) if (GetLastError () == ERROR_BAD_EXE_FORMAT) /* http://forum.xchat.org/viewtopic.php?t=3277 */ thread_mbox ("Cannot use this " PERL_DLL "\n\n" - "32-bit ActivePerl is required."); +#ifdef _WIN64 + "64-bit Strawberry Perl is required."); +#else + "32-bit Strawberry Perl is required."); +#endif else { /* a lot of people install this old version */ lib = LoadLibraryA ("perl56.dll"); |