/[jscoverage]/trunk/js/Makefile.in
ViewVC logotype

Annotation of /trunk/js/Makefile.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 510 - (hide annotations)
Mon Jan 11 05:17:00 2010 UTC (9 years, 10 months ago) by siliconforks
File size: 18514 byte(s)
Fixes for building on Windows.

1 siliconforks 460 # -*- Mode: makefile -*-
2     #
3     # ***** BEGIN LICENSE BLOCK *****
4     # Version: MPL 1.1/GPL 2.0/LGPL 2.1
5     #
6     # The contents of this file are subject to the Mozilla Public License Version
7     # 1.1 (the "License"); you may not use this file except in compliance with
8     # the License. You may obtain a copy of the License at
9     # http://www.mozilla.org/MPL/
10     #
11     # Software distributed under the License is distributed on an "AS IS" basis,
12     # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13     # for the specific language governing rights and limitations under the
14     # License.
15     #
16     # The Original Code is Mozilla Communicator client code, released
17     # March 31, 1998.
18     #
19     # The Initial Developer of the Original Code is
20     # Netscape Communications Corporation.
21     # Portions created by the Initial Developer are Copyright (C) 1998
22     # the Initial Developer. All Rights Reserved.
23     #
24     # Contributor(s):
25     #
26     # Alternatively, the contents of this file may be used under the terms of
27     # either of the GNU General Public License Version 2 or later (the "GPL"),
28     # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29     # in which case the provisions of the GPL or the LGPL are applicable instead
30     # of those above. If you wish to allow use of your version of this file only
31     # under the terms of either the GPL or the LGPL, and not to allow others to
32     # use your version of this file under the terms of the MPL, indicate your
33     # decision by deleting the provisions above and replace them with the notice
34     # and other provisions required by the GPL or the LGPL. If you do not delete
35     # the provisions above, a recipient may use your version of this file under
36     # the terms of any one of the MPL, the GPL or the LGPL.
37     #
38     # ***** END LICENSE BLOCK *****
39    
40     DEPTH = .
41     topsrcdir = @top_srcdir@
42     srcdir = @srcdir@
43    
44 siliconforks 507 run_for_side_effects := $(shell echo "MAKE: $(MAKE)")
45     include $(DEPTH)/config/autoconf.mk
46    
47 siliconforks 460 DIRS = config
48    
49 siliconforks 507 ifdef DEHYDRA_PATH
50     DIRS += analysis-tests
51     endif
52 siliconforks 460
53 siliconforks 507 ifdef JS_NATIVE_EDITLINE
54     DIRS += editline
55     endif
56 siliconforks 460
57 siliconforks 507 # editline needs to get built before the shell
58     ifndef JS_DISABLE_SHELL
59     DIRS += shell
60     endif
61 siliconforks 460
62 siliconforks 507 # FIXME: bug 515383 covers getting these working on wince
63     ifndef WINCE
64     ifdef ENABLE_TESTS
65     DIRS += jsapi-tests
66 siliconforks 460 endif
67 siliconforks 507 endif
68 siliconforks 460
69 siliconforks 507 ifdef ENABLE_TESTS
70     DIRS += tests
71     endif
72    
73     MODULE = js
74     LIBRARY_NAME = mozjs
75     STATIC_LIBRARY_NAME = js_static
76     GRE_MODULE = 1
77    
78     LIBS = $(NSPR_LIBS)
79    
80 siliconforks 460 ifdef GNU_CXX
81     ifdef INTEL_CXX
82     # icc gets special optimize flags
83     ifdef MOZ_PROFILE_GENERATE
84     MODULE_OPTIMIZE_FLAGS = -O0
85     else
86     MODULE_OPTIMIZE_FLAGS = -O2 -ip
87     #XXX: do we want different INTERP_OPTIMIZER flags here?
88     endif
89     else # not INTEL_CXX
90 siliconforks 507 MODULE_OPTIMIZE_FLAGS = -O3 -fstrict-aliasing $(MOZ_OPTIMIZE_SIZE_TWEAK)
91 siliconforks 460 # Special optimization flags for jsinterp.c
92     INTERP_OPTIMIZER = -O3 -fstrict-aliasing
93     endif
94     else # not GNU_CXX
95     ifeq ($(OS_ARCH),SunOS)
96     MODULE_OPTIMIZE_FLAGS = -xO4
97     endif
98     ifeq ($(OS_ARCH),WINNT)
99     ifdef WINCE
100     # -GL is not supported on windows mobile while we are using the arm-wince-link command
101     MODULE_OPTIMIZE_FLAGS = -O2
102     else
103     MODULE_OPTIMIZE_FLAGS = -O2 -GL
104     endif
105     endif
106     endif
107    
108    
109     ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
110     LIBRARY_NAME = js$(MOZ_BITS)$(VERSION_NUMBER)
111     endif
112    
113     # JavaScript must be built shared, even for static builds, as it is used by
114     # other modules which are always built shared. Failure to do so results in
115     # the js code getting copied into xpinstall and jsd as well as mozilla-bin,
116     # and then the static data cells used for locking no longer work.
117 siliconforks 507 #
118     # In fact, we now build both a static and a shared library, as the
119     # JS shell would like to link to the static library.
120 siliconforks 460
121     FORCE_SHARED_LIB = 1
122 siliconforks 507 FORCE_STATIC_LIB = 1
123 siliconforks 460
124     VPATH = $(srcdir)
125    
126     CPPSRCS = \
127     jsapi.cpp \
128     jsarena.cpp \
129     jsarray.cpp \
130     jsatom.cpp \
131     jsbool.cpp \
132     jscntxt.cpp \
133     jsdate.cpp \
134     jsdbgapi.cpp \
135     jsdhash.cpp \
136     jsdtoa.cpp \
137     jsemit.cpp \
138     jsexn.cpp \
139     jsfun.cpp \
140     jsgc.cpp \
141     jshash.cpp \
142     jsinterp.cpp \
143     jsinvoke.cpp \
144     jsiter.cpp \
145     jslock.cpp \
146     jslog2.cpp \
147     jsmath.cpp \
148     jsnum.cpp \
149     jsobj.cpp \
150     json.cpp \
151     jsopcode.cpp \
152     jsparse.cpp \
153     jsprf.cpp \
154     jsregexp.cpp \
155     jsscan.cpp \
156     jsscope.cpp \
157     jsscript.cpp \
158     jsstr.cpp \
159 siliconforks 507 jstask.cpp \
160 siliconforks 460 jsutil.cpp \
161     jsxdrapi.cpp \
162     jsxml.cpp \
163     prmjtime.cpp \
164     $(NULL)
165    
166     ifdef HAVE_DTRACE
167 siliconforks 507 CPPSRCS += \
168     jsdtracef.cpp
169 siliconforks 460 endif
170    
171     INSTALLED_HEADERS = \
172     js-config.h \
173     jsautocfg.h \
174 siliconforks 510 jsautokw.h \
175 siliconforks 460 js.msg \
176     jsapi.h \
177     jsarray.h \
178     jsarena.h \
179     jsatom.h \
180     jsbit.h \
181     jsbool.h \
182     jsclist.h \
183     jscntxt.h \
184     jscompat.h \
185     jsdate.h \
186     jsdbgapi.h \
187     jsdhash.h \
188     jsdtoa.h \
189     jsemit.h \
190     jsfun.h \
191     jsgc.h \
192     jshash.h \
193     jsinterp.h \
194 siliconforks 507 jsinttypes.h \
195 siliconforks 460 jsiter.h \
196     jslock.h \
197     jslong.h \
198     jsmath.h \
199     jsnum.h \
200     jsobj.h \
201 siliconforks 507 jsobjinlines.h \
202 siliconforks 460 json.h \
203     jsopcode.tbl \
204     jsopcode.h \
205     jsotypes.h \
206     jsparse.h \
207     jsprf.h \
208     jsproto.tbl \
209     jsprvtd.h \
210     jspubtd.h \
211     jsregexp.h \
212     jsscan.h \
213     jsscope.h \
214     jsscript.h \
215 siliconforks 507 jsscriptinlines.h \
216 siliconforks 460 jsstaticcheck.h \
217     jsstr.h \
218 siliconforks 507 jstask.h \
219 siliconforks 460 jstracer.h \
220     jstypes.h \
221     jsutil.h \
222     jsversion.h \
223     jsxdrapi.h \
224     jsxml.h \
225     $(NULL)
226    
227     ifdef ENABLE_JIT
228     VPATH += $(srcdir)/nanojit
229    
230     INSTALLED_HEADERS += \
231     jsbuiltins.h \
232     Assembler.h \
233 siliconforks 507 Allocator.h \
234     CodeAlloc.h \
235     Containers.h \
236 siliconforks 460 LIR.h \
237     avmplus.h \
238     Fragmento.h \
239     Native.h \
240     Native$(NANOJIT_ARCH).h \
241     RegAlloc.h \
242     nanojit.h \
243     $(NULL)
244    
245     CPPSRCS += \
246     jstracer.cpp \
247     Assembler.cpp \
248 siliconforks 507 Allocator.cpp \
249     CodeAlloc.cpp \
250     Containers.cpp \
251 siliconforks 460 Fragmento.cpp \
252     LIR.cpp \
253     RegAlloc.cpp \
254     avmplus.cpp \
255     Native$(NANOJIT_ARCH).cpp \
256     jsbuiltins.cpp \
257     $(NULL)
258    
259     ifdef WINCE
260     # don't need -c
261     AS_DASH_C_FLAG =
262 siliconforks 507 ASFLAGS += -arch 6
263 siliconforks 460 ASFILES += jswince.asm
264     endif
265    
266 siliconforks 507 endif # ENABLE_JIT
267 siliconforks 460
268     ifdef HAVE_DTRACE
269     INSTALLED_HEADERS += \
270     jsdtracef.h \
271     $(CURDIR)/javascript-trace.h \
272     $(NULL)
273     endif
274    
275     ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
276     INSTALLED_HEADERS += jscpucfg.h
277     endif
278    
279     EXPORTS = $(INSTALLED_HEADERS)
280    
281     JS_SAFE_ARENA = 1
282    
283     DASH_R = -r
284    
285     ifneq (,$(filter OS2 WINCE WINNT,$(OS_ARCH)))
286     SDK_LIBRARY = $(IMPORT_LIBRARY)
287     else
288     SDK_LIBRARY = $(SHARED_LIBRARY)
289     endif
290    
291     include $(topsrcdir)/config/config.mk
292    
293     EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
294    
295     ifdef MOZ_MEMORY
296     ifeq ($(OS_ARCH),SunOS)
297     EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DIST)/lib)
298     endif
299     endif
300    
301     ifndef BUILD_OPT
302     MOCHAFILE = 1
303     endif
304    
305 siliconforks 507 ifdef MOZ_OJI
306 siliconforks 460 ifndef NSBUILDROOT
307     JSJAVA_STUBHEADERS = \
308     -I$(topsrcdir)/sun-java/include/_gen \
309     -I$(topsrcdir)/sun-java/netscape/javascript/_jri \
310     -I$(topsrcdir)/sun-java/netscape/security/_jri
311     else
312     JSJAVA_STUBHEADERS = -I$(JRI_GEN_DIR) -I$(JDK_GEN_DIR)
313     endif
314    
315     JSJAVA_CFLAGS = \
316     -I$(topsrcdir)/sun-java/md-include \
317     -I$(topsrcdir)/sun-java/include \
318     $(JSJAVA_STUBHEADERS)
319 siliconforks 507 endif
320 siliconforks 460
321     # Define keyword generator before rules.mk, see bug 323979 comment 50
322    
323     HOST_SIMPLE_PROGRAMS += host_jskwgen$(HOST_BIN_SUFFIX)
324     GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
325    
326     HOST_SIMPLE_PROGRAMS += host_jsoplengen$(HOST_BIN_SUFFIX)
327     GARBAGE += jsautooplen.h host_jsoplengen$(HOST_BIN_SUFFIX)
328    
329     USE_HOST_CXX = 1
330    
331     ifdef HAVE_DTRACE
332     ifneq ($(OS_ARCH),Darwin)
333     DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
334     endif
335     MOZILLA_DTRACE_SRC = $(srcdir)/javascript-trace.d
336     endif
337    
338 siliconforks 507 default::
339 siliconforks 460
340 siliconforks 507 ifneq (,$(CROSS_COMPILE)$(filter-out WINNT OS2,$(OS_ARCH)))
341     ifneq (,$(filter-out SYMBIAN WINCE,$(OS_ARCH)))
342 siliconforks 460 # nsinstall doesn't get built until we enter config/ in the exports phase,
343     # so we'll have to manually ensure it gets built here if we want to use
344     # $(EXPORTS)
345 siliconforks 507 export:: config/nsinstall$(HOST_BIN_SUFFIX)
346     $(PUBLIC) $(SDK_PUBLIC): config/nsinstall$(HOST_BIN_SUFFIX)
347 siliconforks 460
348     config/nsinstall$(HOST_BIN_SUFFIX): $(srcdir)/config/nsinstall.c $(srcdir)/config/pathsub.c
349     $(MAKE) -C config/ nsinstall$(HOST_BIN_SUFFIX)
350     endif
351     endif
352    
353 siliconforks 507 include $(topsrcdir)/config/rules.mk
354    
355 siliconforks 460 ifdef MOZ_SYNC_BUILD_FILES
356     # Because the SpiderMonkey can be distributed and built independently
357     # of the Mozilla source tree, it contains its own copies of many of
358     # the files used by the top-level Mozilla build process, from the
359     # 'config' and 'build' subtrees.
360     #
361     # To make it simpler to keep the copies in sync, we follow the policy
362     # that the SpiderMonkey copies must always be exact copies of those in
363     # the containing Mozilla tree. If you've made a change in one, it
364     # belongs in the other as well. If the change isn't right for both
365     # places, then that's something to bring up with the other developers.
366     #
367 siliconforks 507 # Some files are reasonable to diverge; for example,
368 siliconforks 460 # js/config/autoconf.mk.in doesn't need most of the stuff in
369     # config/autoconf.mk.in.
370     check-sync-dirs = $(PYTHON) $(srcdir)/config/check-sync-dirs.py
371     check::
372     $(check-sync-dirs) $(srcdir)/config $(MOZ_SYNC_BUILD_FILES)/config
373     $(check-sync-dirs) $(srcdir)/build $(MOZ_SYNC_BUILD_FILES)/build
374 siliconforks 507
375     check-valgrind::
376     $(check-sync-dirs) $(srcdir)/config $(MOZ_SYNC_BUILD_FILES)/config
377     $(check-sync-dirs) $(srcdir)/build $(MOZ_SYNC_BUILD_FILES)/build
378 siliconforks 460 endif
379    
380 siliconforks 507 ifdef ENABLE_JIT
381     check::
382     $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/trace-test/trace-test.py \
383     --no-slow --no-progress --tinderbox $(DIST)/bin/js$(BIN_SUFFIX)
384 siliconforks 460
385 siliconforks 507 check-valgrind::
386     $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/trace-test/trace-test.py \
387     --valgrind --no-slow --no-progress --tinderbox $(DIST)/bin/js$(BIN_SUFFIX)
388     endif
389    
390     DIST_GARBAGE = config.cache config.log config.status \
391     config/myrules.mk config/myconfig.mk \
392     unallmakefiles js-config js-config.h js-confdefs.h
393    
394     distclean::
395     cat unallmakefiles | $(XARGS) rm -f
396     rm -f $(DIST_GARBAGE)
397    
398 siliconforks 460 # our build system doesn't handle subdir srcs very gracefully today
399     export::
400     mkdir -p nanojit
401    
402     DEFINES += -DEXPORT_JS_API
403    
404     INCLUDES += -I$(srcdir)
405    
406     GARBAGE += jscpucfg.o jsautocfg.h jsautocfg.tmp jscpucfg
407    
408     ifneq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
409     TARGETS += jscpucfg$(HOST_BIN_SUFFIX)
410     endif
411    
412     ifdef JS_SAFE_ARENA
413     DEFINES += -DJS_USE_SAFE_ARENA
414     endif
415    
416     ifdef JS_THREADSAFE
417     DEFINES += -DJS_THREADSAFE
418     endif
419    
420     ifdef JS_NO_THIN_LOCKS
421     DEFINES += -DJS_USE_ONLY_NSPR_LOCKS
422     endif
423    
424     ifdef JS_VERSION
425     DEFINES += -DJS_VERSION=$(JS_VERSION)
426     endif
427    
428     ifneq ($(findstring -L,$(NSPR_LIBS)),)
429     NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
430     else
431     NSPR_STATIC_PATH = $(DIST)/lib
432     endif
433    
434     ifdef MOZ_SHARK
435     CFLAGS += -F/System/Library/PrivateFrameworks
436     CXXFLAGS += -F/System/Library/PrivateFrameworks
437     LDFLAGS += -F/System/Library/PrivateFrameworks -framework CHUD
438     endif
439    
440     ifdef MOZ_VTUNE
441     CXXFLAGS += -IC:/Program\ Files/Intel/VTune/Analyzer/Include
442     EXTRA_DSO_LDOPTS += C:/Program\ Files/Intel/VTune/Analyzer/Lib/VtuneApi.lib
443     LIBS += C:/Program\ Files/Intel/VTune/Analyzer/Lib/VtuneApi.lib
444     endif
445    
446     # BeOS and HP-UX do not require the extra linking of "-lm"
447     ifeq (,$(filter BeOS HP-UX WINNT WINCE OpenVMS,$(OS_ARCH)))
448     EXTRA_LIBS += -lm
449     endif
450    
451     # Prevent floating point errors caused by VC++ optimizations
452     ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
453     ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
454     CFLAGS += -Op
455     else
456     CFLAGS += -fp:precise
457     endif
458     endif # WINNT
459    
460     ifeq ($(OS_ARCH),FreeBSD)
461     EXTRA_LIBS += -pthread
462     endif
463     ifeq ($(OS_ARCH),IRIX)
464     ifdef USE_N32
465     DASH_R += -n32
466     endif
467     endif
468     ifeq ($(OS_ARCH),Linux)
469     EXTRA_LIBS += -ldl
470     endif
471     ifeq ($(OS_ARCH),OSF1)
472     EXTRA_LIBS += -lc_r
473     endif
474     ifeq ($(OS_ARCH),SunOS)
475     ifeq ($(TARGET_CPU),sparc)
476    
477     ifdef GNU_CC
478 siliconforks 507 CFLAGS += -mcpu=v9
479     CXXFLAGS += -mcpu=v9
480 siliconforks 460 else
481 siliconforks 507 ASFLAGS += -xarch=v8plus -P -L -D_ASM -D__STDC__=0 -K PIC
482 siliconforks 460 endif # GNU_CC
483    
484     endif
485     ifeq ($(OS_RELEASE),4.1)
486     EXTRA_LIBS += -ldl -lnsl
487     else
488     EXTRA_LIBS += -lposix4 -ldl -lnsl -lsocket
489     endif
490     endif
491    
492     ifdef MOZ_MEMORY
493     ifeq ($(OS_ARCH),Darwin)
494     LDFLAGS += -ljemalloc
495     endif
496     endif
497    
498     # Sun Studio x86 has an optimization bug with LIR.cpp, use -xO2 instead.
499     ifeq ($(OS_ARCH),SunOS)
500     ifeq (86,$(findstring 86,$(OS_TEST)))
501     ifndef GNU_CC
502     LIR.o: LIR.cpp Makefile.in
503     $(REPORT_BUILD)
504     @$(MAKE_DEPS_AUTO_CXX)
505     $(CXX) -o $@ -c $(patsubst -xO%,-xO2,$(COMPILE_CFLAGS)) $<
506     endif
507     endif
508     endif
509    
510     # Allow building jsinterp.c with special optimization flags
511     ifdef INTERP_OPTIMIZER
512     jsinterp.$(OBJ_SUFFIX): MODULE_OPTIMIZE_FLAGS=$(INTERP_OPTIMIZER)
513     endif
514    
515     ifeq ($(OS_ARCH),IRIX)
516     ifndef GNU_CC
517     _COMPILE_CFLAGS = $(patsubst -O%,-O1,$(COMPILE_CFLAGS))
518     jsapi.o jsxdrapi.o jsarena.o jsarray.o jsatom.o jsemit.o jsfun.o jsinterp.o jsregexp.o jsparse.o jsopcode.o jsscript.o: %.o: %.cpp Makefile.in
519     $(REPORT_BUILD)
520     @$(MAKE_DEPS_AUTO_CXX)
521     $(CXX) -o $@ -c $(_COMPILE_CFLAGS) $<
522     endif
523     endif
524    
525     # An AIX Optimization bug causes PR_dtoa() & JS_dtoa to produce wrong result.
526     # This suppresses optimization for this single compilation unit.
527     ifeq ($(OS_ARCH),AIX)
528     jsatom.o: jsatom.cpp Makefile.in
529     $(REPORT_BUILD)
530     @$(MAKE_DEPS_AUTO_CXX)
531     $(CXX) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
532     jsdtoa.o: jsdtoa.cpp Makefile.in
533     $(REPORT_BUILD)
534     @$(MAKE_DEPS_AUTO_CXX)
535     $(CXX) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
536     endif
537    
538     export:: jsautocfg.h
539    
540 siliconforks 507 ifeq (,$(CROSS_COMPILE)$(GNU_CC)$(filter-out WINNT,$(OS_ARCH)))
541 siliconforks 460 jsautocfg.h:
542     touch $@
543     else
544     ifeq ($(OS_ARCH),WINCE)
545     jsautocfg.h:
546     touch $@
547     else
548     jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
549     @rm -f $@ jsautocfg.tmp
550     ./jscpucfg > jsautocfg.tmp
551     mv jsautocfg.tmp $@
552     endif
553     endif
554    
555     # jscpucfg is a strange target
556     # Needs to be built with the host compiler but needs to include
557     # the mdcpucfg for the target so it needs the appropriate target defines
558     ifdef HOST_NSPR_MDCPUCFG
559     HOST_CXX := $(HOST_CXX) -DMDCPUCFG=$(TARGET_NSPR_MDCPUCFG)
560     HOST_CXXFLAGS := $(patsubst -DXP_%,,$(HOST_CXXFLAGS))
561     endif
562    
563     ifdef CROSS_COMPILE
564     # jscpucfg needs to know when it's supposed to produce a config for the target
565     JSCPUCFG_DEFINES = $(ACDEFINES)
566     endif
567    
568     ifeq ($(OS_ARCH),QNX)
569     ifneq ($(OS_TARGET),NTO)
570     # QNX's compiler apparently can't build a binary directly from a source file.
571     jscpucfg.o: jscpucfg.cpp Makefile.in
572     $(HOST_CXX) $(HOST_CXXFLAGS) -c $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) -o $@ $<
573    
574     jscpucfg: jscpucfg.o
575     $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -o $@ $<
576     endif
577     else
578     ifeq ($(OS_ARCH),WINCE)
579     jscpucfg$(HOST_BIN_SUFFIX):
580     echo no need to build jscpucfg $<
581     else
582     jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.cpp Makefile.in
583     $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $<
584     endif
585     endif
586    
587     # Compute the linker flags that programs linking against SpiderMonkey should
588     # pass to get SpiderMonkey and its dependencies, beyond just the -L and -l
589     # for the SpiderMonkey library itself.
590     # - EXTRA_DSO_LDOPTS includes the NSPR -L and -l flags.
591     # - OS_LIBS includes libraries selected by the configure script.
592     # - EXTRA_LIBS includes libraries selected by this Makefile.
593     JS_CONFIG_LIBS=$(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS)
594    
595     # The configure script invokes this rule explicitly at configure time!
596     # It's important that js-config be ready by the time we're done
597     # configuring, because we may be running other configure scripts that
598     # would like to run js-config themselves, before js is built.
599     #
600     # This file and rules.mk go through a certain amount of work to decide
601     # which libraries to build, what to name them, and what flags to pass
602     # when linking them (and thus what flags its own clients must pass).
603     # All this information needs to go into the js-config script. To
604     # avoid trying to re-compute all that in the configure script, we just
605     # have the configure script generate this Makefile, and then invoke
606     # this rule.
607     at=@
608     js-config: js-config.in Makefile $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk $(topsrcdir)/config/rules.mk
609     rm -f js-config.tmp
610     sed < $< > js-config.tmp \
611     -e 's|$(at)prefix$(at)|$(prefix)|' \
612     -e 's|$(at)exec_prefix$(at)|$(exec_prefix)|' \
613     -e 's|$(at)includedir$(at)|$(includedir)|' \
614     -e 's|$(at)libdir$(at)|$(libdir)|' \
615     -e 's|$(at)MOZILLA_VERSION$(at)|$(MOZILLA_VERSION)|' \
616     -e 's|$(at)LIBRARY_NAME$(at)|$(LIBRARY_NAME)|' \
617     -e 's|$(at)NSPR_CFLAGS$(at)|$(NSPR_CFLAGS)|' \
618     -e 's|$(at)JS_CONFIG_LIBS$(at)|$(JS_CONFIG_LIBS)|' \
619     -e 's|$(at)MOZ_JS_LIBS$(at)|$(MOZ_JS_LIBS)|' \
620     && mv js-config.tmp $@ && chmod +x $@
621    
622     SCRIPTS = js-config
623     SDK_BINARY = js-config
624    
625     install:: $(INSTALLED_HEADERS)
626 siliconforks 507 $(SYSINSTALL) $^ $(DESTDIR)$(includedir)/$(MODULE)
627 siliconforks 460
628     install:: $(SCRIPTS)
629 siliconforks 507 $(SYSINSTALL) $^ $(DESTDIR)$(bindir)
630 siliconforks 460
631     install:: $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
632     ifneq (,$(LIBRARY))
633 siliconforks 507 $(SYSINSTALL) $(LIBRARY) $(DESTDIR)$(libdir)
634 siliconforks 460 endif
635     ifneq (,$(SHARED_LIBRARY))
636 siliconforks 507 $(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
637 siliconforks 460 endif
638     ifneq (,$(IMPORT_LIBRARY))
639 siliconforks 507 $(SYSINSTALL) $(IMPORT_LIBRARY) $(DESTDIR)$(libdir)
640 siliconforks 460 endif
641    
642     # Extra dependancies and rules for auto-generated headers
643     host_jskwgen.$(OBJ_SUFFIX): jsversion.h jskeyword.tbl
644    
645     # Use CURDIR to avoid finding a jsautokw.h in the source tree (from a
646     # previous build?) via VPATH when we're building in a separate tree.
647     $(CURDIR)/jsautokw.h: host_jskwgen$(HOST_BIN_SUFFIX)
648     ./host_jskwgen$(HOST_BIN_SUFFIX) $@
649    
650     host_jsoplengen.$(OBJ_SUFFIX): jsopcode.tbl
651    
652     # Use CURDIR to avoid finding a jsautooplen.h in the source tree (from
653     # a previous build?) via VPATH when we're building in a separate tree.
654     $(CURDIR)/jsautooplen.h: host_jsoplengen$(HOST_BIN_SUFFIX)
655     ./host_jsoplengen$(HOST_BIN_SUFFIX) $@
656    
657     # Force auto-header generation before compiling any source that may use them
658     $(CPPSRCS:%.cpp=%.$(OBJ_SUFFIX)): $(CURDIR)/jsautokw.h $(CURDIR)/jsautooplen.h
659    
660     ifdef HAVE_DTRACE
661     $(CURDIR)/javascript-trace.h: $(srcdir)/javascript-trace.d
662     dtrace -h -s $(srcdir)/javascript-trace.d -o javascript-trace.h.in
663     sed 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
664     javascript-trace.h.in > javascript-trace.h
665    
666 siliconforks 507 # We can't automatically generate dependencies on auto-generated headers;
667     # we have to list them explicitly.
668     $(addsuffix .$(OBJ_SUFFIX),jsdtracef jsinterp jsobj): $(CURDIR)/javascript-trace.h
669 siliconforks 460 endif
670    
671 siliconforks 510 ifdef ENABLE_JIT
672 siliconforks 460 ifdef GNU_CC
673 siliconforks 507 ifndef CROSS_COMPILE
674     # If we don't have run-mozilla.sh *and* we're linking against NSPR, we don't
675     # know how to run the JS binary. Oh well
676    
677 siliconforks 460 imacro_asm.js: imacro_asm.js.in jsopcode.tbl
678     $(CC) -c -x c -E -P -I$(srcdir) $< > $@
679    
680 siliconforks 507 GARBAGE += imacros.c.tmp imacro_asm.js
681 siliconforks 460
682 siliconforks 507 ifneq (,$(wildcard $(RUN_TEST_PROGRAM))$(if $(NSPR_LIBS),,1))
683     libs:: imacro_asm.js $(srcdir)/imacros.jsasm
684     $(wildcard $(RUN_TEST_PROGRAM)) $(DIST)/bin/js$(BIN_SUFFIX) $< $(srcdir)/imacros.jsasm > imacros.c.tmp
685     @cmp -s imacros.c.tmp $(srcdir)/imacros.c.out || \
686     (echo "imacros.c.out is out of date. Run 'make update-imacros' to copy it to your source tree."; diff -U 4 $(srcdir)/imacros.c.out imacros.c.out; exit 1)
687     @echo "imacros.c.out is up to date"
688 siliconforks 460
689 siliconforks 507 update-imacros: imacros.c.tmp
690     cp $< $(srcdir)/imacros.c.out
691 siliconforks 460
692 siliconforks 507 .PHONY: update-imacros
693 siliconforks 460 endif
694     endif
695 siliconforks 507 endif
696 siliconforks 510 endif

  ViewVC Help
Powered by ViewVC 1.1.24