#! gmake # # The contents of this file are subject to the Netscape Public License # Version 1.0 (the "NPL"); you may not use this file except in # compliance with the NPL. You may obtain a copy of the NPL at # http://www.mozilla.org/NPL/ # # Software distributed under the NPL is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL # for the specific language governing rights and limitations under the # NPL. # # The Initial Developer of this code under the NPL is Netscape # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All Rights # Reserved. # ###################################################################### # # Makefile for tubbed-out FE, modeled after XFE Makefile. # DEPTH = ../.. MODULE = moz REQUIRES = \ addr \ applet \ img \ edtplug \ jtools \ lay \ layer \ js \ libfont \ mariner \ msg \ java \ plds \ nspr20 \ parse \ plug \ plugimpl \ hook \ pref \ rdf \ security \ softupdt \ libreg \ style \ util \ $(NULL) CSRCS = \ main.c \ stubbm.c \ stubctxt.c \ stubdlgs.c \ stubedit.c \ stubenc.c \ stubform.c \ stubgrid.c \ stubhelp.c \ stubimg.c \ stublay.c \ stubloc.c \ stubmail.c \ stubmisc.c \ stubplug.c \ stubps.c \ stubrdf.c \ stubrgn.c \ stubsec.c \ stubstr.c \ stubtime.c \ $(NULL) ###################################################################### include $(DEPTH)/config/config.mk CCLD = $(CCC) LDFLAGS = $(CFLAGS) NOMD_LDFLAGS = $(NOMD_CFLAGS) OBJS = $(CSRCS:.c=.o) $(CPPSRCS:.cc=.o) NSPR_LIB = $(DIST)/lib/libplds21.a \ $(DIST)/lib/libplc21.a \ $(DIST)/lib/libmsgc21.a \ $(DIST)/lib/libnspr21.a ifdef DBMALLOC NSPR_LIB += $(DIST)/lib/libdbmalloc.a endif CFLAGS += -DENABLE_MARINER # # We need libnet.a in there twice because libmsg and libnet have circular # dependencies on functions. # BASIC_LIBS = \ $(XFE2_LIB) \ $(MICROLINE_LIB) \ $(ICONS_LIB) \ $(DTWIDGETS_LIB) \ $(XFE_WIDGETS_BM_LIB) \ $(XFE_WIDGETS_LIB) \ $(DIST)/lib/libnetcnvts.a \ $(DIST)/lib/libnetwork.a \ $(DIST)/lib/libnetcache.a \ $(DIST)/lib/libnetutil.a \ $(DIST)/lib/libcnetinit.a \ $(DIST)/lib/libabouturl.a \ $(DIST)/lib/libdataurl.a \ $(DIST)/lib/libnetcnvts.a \ $(DIST)/lib/libfileurl.a \ $(DIST)/lib/libftpurl.a \ $(DIST)/lib/libgophurl.a \ $(DIST)/lib/libhttpurl.a \ $(DIST)/lib/libjsurl.a \ $(DIST)/lib/libmarimurl.a \ $(DIST)/lib/libremoturl.a \ $(DIST)/lib/libnetwork.a \ $(DIST)/lib/libmimetype.a \ $(DIST)/lib/lib$(LITE_PREFIX)rdf.a \ $(DIST)/lib/lib$(LITE_PREFIX)xml.a \ $(DIST)/lib/lib$(LITE_PREFIX)lay.a \ $(DIST)/lib/libxlate.a \ $(DIST)/lib/libpng.a \ $(DIST)/lib/libmariner.a \ $(DIST)/lib/libimg.a \ $(DIST)/lib/libprivacy.a \ $(NULL) ifdef MOZ_LOC_INDEP BASIC_LIBS += $(DIST)/lib/libli.a endif ifdef JAVA_OR_NSJVM JAVA_JMC = $(DIST)/lib/libjmc.a # XXX To be removed... endif BASIC_LIBS += \ $(DIST)/lib/libpng.a \ $(JAVA_JMC) \ $(DIST)/lib/libjpeg.a \ $(DIST)/lib/libhook.a \ $(DIST)/lib/libparse.a \ $(DIST)/lib/lib$(LITE_PREFIX)pref.a \ $(DIST)/lib/lib$(LITE_PREFIX)i18n.a \ $(DIST)/lib/libpics.a \ $(DIST)/lib/libpwcac.a \ $(DIST)/lib/libreg.a \ $(NULL) BASIC_LIBS_2 = \ $(DIST)/lib/lib$(LITE_PREFIX)xp.a \ $(DIST)/lib/libdbm.a \ $(DIST)/lib/libcaps.a \ $(DIST)/lib/libxpcom.a \ $(DIST)/lib/lib$(LITE_PREFIX)rdf.a \ $(NULL) # jwz: link in libmime all the time. # but it needs to be before libnetutil, and I don't know how to do that, # so just link against libnetutil twice. BASIC_LIBS += \ $(DIST)/lib/libmime.a \ $(DIST)/lib/libnetutil.a \ $(NULL) ifdef MOZ_MAIL_NEWS ifdef MOZ_SECURITY BASIC_LIBS += \ $(DIST)/lib/libns_mime.a \ $(NULL) endif BASIC_LIBS_2 += \ $(DIST)/lib/libldap.a \ $(NULL) endif BASIC_LIBS += \ $(DIST)/lib/libmisc.a \ $(DIST)/lib/libprgrss.a \ $(NULL) ifdef MOZ_LDAP BASIC_LIBS += \ $(DIST)/lib/libldap.a \ $(DIST)/lib/liblber.a \ $(NULL) endif ifdef MOZ_MAIL_NEWS BASIC_LIBS += \ $(DIST)/lib/libmozmsg.a \ $(NULL) ifdef MOZ_SECURITY BASIC_LIBS += $(DIST)/lib/libmsg.a \ $(NULL) endif BASIC_LIBS += $(DIST)/lib/libaddr.a \ $(DIST)/lib/libneo.a \ $(DIST)/lib/libaddr.a \ $(NULL) endif ifdef MOZ_MAIL_NEWS BASIC_LIBS += $(DIST)/lib/libnntpurl.a \ $(DIST)/lib/libsmtpurl.a \ $(DIST)/lib/libimap4url.a \ $(DIST)/lib/libpop3url.a \ $(DIST)/lib/libmailbxurl.a \ $(DIST)/lib/libcrtldurl.a \ $(NULL) endif ifdef MOZ_MAIL_NEWS ifdef MOZ_LDAP BASIC_LIBS += $(DIST)/lib/libldapurl.a \ $(NULL) endif endif ifdef MOZ_CALENDAR BASIC_LIBS += \ $(DIST)/lib/libjulian.a \ $(DIST)/lib/libnscnv30.a \ $(DIST)/lib/libnsuni30.a \ $(DIST)/lib/libnsfmt30.a \ $(NULL) endif BASIC_LIBS += \ $(DIST)/lib/lib$(LITE_PREFIX)plug.a \ $(DIST)/lib/libutil.a \ $(DIST)/lib/libfont.a \ $(NULL) ifndef NO_LAYERS BASIC_LIBS += $(DIST)/lib/liblayer.a endif ######################################################################## # Java # ifdef MOZ_JAVA # # Monolithic Java # BASIC_LIBS += \ $(DIST)/lib/lib$(LITE_PREFIX)applet.a \ $(DIST)/lib/libjrt.a \ $(DIST)/lib/libjmd.a \ $(NULL) ifdef EDITOR BASIC_LIBS += $(DIST)/lib/libedtplug.a endif BASIC_LIBS += \ $(DIST)/lib/libnsn.a \ $(DIST)/lib/libnsc.a \ $(DIST)/lib/libjpw.a \ $(DIST)/lib/libzpw.a \ $(DIST)/lib/libiawt.a \ $(DIST)/lib/libmmedia.a \ $(DIST)/lib/libsoftupdate.a \ $(DIST)/lib/libprgrss.a \ $(DIST)/lib/libcon.a \ $(DIST)/lib/libjbn.a \ $(NULL) ifdef MOZ_SECURITY BASIC_LIBS += $(DIST)/lib/libjsl.a endif ifdef MOZ_MAIL_NEWS BASIC_LIBS += $(DIST)/lib/libjsl.a endif BASIC_LIBS += $(DIST)/lib/libjrt.a else # !MOZ_JAVA # # OJI # ifdef MOZ_OJI BASIC_LIBS += $(DIST)/lib/liboji.a ifdef NSJVM ifdef EDITOR BASIC_LIBS += $(DIST)/lib/libedtplug.a endif BASIC_LIBS += $(DIST)/lib/libsoftupdate.a else # !NSJVM BASIC_LIBS += \ $(DIST)/lib/libstubsj.a \ $(DIST)/lib/libstubnj.a \ $(NULL) endif # !NSJVM BASIC_LIBS += $(DIST)/lib/libprgrss.a \ $(NULL) else # !MOZ_OJI # No Monolithic Java, no OJI, just stubs. BASIC_LIBS += \ $(DIST)/lib/libstubsj.a \ $(DIST)/lib/libstubnj.a \ $(NULL) endif # !MOZ_OJI endif # !MOZ_JAVA # XXX To a DSO... BASIC_LIBS += $(DIST)/lib/libzlib.a BASIC_DSOS += -lzlib ifndef NO_MOCHA # XXX To a DSO... BASIC_LIBS += $(DIST)/lib/libjs.a $(DIST)/lib/libjsj.a BASIC_DSOS += -ljs -ljsj BASIC_LIBS += $(DIST)/lib/libmocha.a endif # Post-Java libs BASIC_LIBS += $(DIST)/lib/libstyle.a $(DIST)/lib/libreg.a ifdef MOZ_SECURITY BASIC_LIBS += $(DIST)/lib/libjar.a else EXPORT_LIB = $(DIST)/lib/libhtmldlgs.a $(DIST)/lib/libsecfree.a endif PLUGIN_DSO = $(DIST)/bin/libnullplugin.so WEBFONT_DSO = $(DIST)/bin/libTrueDoc.so ifndef MOZ_LITE JSD_DSO = $(DIST)/bin/libjsd.$(DLL_SUFFIX) endif TARGETS += $(OBJDIR)/stubfe ALL_TARGETS = $(TARGETS) ####################################################################### include $(DEPTH)/config/rules.mk DEFINES += -DNEW_DECODERS ####################################################################### # # Set defaults for all platforms. Each OS_ARCH will override this if # necessary. # ifdef BUILD_OFFICIAL EXTRA_REL_FILES += $(DIST)/bin/vreg $(DEPTH)/l10n/us/xp/bookmark.htm endif # Only SunOS4 needs two versions NIS and DNS. NIS_SRC = NIS_OBJS = NIS_LIB = DNS_LIB = # Only SunOS4 needs separate YP versions. NEED_YP_VERSION = 0 # Only BSDI, Linux, and SunOS4 need the nls directory. NEED_NLS = 0 # Only SunOS5 (Solaris) has MCS. MCS_CMD = true # Only IRIX 5.x uses this. EXTRA_POST_LINK_CMD = echo EXPORT_LDFLAGS = $(BASIC_LIBS) $(EXPORT_LIB) $(BASIC_LIBS_2) $(OTHER_LIBS) $(NSPR_LIB) EXPORT_DEPLIBS = $(BASIC_LIBS) $(EXPORT_LIB) $(BASIC_LIBS_2) $(NSPR_LIB) DSO_EX_LIBS = $(EXPORT_LDFLAGS:$(DIST)/lib/lib%.a=-l%) ####################################################################### # # Adjust build based on OS_ARCH. # ######################################## # IBM Machines ifeq ($(OS_ARCH),AIX) CCLD = svxlC -+ #LDFLAGS = -bGhooksyslibs -bGlibpathexec -bGnoproc LDFLAGS = -bGnoproc OTHER_LIBS = US_LDFLAGS += $(AIX_NSPR_LINK) EXPORT_LDFLAGS += $(AIX_NSPR_LINK) FRANCE_LDFLAGS += $(AIX_NSPR_LINK) # Grab the NSPR shared library and the "Patched especially for Netscape" version of libsvld.a EXTRA_REL_FILES += $(AIX_NSPR) \ $(DEPTH)/config/AIX4.1_libsvld.a \ $(DEPTH)/config/AIX4.1_libc.a \ $(DEPTH)/config/AIX4.2_libc.a \ $(DEPTH)/config/AIX4.1_run_netscape ifndef NO_WEBFONTS EXTRA_REL_FILES += $(WEBFONT_DSO) endif endif ######################################## # FreeBSD ifeq ($(OS_ARCH),FreeBSD) OTHER_LIBS = -lm $(OS_LIBS) endif ######################################## # BSDI ifeq ($(OS_ARCH),BSD_OS) OTHER_LIBS = -lm $(OS_LIBS) ifeq ($(OS_RELEASE),2.1) OTHER_LIBS += -lipc endif NEED_NLS = 1 endif ######################################## # HP Machines ifeq ($(OS_ARCH),HP-UX) ifeq ($(OS_RELEASE),B.10) INCLUDES += -I. endif HPUX_RESOURCE_HACK = -Wp,-H16384 OTHER_LIBS = -L$(DIST)/lib $(OS_LIBS) ifndef NO_EDITOR EXPORT_DEPLIBS += cxxlink-filter US_DEPLIBS += cxxlink-filter CCLD = CC -tl,./cxxlink-filter ifndef NO_WEBFONTS EXTRA_REL_FILES += $(WEBFONT_DSO) endif # # On HP, enable SHLIB_PATH # EXTRA_POST_LINK_CMD = chatr +s enable endif endif ######################################## # SGI Machines ifeq ($(OS_ARCH),IRIX) # # Linker will report that '-lSgm' does not resolve any symbols, but it # should not be removed. SGI dynamically opens the library depending on # the setting of some resources (e.g. "useEnhancedFSB") # OTHER_LIBS = -lgen -laudio -lm $(OS_LIBS) # # On Irix, tag the executable for use by the Indigo Magic Desktop. # This magic number comes from /usr/lib/filetype/install/netscape.ftr # shipped by SGI along with their n.nnS version of Mozilla. # ifeq ($(OS_RELEASE),5) EXTRA_POST_LINK_CMD = /usr/sbin/tag 67150 endif # # If we are using gtscc, we must use it as the linker, and we # can only build statically (no shared libs). # CCLD = CC ifdef USE_GTSCC ifndef NO_GTSCC CCLD = $(DIST)/bin/gtscc $(GTSCC_LD_OPTIONS) -gtsfile $(DEPTH)/config/$(OBJDIR)/db.gts -gtsrootdir $(DEPTH) TARGETS = $(OBJDIR)/stubfe endif endif ifndef NO_WEBFONTS EXTRA_REL_FILES += $(WEBFONT_DSO) endif endif ######################################## # Linux ifeq ($(OS_ARCH),Linux) OTHER_LIBS = /usr/lib/libm.a -ldl US_LDFLAGS += -lc EXPORT_LDFLAGS += -lc FRANCE_LDFLAGS += -lc endif ######################################## # NCR SYSV 4.0 ifeq ($(OS_ARCH),NCR) OTHER_LIBS = -lgen -lm $(OS_LIBS) endif ######################################## # NEC SYSV 4.2 ifeq ($(OS_ARCH),NEC) OTHER_LIBS = -lresolv -lgen -lm $(OS_LIBS) endif ######################################## # Dec Machines ifeq ($(OS_ARCH),OSF1) # We would like to link OSF1 static. # This is because of motif problems (BadMatch errors on non-default visual) # on 3.2 and 3.0 (and not on 2.0). # and you get warnings and core dump when pasting into Mozilla. # Also, libXm must be dynamic, otherwise Japanese text widgets hang # the process. # What a delightful state of affairs. -- erik OTHER_LIBS = -ldnet_stub -lm -lots $(OS_LIBS) EXPORT_LDFLAGS = $(BASIC_LIBS) $(EXPORT_LIB) $(BASIC_LIBS_2) $(NSPR_LIB) $(OTHER_LIBS) FRANCE_LDFLAGS = $(BASIC_LIBS) $(FRANCE_LIB) $(BASIC_LIBS_2) $(NSPR_LIB) $(OTHER_LIBS) US_LDFLAGS = $(BASIC_LIBS) $(US_LIB) $(BASIC_LIBS_2) $(NSPR_LIB) $(OTHER_LIBS) ifndef NO_EDITOR # # OSF's cxx link command will link in _dynamic_ version of two C++ # libraries. This is bad, they are not shipped on a base system. # So, we call this special hacked driver script to do the job. # # NOT TRUE FOR DIGITAL UNIX 4.0 OR GREATER #CCLD = ./cxxlink-driver -cxx_platform OSF1 -cxx_command cxx # Hack to add a dependency for executable. #EXPORT_DEPLIBS += cxxlink-driver #FRANCE_DEPLIBS += cxxlink-driver #US_DEPLIBS += cxxlink-driver # This will also work, but will probably break easily as more C++ # *features* get used (like static constructors - gasp!) #CCLD = cc #OTHER_LIBS += /usr/lib/cmplrs/cxx/libcxx.a /usr/lib/cmplrs/cxx/libexc.a endif endif ######################################## # SNI ReliantUNIX (SINIX) ifeq ($(OS_ARCH),ReliantUNIX) OTHER_LIBS = $(OS_LIBS) endif ifeq ($(OS_ARCH),SINIX-N) OTHER_LIBS = $(OS_LIBS) endif ######################################## # SCO OpenServer ifeq ($(OS_ARCH),SCOOS) OTHER_LIBS = -lm -lPW $(OS_LIBS) ifdef NEED_XMOS LIB_XMOS = $(OBJDIR)/Xmos.o endif endif ######################################## # Sun Machines ifeq ($(OS_ARCH),SunOS) ifeq ($(OS_RELEASE),4.1) OTHER_LIBS = ifndef NO_WEBFONTS EXTRA_REL_FILES += $(WEBFONT_DSO) endif ifndef NO_EDITOR OTHER_LIBS += -L/tools/ns/lib # # Need this guy because the one in libg++.a is broken. # BASIC_LIBS += $(OBJDIR)/regex.o $(OBJDIR)/regex.o: /lib/libc.a ar x /lib/libc.a regex.o && mv regex.o $@ endif # # Need our own popen to fix the SunOS popen problem # BASIC_LIBS += $(OBJDIR)/popen.o CSRCS += popen.c US_LDFLAGS += -lm EXPORT_LDFLAGS += -lm FRANCE_LDFLAGS += -lm # SunOS had 2 executables. Only the non-nis version need this NIS_OBJS = $(OBJDIR)/dns-stub.o NIS_SRCS = dns-stub.c NIS_LIB = $(NIS_OBJS) DNS_LIB = -lresolv # For release only. # This is only for SunOS as it has both nis and non-nis # version of the browser packaged together. EXTRA_EXPORT_OBJS = $(XFE_PROGNAME)-nis-export EXTRA_FRANCE_OBJS = $(XFE_PROGNAME)-nis-france EXTRA_US_OBJS = $(XFE_PROGNAME)-nis-us EXTRA_NETEXPORT_OBJS = $(XFE_PROGNAME)-nis-net-export NEED_YP_VERSION = 1 NEED_NLS = 1 endif ######################################## ifneq (,$(filter 5 5.5,$(OS_RELEASE))) USRLIBDIR := /usr/openwin/lib MCS_CMD = mcs -d ifeq ($(CPU_ARCH),sparc) OTHER_LIBS = $(OS_LIBS) -lgen -lresolv -lm ifndef NO_WEBFONTS EXTRA_REL_FILES += $(WEBFONT_DSO) endif else OTHER_LIBS = $(OS_LIBS) -lm LDFLAGS = $(NOMD_CFLAGS) endif OTHER_LIBS += -L/usr/dt/lib -lXm US_LDFLAGS = -z defs -L$(USRLIBDIR) \ -R$(USRLIBDIR) $(BASIC_LIBS) $(US_LIB) $(BASIC_LIBS_2) \ $(OTHER_LIBS) $(NSPR_LIB) EXPORT_LDFLAGS = -z defs -L$(USRLIBDIR) \ -R$(USRLIBDIR) $(BASIC_LIBS) $(EXPORT_LIB) $(BASIC_LIBS_2) \ $(OTHER_LIBS) $(NSPR_LIB) FRANCE_LDFLAGS = -z defs -L$(USRLIBDIR) \ -R$(USRLIBDIR) $(BASIC_LIBS) $(FRANCE_LIB) $(BASIC_LIBS_2) \ $(OTHER_LIBS) $(NSPR_LIB) endif endif ######################################## # SCO Unixware 2.1 ifeq ($(OS_ARCH),UNIXWARE) ifdef NEED_XMOS LIB_XMOS = $(OBJDIR)/Xmos.o endif OTHER_LIBS = -lm US_LDFLAGS += -lresolv -lsocket -lc /usr/ucblib/libucb.a EXPORT_LDFLAGS += -lresolv -lsocket -lc /usr/ucblib/libucb.a FRANCE_LDFLAGS += -lresolv -lsocket -lc /usr/ucblib/libucb.a endif ####################################################################### # Rules to build the special MOZ_LITE *.o files $(TARGETS): $(OBJS) # # I moved this to ns/config/rules.mk -mcafee # ####################################################################### # Rules to build resources .SUFFIXES: .ad stubfe: $(OBJDIR)/stubfe $(OBJDIR)/stubfe: $(OBJS) $(EXPORT_OBJS) $(EXPORT_DEPLIBS) @$(MAKE_OBJDIR) rm -f $@ $(CCLD) -o $@ $(LDFLAGS) $(OBJS) $(EXPORT_OBJS) $(EXPORT_LDFLAGS) $(DNS_LIB) @$(EXTRA_POST_LINK_CMD) $@ install:: $(TARGETS) ifeq ($(OS_ARCH),AIX) AIX_HACK := $(notdir $(AIX_NSPR)) # Install nspr dynamic library for AIX. $(AIX_HACK): $(AIX_NSPR) $(INSTALL) -m 644 $< . endif # Skip java50.jar creation java50.jar: export:: $(JAR_NAME) $(VERSION_OBJS): versionn.h everything: all $(ALL_TARGETS) symbols: @echo "TARGETS = $(TARGETS)" @echo "RELEASES = $(RELEASES)" @echo "OS_ARCH = $(OS_ARCH)" @echo "OTHER_LIBS = $(OTHER_LIBS)