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