# perl makefile for wince
#
# Time-stamp: <26/10/01 15:10:06 keuchel@keuchelnt>

SRCDIR     = ..
PV         = 57
INST_VER   = 5.7.2
PERLCEDIR  = H:\src\wince\perl\wince
WCEROOT    = N:\Windows CE Tools
WCEROOT    = D:\Windows CE Tools
NTPERL     = N:\Programme\perl\bin\perl.exe
NTPERL     = D:\Programme\ActiveState\perl-5.6\bin\Perl.exe
CEPATH     = N:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
CEPATH     = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
CELIBDLLDIR  = h:\src\wince\celib-palm-3.0
CECONSOLEDIR = h:\src\wince\w32console
# Only for WIN2000
#YES        = /y
COPY       = copy $(YES)
XCOPY      = xcopy $(YES) /f /r /i /d
RCOPY	   = xcopy $(YES) /f /r /i /e /d
NOOP	   = @echo
# keep this untouched!
NULL	   =

CFG=DEBUG
#CFG=RELEASE

!if "$(MACHINE)" == ""
MACHINE=wince-arm-hpc-wce300
#MACHINE=wince-arm-hpc-wce211
#MACHINE=wince-sh3-hpc-wce211
#MACHINE=wince-mips-hpc-wce211
#MACHINE=wince-sh3-hpc-wce200
#MACHINE=wince-mips-hpc-wce200
#MACHINE=wince-arm-pocket-wce300
#MACHINE=wince-mips-pocket-wce300
#MACHINE=wince-sh3-pocket-wce300
#MACHINE=wince-x86em-pocket-wce300
#MACHINE=wince-mips-palm-wce211
#MACHINE=wince-sh3-palm-wce211
#MACHINE=wince-x86em-palm-wce211
!endif

######################################################################
# machines

!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
CC         = shcl.exe
ARCH       = SH3
CPU        = SH3
TARGETCPU  = SH3
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS HPC Pro
MCFLAGS    = -MDd -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.11
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-mips-hpc-wce211"
CC         = clmips.exe
ARCH       = MIPS
CPU        = MIPS
TARGETCPU  = MIPS
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS HPC Pro
MCFLAGS    = -D _MT -D _DLL \
             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
             -D PALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.11
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-mips-hpc-wce200"
CC         = clmips.exe
ARCH       = MIPS
CPU        = MIPS
TARGETCPU  = MIPS
CEVersion  = 200
OSVERSION  = WCE200
PLATFORM   = MS HPC
# MUST USE -MD to get the right FPE stuff...
MCFLAGS    = -D _MT -D _DLL -MD \
             -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
             -D PALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-sh3-hpc-wce200"
CC         = shcl.exe
ARCH       = SH3
CPU        = SH3
TARGETCPU  = SH3
CEVersion  = 200
OSVERSION  = WCE200
PLATFORM   = MS HPC
# MUST USE -MD to get the right FPE stuff...
MCFLAGS    = -D _MT -D _DLL -MD \
             -D SH3 -D sh3 -D _SH3_ -D _sh3_ -D SHx -DPROCESSOR_SH3 \
             -D PALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-arm-hpc-wce211"
CC         = clarm.exe
ARCH       = ARM
CPU        = ARM
TARGETCPU  = ARM
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS HPC Pro
MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
             -DPROCESSOR_ARM -DPALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.11
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-arm-hpc-wce300"
CC         = clarm.exe
ARCH       = ARM
CPU        = ARM
TARGETCPU  = ARM
CEVersion  = 300
OSVERSION  = WCE300
PLATFORM   = HPC2000
MCFLAGS    = -D _MT -D _DLL -D ARM -D arm -D _arm_ -D _ARM_ \
             -DPROCESSOR_ARM -DPALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,3.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-mips-palm-wce211"
CC         = clmips.exe
ARCH       = MIPS
CPU        = MIPS
TARGETCPU  = MIPS
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS Palm Size PC
MCFLAGS    = -DMIPS -D_MIPS_ -DPROCESSOR_MIPS -D PALM_SIZE -D _DLL -D _MT \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.11
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-sh3-palm-wce211"
CC         = shcl.exe
ARCH       = SH3
CPU        = SH3
TARGETCPU  = SH3
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS Palm Size PC
MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 -DPALM_SIZE \
             -I $(CELIBDLLDIR)\inc
SUBSYS	   = -subsystem:windowsce,2.11
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-x86em-palm-wce211"
CC         = cl.exe
ARCH       = X86EM
CPU        = X86
TARGETCPU  = X86
CEVersion  = 211
OSVERSION  = WCE211
PLATFORM   = MS Palm Size PC
MCFLAGS    = -MDd -DX86 -D_X86_ -DPROCESSOR_X86 \
             -D_WIN32_WCE_EMULATION -DPALM_SIZE \
             -I $(CELIBDLLDIR)\inc
MACH       = -machine:x86
SUBSYS     = -subsystem:windows
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-x86em-pocket-wce300"
CC         = cl.exe
ARCH       = X86EM
CPU        = X86
TARGETCPU  = X86
CEVersion  = 300
OSVERSION  = WCE300
PLATFORM   = MS Pocket PC
MCFLAGS    = -DX86 -D_X86_ -DPROCESSOR_X86 -D _MT -D _DLL \
             -D_WIN32_WCE_EMULATION -DPALM_SIZE -DPOCKET_SIZE \
             -I $(CELIBDLLDIR)\inc 
MACH       = -machine:x86
SUBSYS     = -subsystem:windows
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-mips-pocket-wce300"
CC         = clmips.exe
ARCH       = MIPS
CPU        = MIPS
TARGETCPU  = MIPS
CEVersion  = 300
OSVERSION  = WCE300
PLATFORM   = MS Pocket PC
MCFLAGS    = -D MIPS -D mips -D _MIPS_ -D _mips_ -DPROCESSOR_MIPS \
             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
             -I $(CELIBDLLDIR)\inc 
MACH       = -machine:mips
SUBSYS     = -subsystem:windowsce,3.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-sh3-pocket-wce300"
CC         = shcl.exe
ARCH       = SH3
CPU        = SH3
TARGETCPU  = SH3
CEVersion  = 300
OSVERSION  = WCE300
PLATFORM   = MS Pocket PC
MCFLAGS    = -D _MT -D _DLL -DSH3 -D_SH3_ -DSHx -DPROCESSOR_SH3 \
             -DPALM_SIZE -DPOCKET_SIZE \
             -I $(CELIBDLLDIR)\inc 
MACH       = -machine:mips
SUBSYS     = -subsystem:windowsce,3.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

!if "$(MACHINE)" == "wince-arm-pocket-wce300"
CC         = clarm.exe
ARCH       = ARM
CPU        = ARM
TARGETCPU  = ARM
CEVersion  = 300
OSVERSION  = WCE300
PLATFORM   = MS Pocket PC
MCFLAGS    = -D ARM -D arm -D _ARM_ -D _arm_ -DPROCESSOR_ARM \
             -D _MT -D _DLL -DPALM_SIZE -DPOCKET_SIZE \
             -I $(CELIBDLLDIR)\inc 
MACH       = -machine:arm
SUBSYS     = -subsystem:windowsce,3.00
CELIBPATH  = $(CELIBDLLDIR)\$(MACHINE)-release
LDLIBPATH  = -libpath:$(CELIBPATH)
STARTOBJS  = $(CECONSOLEDIR)/$(MACHINE)/wmain.obj \
             $(CECONSOLEDIR)/$(MACHINE)/w32console.obj
!endif

######################################################################
# common section

CEDEFS    = -D_WINDOWS -D_WIN32_WCE=$(CEVersion) -DUNDER_CE=$(CEVersion) \
            $(MCFLAGS) -D PERL

#CEDEFS    = $(CEDEFS) -DDEBUGGING_OPS

CECFLAGS  = $(CEDEFS)

!if "$(CFG)" == "DEBUG"
CECFLAGS  = $(CECFLAGS) -Zi -Od
!endif

!if "$(CFG)" == "RELEASE"
# -O2 and -Ot give internal compiler error in perl.c and lexer.
# Also the dll cannot be loaded by perl.exe...
CECFLAGS  = $(CECFLAGS)
!endif

RCDEFS    = /l 0x407 /r /d "UNICODE" /d UNDER_CE=$(CEVersion) \
            /d _WIN32_WCE=$(CEVersion)

PATH=$(CEPATH);$(PATH)

INCLUDE=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\include
LIB=$(WCEROOT)\$(OSVERSION)\$(PLATFORM)\lib\$(ARCH)

######################################################################

!message
!message Compiling for $(MACHINE)
!message LIB=$(LIB)
!message INCLUDE=$(INCLUDE)
!message PATH=$(CEPATH)
!message

######################################################################
#
# Additional compiler flags can be specified here.
#

BUILDOPT	= $(BUILDOPT) $(CECFLAGS)

##################### CHANGE THESE ONLY IF YOU MUST #####################

!IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
D_CRYPT		= undef
!ELSE
D_CRYPT		= define
CRYPT_FLAG	= -DHAVE_DES_FCRYPT
!ENDIF

!IF "$(PERL_MALLOC)" == ""
PERL_MALLOC	= undef
!ENDIF

!IF "$(USE_5005THREADS)" == ""
USE_5005THREADS	= undef
!ENDIF

!IF "$(USE_5005THREADS)" == "define"
USE_ITHREADS	= undef
!ENDIF

!IF "$(USE_IMP_SYS)" == "define"
PERL_MALLOC	= undef
!ENDIF

!IF "$(USE_MULTI)" == ""
USE_MULTI	= undef
!ENDIF

!IF "$(USE_ITHREADS)" == ""
USE_ITHREADS	= undef
!ENDIF

!IF "$(USE_IMP_SYS)" == ""
USE_IMP_SYS	= undef
!ENDIF

!IF "$(USE_PERLCRT)" == ""
USE_PERLCRT	= undef
!ENDIF

!IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)" == "defineundefundef"
USE_MULTI	= define
!ENDIF

!IF "$(USE_ITHREADS)$(USE_MULTI)" == "defineundef"
USE_MULTI	= define
USE_5005THREADS	= undef
!ENDIF

!IF "$(USE_MULTI)$(USE_5005THREADS)" != "undefundef"
BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
!ENDIF

!IF "$(USE_IMP_SYS)" != "undef"
BUILDOPT	= $(BUILDOPT) -DPERL_IMPLICIT_SYS
!ENDIF

# new option - automatically defined in perl.h...
#BUILDOPT        = $(BUILDOPT) -DUSE_ENVIRON_ARRAY

PROCESSOR_ARCHITECTURE = $(TARGETCPU)
ARCHNAME	= $(PLATFORM)-$(OSVERSION)-$(PROCESSOR_ARCHITECTURE)
# unused yet
ARCHDIR		= ..\lib\$(ARCHNAME)
COREDIR		= ..\lib\CORE
AUTODIR		= ..\lib\auto
LIBDIR		= ..\lib
EXTDIR		= ..\ext
PODDIR		= ..\pod
EXTUTILSDIR	= $(LIBDIR)\ExtUtils

LINK32		= link
LIB32		= $(LINK32) -lib
RSC		= rc

INCLUDES	= -I.\include -I. -I..
DEFINES		= -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG) $(CECFLAGS)
LOCDEFS		= -DPERLDLL -DPERL_CORE
CXX_FLAG	= -TP -GX

PERLEXE_RES	= perl.res
PERLDLL_RES	=

!if "$(CFG)" == "RELEASE"
CELIB           = celib.lib
!endif

!if "$(CFG)" == "DEBUG"
CELIB           = celib.lib
!endif

CELIBS          = -nodefaultlib \
                  winsock.lib $(CELIB) coredll.lib

!if $(CEVersion) > 200
CELIBS          = $(CELIBS) corelibc.lib 
!else
CELIBS          = $(CELIBS) msvcrt.lib 
!endif

LIBBASEFILES	= $(CRYPT_LIB) $(CELIBS)

LIBFILES	= $(LIBBASEFILES) $(LIBC)

CFLAGS		= -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
		$(PCHFLAGS) $(OPTIMIZE)

LINK_FLAGS	= -nologo -machine:$(PROCESSOR_ARCHITECTURE)

!if "$(CFG)" == "DEBUG"
LINK_FLAGS      = $(LINK_FLAGS) -debug:full -pdb:none 
!endif

OBJOUT_FLAG	= -Fo
EXEOUT_FLAG	= -Fe

CFLAGS_O	= $(CFLAGS) $(BUILDOPT)

o = .obj

#
# Rules
# 

.SUFFIXES : .c $(o) .dll .lib .exe .rc .res

.c$(o):
	$(CC) -c -I$(<D) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<

.y.c:
	$(NOOP)

$(o).dll:
	$(LINK32) -dll $(SUBSYS) $(LDLIBPATH) \
            -implib:$(*B).lib -def:$(*B).def \
	    -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  

.rc.res:
	$(RSC) -i.. $<

# This must be relative to ../lib/CORE, else the ext dll build fails...
PERLIMPLIB_EXP	= ..\..\wince\$(MACHINE)\perl$(PV).lib
PERLIMPLIB	= $(PERLCEDIR)\$(MACHINE)\perl$(PV).lib
PERLDLL		= $(MACHINE)\perl$(PV).dll

DLLDIR          = $(MACHINE)\dll
PERLEXE		= $(MACHINE)\perl.exe

CONFIGPM	= ..\lib\Config.pm
MINIMOD		= ..\lib\ExtUtils\Miniperl.pm

MAKE		= nmake -nologo

CFGSH_TMPL	= config.ce
CFGH_TMPL	= config_H.ce

#
# filenames given to xsubpp must have forward slashes (since it puts
# full pathnames in #line strings)
XSUBPP		= $(NTPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
		-C++ -prototypes

MICROCORE_SRC	=		\
		..\av.c		\
		..\deb.c	\
		..\doio.c	\
		..\doop.c	\
		..\dump.c	\
		..\globals.c	\
		..\gv.c		\
		..\hv.c		\
		..\mg.c		\
		..\op.c		\
		..\perl.c	\
		..\perlapi.c	\
		..\perly.c	\
		..\pp.c		\
		..\pp_ctl.c	\
		..\pp_hot.c	\
		..\pp_pack.c	\
		..\pp_sort.c	\
		..\pp_sys.c	\
		..\regcomp.c	\
		..\regexec.c	\
		..\run.c	\
		..\scope.c	\
		..\sharedsv.c	\
		..\sv.c		\
		..\taint.c	\
		..\toke.c	\
		..\universal.c	\
		..\utf8.c	\
		..\util.c	\
		..\xsutils.c

EXTRACORE_SRC	= $(EXTRACORE_SRC) perllib.c

!IF "$(PERL_MALLOC)" == "define"
EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\malloc.c
!ENDIF

EXTRACORE_SRC	= $(EXTRACORE_SRC) ..\perlio.c

WIN32_SRC	=		\
		.\wince.c	\
		.\wincesck.c	\
		.\win32thread.c 

!IF "$(CRYPT_SRC)" != ""
WIN32_SRC	= $(WIN32_SRC) .\$(CRYPT_SRC)
!ENDIF

DLL_SRC		= $(DYNALOADER).c

CORE_NOCFG_H	=		\
		..\av.h		\
		..\cop.h	\
		..\cv.h		\
		..\dosish.h	\
		..\embed.h	\
		..\form.h	\
		..\gv.h		\
		..\handy.h	\
		..\hv.h		\
		..\iperlsys.h	\
		..\mg.h		\
		..\nostdio.h	\
		..\op.h		\
		..\opcode.h	\
		..\perl.h	\
		..\perlapi.h	\
		..\perlsdio.h	\
		..\perlsfio.h	\
		..\perly.h	\
		..\pp.h		\
		..\proto.h	\
		..\regexp.h	\
		..\scope.h	\
		..\sharedsv.h	\
		..\sv.h		\
		..\thread.h	\
		..\unixish.h	\
		..\utf8.h	\
		..\util.h	\
		..\warnings.h	\
		..\XSUB.h	\
		..\EXTERN.h	\
		..\perlvars.h	\
		..\intrpvar.h	\
		..\thrdvar.h	\
		.\include\dirent.h	\
		.\include\netdb.h	\
		.\include\sys\socket.h	\
		.\win32.h

!IF "$(USE_SETARGV)" != ""
SETARGV_OBJ	= setargv$(o)
!ENDIF

DYNAMIC_EXT	= Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
		Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
		Sys/Hostname

STATIC_EXT	= DynaLoader
NONXS_EXT	= Errno

DYNALOADER	= $(EXTDIR)\DynaLoader\DynaLoader
SOCKET		= $(EXTDIR)\Socket\Socket
IO		= $(EXTDIR)\IO\IO
DUMPER		= $(EXTDIR)\Data\Dumper\Dumper
#
FCNTL		= $(EXTDIR)\Fcntl\Fcntl
OPCODE		= $(EXTDIR)\Opcode\Opcode
SDBM_FILE	= $(EXTDIR)\SDBM_File\SDBM_File
POSIX		= $(EXTDIR)\POSIX\POSIX
ATTRS		= $(EXTDIR)\attrs\attrs
THREAD		= $(EXTDIR)\Thread\Thread
B		= $(EXTDIR)\B\B
RE		= $(EXTDIR)\re\re
ERRNO		= $(EXTDIR)\Errno\Errno
PEEK		= $(EXTDIR)\Devel\Peek\Peek
BYTELOADER	= $(EXTDIR)\ByteLoader\ByteLoader
DPROF		= $(EXTDIR)\Devel\DProf\DProf
GLOB		= $(EXTDIR)\File\Glob\Glob
HOSTNAME	= $(EXTDIR)\Sys\Hostname\Hostname
SOCKET_DLL	= $(AUTODIR)\Socket\Socket.dll
FCNTL_DLL	= $(AUTODIR)\Fcntl\Fcntl.dll
OPCODE_DLL	= $(AUTODIR)\Opcode\Opcode.dll
SDBM_FILE_DLL	= $(AUTODIR)\SDBM_File\SDBM_File.dll
IO_DLL		= $(AUTODIR)\IO\IO.dll
POSIX_DLL	= $(AUTODIR)\POSIX\POSIX.dll
ATTRS_DLL	= $(AUTODIR)\attrs\attrs.dll
THREAD_DLL	= $(AUTODIR)\Thread\Thread.dll
B_DLL		= $(AUTODIR)\B\B.dll
DUMPER_DLL	= $(AUTODIR)\Data\Dumper\Dumper.dll
PEEK_DLL	= $(AUTODIR)\Devel\Peek\Peek.dll
RE_DLL		= $(AUTODIR)\re\re.dll
BYTELOADER_DLL	= $(AUTODIR)\ByteLoader\ByteLoader.dll
DPROF_DLL	= $(AUTODIR)\Devel\DProf\DProf.dll
GLOB_DLL	= $(AUTODIR)\File\Glob\Glob.dll
HOSTNAME_DLL	= $(AUTODIR)\Sys\Hostname\Hostname.dll

ERRNO_PM	= $(LIBDIR)\Errno.pm

EXTENSION_C	= 		\
		$(SOCKET).c	\
		$(FCNTL).c	\
		$(OPCODE).c	\
		$(SDBM_FILE).c	\
		$(IO).c		\
		$(POSIX).c	\
		$(ATTRS).c	\
		$(THREAD).c	\
		$(RE).c		\
		$(DUMPER).c	\
		$(PEEK).c	\
		$(B).c		\
		$(BYTELOADER).c	\
		$(DPROF).c	\
		$(GLOB).c	\
		$(HOSTNAME).c

EXTENSION_DLL	= 		\
		$(SOCKET_DLL)	\
		$(FCNTL_DLL)	\
		$(OPCODE_DLL)	\
		$(SDBM_FILE_DLL)\
		$(IO_DLL)	\
		$(POSIX_DLL)	\
		$(ATTRS_DLL)	\
		$(DUMPER_DLL)	\
		$(PEEK_DLL)	\
		$(B_DLL)	\
		$(RE_DLL)	\
		$(THREAD_DLL)	\
		$(BYTELOADER_DLL)	\
		$(DPROF_DLL)	\
		$(GLOB_DLL)	\
		$(HOSTNAME_DLL)

EXTENSION_PM	=		\
		$(ERRNO_PM)

POD2HTML	= $(PODDIR)\pod2html
POD2MAN		= $(PODDIR)\pod2man
POD2LATEX	= $(PODDIR)\pod2latex
POD2TEXT	= $(PODDIR)\pod2text

CFG_VARS = \
 "INST_DRV=$(INST_DRV)" \
 "INST_TOP=$(INST_TOP)" \
 "INST_VER=$(INST_VER)" \
 "INST_ARCH=$(INST_ARCH)" \
 "archname=$(ARCHNAME)" \
 "cc=$(CC)" \
 "ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)" \
 "cf_by=Rainer Keuchel" \
 "cf_email=coyxc@rainer-keuchel.de" \
 "d_crypt=$(D_CRYPT)" \
 "d_mymalloc=$(PERL_MALLOC)" \
 "libs=$(LIBFILES)" \
 "incpath=$(CCINCDIR)" \
 "libperl=$(PERLIMPLIB_EXP)" \
 "libpth=$(LIBPATH)" \
 "libc=$(LIBC)" \
 "make=nmake" \
 "static_ext=$(STATIC_EXT)" \
 "dynamic_ext=$(DYNAMIC_EXT)" \
 "nonxs_ext=$(NONXS_EXT)" \
 "use5005threads=$(USE_5005THREADS)" \
 "useithreads=$(USE_ITHREADS)" \
 "usethreads=$(USE_5005THREADS)" \
 "usemultiplicity=$(USE_MULTI)" \
 "LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
 "optimize=$(OPTIMIZE)"

#
# Top targets
#

all: $(MINIMOD) $(CONFIGPM) $(PERLEXE)

$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c

$(CONFIGPM): config.h ..\config.sh ..\minimod.pl
	cd .. && $(NTPERL) configpm
	-mkdir $(COREDIR)
	$(XCOPY) ..\*.h $(COREDIR)\*.*
	$(XCOPY) *.h $(COREDIR)\*.*
	$(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
	$(RCOPY) include $(COREDIR)\*.*
	$(NTPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"

..\config.sh config.h: config.ce config_sh.PL
	$(NTPERL) -I..\lib config_sh.PL $(CFG_VARS) config.ce > ..\config.sh

$(MINIMOD) : ..\minimod.pl
	cd .. && $(NTPERL) minimod.pl > lib\ExtUtils\Miniperl.pm

perlmain.c : runperl.c 
	$(COPY) runperl.c perlmain.c

$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
	if not exist $(AUTODIR) mkdir $(AUTODIR)
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib $(*B)_pm.PL
	$(NTPERL) -I..\..\lib XSLoader_pm.PL
	cd ..\..\wince
	$(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
	$(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
	cd $(EXTDIR)\$(*B)
	$(XSUBPP) dl_win32.xs > $(*B).c
	cd ..\..\wince

$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
	$(COPY) dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs

$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
	cd $(EXTDIR)\Data\$(*B)
	$(NTPERL) -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\..\wince

$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
	cd $(EXTDIR)\Devel\$(*B)
	$(NTPERL) -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\..\wince

$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
	cd $(EXTDIR)\File\$(*B)
	$(NTPERL) -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\..\wince

$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
	cd $(EXTDIR)\Devel\$(*B)
	$(NTPERL) -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\..\wince

$(RE_DLL): $(PERLEXE) $(RE).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(B_DLL): $(PERLEXE) $(B).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(IO_DLL): $(PERLEXE) $(IO).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
	cd $(EXTDIR)\Sys\$(*B)
	$(NTPERL) -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\..\wince

$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
	cd $(EXTDIR)\$(*B)
	$(NTPERL) -I..\..\lib Makefile.PL INSTALLDIRS=perl
	$(MAKE)
	cd ..\..\wince

$(PERLEXE_RES): perl.rc perl.ico
	rc $(RCDEFS) perl.rc

clean: 
	-rm -f $(MACHINE)/dll/*
	-rm -f $(MACHINE)/*.obj
	-rm -f $(MACHINE)/*.exe
	-rm -f $(MACHINE)/*.dll
	-rm -f $(MACHINE)/*.lib
	-rm -f ../config.sh ../lib/Config.pm
	-rm -f config.h perl.res

!if "$(MACHINE)" == "wince-sh3-hpc"
install_perlexe: $(PERLEXE)
	cedel /speicherkarte2/bin/perl.exe
	cecopy pc:../perl.exe ce:/speicherkarte2/bin

install_perldll: $(PERLDLL)
	cedel /speicherkarte2/bin/perl$(PV).dll
	cecopy pc:../perl$(PV).dll ce:/speicherkarte2/bin

install_perl: install_perlexe install_perldll

test_perl:
	cecopy pc:test.pl ce:/speicherkarte2/bin
	ceexec /speicherkarte2/bin/perl.exe /speicherkarte2/bin/test.pl
#	ceexec /speicherkarte2/bin/perl.exe -V

install_lib: ../lib/Config.pm
	cecopy	pc:../lib/Config.pm ce:/speicherkarte2/usr/lib/perl5
!endif

!if "$(MACHINE)" == "wince-arm-hpc"
install_perlexe: $(PERLEXE)
	-cedel /speicherkarte/bin/perl.exe
	cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin

install_perldll: $(PERLDLL)
	-cedel /speicherkarte/bin/perl$(PV).dll
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin

install_perl: install_perlexe install_perldll

test_perl:
	cecopy pc:test.pl ce:/speicherkarte/bin
	ceexec /speicherkarte/bin/perl.exe /speicherkarte/bin/test.pl
#	ceexec /speicherkarte2/bin/perl.exe -V

install_lib: ../lib/Config.pm
	cecopy	pc:../lib/Config.pm ce:/speicherkarte/usr/lib/perl5
!endif

!if "$(MACHINE)" == "wince-mips-hpc"
install_perlexe: $(PERLEXE)
	cecopy pc:../perl.exe ce:/netzwerk/compaq/bin

install_perldll: $(PERLDLL)
	cecopy pc:../perl$(PV).dll ce:/netzwerk/compaq/bin

install_perl: install_perlexe install_perldll

test_perl:
	cecopy pc:test.pl ce:/netzwerk/compaq/bin
	ceexec /netzwerk/compaq/bin/perl.exe /netzwerk/compaq/bin/test.pl
#	ceexec /netzwerk/compaq/bin/perl.exe -V

install_lib: ../lib/Config.pm
	cecopy	pc:../lib/Config.pm ce:/netzwerk/compaq/usr/lib/perl5
!endif

!if "$(MACHINE)" == "wince-x86em-pocket"
install_lib:
	ftpcopy ../lib/Config.pm ftp!ftp@localhost:/perl/lib
	ftpcopy ../lib/Exporter.pm ftp!ftp@localhost:/perl/lib
	ftpcopy ../lib/Exporter/Heavy.pm ftp!ftp@localhost:/perl/lib/Exporter

install_perlexe: $(PERLEXE)
	cecopy pc:../perl.exe ce:/netzwerk/compaq/bin

install_perldll: $(PERLDLL)
	cecopy pc:../perl$(PV).dll ce:/netzwerk/compaq/bin

install_perl: install_perlexe install_perldll

test_perl:
	echo Not yet
!endif


XDLLOBJS = \
$(DLLDIR)\av.obj \
$(DLLDIR)\deb.obj \
$(DLLDIR)\doio.obj \
$(DLLDIR)\doop.obj \
$(DLLDIR)\dump.obj \
$(DLLDIR)\globals.obj \
$(DLLDIR)\gv.obj \
$(DLLDIR)\hv.obj \
$(DLLDIR)\locale.obj \
$(DLLDIR)\mg.obj \
$(DLLDIR)\numeric.obj \
$(DLLDIR)\op.obj \
$(DLLDIR)\perl.obj \
$(DLLDIR)\perlapi.obj \
$(DLLDIR)\perlio.obj \
$(DLLDIR)\perly.obj \
$(DLLDIR)\pp.obj \
$(DLLDIR)\pp_ctl.obj \
$(DLLDIR)\pp_hot.obj \
$(DLLDIR)\pp_pack.obj \
$(DLLDIR)\pp_sort.obj \
$(DLLDIR)\pp_sys.obj \
$(DLLDIR)\regcomp.obj \
$(DLLDIR)\regexec.obj \
$(DLLDIR)\run.obj \
$(DLLDIR)\scope.obj \
$(DLLDIR)\sharedsv.obj \
$(DLLDIR)\sv.obj \
$(DLLDIR)\taint.obj \
$(DLLDIR)\toke.obj \
$(DLLDIR)\universal.obj \
$(DLLDIR)\utf8.obj \
$(DLLDIR)\util.obj \
$(DLLDIR)\win32thread.obj \
$(DLLDIR)\wince.obj \
$(DLLDIR)\wincesck.obj \
$(DLLDIR)\xsutils.obj \
$(DLLDIR)\perllib.obj \
$(DLLDIR)\DynaLoader.obj

{$(SRCDIR)}.c{$(DLLDIR)}.obj:
    $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<

{$(SRCDIR)/wince}.c{$(DLLDIR)}.obj:
    $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<

$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
	$(LINK32) -dll -def:perldll.def -out:$@ \
                  $(SUBSYS) $(LDLIBPATH) \
		  $(LINK_FLAGS) $(LIBFILES) \
		  $(XDLLOBJS) $(PERLDLL_RES)

$(DLLDIR) :
	if not exist "$(DLLDIR)" mkdir "$(DLLDIR)"

$(DLLDIR)\DynaLoader.obj: $(EXTDIR)\DynaLoader\DynaLoader.c
    $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ \
          $(EXTDIR)\DynaLoader\DynaLoader.c

XPERLEXEOBJS = \
$(MACHINE)\perlmain.obj

$(PERLEXE) : $(PERLDLL) $(CONFIGPM) $(XPERLEXEOBJS) $(PERLEXE_RES) $(STARTOBJS)
	$(LINK32) $(SUBSYS) $(LDLIBPATH) \
            -entry:wWinMainCRTStartup \
            -out:$(MACHINE)\perl.exe \
            -stack:0x100000 $(LINK_FLAGS) $(STARTOBJS) $(XPERLEXEOBJS) \
            $(PERLIMPLIB) $(PERLEXE_RES) $(LIBFILES)

$(MACHINE)\perlmain.obj : perlmain.c
	$(CC) $(CFLAGS_O) -UPERLDLL -Fo$(MACHINE)\ -c perlmain.c

iodll:     $(IO_DLL)
socketdll: $(SOCKET_DLL)
dumperdll: $(DUMPER_DLL)

dlls: socketdll iodll dumperdll
	-xmkdir -p $(MACHINE)/lib/auto/IO
	cp ../lib/auto/IO/IO.bs $(MACHINE)/lib/auto/IO
	cp ../lib/auto/IO/IO.dll $(MACHINE)/lib/auto/IO
	-xmkdir $(MACHINE)/lib/auto/Socket
	cp ../lib/auto/Socket/Socket.bs $(MACHINE)/lib/auto/Socket
	cp ../lib/auto/Socket/Socket.dll $(MACHINE)/lib/auto/Socket
	-xmkdir -p $(MACHINE)/lib/auto/Data/Dumper
	cp ../lib/auto/Data/Dumper/Dumper.bs $(MACHINE)/lib/auto/Data/Dumper
	cp ../lib/auto/Data/Dumper/Dumper.dll $(MACHINE)/lib/auto/Data/Dumper

makedist: all dlls
	$(COPY) $(CELIBPATH)\celib.dll $(MACHINE)
	cp perl.txt $(MACHINE)
	cp registry.bat $(MACHINE)
	cp ../lib/Config.pm $(MACHINE)/lib
	cd $(MACHINE)
	rm -f perl-$(MACHINE).tar.gz
	sh -c "tar cf perl-$(MACHINE).tar *.exe *.dll *.txt *.bat lib"
	gzip -9 perl-$(MACHINE).tar
	mv perl-$(MACHINE).tar.gz h:/freenet/new
	cd ..

!if "$(MACHINE)" == "wince-arm-hpc-wce300"
install: all
	cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
install_dlls: dlls
	cecopy pc:../lib/auto/IO/io.dll ce:/speicherkarte/usr/lib/perl5/auto/IO/io.dll
!endif

!if "$(MACHINE)" == "wince-arm-hpc-wce211"
install: all
	cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
!endif

!if "$(MACHINE)" == "wince-mips-hpc-wce211"
install:
	cecopy pc:$(MACHINE)/perl.exe ce:/bin
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/bin
!endif

!if "$(MACHINE)" == "wince-mips-hpc-wce200"
install:
	cecopy pc:$(MACHINE)/perl.exe ce:/bin
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/bin
!endif

!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
install:
	cecopy pc:$(MACHINE)/perl.exe ce:/speicherkarte2/bin
	cecopy pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte2/bin
!endif

perl.ico:
	perl makeico.pl