Closed Bug 299780 Opened 19 years ago Closed 16 years ago

Make NSS build on WinCE.

Categories

(NSS :: Build, defect)

x86
Windows Mobile 6 Standard
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 454120

People

(Reporter: dougt, Unassigned)

Details

Attachments

(3 files)

Attached patch WINCE5.1.mkSplinter Review
WINCE5.1.mk simply points to WINCE.mk.
this, along with patch 188393, allows NSS to be built for WinCE.
Attached patch Code changesSplinter Review
The patches presented here are not as general as they could be and are intended to simply make NSS build when building Minimo not when building NSS standalone. I know this is a very low priority for the NSS engineers. I would like to land these patches on the main CLIENT branch some time. In the meantime, i created a branch to keep these changes on: NSS_WINCE_CLIENT_TAG
Comment on attachment 188393 [details] [diff] [review] WINCE5.1.mk Doug: you can avoid such trivial WINCEx.y.mk files by adding WINCE to the TARGET_OSES list in mozilla/security/coreconf/config.mk. OSes on that list only need a single <OS>.mk file, as opposed to one for each version of the OS.
Attachment #188393 - Attachment is patch: true
Attachment #188393 - Flags: review-
Comment on attachment 188395 [details] [diff] [review] patch to WINCE.mk. The comment in your version of WINCE.mk seems to imply that it is based on WIN32.mk rather than the current version of WINCE.mk. I need to know how you arrived at the file to help me review it. There are some white space changes (spaces to tabs), which may have been caused by the editor you used. In particular the patch for coreconf/ruleset.mk is all whitespace changes and should be removed. In coreconf/rules.mk, you have: > $(LIBRARY): $(OBJS) > @$(MAKE_OBJDIR) > rm -f $@ >+ifeq (,$(filter-out WINCE%,$(OS_TARGET))) >+ $(AR) $(OBJS) -OUT:$@ >+else > ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET))) > $(AR) $(subst /,\\,$(OBJS)) > else > $(AR) $(OBJS) > endif >+endif You should make -OUT:$@ part of AR so you don't need a special case for WINCE here. You don't define AR in WINCE.mk, so you are obviously passing that in on the command line from mozilla/security/manager/Makefile.in. I believe your other changes to coreconf/rules.mk can also be improved.
Doug, I think there's some background information missing here. I had NSS building and working with WinCE (Pocket PC 2002) in 2002. There were a LOT more changes than this needed to get it to build and work. So, if the attached patches are really all that are now needed, then I gather that either a) the WinCE SDK has changed *radically* since 2002, or b) you're not using it, but are instead using something else. (cygwin CE? :) What about WinCE on ARM CPUs? Previously, MS's compiler for ARM was named clarm.exe. Does "cl" now build for ARM CPUs too? PPC2002's SDK used only unicode (UCS2) not ASCII, in things like filenames, So there were lots of changes needed in places where filenames are used, such as in NSS_Init, and the handling of filenames strings for secmod.db. The SDK's headers didn't support most libc functions, and didn't offer "errno". I developed a BIG mod to dbm to get it to use NSPR for all file IO instead of libc file IO methods (which didn't exist on WinCE). It also used NSPR error codes rather then "errno", which also didn't exist. I also developed an implementation of errno (in NSS headers, IIRC) that used NSPR to provide the function that returns the address of errno in thread local storage. I don't see anything like that in these patches. Is there another patch somewhere, that implements lots of missing libc features, on which this patch depends? If so, pls provide info about that. Other comments: a) the patch that reformats comments in ruleset.mk (but makes no other changes) seems unnecessary. b) do you really want to change the block comment in wince.mk to say this is a makefile for NT and Win95? Or is the sense of this patch backwards? Finally, these changes, if accepted, need to land on the trunk, not merely on some browser branch.
Comment on attachment 188400 [details] [diff] [review] Code changes These changes look okay. Can you describe what they are? For example, "XXX header is available on current versions of WinCE" or "XXX feature in libSSL can be implemented on current versions of WinCE".
cygwin ce -- not really, but close :-> These changes require mozilla/build/wince/shunt/ -- it is a library which implements many of the missing APIs that Win32 has but WinCE doesn't. For example, CreateMutexA is implemented in terms of CreateMutexW. I do think that errno is broken as it doesn't use tls. As far as the compiler goes, when building mozilla minimo, i explictly set CXX, LD, AR, etc. So, no doubt the changes to ignore clarm aren't general. Maybe these changes are not needed if NSS already builds for WINCE. I couldn't get it to work out of the box.
Doug, there have been numerous attempts to build NSS and NSPR on WinCE in the past. At least one of them was succesful. Here are some relevant branch tags: NSS_WINCE_ALPHA_BRANCH WINCE_PORT_BRANCH WINCE_20020218_BRANCH WINCE_20020710_BRANCH
QA Contact: wtchang → build
not actively working on this, feel free to help yourself.
Assignee: doug.turner → nobody
OS: Windows XP → Windows Mobile 6 Standard
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: