Hello dear CMake Users and Maintainers,

we would like to use CMake in our project, but one of the required platform is Windows Mobile 5.0. Unfortunately, CMake does not support this platform "out of the box". I know CMake supports cross-compiling now and is extensible, so I want to devote some time and try to write additional platform modules. However, I am sure some guidance from the CMake developers would save me lots of time. I will describe what I did to make a simple Makefile for nmake. I am using the Visual Studio 2005 and the Windows Mobile 5 SDK integrates with it. Normally I have to run the vcvarsall.bat or use the VS 2005 Command Prompt. Before running nmake, I have to set some environment variables:

set PATH=c:\Program files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm\;%PATH% set INCLUDE=C:\Program files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i;C:\Program files\Microsoft Visual Studio 8\VC\ce\atlmfc\include;C:\Program files\Microsoft Visual Studio 8\VC\ce\include set LIB=C:\Program files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;C:\Program files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I

After this I can run nmake. A sample working makefile for a Debug build is given below.

There are 3 processor architectures supported: arm, mips, sh, which translate to VC\ce\bin subdirectories: x86_arm, x86_mips, x86_sh; but at the moment ARM is the one we are using.

I tried to hook up a custom platform file for cmake, but once the VS Command Prompt is used, it always wants to detect the compiler by building CMakeCCompilerId.c and running it, which fails, as it is a cross-compilation. I guess much of the Windows-cl.cmake could be reused for Windows Mobile. So could anyone help me and give some hints how this could be done ? I would like to start with NMake Makefiles first.
Any answers will be well appreciated.
Regards,

Art

############# Makefile.ce ############

CFLAGS = /Od /Os /D OSAL_BUILD_DLL /D _MSV_VER=1400 /D "_DEBUG" /D "_WIN32_WCE=0x501" /D "UNDER_CE" \ /D "WIN32_PLATFORM_PSPC" /D "WINCE" /D "DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "ARM" /D "_ARM_" /D "_UNICODE" \ /D "UNICODE" /D "_WINDLL" /Gm /EHsc /MTd /fp:fast /GR /W3 /nologo /c /Zi /TP
LIBS = coredll.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib

CPPFLAGS  = $(CFLAGS)

OSALINC = /I./

O = WM5PPC-Debug\

OUTPUTDLL = $(O)\osal.dll
OUTPUTLIB = $(O)\osal.lib
LFLAGS =  /NOLOGO /DLL /MANIFEST:NO /NODEFAULTLIB:"oldnames.lib" \
                 /DEBUG /ERRORREPORT:PROMPT /subsystem:windowsce,5.01

COMPL = $(CPP) $(CPPFLAGS) $(OSALINC) /Fo$@ $**
OBJS = $O\osal.obj $O\sharedmem.obj $O\systeminfo.obj $O\semaphore.obj all: $(OUTPUTDLL)

$(OUTPUTDLL): $OUTDIR $(OBJS)
   link $(LFLAGS) /OUT:$(OUTPUTDLL) /IMPLIB:$(OUTPUTLIB) $(OBJS) $(LIBS)


$OUTDIR:
   if not exist "$O" mkdir "$O"
$(OBJS): src/$(*B).cpp
   $(COMPL)


_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to