์ผํ๋ ๊ฒ, ์ด๊ฒ๋ง์ด ์ด์ ์๋ ๊ฒ์ด๋ค. -ํ๋ธ๋ฅด
๏ปฟ
1 ์ค๋น #
MinGW๋ ์ค์น๋์ด์๋ค๊ณ ์น๊ณ , msys๋ ์ค์น๋์ด์๋ค ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ์ฐ์ ํ์ํ ์์คํ์ผ๋ค์ ๋ค์ด๋ก๋ ๋ฐ์์ผํฉ๋๋ค. ์๋ ์์น์์ ๋ค์ด ๋ฐ์ต๋๋ค.
- spidermonkey ํ์์ค :
http://ftp.mozilla.org/pub/mozilla.org/js/ ์์ js-1.5-*.tar.gz๋ฅผ download.
2 jsosdep.h ์์ #
js/src์์๋ณด๋ฉด jsosdep.hํ์ผ์ด ์์ต๋๋ค. ์ด๋ฐ์ ํ์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ด ์์ต๋๋ค.
#ifndef jsosdep_h___ #define jsosdep_h___ /* * OS (and machine, and compiler XXX) dependent information. */ #if defined(XP_WIN) || defined(XP_OS2) #if defined(_WIN32) || defined (XP_OS2) #define JS_HAVE_LONG_LONG #else #undef JS_HAVE_LONG_LONG #endif #endif /* XP_WIN || XP_OS2 */ #ifdef XP_MAC #define JS_HAVE_LONG_LONG JS_BEGIN_EXTERN_C #include <stddef.h> ...
JS_BEGIN_EXTERN_C๋ฌธ์ฅ ๋ฐ๋ก ์์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
#ifdef _MINGW #undef JS_HAVE_LONG_LONG #else #define JS_HAVE_LONG_LONG #endif
3 makefile ์์ฑ #
spidermonkey ์์ค์์๋ Mingw์ฉ makefile์ด ์์ด์ ์ง์ ์์ฑํด์ผํฉ๋๋ค. ๋ค์ ๋ด์ฉ์ jsmingw.mak๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํฉ๋๋ค.
CC = mingw32-gcc.exe WINDRES = windres.exe RES = js.res SRCDIR = js/src FDLIBM_SRCDIR = js/src/fdlibm FDLIBM_OBJECTS= \ $(FDLIBM_SRCDIR)/w_sqrt.o \ $(FDLIBM_SRCDIR)/e_pow.o \ $(FDLIBM_SRCDIR)/e_sqrt.o \ $(FDLIBM_SRCDIR)/k_standard.o \ $(FDLIBM_SRCDIR)/s_atan.o \ $(FDLIBM_SRCDIR)/s_finite.o \ $(FDLIBM_SRCDIR)/s_isnan.o \ $(FDLIBM_SRCDIR)/s_matherr.o \ $(FDLIBM_SRCDIR)/s_rint.o \ $(FDLIBM_SRCDIR)/s_scalbn.o \ $(FDLIBM_SRCDIR)/w_atan2.o \ $(FDLIBM_SRCDIR)/e_atan2.o \ $(FDLIBM_SRCDIR)/s_fabs.o \ $(FDLIBM_SRCDIR)/s_copysign.o \ $(FDLIBM_SRCDIR)/w_pow.o \ $(FDLIBM_SRCDIR)/s_lib_version.o JS_OBJECTS = \ $(SRCDIR)/jsapi.o \ $(SRCDIR)/jsarena.o \ $(SRCDIR)/jsarray.o \ $(SRCDIR)/jsatom.o \ $(SRCDIR)/jsbool.o \ $(SRCDIR)/jscntxt.o \ $(SRCDIR)/jsdate.o \ $(SRCDIR)/jsdbgapi.o \ $(SRCDIR)/jsdhash.o \ $(SRCDIR)/jsdtoa.o \ $(SRCDIR)/jsemit.o \ $(SRCDIR)/jsexn.o \ $(SRCDIR)/jsfun.o \ $(SRCDIR)/jsgc.o \ $(SRCDIR)/jshash.o \ $(SRCDIR)/jsinterp.o \ $(SRCDIR)/jslock.o \ $(SRCDIR)/jslog2.o \ $(SRCDIR)/jslong.o \ $(SRCDIR)/jsmath.o \ $(SRCDIR)/jsnum.o \ $(SRCDIR)/jsobj.o \ $(SRCDIR)/jsopcode.o \ $(SRCDIR)/jsparse.o \ $(SRCDIR)/jsprf.o \ $(SRCDIR)/jsregexp.o \ $(SRCDIR)/jsscan.o \ $(SRCDIR)/jsscope.o \ $(SRCDIR)/jsscript.o \ $(SRCDIR)/jsstr.o \ $(SRCDIR)/jsutil.o \ $(SRCDIR)/jsxdrapi.o \ $(SRCDIR)/prmjtime.o \ $(RES) LIBS = -L. --add-stdcall-alias BIN = js.dll CFLAGS = -O2 -DXP_WIN -DEXPORT_JS_API -D_WINDOWS -DWIN32 -D_MINGW -s DLLWRAP=dllwrap.exe DEFFILE=libjs.def LIBNAME=libjs.a STATICLIBNAME=libjs_s.a all: $(BIN) $(STATICLIBNAME) .c.o: $(CC) -c $(CFLAGS) -o $@ $*.c $(BIN): $(JS_OBJECTS) $(FDLIBM_OBJECTS) $(CC) -shared -o $@ \ -Wl,--output-def,$(DEFFILE) \ -Wl,--out-implib,$(LIBNAME) \ $(JS_OBJECTS) $(FDLIBM_OBJECTS) \ $(LIBS) $(STATICLIBNAME): $(JS_OBJECTS) $(FDLIBM_OBJECTS) ar rs $(STATICLIBNAME) $(JS_OBJECTS) $(FDLIBM_OBJECTS) $(RES): $(WINDRES) -i $(SRCDIR)/js3240.rc -I rc -o $(RES) -O coff clean: $(JS_OBJECTS) $(FDLIBM_OBJECTS) rm $(JS_OBJECTS) $(FDLIBM_OBJECTS)
4 ๋น๋ํ๊ธฐ #
์ด์ ์ค๋น๋ ๋๋ฌ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋น๋ํฉ๋๋ค.
make -f jsmingw.makc:/spidermonkey ํด๋์ js.dll, libjs.a, libjs.def, libjs_s.aํ์ผ์ด ์์ฑ๋์ด์๋์ง ํ์ธํฉ๋๋ค. ์ฌ๊ธฐ์ libjs_s.a๋ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ (dllํ์์์), ๋๋จธ์ง๋ ๋์ ๋งํฌ๋ ํ์ํ ํ์ผ๋ค์ ๋๋ค.









