home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
perl502b.zip
/
OS2
/
ext.mk
< prev
next >
Wrap
Makefile
|
1996-02-26
|
2KB
|
81 lines
#
# Expects:
# TOP Perl5 top level directory
# PREFIX Optional module name prefix
# EXT Module name, set in command line
# EXTOBJS=... optional object files for EXT
# EXTLIBS=... optional libraries for EXT
#
TOP = ../..
PREFIX =
PERL = $(TOP)/miniperl
CC = gcc
OPTIM = -O2
DEBUG =
CFLAGS = $(OPTIM) $(DEBUG) -Zomf -I$(TOP) -DEMBED
LDFLAGS = $(OPTIM) $(DEBUG) -Zomf -Zdll -Zcrtdll
LDLIBS = $(EXTLIBS) $(TOP)/perl5.lib
.IF $(PREFIX)
AUTO = $(TOP)/lib/auto/$(PREFIX)/$(EXT)
PM = lib/$(PREFIX)/$(EXT).pm
.ELSE
AUTO = $(TOP)/lib/auto/$(EXT)
PM = lib/$(EXT).pm
.ENDIF
DLL = $(AUTO)/$(EXT).dll
BOOT = $(AUTO)/$(EXT).bs
all : $(DLL) $(TOP)/$(PM) $(BOOT)
.INCLUDE .IGNORE : $(TOP)/os2/$(EXT).mk
$(DLL) : $(EXT).obj $(EXT).def $(EXTOBJS)
[
# truncate DLL name to 8 chars (for Warp)
ext=`$(PERL) -e "'$(DLL)' =~ m'^.*/\w{{1,7}}' and print qq'$$&_.dll';"`
$(CC) $(LDFLAGS) $(EXT).obj $(EXT).def $(EXTOBJS) $(LDLIBS) -o $$ext
if [ $$ext != $@ -a -f $$ext ]
then
# create empty fullname DLL for make rules, won't load
rm -f $@
clr $@
fi
exit 0
]
$(BOOT) :
[
$(PERL) -I$(TOP)/lib $(TOP)/ext/util/mkbootstrap
touch $(EXT).bs
cp -t $(EXT).bs $@
]
$(EXT).def : $(TOP)/os2/ext.mk
[
# truncate library name to 8 chars (for Warp)
$(PERL) <<END > $@
printf "LIBRARY '%.7s_' INITINSTANCE TERMINSTANCE\n", $(EXT)_;
printf "CODE LOADONCALL\nDATA LOADONCALL NONSHARED MULTIPLE\n";
printf "EXPORTS\n boot_%s%s", ("$(PREFIX)" ? "$(PREFIX)__" : ""), $(EXT);
exit 0;
END
]
$(EXT).c : $(EXT).xs
[
if [ -f typemap ]
then
$(PERL) $(TOP)/lib/ExtUtils/xsubpp -prototypes -typemap typemap $(EXT).xs > $@
else
$(PERL) $(TOP)/lib/ExtUtils/xsubpp -prototypes $(EXT).xs > $@
fi
]
cleanup :
-$(RM) $(RMFLAGS) $(DLL) $(EXT).def $(EXT).c $(EXT).obj