home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl502b.zip / OS2 / ext.mk < prev    next >
Makefile  |  1996-02-26  |  2KB  |  81 lines

  1. #
  2. # Expects:
  3. #    TOP        Perl5 top level directory
  4. #    PREFIX        Optional module name prefix
  5. #    EXT        Module name, set in command line
  6. #    EXTOBJS=...    optional object files for EXT
  7. #    EXTLIBS=...    optional libraries for EXT
  8. #
  9.  
  10. TOP    = ../..
  11. PREFIX    =
  12. PERL    = $(TOP)/miniperl
  13.  
  14. CC    = gcc
  15. OPTIM    = -O2
  16. DEBUG    =
  17.  
  18. CFLAGS    = $(OPTIM) $(DEBUG) -Zomf -I$(TOP) -DEMBED
  19. LDFLAGS    = $(OPTIM) $(DEBUG) -Zomf -Zdll -Zcrtdll
  20. LDLIBS    = $(EXTLIBS) $(TOP)/perl5.lib
  21.  
  22. .IF $(PREFIX)
  23.   AUTO  = $(TOP)/lib/auto/$(PREFIX)/$(EXT)
  24.   PM    = lib/$(PREFIX)/$(EXT).pm
  25. .ELSE
  26.   AUTO  = $(TOP)/lib/auto/$(EXT)
  27.   PM    = lib/$(EXT).pm
  28. .ENDIF
  29.  
  30. DLL    = $(AUTO)/$(EXT).dll
  31. BOOT    = $(AUTO)/$(EXT).bs
  32.  
  33. all : $(DLL) $(TOP)/$(PM) $(BOOT)
  34.  
  35. .INCLUDE .IGNORE : $(TOP)/os2/$(EXT).mk
  36.  
  37. $(DLL) : $(EXT).obj $(EXT).def $(EXTOBJS)
  38. [
  39.     # truncate DLL name to 8 chars (for Warp)
  40.     ext=`$(PERL) -e "'$(DLL)' =~ m'^.*/\w{{1,7}}' and print qq'$$&_.dll';"`
  41.     $(CC) $(LDFLAGS) $(EXT).obj $(EXT).def $(EXTOBJS) $(LDLIBS) -o $$ext
  42.     if [ $$ext != $@ -a -f $$ext ]
  43.     then
  44.         # create empty fullname DLL for make rules, won't load
  45.         rm -f $@
  46.         clr $@
  47.     fi
  48.     exit 0
  49. ]
  50.  
  51. $(BOOT) :
  52. [
  53.     $(PERL) -I$(TOP)/lib $(TOP)/ext/util/mkbootstrap
  54.     touch $(EXT).bs
  55.     cp -t $(EXT).bs $@
  56. ]
  57.  
  58. $(EXT).def : $(TOP)/os2/ext.mk
  59. [
  60.     # truncate library name to 8 chars (for Warp)
  61.     $(PERL) <<END > $@
  62.     printf "LIBRARY '%.7s_' INITINSTANCE TERMINSTANCE\n", $(EXT)_;
  63.     printf "CODE LOADONCALL\nDATA LOADONCALL NONSHARED MULTIPLE\n";
  64.     printf "EXPORTS\n boot_%s%s", ("$(PREFIX)" ? "$(PREFIX)__" : ""), $(EXT);
  65.     exit 0;
  66. END
  67. ]
  68.  
  69. $(EXT).c : $(EXT).xs
  70. [
  71.     if [ -f typemap ]
  72.     then
  73.         $(PERL) $(TOP)/lib/ExtUtils/xsubpp -prototypes -typemap typemap $(EXT).xs > $@
  74.     else
  75.         $(PERL) $(TOP)/lib/ExtUtils/xsubpp -prototypes $(EXT).xs > $@
  76.     fi
  77. ]
  78.  
  79. cleanup :
  80.     -$(RM) $(RMFLAGS) $(DLL) $(EXT).def $(EXT).c $(EXT).obj
  81.