Get mozilla PSM working for hp-ux

VERIFIED FIXED in mozilla0.8



18 years ago
18 years ago


(Reporter: jdunn, Assigned: jdunn)


Dependency tree / graph

Firefox Tracking Flags

(Not tracked)



(6 attachments)



18 years ago
following cls's instructions for building psm
-do a normal trunk pull and build
-gmake -f pull_all BUILD_MODULES=psm
-gmake BUILD_MODULES=psm

Need to make changes to get the HP psm building.

diffs will follow.

Comment 1

18 years ago
updating fields & accepting
Priority: -- → P2
QA Contact: ckritzer → barrettl
Target Milestone: --- → mozilla0.8

Comment 2

18 years ago
Created attachment 22349 [details] [diff] [review]
HP-UX changes... diff -c

Comment 3

18 years ago
The diffs i just put in are for the following:

-I modified the CC & OS_CFLAGS define in to match
 how we are building the rest of mozilla for hpux 11.00
-we don't use -lrt
-we use aCC ($CCC) to make sharelibs AND progs

-declaring something extern and static doesn't make sense...
 the HP compiler doesn't like this.  These symbols are
 needed elsewhere... (which is why i am assuming someone
 declared them extern)

- -lpthread is already included... so why have it again
- remove the -shared from LINK_LIBS... not needed
- HP (and AIX) requires that .so/.sl be executable so instead
  of installing them as 644 we need to do it as 755
- for building the XPI... now that psm sits in the 'package'
  directory we no longer need to include XPCOM/NSPR/COMPONENTS
  do we?  And if we don't need these, then we don't need to have
  start-regxpcom (since if run in the package dir, it will overwrite
  the mozilla component.reg.

- hp's compiler has an issue if a program with 'main' in a .c
  invokes any C++ routines (in this case, psm links in the
  nlslayer.cpp).  So in order to do the 'c++' initialization
  we must 'force' a call to _main.  I ifdef'd this HPUX.

security/psm/server/ start-psm & start-regxpcom
- add LIBPATH (AIX) and SHLIB_PATH (HP-UX) settings.

wtc, david?  What do u guys think?

Blocks: 18687

Comment 4

18 years ago
adding cls... thought I had him before

Comment 5

18 years ago
security/pxm/server/main.c: Since PSM now links with
C++ code, I think we should link PSM with the C++
compiler.  I remember that the main() function for a
C++ program must be in a C++ file, so main.c may need
to be renamed main.cpp.  Doing this should fix bug #64427
and the second problem in bug #64713 automatically
(-lstdc++ or -lC).

security/coreconf/ Changes to this file need
to be carefully reviewed and tested because security/coreconf
is also used by NSS and JSS.

Comment 6

18 years ago
I looked at the changes in the mozilla/security/psm subdirectories.  They look

wtc's suggestion is a good one, but I'm not sure how easy it would be to make
psm link with c++ instead of cc.

wtc, do you know if coreconf has a flag for setting the linker?

Comment 7

18 years ago
With the exception of the changes to Makefile to
clean up build_xpi... my changes are all relatively
harmless and HP specific.  Event he change to main.c
won't effect others... I would rather NOT include the
switch from main.c to main.cpp in this change... since
that will effect other unixes/mac/windows (i think).

I have 2 questions...
do I have someone r=?
do one of you have sr= or a= approval for this?

2ndly does ANYTHING other than mozilla psm use this code
(i.e. with my mucking with HP's security/coreconf defines
 muck up any other product at netscape/iPlanet/mozilla?)

Comment 8

18 years ago
Created attachment 22412 [details] [diff] [review]
Patch for mozilla/security/coreconf/

Comment 9

18 years ago

Patch id=22412 is the only change I will make to
mozilla/security/coreconf/  Comments on
the rejected changes.
1. -lrt is required when linking with the (unsupported)
   static NSPR libraries.  When we really do not build
   NSPR static libraries at all, we can remove -lrt.
   Right now it is harmless because will
   pull it in anyway as an implicit dependency.
2. We cannot use the C++ compiler to link the shared
   libraries and programs *by default* because
   mozilla/security/coreconf is also used by NSS, which
   does not have C++ code.
3. +DAportable is the flag recommended by the HP engineer
   that worked with us before.
4. The default value of CC is cc.  If you insist we can
   set CC to cc explicitly.  (I was going for minimal

Regarding the C++ main() function problem, I think we
should implement the real solution.  Your suggested change
works for aCC but will break when people try to build
with g++ on HP-UX.  If the C++ language requires that the
main() function be in a C++ file, we should do that.


To use the C++ compiler to link the PSM server, just
set MKPROG to $(CCC).  By default, MKPROG is $(CC).

Comment 10

18 years ago
Created attachment 22449 [details] [diff] [review]
new diff

Comment 11

18 years ago
Ok, I made changes based on the comments...
-the only reason I am doing the CC=cc is that by
 definition for building mozilla we set CC=cc -ext -Ae +DA1.1 +DS2.0
 in our env.  and security doesn't like this.  So by explicitly setting
 CC=cc we override this.
-I moved MKSHLIB & MKPROG to security/psm/server/Makefile
-i have a new file main.cpp (security/psm/seerver/Makefile) which
 is essentially the same as main.c with some changes required by
 hp (see the diff).
-I removed main.c from the and added main.cpp

I tested this on HP and Linux... I will try to do it on Win32...
but can't on MAC which is why I didn't want to even attempt adding
a new file (main.cpp).  I need someone to try this out for me
(preferably on mac and win32).

Comment 12

18 years ago
This will break the Mac when it goes in.

The Mac projects will have to be updated to have the new file.  Unfortunately, 
I'm extremely busy right now, and won't have time until sometime next week.

Also, I'd like to leave the rules for releas_md in the server Makefiles as is 
because that rules tends to be for building PSM package for Communicator.  The 
changes you made for building the XPI are fine.

jdunn, looks like we'll have to carpool between ourselves to land this.

Comment 13

18 years ago
ok... lets carpool next week.

I am fighting trying to build win32 right now...
talk to u next week.

Comment 14

18 years ago
I checked in the +DAportable +DS2.0 change on the tip and the
/cvsroot/mozilla/security/coreconf/, revisions 1.3 and

I set CC=cc explicitly in, which applies to all HP-UX releases.
I checked this in on the tip and the NSS_3_1_BRANCH.
/cvsroot/mozilla/security/coreconf/, revisions 1.4 and

Comment 15

18 years ago
Created attachment 22792 [details] [diff] [review]
Latest changes (main.cpp -> calling psm_main())

Comment 16

18 years ago
Ok, here are my latest changes.
-I no longer set CC=cc in file,
 I keep DAportable and just change to DS2.0
-in the 2 security/psm/server/start scripts
 i still set SHLIB_PATH & LIBPATH for HP-UX and AIX
-in security/psm/server/
 -I added main.cpp that calls psm_main()
  psm_main is in psmain.c (formally main.c - since u can't have
  2 main.o)
 -I changed main.c to psmmain.c in and add
  main.cpp as a CPPSRCS
 -in Makefile
  I did my normal HP things
  for build_xpi changes... i just chmod 755 instead of 644 for
  'libs', since HP & AIX require them to be executable
-in nlslayer.cpp I am still removing the 'static' from the 3
 symbols which are marked extern

guys how does this look?
javi when is good for you to carpool?


18 years ago
Blocks: 66185

Comment 17

18 years ago
Created attachment 23384 [details]
the new c++ main routine

Comment 18

18 years ago
Created attachment 23385 [details]
the old 'c' main.c file renamed to psmmain.c

Comment 19

18 years ago
This patch has been checked in.  jdunn, please verify.
Last Resolved: 18 years ago
Resolution: --- → FIXED

Comment 20

18 years ago
I got this to work today...
Here are my steps to build

cvs co mozilla/
cd mozilla
set .mozconfig to
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-hppa-hp-hpux11.00
    ac_add_options --enable-nspr-autoconf
set env to /u/jdunn/bin/mkmozhp11
gmake -f pull_and_build_all
set CC=cc
set CXX=aCC
gmake -f pull_all BUILD_MODULES=psm
gmake -f build_all BUILD_MODULES=psm
You need to log in before you can comment on or make changes to this bug.