Hi,
I'm trying to understand the "correct" way to cross compile NSS.
The first approach I tried is based on firefox's
config/external/nss/Makefile.in where I found:
ifdef CROSS_COMPILE
DEFAULT_GMAKE_FLAGS += \
NATIVE_CC='$(HOST_CC)' \
CC='$(CC)' \
CCC='$(CXX)' \
LINK='$(LD)' \
AS='$(AS)' \
AR='$(AR) $(AR_FLAGS:$@=$$@)' \
RANLIB='$(RANLIB)' \
RC='$(RC) $(RCFLAGS)' \
OS_ARCH='$(OS_ARCH)' \
OS_TEST='$(OS_TEST)' \
CPU_ARCH='$(TARGET_CPU)' \
$(NULL)
i.e., override both the native compile NATIVE_CC) and cross compiler
(CC) using GNU make command line arguments. Then, down in
security/nss/coreconf/nsinstall/Makefile (nsinstall needs to be built
native) can use them to set up the native compile vis:
ifdef NATIVE_CC
CC=$(NATIVE_CC)
endif
ifdef NATIVE_FLAGS
OS_CFLAGS=$(NATIVE_FLAGS)
endif
There are two things I'm not understanding with this technique:
- because CC was overridden on the command line, the CC=$(NATIVE_CC)
line gets ignored. I ended up changing it to:
override CC=$(NATIVE_CC)
- puzzlingly NATIVE_FLAGS is not passed down, and when I did pass them
I found it didn't exactly help I ended up overriding CFLAGS vis:
ifneq ($(origin NATIVE_FLAGS),undefined)
#override OS_CFLAGS=$(NATIVE_FLAGS)
override CFLAGS=$(NATIVE_FLAGS)
endif
The second technique I've found is to specify OS_TARGET=uClinux-dist
(say), and then add the file nss/coreconf/ucLinux-dist.mk which sets
things up for a cross compile. With that, the "override" wasn't
needed but the CFLAGS= assignment was.
puzzled,
Andrew
--
dev-tech-crypto mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-crypto