Reviewed and landed by Darin.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 11 Sep 2005 05:27:30 +0000 (05:27 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 11 Sep 2005 05:27:30 +0000 (05:27 +0000)
        * Makefile.vc: Added.
        * README-Win32.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@10517 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/Makefile.vc [new file with mode: 0644]
JavaScriptCore/README-Win32.txt [new file with mode: 0644]

index 7c95017f5427eae3755ef846b267fcc752cb07f4..99b4972ecfeda2f35d02c944fa53d3f3de65032b 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-10  Krzysztof Kowalczyk  <kkowalczyk@gmail.com>
+
+        Reviewed and landed by Darin.
+
+        * Makefile.vc: Added.
+        * README-Win32.txt: Added.
+
 2005-09-10  Darin Adler  <darin@apple.com>
 
         - fixed compilation for WebCore (another try)
diff --git a/JavaScriptCore/Makefile.vc b/JavaScriptCore/Makefile.vc
new file mode 100644 (file)
index 0000000..6a2c592
--- /dev/null
@@ -0,0 +1,162 @@
+NULL=
+BASEDIR=.
+BINDIR=bin
+OBJDIR=obj
+KJSDIR=kjs
+PCREDIR=pcre
+
+ICUDIR=$(BASEDIR)\..\..\icu
+
+#
+# Define compiler flags
+#
+CC = cl.exe
+CFLAGS = $(CFLAGS) /nologo
+# 4996 - deprecated function, only needed for VS 2005 in which a lot
+#  of C standard functions that cause security risks (strcat, strcpy,
+#  printf etc.) were declared deprecated)
+# 4138 - */ found outside of comment
+# 4355 'this' : used in  base member initializer list
+CFLAGS = $(CFLAGS) /wd4138 /wd4996 /wd4355
+CFLAGS = $(CFLAGS) /D "HAVE_CONFIG_H"
+CFLAGS = $(CFLAGS) /D "WIN32" /D "__STD_C"
+CFLAGS = $(CFLAGS) /D "_MBCS" /D "_REENTRANT" /EHsc /W1
+CFLAGS = $(CFLAGS) /I$(BASEDIR)\os-win32
+CFLAGS = $(CFLAGS) /I$(BASEDIR)\pcre
+CFLAGS = $(CFLAGS) /I$(KJSDIR)
+CFLAGS = $(CFLAGS) /I$(ICUDIR)\include
+
+# /Zm increases max memory used by the compiler. It's for VC6 and compiling chartables.c
+#CFLAGS = $(CFLAGS) /Zm300
+
+!if "$(DEBUG)"=="1"
+CFLAGS = $(CFLAGS) /MDd /Od /Zi
+!else
+CFLAGS = $(CFLAGS) /D "NDEBUG" /MD /Zi
+!endif
+
+#
+# Define linker flags
+#
+LD = link.exe
+LDFLAGS = $(LDFLAGS) /nologo
+LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(ICUDIR)\lib
+#LIBS = $(LIBS) icuin.lib icudt.lib icuio.lib icuuc.lib
+TESTKJS_LIBS = $(LIBS) jscore.lib
+LIBS = $(LIBS) icuuc.lib
+
+!if "$(DEBUG)"=="1"
+LDFLAGS = $(LDFLAGS) /DEBUG
+!else
+LDFLAGS = $(LDFLAGS) /OPT:NOWIN98 /DEBUG
+!endif
+
+#
+# Archiver flags
+#
+AR       = lib.exe
+ARFLAGS  = $(ARFLAGS) /nologo
+
+PCRE_OBJS=\
+    $(OBJDIR)\pcre.obj \
+    $(NULL)
+
+#
+# jscore.dll
+#
+JSCORE_DLL_OBJS=\
+    $(OBJDIR)\array_object.obj \
+    $(OBJDIR)\bool_object.obj \
+    $(OBJDIR)\collector.obj \
+    $(OBJDIR)\date_object.obj \
+    $(OBJDIR)\debugger.obj \
+    $(OBJDIR)\dtoa.obj \
+    $(OBJDIR)\error_object.obj \
+    $(OBJDIR)\fast_malloc.obj \
+    $(OBJDIR)\fpconst.obj \
+    $(OBJDIR)\function.obj \
+    $(OBJDIR)\function_object.obj \
+    $(OBJDIR)\grammar.obj \
+    $(OBJDIR)\identifier.obj \
+    $(OBJDIR)\internal.obj \
+    $(OBJDIR)\interpreter.obj \
+    $(OBJDIR)\interpreter_map.obj \
+    $(OBJDIR)\lexer.obj \
+    $(OBJDIR)\list.obj \
+    $(OBJDIR)\lookup.obj \
+    $(OBJDIR)\math_object.obj \
+    $(OBJDIR)\nodes.obj \
+    $(OBJDIR)\nodes2string.obj \
+    $(OBJDIR)\number_object.obj \
+    $(OBJDIR)\object.obj \
+    $(OBJDIR)\object_object.obj \
+    $(OBJDIR)\operations.obj \
+    $(OBJDIR)\property_map.obj \
+    $(OBJDIR)\property_slot.obj \
+    $(OBJDIR)\protected_values.obj \
+    $(OBJDIR)\reference.obj \
+    $(OBJDIR)\reference_list.obj \
+    $(OBJDIR)\regexp.obj \
+    $(OBJDIR)\regexp_object.obj \
+    $(OBJDIR)\scope_chain.obj \
+    $(OBJDIR)\string_object.obj \
+    $(OBJDIR)\ustring.obj \
+    $(OBJDIR)\value.obj \
+    $(NULL)
+
+JSCORE_DLL_NAME=jscore.dll
+JSCORE_DLL_LIB_NAME=jscore.lib
+
+TESTKJS_OBJS=\
+    $(OBJDIR)\testkjs.obj \
+    $(NULL)
+
+TESTKJS_EXE_NAME=testkjs.exe
+TESTKJS_PDB_NAME=testkjs.pdb
+
+#all: $(BINDIR)\$(JSCORE_DLL_NAME)
+
+all: $(BINDIR)\$(TESTKJS_EXE_NAME)
+
+clean:
+    if exist $(OBJDIR) rmdir /S /Q $(OBJDIR)
+    if exist $(BINDIR) rmdir /S /Q $(BINDIR)
+
+$(OBJDIR):
+    if not exist $(OBJDIR) mkdir $(OBJDIR)
+
+$(BINDIR):
+    if not exist $(BINDIR) mkdir $(BINDIR)
+
+#
+# jscore DLL
+#
+$(BINDIR)\$(JSCORE_DLL_NAME) : $(BINDIR) $(PCRE_OBJS) $(JSCORE_DLL_OBJS) $(BASEDIR)\jscore.def
+#       $(LD) $(LDFLAGS) $(LIBS) /DLL /DEF:$(BASEDIR)\jscore.def \
+       $(LD) $(LDFLAGS) $(LIBS) /DLL \
+               $(PCRE_OBJS) $(JSCORE_DLL_OBJS) \
+               /IMPLIB:$(BINDIR)\$(JSCORE_DLL_LIB_NAME) \
+               /OUT:$(BINDIR)\$(JSCORE_DLL_NAME)
+
+$(BINDIR)\icuuc32.dll :
+    copy $(ICUDIR)\bin\icuuc34.dll $(BINDIR)
+
+$(BINDIR)\icudt32.dll :
+    copy $(ICUDIR)\bin\icudt34.dll $(BINDIR)
+
+$(BINDIR)\$(TESTKJS_EXE_NAME) : $(BINDIR) $(PCRE_OBJS) $(JSCORE_DLL_OBJS) $(TESTKJS_OBJS) \
+        $(BINDIR)\icudt32.dll \
+        $(BINDIR)\icuuc32.dll
+    $(LD) $(LDFLAGS) $(LIBS) \
+        $(PCRE_OBJS) $(JSCORE_DLL_OBJS) \
+        $(TESTKJS_OBJS) \
+        /PDB:$(BINDIR)\$(TESTKJS_PDB_NAME) \
+        /OUT:$(BINDIR)\$(TESTKJS_EXE_NAME)
+
+$(JSCORE_DLL_OBJS) : $(OBJDIR)
+
+{$(BASEDIR)\kjs}.cpp{$(OBJDIR)}.obj::
+       $(CC) $(CFLAGS) /Fo$(OBJDIR)\ /c $<
+
+{$(BASEDIR)\pcre}.c{$(OBJDIR)}.obj::
+       $(CC) $(CFLAGS) /Fo$(OBJDIR)\ /c /Tp $<
diff --git a/JavaScriptCore/README-Win32.txt b/JavaScriptCore/README-Win32.txt
new file mode 100644 (file)
index 0000000..8202534
--- /dev/null
@@ -0,0 +1,38 @@
+Notes about building JavaScriptCore on Win32:
+
+The build has been tested with Visual Studio 2003 (7.1) and Visual Studio
+2005 Beta 2. It should also work with Microsft's free
+http://msdn.microsoft.com/visualc/vctoolkit2003 (which is basically
+the same compiler & linker that is a part of VS 2003 but without the IDE)
+but it has not been tested.
+
+It doesn't build with VS 6.
+
+To build:
+ * make sure that the tools are in the path. VS comes with vcvars32.bat
+   batch file somewhere under installation directory which sets all the
+   proper env variables. I usually rename it to e.g. vc7.bat and put
+   in my %PATH% for easy invocation)
+ * you need to download ICU (http://www-306.ibm.com/software/globalization/icu/index.jsp)
+   pre-built DLLs and header files. I've tested it with VS 7.1
+   (ftp://ftp.software.ibm.com/software/globalization/icu/3.4/icu-3.4-Win32-msvc7.1.zip)
+   Set ICUDIR to where you've downloaded the files.
+ * you need perl for generating *.lut.h files
+ * you need bison for generating parser from grammar.y (I use http://gnuwin32.sourceforge.net/packages/bison.htm)
+ * nmake -f Makefile.vc clean
+ * nmake -f Makefile.vc
+ or
+ * nmake -f Makefile.vc DEBUG=1
+
+What do you get: in bin subdirectory you'll find testkjs.exe executable
+which is a javascript interpreter. It can be used to run javascript
+tests in tests\mozilla (see \WebKitTools\scripts\run-javascriptcore-tests
+for an example on how to run them; you can use this script if you
+just replace "testkjs" with a full path to testkjs.exe.
+
+TODO
+
+Currently only testkjs.exe is built. It should also build a static
+.lib library so that it's easy to build programs incorporating the core.
+It should also build as a dynamic DLL. It's just a matter of fiddling
+with the makefile.