From 38b96e2fa37f382ce9f1a5b4d59fa60e3d364f02 Mon Sep 17 00:00:00 2001 From: eliot Date: Thu, 4 Apr 2013 18:39:10 +0000 Subject: [PATCH] CogVM source as per VMMaker.oscog-eem.282. Change application name from Croquet to Squeak and change to green Cog Squeak icons. Add the SSLPlugin on mac and linux (won't link on old mingw; need to update). Cogit: Fix *HORRIBLE* yet ancient bug with the CogObjectRep. Both CogObjectRepresentationForSqueakV3>>couldBeObject: & CogObjectRepresentationForSqueakV3>>shouldAnnotateObjectReference: used signed comparisons for oops and so once the heap size pushes oops into the upper half of the address space constant oops in machine code were no longer being updated by the GC. StackInterpreter: rewrite the login for printing methods so that printing the frame of a bad receiver won't seg fault. Add primitivePathToUsing which mimics the PointerFinder and can hence be used to debug or verify it. Remove unnecessary forceInterruptCheck in NewObjectMemory>>become:with:twoWay:copyHash:. (heartbeat does this for us). Fix bug in assert in NewCoObjectMemory>>restoreHeaderOf:to:. Slang: Fix translation of to:by:do: loops so that the limit is not re-evaluated on each iteration if it may have side-effects. Include the correct AioPlugin (UnixAioPlugin) Include SqueakSSLPlugin in the configurations. Cogit: Stop reporting EncounteredUnknownBytecode with an error message. Fix slip in ceSICMiss: that didn't link new PIC if an MNU case. Add pixel peeker prims to BitBltPlugin. Minor signature changes to BitBltPlugin & HostWindowPlugin from SmartSyntaxPluginGenerator bug fix. git-svn-id: http://squeakvm.org/svn/squeak/branches/Cog@2713 fa1542d4-bde8-0310-ad64-8ed1123d492a --- cygwinbuild/GreenCogSqueak.ico | Bin 0 -> 69927 bytes cygwinbuild/Makefile | 8 +- cygwinbuild/Squeak.rc | 18 +- cygwinbuild/mvm | 2 +- cygwinbuild/plugins.ext | 2 + image/Workspace.text | 2 +- macbuild/CoreMTVM.xcodeproj/project.pbxproj | 36 +- macbuild/CoreVM.plist | 24 +- macbuild/CoreVM.xcodeproj/project.pbxproj | 36 +- macbuild/SqueakSSL/Info.plist | 26 + .../SqueakSSL.xcodeproj/project.pbxproj | 270 ++++ macbuild/SqueakSSL/SqueakSSL_Prefix.pch | 5 + .../Template.xcodeproj/project.pbxproj | 11 +- macbuild/makeclean | 2 +- macbuild/makevm | 18 +- macbuild/plugins.ext | 1 + .../ProjectBuilder/GreenCogSqueak.icns | Bin 0 -> 135400 bytes nscogbuild/cygwinbuild/Makefile | 3 +- nscogbuild/cygwinbuild/nsvm.rc | 26 + nscogbuild/cygwinbuild/plugins.ext | 2 + nscogbuild/macbuild/SqueakSSL/Info.plist | 26 + .../SqueakSSL.xcodeproj/eliot.mode1v3 | 1367 +++++++++++++++++ .../SqueakSSL.xcodeproj/project.pbxproj | 270 ++++ .../macbuild/SqueakSSL/SqueakSSL_Prefix.pch | 5 + nscogbuild/macbuild/makevm | 11 + nscogbuild/macbuild/plugins.ext | 3 + nscogbuild/unixbuild/astbld/plugins.ext | 1 + nscogbuild/unixbuild/bld/plugins.ext | 1 + nscogbuild/unixbuild/dbgbld/plugins.ext | 1 + platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c | 479 ++++++ .../unix/plugins/SqueakSSL/sqUnixOpenSSL.c | 443 ++++++ platforms/win32/misc/GreenCogSqueak.ico | Bin 0 -> 69927 bytes scripts/mkvmarchives | 56 +- scripts/uploadvms | 38 +- stackbuild/macbuild/CoreVM.plist | 24 +- .../macbuild/CoreVM.xcodeproj/project.pbxproj | 36 +- stackbuild/macbuild/makeclean | 2 +- stackbuild/macbuild/makevm | 7 +- .../ProjectBuilder/GreenCogSqueak.icns | Bin 0 -> 135400 bytes unixbuild/abld/plugins.ext | 1 + unixbuild/bld/plugins.ext | 1 + unixbuild/dbld/plugins.ext | 1 + unixbuild/mtbld/plugins.ext | 1 + 43 files changed, 3113 insertions(+), 153 deletions(-) create mode 100644 cygwinbuild/GreenCogSqueak.ico create mode 100644 macbuild/SqueakSSL/Info.plist create mode 100644 macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj create mode 100644 macbuild/SqueakSSL/SqueakSSL_Prefix.pch create mode 100644 macbuild/resources/ProjectBuilder/GreenCogSqueak.icns create mode 100644 nscogbuild/macbuild/SqueakSSL/Info.plist create mode 100644 nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/eliot.mode1v3 create mode 100644 nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj create mode 100644 nscogbuild/macbuild/SqueakSSL/SqueakSSL_Prefix.pch create mode 100644 nscogbuild/macbuild/plugins.ext create mode 100644 platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c create mode 100644 platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.c create mode 100644 platforms/win32/misc/GreenCogSqueak.ico create mode 100644 stackbuild/macbuild/resources/ProjectBuilder/GreenCogSqueak.icns diff --git a/cygwinbuild/GreenCogSqueak.ico b/cygwinbuild/GreenCogSqueak.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6d03cf9fa70a6531d7be789b8fbb849128e1655 GIT binary patch literal 69927 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 literal 0 HcmV?d00001 diff --git a/cygwinbuild/Makefile b/cygwinbuild/Makefile index f3877e7..73ad5f2 100644 --- a/cygwinbuild/Makefile +++ b/cygwinbuild/Makefile @@ -12,7 +12,7 @@ CONFIGURATION=product THREADING=single # The name of the VM to build -VM:=Croquet +VM:=Squeak VM_NAME?=$(VM) # Is this a Croquet VM (defaults to OGL instead of D3D)? @@ -190,7 +190,8 @@ OBJCOPY:= objcopy # Note: RC compiles the .rc files into linkable .o files # RC:= windres -RCFLAGS:= --include-dir $(PLATDIR)/win32/misc -D_WIN32 +SVNREV:= $(shell sed -e "s/^static.*SvnRawRevisionString.*Rev: \([0-9][0-9]*\).*/\\1/p" -e d $(PLATDIR)/Cross/vm/sqSCCSVersion.h) +RCFLAGS:= --include-dir $(PLATDIR)/win32/misc -D_WIN32 -DFILEVERSIONVALUES=4,0,$(SVNREV),0 '-DFILEVERSIONSTRING=\"4.0.$(SVNREV)\\0\"' .SUFFIXES: .SUFFIXES: .ccg .cc .c .o .s .i .rc .res .cg .hg .ccg .cpp @@ -202,6 +203,9 @@ RCFLAGS:= --include-dir $(PLATDIR)/win32/misc -D_WIN32 # default: print-settings init $(VMEXE) $(CONSOLEVMEXE) $(DLLS) $(STRIPEXE) $(STRIPCONSOLEEXE) +svnver: + echo $(RC) $(RCFLAGS) + productmt:; $(MAKE) -f $(MAKEFILE_LIST) CONFIGURATION=product THREADING=multi $(@,product=) default diff --git a/cygwinbuild/Squeak.rc b/cygwinbuild/Squeak.rc index 8f22493..03f6979 100755 --- a/cygwinbuild/Squeak.rc +++ b/cygwinbuild/Squeak.rc @@ -1,11 +1,11 @@ #ifdef _WIN32 -1 ICON DISCARDABLE "squeak.ico" +1 ICON DISCARDABLE "GreenCogSqueak.ico" 2 ICON DISCARDABLE "squeak2.ico" 3 ICON DISCARDABLE "squeak3.ico" 1 VERSIONINFO - FILEVERSION 3,11,3,0 - PRODUCTVERSION 3,11,0,0 + FILEVERSION FILEVERSIONVALUES + PRODUCTVERSION 4,0,0,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0xaL FILEOS 0x10001L @@ -17,11 +17,11 @@ BEGIN BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilin BEGIN VALUE "CompanyName", "Squeak.org\0" - VALUE "FileDescription", "Squeak Virtual Machine\0" - VALUE "FileVersion", "3.11.3\0" - VALUE "LegalCopyright", "Copyright \251 Squeak.org 1996-2009\0" - VALUE "ProductName", "Squeak\0" - VALUE "ProductVersion", "3.11\0" + VALUE "FileDescription", "Squeak Cog Virtual Machine\0" + VALUE "FileVersion", FILEVERSIONSTRING + VALUE "LegalCopyright", "Copyright \251 Squeak.org 1996-2013\0" + VALUE "ProductName", "Squeak Cog\0" + VALUE "ProductVersion", "4.0\0" END END BLOCK "VarFileInfo" @@ -29,4 +29,4 @@ BEGIN VALUE "Translation", 0x409, 1252 END END -#endif \ No newline at end of file +#endif diff --git a/cygwinbuild/mvm b/cygwinbuild/mvm index 3bb7198..32428c5 100755 --- a/cygwinbuild/mvm +++ b/cygwinbuild/mvm @@ -2,4 +2,4 @@ rm -rf build*/vm/Croquet*.exe make debug;make assert;make make THREADING=multi CONFIGURATION=debug;make THREADING=multi CONFIGURATION=assert;make THREADING=multi -ls -rlt build*/vm/Croquet*.exe +ls -rlt build*/vm/Squeak*.exe diff --git a/cygwinbuild/plugins.ext b/cygwinbuild/plugins.ext index a72bb54..80d1eba 100644 --- a/cygwinbuild/plugins.ext +++ b/cygwinbuild/plugins.ext @@ -1,4 +1,6 @@ # Copied, perhaps edited, from ../src/examplePlugins.ext +# N.B. SqueakSSL is not ready for prime time. Compiles but does not link fully. +# See platforms/win32/plugins/SqueakSSL/Makefile EXTERNAL_PLUGINS = \ BochsIA32Plugin \ SqueakFFIPrims \ diff --git a/image/Workspace.text b/image/Workspace.text index 576a4b7..4b792b4 100644 --- a/image/Workspace.text +++ b/image/Workspace.text @@ -1 +1 @@ -This image is intended to build new CoInterpreter or StackInterpreter Cog VMs, and a Newspeak VM, and to run the Cog VM simulator (see the VM Simulation Workspace). The following doit offers a menu of configurations that create a single; source tree (../src) for all platforms. Since they use a relative path they will work out of the box. Generate the entire VM using them. Choose Squeak Cog VM by default, and when prompted choose CoInterpreter. VMMaker generateConfiguration To rebuild this image - start with a Squeak 4.3 or newer image (this is a Squeak 4.3 trunk image that you can update). 1. If Alien is not already in the image, load it, e.g. Alien-eem.18 from http://www.squeaksource.com/Alien. 2. If FFI is not already in the image, load FFI-Pools, e.g. FFI-Pools-eem.3, from http://source.squeak.org/FFI (For FFIConstants) [2a. Load FFI if you want to use cog:selector: to compile a method in this image] 3. Load SharedPool-Speech, e.g. SharedPool-Speech-dtl.2, from http://www.squeaksource.com/Speech (For KlattResonatorIndices) 4. Load Balloon-Engine-Pools (e.g. Balloon-Engine-Pools-JB.2) from http://source.squeak.org/VMMaker 5. From http://source.squeak.org/VMMaker load "VMMaker.oscog" and "Cog" monticello packages. First load the most up-to-dateVMMaker.oscog, e.g. VMMaker.oscog-eem.157, and then the most up-to-date Cog, e.g. Cog-eem.46. N.B. do *not* load VMMaker or VMMaker-oscog. N.B. VMMaker.oscog packages may be listed with VMMaker packages depending on Monticello version. \ No newline at end of file +This image is intended to build new CoInterpreter or StackInterpreter Cog VMs, and a Newspeak VM, and to run the Cog VM simulator (see the VM Simulation Workspace). The following doit offers a menu of configurations that create a single; source tree (../src) for all platforms. Since they use a relative path they will work out of the box. Generate the entire VM using them. Choose Squeak Cog VM by default, and when prompted choose CoInterpreter. VMMaker generateConfiguration To rebuild this image - start with a Squeak 4.4 or newer image (the Squeak 4.3 All-in-one is fine too, but please update the image). 1. If Alien is not already in the image, load it, e.g. Alien-eem.18 from http://www.squeaksource.com/Alien. 2. If FFI is not already in the image, load FFI-Pools, e.g. FFI-Pools-eem.3, from http://source.squeak.org/FFI (For FFIConstants) [2a. Load FFI if you want to use cog:selector: to compile a method in this image] 3. Load SharedPool-Speech, e.g. SharedPool-Speech-dtl.2, from http://www.squeaksource.com/Speech (For KlattResonatorIndices) 4. Load Balloon-Engine-Pools (e.g. Balloon-Engine-Pools-JB.2) from http://source.squeak.org/VMMaker 5. From http://source.squeak.org/VMMaker load "VMMaker.oscog" and "Cog" monticello packages. First load the most up-to-dateVMMaker.oscog, e.g. VMMaker.oscog-eem.278, and then the most up-to-date Cog, e.g. Cog-lw.60. N.B. do *not* load VMMaker or VMMaker-oscog. N.B. VMMaker.oscog packages may be listed with VMMaker packages depending on Monticello version. 6. Load any additional plugins not in VMMaker. Currently these are: - SqueakSSLPlugin from e.g. SqueakSSL-Plugin-ar.3 at http://www.squeaksource.com/SqueakSSL - Win32OSProcessPlugin & UnixOSProcessPlugin from e.g. VMConstruction-Plugins-OSProcessPlugin.oscog-eem.41 at http://www.squeaksource.com/OSProcessPlugin - FT2Plugin from e.g. Freetype-Plugin-IgorStasenko.57 at http://www.squeaksource.com/FreetypePlugin - AioPlugin from e.g. VMConstruction-Plugins-AioPlugin-dtl.14 at t http://www.squeaksource.com/AioPlugin Read the class comments of StackInterpreterSimulator and CogVMSimulator for running the simulator. \ No newline at end of file diff --git a/macbuild/CoreMTVM.xcodeproj/project.pbxproj b/macbuild/CoreMTVM.xcodeproj/project.pbxproj index 21ffda6..60f4d4e 100755 --- a/macbuild/CoreMTVM.xcodeproj/project.pbxproj +++ b/macbuild/CoreMTVM.xcodeproj/project.pbxproj @@ -255,7 +255,7 @@ A2FB6B730CCD723F00A29088 /* LocalePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A2FB6B720CCD723F00A29088 /* LocalePlugin.h */; }; DA6061C40AA515470009E25D /* sqMacMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AEF402EB4E0A0100013C /* sqMacMain.c */; }; DA6061CA0AA5155E0009E25D /* sqNamedPrims.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AFDD02EB4E0A0100013C /* sqNamedPrims.c */; }; - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* Croquet.icns */; }; + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -301,7 +301,7 @@ 94196AAE09974200005962BF /* sqMacUIEventsUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIEventsUniversal.c; sourceTree = ""; }; 94196AAF09974200005962BF /* sqMacUIMenuBarUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIMenuBarUniversal.c; sourceTree = ""; }; 94196AB009974200005962BF /* sqMacWindowUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacWindowUniversal.c; sourceTree = ""; }; - 941A3C0C09AA144000C9D25A /* Croquet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Croquet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 941A3C0C09AA144000C9D25A /* Squeak.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Squeak.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9426FF0F09F489D200ECEDDC /* chartables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = chartables.c; sourceTree = ""; }; 9426FF1009F489D200ECEDDC /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; 9426FF1109F489D200ECEDDC /* get.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = get.c; sourceTree = ""; }; @@ -396,7 +396,7 @@ A2FB6B580CCD71B000A29088 /* sqMacLocaleCarbon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMacLocaleCarbon.h; path = LocalePlugin/sqMacLocaleCarbon.h; sourceTree = ""; }; A2FB6B720CCD723F00A29088 /* LocalePlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LocalePlugin.h; path = LocalePlugin/LocalePlugin.h; sourceTree = ""; }; DAD40DAF0AA60CE90082521A /* CoreVM.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = CoreVM.plist; sourceTree = ""; }; - DAFA08930AA64625008DF459 /* Croquet.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Croquet.icns; path = resources/ProjectBuilder/Croquet.icns; sourceTree = ""; }; + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = GreenCogSqueak.icns; path = resources/ProjectBuilder/GreenCogSqueak.icns; sourceTree = ""; }; F5F8AE0F02EB4E090100013C /* sqMacOpenGL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sqMacOpenGL.h; sourceTree = ""; }; F5F8AE3D02EB4E090100013C /* sqMacInternetConfiguration.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacInternetConfiguration.c; sourceTree = ""; }; F5F8AE3F02EB4E090100013C /* sqMacJoystickAndTablet.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacJoystickAndTablet.c; sourceTree = ""; }; @@ -563,7 +563,7 @@ isa = PBXGroup; children = ( 664A73DB0300584000A80109 /* Squeak VM.r */, - DAFA08930AA64625008DF459 /* Croquet.icns */, + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */, 664A73DC0300584000A80109 /* Squeak.icns */, 664A73DD0300584000A80109 /* SqueakChanges.icns */, 664A73DE0300584000A80109 /* SqueakImage.icns */, @@ -579,7 +579,7 @@ 08773F3000C6A1C4C0A80109 /* Products */ = { isa = PBXGroup; children = ( - 941A3C0C09AA144000C9D25A /* Croquet.app */, + 941A3C0C09AA144000C9D25A /* Squeak.app */, ); name = Products; sourceTree = ""; @@ -1714,9 +1714,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 941A3B2B09AA144000C9D25A /* Croquet */ = { + 941A3B2B09AA144000C9D25A /* Squeak */ = { isa = PBXNativeTarget; - buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */; + buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */; buildPhases = ( 941A3B2C09AA144000C9D25A /* Headers */, 941A3B7109AA144000C9D25A /* Resources */, @@ -1731,10 +1731,10 @@ "; dependencies = ( ); - name = Croquet; + name = Squeak; productInstallPath = "$(USER_APPS_DIR)"; productName = "Squeak VM OPT"; - productReference = 941A3C0C09AA144000C9D25A /* Croquet.app */; + productReference = 941A3C0C09AA144000C9D25A /* Squeak.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -1757,7 +1757,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 941A3B2B09AA144000C9D25A /* Croquet */, + 941A3B2B09AA144000C9D25A /* Squeak */, ); }; /* End PBXProject section */ @@ -1775,7 +1775,7 @@ 941A3B7709AA144000C9D25A /* SqueakGeneric.icns in Resources */, 941A3B7809AA144000C9D25A /* SqueakProject.icns in Resources */, 941A3B7909AA144000C9D25A /* SqueakSources.icns in Resources */, - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */, + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2000,7 +2000,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2078,7 +2078,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; ZERO_LINK = NO; @@ -2106,7 +2106,7 @@ HAVE_SYS_TIME_H, ); GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1)"; - GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_UNROLL_LOOPS = YES; GCC_VERSION_i386 = 4.2; @@ -2117,7 +2117,7 @@ $SRCROOT, ); ICC_DATA_NO_ALIAS = NO; - ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; ICC_FP_MODEL = src; ICC_LANG_ANSI_OPT = NO; ICC_OPTLEVEL = speedHLO; @@ -2131,7 +2131,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = "-O3 -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium-m -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS"; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; @@ -2175,7 +2175,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2260,7 +2260,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */ = { + 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */ = { isa = XCConfigurationList; buildConfigurations = ( 941A3C0809AA144000C9D25A /* Development */, diff --git a/macbuild/CoreVM.plist b/macbuild/CoreVM.plist index 34f097f..037150f 100644 --- a/macbuild/CoreVM.plist +++ b/macbuild/CoreVM.plist @@ -14,9 +14,9 @@ image CFBundleTypeIconFile - Croquet.icns + SqueakImage.icns CFBundleTypeName - Croquet Image File + Squeak Image File CFBundleTypeOSTypes STim @@ -30,9 +30,9 @@ sources CFBundleTypeIconFile - Croquet.icns + SqueakSources.icns CFBundleTypeName - Croquet Sources File + Squeak Sources File CFBundleTypeOSTypes STso @@ -46,9 +46,9 @@ changes CFBundleTypeIconFile - Croquet.icns + SqueakChanges.icns CFBundleTypeName - Croquet Changes File + Squeak Changes File CFBundleTypeOSTypes STch @@ -366,21 +366,21 @@ CFBundleExecutable - Croquet + Squeak CFBundleGetInfoString - Croquet Cog 4.0.0 http://www.mirandabanda.org + Squeak Cog 4.0.0 http://www.mirandabanda.org CFBundleShortVersionString - Croquet Cog 4.0.0 + Squeak Cog 4.0.0 CFBundleVersion 4.0.0 CFBundleIconFile - Croquet.icns + GreenCogSqueak.icns CFBundleIdentifier com.squeak.Cog CFBundleInfoDictionaryVersion 6.0 CFBundleName - Croquet + Squeak CFBundlePackageType APPL CFBundleSignature @@ -484,7 +484,7 @@ SqueakUIFlushUseHighPercisionClock SqueakUnTrustedDirectory - ~/Library/Preferences/Croquet/Internet/Untrusted/ + ~/Library/Preferences/Squeak/Internet/Untrusted/ SqueakWindowAttribute ggAAHw== SqueakWindowHasTitle diff --git a/macbuild/CoreVM.xcodeproj/project.pbxproj b/macbuild/CoreVM.xcodeproj/project.pbxproj index 55714ee..3b248b3 100755 --- a/macbuild/CoreVM.xcodeproj/project.pbxproj +++ b/macbuild/CoreVM.xcodeproj/project.pbxproj @@ -255,7 +255,7 @@ A2FB6B730CCD723F00A29088 /* LocalePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A2FB6B720CCD723F00A29088 /* LocalePlugin.h */; }; DA6061C40AA515470009E25D /* sqMacMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AEF402EB4E0A0100013C /* sqMacMain.c */; }; DA6061CA0AA5155E0009E25D /* sqNamedPrims.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AFDD02EB4E0A0100013C /* sqNamedPrims.c */; }; - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* Croquet.icns */; }; + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -301,7 +301,7 @@ 94196AAE09974200005962BF /* sqMacUIEventsUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIEventsUniversal.c; sourceTree = ""; }; 94196AAF09974200005962BF /* sqMacUIMenuBarUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIMenuBarUniversal.c; sourceTree = ""; }; 94196AB009974200005962BF /* sqMacWindowUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacWindowUniversal.c; sourceTree = ""; }; - 941A3C0C09AA144000C9D25A /* Croquet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Croquet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 941A3C0C09AA144000C9D25A /* Squeak.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Squeak.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9426FF0F09F489D200ECEDDC /* chartables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = chartables.c; sourceTree = ""; }; 9426FF1009F489D200ECEDDC /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; 9426FF1109F489D200ECEDDC /* get.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = get.c; sourceTree = ""; }; @@ -396,7 +396,7 @@ A2FB6B580CCD71B000A29088 /* sqMacLocaleCarbon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMacLocaleCarbon.h; path = LocalePlugin/sqMacLocaleCarbon.h; sourceTree = ""; }; A2FB6B720CCD723F00A29088 /* LocalePlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LocalePlugin.h; path = LocalePlugin/LocalePlugin.h; sourceTree = ""; }; DAD40DAF0AA60CE90082521A /* CoreVM.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = CoreVM.plist; sourceTree = ""; }; - DAFA08930AA64625008DF459 /* Croquet.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Croquet.icns; path = resources/ProjectBuilder/Croquet.icns; sourceTree = ""; }; + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = GreenCogSqueak.icns; path = resources/ProjectBuilder/GreenCogSqueak.icns; sourceTree = ""; }; F5F8AE0F02EB4E090100013C /* sqMacOpenGL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sqMacOpenGL.h; sourceTree = ""; }; F5F8AE3D02EB4E090100013C /* sqMacInternetConfiguration.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacInternetConfiguration.c; sourceTree = ""; }; F5F8AE3F02EB4E090100013C /* sqMacJoystickAndTablet.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacJoystickAndTablet.c; sourceTree = ""; }; @@ -563,7 +563,7 @@ isa = PBXGroup; children = ( 664A73DB0300584000A80109 /* Squeak VM.r */, - DAFA08930AA64625008DF459 /* Croquet.icns */, + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */, 664A73DC0300584000A80109 /* Squeak.icns */, 664A73DD0300584000A80109 /* SqueakChanges.icns */, 664A73DE0300584000A80109 /* SqueakImage.icns */, @@ -579,7 +579,7 @@ 08773F3000C6A1C4C0A80109 /* Products */ = { isa = PBXGroup; children = ( - 941A3C0C09AA144000C9D25A /* Croquet.app */, + 941A3C0C09AA144000C9D25A /* Squeak.app */, ); name = Products; sourceTree = ""; @@ -1714,9 +1714,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 941A3B2B09AA144000C9D25A /* Croquet */ = { + 941A3B2B09AA144000C9D25A /* Squeak */ = { isa = PBXNativeTarget; - buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */; + buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */; buildPhases = ( 941A3B2C09AA144000C9D25A /* Headers */, 941A3B7109AA144000C9D25A /* Resources */, @@ -1731,10 +1731,10 @@ "; dependencies = ( ); - name = Croquet; + name = Squeak; productInstallPath = "$(USER_APPS_DIR)"; productName = "Squeak VM OPT"; - productReference = 941A3C0C09AA144000C9D25A /* Croquet.app */; + productReference = 941A3C0C09AA144000C9D25A /* Squeak.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -1757,7 +1757,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 941A3B2B09AA144000C9D25A /* Croquet */, + 941A3B2B09AA144000C9D25A /* Squeak */, ); }; /* End PBXProject section */ @@ -1775,7 +1775,7 @@ 941A3B7709AA144000C9D25A /* SqueakGeneric.icns in Resources */, 941A3B7809AA144000C9D25A /* SqueakProject.icns in Resources */, 941A3B7909AA144000C9D25A /* SqueakSources.icns in Resources */, - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */, + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2000,7 +2000,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2078,7 +2078,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; ZERO_LINK = NO; @@ -2106,7 +2106,7 @@ HAVE_SYS_TIME_H, ); GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1)"; - GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_UNROLL_LOOPS = YES; GCC_VERSION_i386 = 4.2; @@ -2117,7 +2117,7 @@ $SRCROOT, ); ICC_DATA_NO_ALIAS = NO; - ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; ICC_FP_MODEL = src; ICC_LANG_ANSI_OPT = NO; ICC_OPTLEVEL = speedHLO; @@ -2131,7 +2131,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = "-O3 -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium-m -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS"; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; @@ -2175,7 +2175,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2260,7 +2260,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */ = { + 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */ = { isa = XCConfigurationList; buildConfigurations = ( 941A3C0809AA144000C9D25A /* Development */, diff --git a/macbuild/SqueakSSL/Info.plist b/macbuild/SqueakSSL/Info.plist new file mode 100644 index 0000000..ebd8fcc --- /dev/null +++ b/macbuild/SqueakSSL/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + SquealSSL + CFBundleIconFile + + CFBundleIdentifier + org.squeak.Cog.SqueakSSL + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + FAST + CFBundleVersion + 1.0 + CFBundleShortVersionString + 1.0 + CSResourcesFileMapped + + + diff --git a/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj b/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d8e4ef9 --- /dev/null +++ b/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj @@ -0,0 +1,270 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 73027B6B17012E5F0086D8E4 /* SqueakSSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */; }; + 732D9F4317012B6E00E25893 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732D9F4117012B6E00E25893 /* Security.framework */; }; + 732D9F4417012B6E00E25893 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732D9F4217012B6E00E25893 /* CoreFoundation.framework */; }; + 73D8A6421701272700C66275 /* sqMacSSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 73D8A6411701272700C66275 /* sqMacSSL.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 32BAE0B30371A71500C91783 /* SqueakSSL_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SqueakSSL_Prefix.pch; sourceTree = ""; }; + 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SqueakSSL.c; path = ../../src/plugins/SqueakSSL/SqueakSSL.c; sourceTree = SOURCE_ROOT; }; + 732D9F4117012B6E00E25893 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; + 732D9F4217012B6E00E25893 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 73811791170128D400CB30CE /* sq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sq.h; path = ../../platforms/Cross/vm/sq.h; sourceTree = SOURCE_ROOT; }; + 73D8A62E1701259800C66275 /* SqueakSSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SqueakSSL.h; path = ../../platforms/Cross/plugins/SqueakSSL/SqueakSSL.h; sourceTree = SOURCE_ROOT; }; + 73D8A6411701272700C66275 /* sqMacSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacSSL.c; path = "../../platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c"; sourceTree = SOURCE_ROOT; }; + 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SqueakSSL.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../src/vm/interp.h; sourceTree = SOURCE_ROOT; }; + DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = ../../platforms/Cross/vm/sqMemoryAccess.h; sourceTree = SOURCE_ROOT; }; + DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqVirtualMachine.h; path = ../../platforms/Cross/vm/sqVirtualMachine.h; sourceTree = SOURCE_ROOT; }; + DA3A20F80AA63D000050B983 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "../../platforms/Mac OS/vm/config.h"; sourceTree = SOURCE_ROOT; }; + DA3A20F90AA63D000050B983 /* sqConfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqConfig.h; path = "../../platforms/Mac OS/vm/sqConfig.h"; sourceTree = SOURCE_ROOT; }; + DA3A20FA0AA63D000050B983 /* sqPlatformSpecific.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqPlatformSpecific.h; path = "../../platforms/Mac OS/vm/sqPlatformSpecific.h"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 732D9F4317012B6E00E25893 /* Security.framework in Frameworks */, + 732D9F4417012B6E00E25893 /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 08FB77ADFE841716C02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 732D9F4017012B6E00E25893 /* Frameworks */, + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 73027B6717012E3F0086D8E4 /* SqueakSSL */, + 73D8A63C170125E500C66275 /* SqueakSSL */, + 73D8A636170125C500C66275 /* SqueakSSL */, + DA3A20F80AA63D000050B983 /* config.h */, + DA3A20F90AA63D000050B983 /* sqConfig.h */, + DA3A20FA0AA63D000050B983 /* sqPlatformSpecific.h */, + DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */, + DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */, + DA3A20F50AA63CBF0050B983 /* interp.h */, + 73811791170128D400CB30CE /* sq.h */, + 32BAE0B30371A71500C91783 /* SqueakSSL_Prefix.pch */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */, + ); + name = Products; + sourceTree = ""; + }; + 73027B6717012E3F0086D8E4 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 732D9F4017012B6E00E25893 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 732D9F4117012B6E00E25893 /* Security.framework */, + 732D9F4217012B6E00E25893 /* CoreFoundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 73D8A636170125C500C66275 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73D8A62E1701259800C66275 /* SqueakSSL.h */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 73D8A63C170125E500C66275 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73D8A6411701272700C66275 /* sqMacSSL.c */, + ); + name = SqueakSSL; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* SqueakSSL */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "SqueakSSL" */; + buildPhases = ( + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCD0486CAD60068D4B7 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SqueakSSL; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = SqueakSSL; + productReference = 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "SqueakSSL" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* SqueakSSL */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D01CCC60486CAD60068D4B7 /* SqueakSSL */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 73D8A6421701272700C66275 /* sqMacSSL.c in Sources */, + 73027B6B17012E5F0086D8E4 /* SqueakSSL.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 4FADC23408B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SqueakSSL_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = SqueakSSL; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = YES; + }; + name = Debug; + }; + 4FADC23508B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SqueakSSL_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = SqueakSSL; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 4FADC23808B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Debug; + }; + 4FADC23908B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "SqueakSSL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23408B4156C00ABE55E /* Debug */, + 4FADC23508B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "SqueakSSL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23808B4156C00ABE55E /* Debug */, + 4FADC23908B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/macbuild/SqueakSSL/SqueakSSL_Prefix.pch b/macbuild/SqueakSSL/SqueakSSL_Prefix.pch new file mode 100644 index 0000000..e1af59f --- /dev/null +++ b/macbuild/SqueakSSL/SqueakSSL_Prefix.pch @@ -0,0 +1,5 @@ +// +// Prefix header for all source files of the 'Template' target in the 'Template' project. +// + +#include diff --git a/macbuild/Template/Template.xcodeproj/project.pbxproj b/macbuild/Template/Template.xcodeproj/project.pbxproj index 95fdc06..475ec17 100644 --- a/macbuild/Template/Template.xcodeproj/project.pbxproj +++ b/macbuild/Template/Template.xcodeproj/project.pbxproj @@ -149,7 +149,6 @@ COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Template_Prefix.pch; @@ -164,12 +163,8 @@ 4FADC23508B4156C00ABE55E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - ppc, - i386, - ); + ARCHS = i386; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = Template_Prefix.pch; INFOPLIST_FILE = Info.plist; @@ -186,7 +181,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; }; name = Debug; }; @@ -197,7 +192,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; }; name = Release; }; diff --git a/macbuild/makeclean b/macbuild/makeclean index 65b820e..caf0ad9 100755 --- a/macbuild/makeclean +++ b/macbuild/makeclean @@ -1,3 +1,3 @@ #!/bin/bash -rm -r ./build ./*/build ./plugin-projects/*/build ./Fast.app ./Debug.app ./Assert.app ./Croquet.app +rm -r ./build ./*/build ./plugin-projects/*/build ./Fast.app ./Debug.app ./Assert.app ./Croquet.app ./Squeak.app diff --git a/macbuild/makevm b/macbuild/makevm index 2931245..bc4fcd0 100755 --- a/macbuild/makevm +++ b/macbuild/makevm @@ -1,13 +1,14 @@ #!/bin/bash # Build a "complete" Mac VM consisting of CoreVM/CoreMTVM + Plugins. -# By default build the Deployment configuration into Croquet.app. +# By default build the Deployment configuration into $APP (Squeak.app) IFS=' ' BUILD_CONFIGURATION=Deployment NSD_BUILD_CONFIGURATION=Deployment XCD_BUILD_CONFIGURATION=Release +APP=Squeak.app VMAPP=".app" -DEST="Croquet" +DEST="Squeak" VMXCP=CoreVM SFP=SqueakFFIPrims KEEP= @@ -36,7 +37,7 @@ while getopts 'admskh?' opt $@; do echo ' -d: compile Development configuration in Debug.app for debugging' echo ' -m: compile the multi-threaded version of the target, e.g. FastMT.app instead of Fast.app' echo ' -s: compile DeploymentSymbols configuration in Fast.app for partial debugging' - echo ' -k: keep (do not delete) the existing Croquet.app prior to the build' + echo " -k: keep (do not delete) the existing $APP prior to the build" echo ' -h: display this help' exit 0;; esac @@ -61,9 +62,9 @@ echo echo $VMXCP xcodebuild -project $VMXCP.xcodeproj -configuration $BUILD_CONFIGURATION xcodebuild -project $VMXCP.xcodeproj -configuration $BUILD_CONFIGURATION if [ -d "$DEST" ]; then - mv build/$BUILD_CONFIGURATION/Croquet.app/* "$DEST" + mv build/$BUILD_CONFIGURATION/$APP/* "$DEST" else - mv build/$BUILD_CONFIGURATION/Croquet.app "$DEST" + mv build/$BUILD_CONFIGURATION/$APP "$DEST" fi ../scripts/versionInfoPlist ../platforms CoreVM.plist "$DEST/Contents/Info.plist" @@ -101,6 +102,13 @@ xcodebuild -project $SFP/SqueakFFI.xcodeproj -configuration $NSD_BUILD_CONFIGURA rm -rf "$DEST/Contents/Resources/SqueakFFIPrims.bundle" cp -R $SFP/build/$NSD_BUILD_CONFIGURATION/SqueakFFIPrims.bundle "$DEST/Contents/Resources" +# Build the SSL plugin (New as of 25 March 2013) +echo +echo SqueakSSL xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION +xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION +rm -rf "$DEST/Contents/Resources/SqueakSSL.bundle" +cp -R SqueakSSL/build/$XCD_BUILD_CONFIGURATION/SqueakSSL.bundle "$DEST/Contents/Resources" + # Build the BochsIA32Plugin # N.B. To build the plugin you also have to build the Bochs libraries in # ../processors/IA32/bochs. cd ../processors/IA32/bochs. Run conf.COG & makeem. diff --git a/macbuild/plugins.ext b/macbuild/plugins.ext index 4f31874..1d7f976 100644 --- a/macbuild/plugins.ext +++ b/macbuild/plugins.ext @@ -3,6 +3,7 @@ EXTERNAL_PLUGINS = \ BochsIA32Plugin \ CroquetPlugin \ SqueakFFIPrims \ +SqueakSSL \ FloatArrayPlugin \ FloatMathPlugin \ Mpeg3Plugin \ diff --git a/macbuild/resources/ProjectBuilder/GreenCogSqueak.icns b/macbuild/resources/ProjectBuilder/GreenCogSqueak.icns new file mode 100644 index 0000000000000000000000000000000000000000..acdd741875ad7015e42d218026643153078bdde3 GIT binary patch literal 135400 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ͫvuB$#g!5zfyCF|GT=5}AWub?165jCd7gIt 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 + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + SquealSSL + CFBundleIconFile + + CFBundleIdentifier + org.squeak.Cog.SqueakSSL + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + FAST + CFBundleVersion + 1.0 + CFBundleShortVersionString + 1.0 + CSResourcesFileMapped + + + diff --git a/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/eliot.mode1v3 b/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/eliot.mode1v3 new file mode 100644 index 0000000..7fd186e --- /dev/null +++ b/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/eliot.mode1v3 @@ -0,0 +1,1367 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 73D8A60C170124CE00C66275 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77ADFE841716C02AAC07 + 089C167CFE841241C02AAC07 + 732D9F4017012B6E00E25893 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 13 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 850}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 868}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 305 234 1066 909 0 0 1920 1178 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + Info.plist + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + Info.plist + _historyCapacity + 0 + bookmark + 73027B7017012E740086D8E4 + history + + 732D9F7A17012BA000E25893 + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {858, 663}} + RubberWindowFrame + 305 234 1066 909 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 663pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 668}, {858, 200}} + RubberWindowFrame + 305 234 1066 909 0 0 1920 1178 + + Module + XCDetailModule + Proportion + 200pt + + + Proportion + 858pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 73027B7117012E740086D8E4 + 1CE0B1FE06471DED0097A5F4 + 73027B7217012E740086D8E4 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 73D8A60D170124CE00C66275 + /Users/eliot/Cog/oscogvm/macbuild/SqueakSSL/SqueakSSL.xcodeproj + + WindowString + 305 234 1066 909 0 0 1920 1178 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {500, 218}} + RubberWindowFrame + 613 500 500 500 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 223}, {500, 236}} + RubberWindowFrame + 613 500 500 500 0 0 1920 1178 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 459pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 73D8A60D170124CE00C66275 + 73027B7317012E740086D8E4 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 613 500 500 500 0 0 1920 1178 + WindowToolGUID + 73D8A60D170124CE00C66275 + WindowToolIsVisible + + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 250}} + RubberWindowFrame + 516 632 650 250 0 0 1680 1027 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 650 41 650 250 0 0 1280 1002 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj b/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5f93ff0 --- /dev/null +++ b/nscogbuild/macbuild/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj @@ -0,0 +1,270 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 73027B6B17012E5F0086D8E4 /* SqueakSSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */; }; + 732D9F4317012B6E00E25893 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732D9F4117012B6E00E25893 /* Security.framework */; }; + 732D9F4417012B6E00E25893 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732D9F4217012B6E00E25893 /* CoreFoundation.framework */; }; + 73D8A6421701272700C66275 /* sqMacSSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 73D8A6411701272700C66275 /* sqMacSSL.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 32BAE0B30371A71500C91783 /* SqueakSSL_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SqueakSSL_Prefix.pch; sourceTree = ""; }; + 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SqueakSSL.c; path = ../../../src/plugins/SqueakSSL/SqueakSSL.c; sourceTree = SOURCE_ROOT; }; + 732D9F4117012B6E00E25893 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; + 732D9F4217012B6E00E25893 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 73811791170128D400CB30CE /* sq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sq.h; path = ../../../platforms/Cross/vm/sq.h; sourceTree = SOURCE_ROOT; }; + 73D8A62E1701259800C66275 /* SqueakSSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SqueakSSL.h; path = ../../../platforms/Cross/plugins/SqueakSSL/SqueakSSL.h; sourceTree = SOURCE_ROOT; }; + 73D8A6411701272700C66275 /* sqMacSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacSSL.c; path = "../../../platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c"; sourceTree = SOURCE_ROOT; }; + 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SqueakSSL.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../src/vm/interp.h; sourceTree = SOURCE_ROOT; }; + DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = ../../../platforms/Cross/vm/sqMemoryAccess.h; sourceTree = SOURCE_ROOT; }; + DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqVirtualMachine.h; path = ../../../platforms/Cross/vm/sqVirtualMachine.h; sourceTree = SOURCE_ROOT; }; + DA3A20F80AA63D000050B983 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "../../../platforms/Mac OS/vm/config.h"; sourceTree = SOURCE_ROOT; }; + DA3A20F90AA63D000050B983 /* sqConfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqConfig.h; path = "../../../platforms/Mac OS/vm/sqConfig.h"; sourceTree = SOURCE_ROOT; }; + DA3A20FA0AA63D000050B983 /* sqPlatformSpecific.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqPlatformSpecific.h; path = "../../../platforms/Mac OS/vm/sqPlatformSpecific.h"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 732D9F4317012B6E00E25893 /* Security.framework in Frameworks */, + 732D9F4417012B6E00E25893 /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 08FB77ADFE841716C02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 732D9F4017012B6E00E25893 /* Frameworks */, + 8D01CCD10486CAD60068D4B7 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 73027B6717012E3F0086D8E4 /* SqueakSSL */, + 73D8A63C170125E500C66275 /* SqueakSSL */, + 73D8A636170125C500C66275 /* SqueakSSL */, + DA3A20F80AA63D000050B983 /* config.h */, + DA3A20F90AA63D000050B983 /* sqConfig.h */, + DA3A20FA0AA63D000050B983 /* sqPlatformSpecific.h */, + DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */, + DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */, + DA3A20F50AA63CBF0050B983 /* interp.h */, + 73811791170128D400CB30CE /* sq.h */, + 32BAE0B30371A71500C91783 /* SqueakSSL_Prefix.pch */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */, + ); + name = Products; + sourceTree = ""; + }; + 73027B6717012E3F0086D8E4 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73027B6A17012E5F0086D8E4 /* SqueakSSL.c */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 732D9F4017012B6E00E25893 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 732D9F4117012B6E00E25893 /* Security.framework */, + 732D9F4217012B6E00E25893 /* CoreFoundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 73D8A636170125C500C66275 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73D8A62E1701259800C66275 /* SqueakSSL.h */, + ); + name = SqueakSSL; + sourceTree = ""; + }; + 73D8A63C170125E500C66275 /* SqueakSSL */ = { + isa = PBXGroup; + children = ( + 73D8A6411701272700C66275 /* sqMacSSL.c */, + ); + name = SqueakSSL; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* SqueakSSL */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "SqueakSSL" */; + buildPhases = ( + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCD0486CAD60068D4B7 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SqueakSSL; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = SqueakSSL; + productReference = 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "SqueakSSL" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 089C166AFE841209C02AAC07 /* SqueakSSL */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D01CCC60486CAD60068D4B7 /* SqueakSSL */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 73D8A6421701272700C66275 /* sqMacSSL.c in Sources */, + 73027B6B17012E5F0086D8E4 /* SqueakSSL.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 4FADC23408B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SqueakSSL_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = SqueakSSL; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = YES; + }; + name = Debug; + }; + 4FADC23508B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = i386; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SqueakSSL_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = SqueakSSL; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 4FADC23808B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Debug; + }; + 4FADC23908B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /Developer/Headers/FlatCarbon; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "SqueakSSL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23408B4156C00ABE55E /* Debug */, + 4FADC23508B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "SqueakSSL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23808B4156C00ABE55E /* Debug */, + 4FADC23908B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/nscogbuild/macbuild/SqueakSSL/SqueakSSL_Prefix.pch b/nscogbuild/macbuild/SqueakSSL/SqueakSSL_Prefix.pch new file mode 100644 index 0000000..e1af59f --- /dev/null +++ b/nscogbuild/macbuild/SqueakSSL/SqueakSSL_Prefix.pch @@ -0,0 +1,5 @@ +// +// Prefix header for all source files of the 'Template' target in the 'Template' project. +// + +#include diff --git a/nscogbuild/macbuild/makevm b/nscogbuild/macbuild/makevm index 1b07e34..37b0eb1 100755 --- a/nscogbuild/macbuild/makevm +++ b/nscogbuild/macbuild/makevm @@ -7,6 +7,7 @@ BUILD_CONFIGURATION=Deployment NSD_BUILD_CONFIGURATION=Deployment XCD_BUILD_CONFIGURATION=Release DEST="Newspeak Virtual Machine.app" +CONF=FAST KEEP= USAGE="usage: `basename $0` -[adskh?]" @@ -16,10 +17,12 @@ while getopts 'adskh?' opt $@; do a) BUILD_CONFIGURATION=Assert NSD_BUILD_CONFIGURATION=Development XCD_BUILD_CONFIGURATION=Debug + CONF=ASSERT DEST="Assert.app";; d) BUILD_CONFIGURATION=Development NSD_BUILD_CONFIGURATION=Development XCD_BUILD_CONFIGURATION=Debug + CONF=DEBUG DEST="Debug.app";; s) BUILD_CONFIGURATION=DeploymentSymbols DEST="Fast.app";; @@ -58,6 +61,14 @@ else mv build/$BUILD_CONFIGURATION/Newspeak\ Virtual\ Machine.app "$DEST" fi ../../scripts/versionInfoPlist ../../platforms CoreVM.plist "$DEST/Contents/Info.plist" +ex -u NONE "+g/????/s/????/$CONF/" +w +q "$DEST/Contents/Info.plist" + +# Build the SSL plugin (New as of 25 March 2013) +echo +echo SqueakSSL xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION +xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION +rm -rf "$DEST/Contents/Resources/SqueakSSL.bundle" +cp -R SqueakSSL/build/$XCD_BUILD_CONFIGURATION/SqueakSSL.bundle "$DEST/Contents/Resources" if false; then # Build the BochsIA32Plugin diff --git a/nscogbuild/macbuild/plugins.ext b/nscogbuild/macbuild/plugins.ext new file mode 100644 index 0000000..b0aa202 --- /dev/null +++ b/nscogbuild/macbuild/plugins.ext @@ -0,0 +1,3 @@ +# Copied, perhaps edited, from ../src/examplePlugins.ext +EXTERNAL_PLUGINS = \ +SqueakSSL diff --git a/nscogbuild/unixbuild/astbld/plugins.ext b/nscogbuild/unixbuild/astbld/plugins.ext index f4c7ea4..d12b438 100644 --- a/nscogbuild/unixbuild/astbld/plugins.ext +++ b/nscogbuild/unixbuild/astbld/plugins.ext @@ -1,2 +1,3 @@ # Copied, perhaps edited, from ../../../nscogsrc/examplePlugins.ext EXTERNAL_PLUGINS = \ +SqueakSSL diff --git a/nscogbuild/unixbuild/bld/plugins.ext b/nscogbuild/unixbuild/bld/plugins.ext index f4c7ea4..d12b438 100644 --- a/nscogbuild/unixbuild/bld/plugins.ext +++ b/nscogbuild/unixbuild/bld/plugins.ext @@ -1,2 +1,3 @@ # Copied, perhaps edited, from ../../../nscogsrc/examplePlugins.ext EXTERNAL_PLUGINS = \ +SqueakSSL diff --git a/nscogbuild/unixbuild/dbgbld/plugins.ext b/nscogbuild/unixbuild/dbgbld/plugins.ext index f4c7ea4..d12b438 100644 --- a/nscogbuild/unixbuild/dbgbld/plugins.ext +++ b/nscogbuild/unixbuild/dbgbld/plugins.ext @@ -1,2 +1,3 @@ # Copied, perhaps edited, from ../../../nscogsrc/examplePlugins.ext EXTERNAL_PLUGINS = \ +SqueakSSL diff --git a/platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c b/platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c new file mode 100644 index 0000000..804104a --- /dev/null +++ b/platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c @@ -0,0 +1,479 @@ +/* sqMacSSL.c: SqueakSSL implementation based on Mac OSX Security Services */ +#include "sq.h" +#include "SqueakSSL.h" + +#include +#include + +typedef struct sqSSL { + int state; + int certFlags; + int loglevel; + + char *certName; + char *peerName; + + + SSLContextRef ctx; + CFArrayRef certs; + + /* internal data buffer */ + char *dataBuf; + int dataLen; + int dataMax; + + /* external data buffer */ + char *outBuf; + int outLen; + int outMax; +} sqSSL; + + +static sqSSL **handleBuf = NULL; +static sqInt handleMax = 0; + + +/********************************************************************/ +/********************************************************************/ +/********************************************************************/ + +/* SqueakSSLRead: Custom read function for Secure Transport */ +OSStatus SqueakSSLRead(SSLConnectionRef connection, void *data, + size_t *dataLength) { + sqSSL *ssl = (sqSSL*) connection; + size_t sz = *dataLength; + + if(ssl->loglevel) + printf("SqueakSSLRead: Requesting %d bytes, having %d bytes\n", + (int)sz, ssl->dataLen); + if(ssl->dataLen < sz) sz = ssl->dataLen; + memcpy(data, ssl->dataBuf, sz); + /* Did we have enough data? */ + if(sz == *dataLength) { + /* Adjust read buffer */ + memmove(ssl->dataBuf, ssl->dataBuf+sz, ssl->dataLen - sz); + ssl->dataLen -= sz; + *dataLength = sz; + return noErr; + } + ssl->dataLen = 0; + *dataLength = sz; + return errSSLWouldBlock; +} + +/* SqueakSSLRead: Custom write function for Secure Transport */ +OSStatus SqueakSSLWrite(SSLConnectionRef connection, const void *data, + size_t *dataLength) { + sqSSL *ssl = (sqSSL*) connection; + size_t sz = ssl->outMax - ssl->outLen; + + if(ssl->loglevel) + printf("SqueakSSLWrite: Writing %d bytes, having %d free\n", + (int)*dataLength, (int)sz); + if(sz == 0) { + *dataLength = 0; + return errSSLWouldBlock; + } + if(*dataLength < sz) sz = *dataLength; + memcpy(ssl->outBuf + ssl->outLen, data, sz); + ssl->outLen += sz; + *dataLength = sz; + return noErr; +} + +/********************************************************************/ +/********************************************************************/ +/********************************************************************/ + +/* sslFromHandle: Maps a handle to an SSL */ +static sqSSL *sslFromHandle(sqInt handle) { + return handle < handleMax ? handleBuf[handle] : NULL; +} + +/* sqSetupSSL: Common SSL setup task */ + +int sqSetupSSL(sqSSL *ssl, int isServer) { + OSStatus status; + + if(ssl->loglevel) printf("sqSetupSSL: Setting up new context\n"); + /* Create the new context */ + status = SSLNewContext(isServer, &ssl->ctx); + if(status) { + if(ssl->loglevel) printf("SSLNewContext failed: code = %d\n", (int)status); + return 0; + } + /* Set the connection ref */ + status = SSLSetConnection(ssl->ctx, ssl); + if(status) { + if(ssl->loglevel) printf("SSLSetConnection failed: code = %d\n", (int)status); + return 0; + } + + /* Set up the read/write functions */ + status = SSLSetIOFuncs(ssl->ctx,SqueakSSLRead, SqueakSSLWrite); + if(status) { + if(ssl->loglevel) printf("SSLSetIOFuncs failed: code = %d\n", (int)status); + return 0; + } + + /* Enable desired protocols */ + status = SSLSetProtocolVersionEnabled(ssl->ctx, kSSLProtocol2, false); + if(status) { + if(ssl->loglevel) printf("SSLSetProtocolVersionEnabled failed: code = %d\n", (int)status); + return 0; + } + + status = SSLSetProtocolVersionEnabled(ssl->ctx, kSSLProtocol3, true); + if(status) { + if(ssl->loglevel) printf("SSLSetProtocolVersionEnabled failed: code = %d\n", (int)status); + return 0; + } + + status = SSLSetProtocolVersionEnabled(ssl->ctx, kTLSProtocol1, true); + if(status) { + if(ssl->loglevel) printf("SSLSetProtocolVersionEnabled failed: code = %d\n", (int)status); + return 0; + } + /* Disable cert verification since we do that ourselves */ + status = SSLSetEnableCertVerify(ssl->ctx, false); + if(status) { + if(ssl->loglevel) printf("SSLSetEnableCertVerify failed: code = %d\n", (int)status); + return 0; + } + + return 1; +} + +/********************************************************************/ +/********************************************************************/ +/********************************************************************/ + +/* sqCreateSSL: Creates a new SSL instance. + Arguments: None. + Returns: SSL handle. +*/ +sqInt sqCreateSSL(void) { + sqInt handle = 0; + sqSSL *ssl = NULL; + + + ssl = calloc(1, sizeof(sqSSL)); + ssl->loglevel = 0; + + /* Find a free handle */ + for(handle = 1; handle < handleMax; handle++) + if(handleBuf[handle] == NULL) break; + + if(handle >= handleMax) { + int i, delta = 100; + /* Resize the handle buffer */ + handleBuf = realloc(handleBuf, (handleMax+delta)*sizeof(void*)); + for(i = handleMax; i < handleMax+delta; i++) + handleBuf[i] = NULL; + handleMax += delta; + } + handleBuf[handle] = ssl; + return handle; +} + +/* sqDestroySSL: Destroys an SSL instance. + Arguments: + handle - the SSL handle + Returns: Non-zero if successful. +*/ +sqInt sqDestroySSL(sqInt handle) { + sqSSL *ssl = sslFromHandle(handle); + if(ssl == NULL) return 0; + + if(ssl->certName) free(ssl->certName); + if(ssl->peerName) free(ssl->peerName); + + free(ssl); + handleBuf[handle] = NULL; + return 1; +} + +/* sqConnectSSL: Start/continue an SSL client handshake. + Arguments: + handle - the SSL handle + srcBuf - the input token sent by the remote peer + srcLen - the size of the input token + dstBuf - the output buffer for a new token + dstLen - the size of the output buffer + Returns: The size of the output token or an error code. +*/ +sqInt sqConnectSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + OSStatus status; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl->loglevel) printf("sqConnectSSL: %x\n", (int)ssl); + + /* Verify state of session */ + if(ssl == NULL || (ssl->state != SQSSL_UNUSED && ssl->state != SQSSL_CONNECTING)) { + return SQSSL_INVALID_STATE; + } + + /* Set up the output buffer */ + ssl->outBuf = dstBuf; + ssl->outLen = 0; + ssl->outMax = dstLen; + + if(ssl->dataLen + srcLen > ssl->dataMax) { + /* resize the data buffer */ + ssl->dataMax += (srcLen < 4096) ? (4096) : (srcLen+1024); + ssl->dataBuf = realloc(ssl->dataBuf, ssl->dataMax); + if(!ssl->dataBuf) return SQSSL_OUT_OF_MEMORY; + } + if(ssl->loglevel) printf("sqConnectSSL: input token %d bytes\n", srcLen); + memcpy(ssl->dataBuf + ssl->dataLen, srcBuf, srcLen); + ssl->dataLen += srcLen; + + /* Establish initial connection */ + if(ssl->state == SQSSL_UNUSED) { + ssl->state = SQSSL_CONNECTING; + if(ssl->loglevel) printf("sqConnectSSL: Setting up SSL\n"); + if(!sqSetupSSL(ssl, 0)) return SQSSL_GENERIC_ERROR; + } + + status = SSLHandshake(ssl->ctx); + if(status == errSSLWouldBlock) { + /* Return token to caller */ + if(ssl->loglevel) printf("sqConnectSSL: Produced %d token bytes\n", ssl->outLen); + return ssl->outLen ? ssl->outLen : SQSSL_NEED_MORE_DATA; + } + if(status != noErr) { + if(ssl->loglevel) printf("sqConnectSSL: SSLHandshake returned %d\n", (int)status); + return SQSSL_GENERIC_ERROR; + } + /* We are connected. Verify the cert. */ + ssl->state = SQSSL_CONNECTED; + ssl->certFlags = -1; + + /* Extract the peer name from the cert */ + status = SSLCopyPeerCertificates(ssl->ctx, &ssl->certs); + if(status == noErr) { + if(CFArrayGetCount(ssl->certs) > 0) { + char peerName[256]; + CFStringRef cfName; + SecCertificateRef cert = (SecCertificateRef) CFArrayGetValueAtIndex(ssl->certs, 0); + status = SecCertificateCopyCommonName(cert, &cfName); + if(status == noErr) { + CFStringGetCString(cfName, peerName, sizeof(peerName), kCFStringEncodingUTF8); + ssl->peerName = strdup(peerName); + CFRelease(cfName); + } + } + } + return 0; +} + +/* sqAcceptSSL: Start/continue an SSL server handshake. + Arguments: + handle - the SSL handle + srcBuf - the input token sent by the remote peer + srcLen - the size of the input token + dstBuf - the output buffer for a new token + dstLen - the size of the output buffer + Returns: The size of the output token or an error code. +*/ +sqInt sqAcceptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + OSStatus status; + sqSSL *ssl = sslFromHandle(handle); + + /* Verify state of session */ + if(ssl == NULL || (ssl->state != SQSSL_UNUSED && ssl->state != SQSSL_ACCEPTING)) { + return SQSSL_INVALID_STATE; + } + + /* Set up the output buffer */ + ssl->outBuf = dstBuf; + ssl->outLen = 0; + ssl->outMax = dstLen; + + if(ssl->dataLen + srcLen > ssl->dataMax) { + /* resize the data buffer */ + ssl->dataMax += (srcLen < 4096) ? (4096) : (srcLen+1024); + ssl->dataBuf = realloc(ssl->dataBuf, ssl->dataMax); + if(!ssl->dataBuf) return SQSSL_OUT_OF_MEMORY; + } + if(ssl->loglevel) printf("sqConnectSSL: input token %d bytes\n", srcLen); + memcpy(ssl->dataBuf + ssl->dataLen, srcBuf, srcLen); + ssl->dataLen += srcLen; + + /* Establish initial connection */ + if(ssl->state == SQSSL_UNUSED) { + ssl->state = SQSSL_ACCEPTING; + if(ssl->loglevel) printf("sqAcceptSSL: Setting up SSL\n"); + if(!sqSetupSSL(ssl, 1)) return SQSSL_GENERIC_ERROR; + if(ssl->loglevel) printf("sqAcceptSSL: setting accept state\n"); + } + + status = SSLHandshake(ssl->ctx); + if(status == errSSLWouldBlock) { + /* Return token to caller */ + return ssl->outLen ? ssl->outLen : SQSSL_NEED_MORE_DATA; + } + if(status != noErr) { + if(ssl->loglevel) printf("sqConnectSSL: SSLHandshake returned %d\n", (int)status); + return SQSSL_GENERIC_ERROR; + } + /* We are connected. Verify the cert. */ + ssl->state = SQSSL_CONNECTED; + return 0; +} + +/* sqEncryptSSL: Encrypt data for SSL transmission. + Arguments: + handle - the SSL handle + srcBuf - the unencrypted input data + srcLen - the size of the input data + dstBuf - the output buffer for the encrypted contents + dstLen - the size of the output buffer + Returns: The size of the output generated or an error code. +*/ +sqInt sqEncryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + size_t nbytes; + OSStatus status; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL || ssl->state != SQSSL_CONNECTED) return SQSSL_INVALID_STATE; + + /* Set up the output buffer */ + ssl->outBuf = dstBuf; + ssl->outLen = 0; + ssl->outMax = dstLen; + + if(ssl->loglevel) printf("sqEncryptSSL: Encrypting %d bytes\n", srcLen); + + status = SSLWrite(ssl->ctx, srcBuf, srcLen, &nbytes); + if(nbytes != srcLen) return SQSSL_GENERIC_ERROR; + if(status == errSSLWouldBlock || status == noErr) return ssl->outLen; + if(ssl->loglevel) printf("sqDecryptSSL: SSLWrite returned %d\n", (int)status); + return SQSSL_GENERIC_ERROR; +} + +/* sqDecryptSSL: Decrypt data for SSL transmission. + Arguments: + handle - the SSL handle + srcBuf - the encrypted input data + srcLen - the size of the input data + dstBuf - the output buffer for the decrypted contents + dstLen - the size of the output buffer + Returns: The size of the output generated or an error code. +*/ +sqInt sqDecryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + size_t nbytes = 0; + OSStatus status; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL || ssl->state != SQSSL_CONNECTED) return SQSSL_INVALID_STATE; + + if(ssl->dataLen + srcLen > ssl->dataMax) { + /* resize the read buffer */ + ssl->dataMax += (srcLen < 4096) ? (4096) : (srcLen+1024); + ssl->dataBuf = realloc(ssl->dataBuf, ssl->dataMax); + if(!ssl->dataBuf) return SQSSL_OUT_OF_MEMORY; + } + if(ssl->loglevel) printf("sqDecryptSSL: Input data %d bytes\n", srcLen); + memcpy(ssl->dataBuf + ssl->dataLen, srcBuf, srcLen); + ssl->dataLen += srcLen; + + if(ssl->loglevel) printf("sqDecryptSSL: Decrypting %d bytes\n", ssl->dataLen); + + status = SSLRead(ssl->ctx, dstBuf, dstLen, &nbytes); + if(status == errSSLWouldBlock || status == noErr) return nbytes; + if(ssl->loglevel) printf("sqDecryptSSL: SSLRead returned %d\n", (int)status); + return SQSSL_GENERIC_ERROR; +} + +/* sqGetStringPropertySSL: Retrieve a string property from SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + Returns: The string value of the property. +*/ +char* sqGetStringPropertySSL(sqInt handle, int propID) { + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL) return NULL; + switch(propID) { + case SQSSL_PROP_PEERNAME: return ssl->peerName; + case SQSSL_PROP_CERTNAME: return ssl->certName; + default: + if(ssl->loglevel) printf("sqGetStringPropertySSL: Unknown property ID %d\n", propID); + return NULL; + } + return NULL; +} + +/* sqSetStringPropertySSL: Set a string property in SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + propName - the property string + propLen - the length of the property string + Returns: Non-zero if successful. +*/ +sqInt sqSetStringPropertySSL(sqInt handle, int propID, char *propName, sqInt propLen) { + sqSSL *ssl = sslFromHandle(handle); + char *property = NULL; + + if(ssl == NULL) return 0; + + if(propLen) { + property = calloc(1, propLen+1); + memcpy(property, propName, propLen); + }; + + if(ssl->loglevel) printf("sqSetStringPropertySSL(%d): %s\n", propID, property); + + switch(propID) { + case SQSSL_PROP_CERTNAME: ssl->certName = property; break; + default: + if(ssl->loglevel) printf("sqSetStringPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 1; +} + +/* sqGetIntPropertySSL: Retrieve an integer property from SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + Returns: The integer value of the property. +*/ +int sqGetIntPropertySSL(sqInt handle, int propID) { + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL) return 0; + switch(propID) { + case SQSSL_PROP_SSLSTATE: return ssl->state; + case SQSSL_PROP_CERTSTATE: return ssl->certFlags; + case SQSSL_PROP_VERSION: return 1; + case SQSSL_PROP_LOGLEVEL: return ssl->loglevel; + default: + if(ssl->loglevel) printf("sqGetIntPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 0; +} + +/* sqSetIntPropertySSL: Set an integer property in SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + propValue - the property value + Returns: Non-zero if successful. +*/ +sqInt sqSetIntPropertySSL(sqInt handle, sqInt propID, sqInt propValue) { + sqSSL *ssl = sslFromHandle(handle); + if(ssl == NULL) return 0; + + switch(propID) { + case SQSSL_PROP_LOGLEVEL: ssl->loglevel = propValue; break; + default: + if(ssl->loglevel) printf("sqSetIntPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 1; +} diff --git a/platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.c b/platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.c new file mode 100644 index 0000000..b475109 --- /dev/null +++ b/platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.c @@ -0,0 +1,443 @@ +#include "sq.h" +#include "SqueakSSL.h" + +#include "openssl/ssl.h" +#include "openssl/err.h" + +typedef struct sqSSL { + int state; + int certFlags; + int loglevel; + + char *certName; + char *peerName; + + SSL_METHOD *method; + SSL_CTX *ctx; + SSL *ssl; + BIO *bioRead; + BIO *bioWrite; +} sqSSL; + + +static sqSSL **handleBuf = NULL; +static sqInt handleMax = 0; + +/********************************************************************/ +/********************************************************************/ +/********************************************************************/ + +/* sslFromHandle: Maps a handle to an SSL */ +static sqSSL *sslFromHandle(sqInt handle) { + return handle < handleMax ? handleBuf[handle] : NULL; +} + +/* sqCopyBioSSL: Copies data from a BIO into an out buffer */ +sqInt sqCopyBioSSL(sqSSL *ssl, BIO *bio, char *dstBuf, sqInt dstLen) { + int nbytes = BIO_ctrl_pending(bio); + + if(ssl->loglevel) printf("sqCopyBioSSL: %d bytes pending; buffer size %d\n", + nbytes, dstLen); + if(nbytes > dstLen) return -1; + return BIO_read(bio, dstBuf, dstLen); +} + +/* sqSetupSSL: Common SSL setup tasks */ +sqInt sqSetupSSL(sqSSL *ssl, int server) { + + /* Fixme. Needs to use specified version */ + if(ssl->loglevel) printf("sqSetupSSL: setting method\n"); + ssl->method = SSLv23_method(); + if(ssl->loglevel) printf("sqSetupSSL: Creating context\n"); + ssl->ctx = SSL_CTX_new(ssl->method); + + if(!ssl->ctx) ERR_print_errors_fp(stdout); + + if(ssl->loglevel) printf("sqSetupSSL: setting cipher list\n"); + SSL_CTX_set_cipher_list(ssl->ctx, "!ADH:HIGH:MEDIUM:@STRENGTH"); + + /* if a cert is provided, use it */ + if(ssl->certName) { + if(ssl->loglevel) printf("sqSetupSSL: Using cert file %s\n", ssl->certName); + if(SSL_CTX_use_certificate_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0) + ERR_print_errors_fp(stderr); + + if(SSL_CTX_use_PrivateKey_file(ssl->ctx, ssl->certName, SSL_FILETYPE_PEM)<=0) + ERR_print_errors_fp(stderr); + } + + /* Set up trusted CA */ + if(ssl->loglevel) printf("sqSetupSSL: No root CA given; using default verify paths\n"); + if(SSL_CTX_set_default_verify_paths(ssl->ctx) <=0) + ERR_print_errors_fp(stderr); + + if(ssl->loglevel) printf("sqSetupSSL: Creating SSL\n"); + ssl->ssl = SSL_new(ssl->ctx); + if(ssl->loglevel) printf("sqSetupSSL: setting bios\n"); + SSL_set_bio(ssl->ssl, ssl->bioRead, ssl->bioWrite); + return 1; +} +/********************************************************************/ +/********************************************************************/ +/********************************************************************/ + +/* sqCreateSSL: Creates a new SSL instance. + Arguments: None. + Returns: SSL handle. +*/ +sqInt sqCreateSSL(void) { + sqInt handle = 0; + sqSSL *ssl = NULL; + + SSL_library_init(); + SSL_load_error_strings(); + + ssl = calloc(1, sizeof(sqSSL)); + ssl->bioRead = BIO_new(BIO_s_mem()); + ssl->bioWrite = BIO_new(BIO_s_mem()); + BIO_set_close(ssl->bioRead, BIO_CLOSE); + BIO_set_close(ssl->bioWrite, BIO_CLOSE); + + /* Find a free handle */ + for(handle = 1; handle < handleMax; handle++) + if(handleBuf[handle] == NULL) break; + + if(handle >= handleMax) { + int i, delta = 100; + /* Resize the handle buffer */ + handleBuf = realloc(handleBuf, (handleMax+delta)*sizeof(void*)); + for(i = handleMax; i < handleMax+delta; i++) + handleBuf[i] = NULL; + handleMax += delta; + } + handleBuf[handle] = ssl; + return handle; +} + +/* sqDestroySSL: Destroys an SSL instance. + Arguments: + handle - the SSL handle + Returns: Non-zero if successful. +*/ +sqInt sqDestroySSL(sqInt handle) { + sqSSL *ssl = sslFromHandle(handle); + if(ssl == NULL) return 0; + + if(ssl->ctx) SSL_CTX_free(ssl->ctx); + if(ssl->ssl) SSL_free(ssl->ssl); + + if(ssl->certName) free(ssl->certName); + if(ssl->peerName) free(ssl->peerName); + + free(ssl); + handleBuf[handle] = NULL; + return 1; +} + +/* sqConnectSSL: Start/continue an SSL client handshake. + Arguments: + handle - the SSL handle + srcBuf - the input token sent by the remote peer + srcLen - the size of the input token + dstBuf - the output buffer for a new token + dstLen - the size of the output buffer + Returns: The size of the output token or an error code. +*/ +sqInt sqConnectSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + int result, n; + char peerName[256]; + X509 *cert; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl->loglevel) printf("sqConnectSSL: %x\n", (int)ssl); + + /* Verify state of session */ + if(ssl == NULL || (ssl->state != SQSSL_UNUSED && ssl->state != SQSSL_CONNECTING)) { + return SQSSL_INVALID_STATE; + } + + /* Establish initial connection */ + if(ssl->state == SQSSL_UNUSED) { + ssl->state = SQSSL_CONNECTING; + if(ssl->loglevel) print("sqConnectSSL: Setting up SSL\n"); + if(!sqSetupSSL(ssl, 0)) return SQSSL_GENERIC_ERROR; + if(ssl->loglevel) print("sqConnectSSL: Setting connect state\n"); + SSL_set_connect_state(ssl->ssl); + } + + if(ssl->loglevel) printf("sqConnectSSL: BIO_write %d bytes\n", srcLen); + + n = BIO_write(ssl->bioRead, srcBuf, srcLen); + + if(n < srcLen) { + if(ssl->loglevel) printf("sqConnectSSL: BIO too small for input\n"); + return SQSSL_GENERIC_ERROR; + } + if(n < 0) { + if(ssl->loglevel) printf("sqConnectSSL: BIO_write failed\n"); + return SQSSL_GENERIC_ERROR; + } + if(ssl->loglevel) printf("sqConnectSSL: SSL_connect\n"); + result = SSL_connect(ssl->ssl); + if(result <= 0) { + int error = SSL_get_error(ssl->ssl, result); + if(error != SSL_ERROR_WANT_READ) { + if(ssl->loglevel) printf("sqConnectSSL: SSL_connect failed\n"); + ERR_print_errors_fp(stdout); + return -1; + } + if(ssl->loglevel) printf("sqConnectSSL: sqCopyBioSSL\n"); + return sqCopyBioSSL(ssl, ssl->bioWrite, dstBuf, dstLen); + } + + /* We are connected. Verify the cert. */ + ssl->state = SQSSL_CONNECTED; + + if(ssl->loglevel) printf("sqConnectSSL: SSL_get_peer_certificate\n"); + cert = SSL_get_peer_certificate(ssl->ssl); + if(ssl->loglevel) printf("sqConnectSSL: cert = %x\n", (int)cert); + /* Fail if no cert received. */ + if(cert) { + X509_NAME_get_text_by_NID(X509_get_subject_name(cert), + NID_commonName, peerName, + sizeof(peerName)); + if(ssl->loglevel) printf("sqConnectSSL: peerName = %s\n", peerName); + ssl->peerName = strdup(peerName); + X509_free(cert); + + /* Check the result of verification */ + result = SSL_get_verify_result(ssl->ssl); + if(ssl->loglevel) printf("sqConnectSSL: SSL_get_verify_result = %d\n", result); + /* FIXME: Figure out the actual failure reason */ + ssl->certFlags = result ? SQSSL_OTHER_ISSUE : SQSSL_OK; + } else { + ssl->certFlags = SQSSL_NO_CERTIFICATE; + } + return 0; +} + +/* sqAcceptSSL: Start/continue an SSL server handshake. + Arguments: + handle - the SSL handle + srcBuf - the input token sent by the remote peer + srcLen - the size of the input token + dstBuf - the output buffer for a new token + dstLen - the size of the output buffer + Returns: The size of the output token or an error code. +*/ +sqInt sqAcceptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + int result, n; + char peerName[256]; + X509 *cert; + sqSSL *ssl = sslFromHandle(handle); + + /* Verify state of session */ + if(ssl == NULL || (ssl->state != SQSSL_UNUSED && ssl->state != SQSSL_ACCEPTING)) { + return SQSSL_INVALID_STATE; + } + + /* Establish initial connection */ + if(ssl->state == SQSSL_UNUSED) { + ssl->state = SQSSL_ACCEPTING; + if(ssl->loglevel) printf("sqAcceptSSL: Setting up SSL\n"); + if(!sqSetupSSL(ssl, 1)) return SQSSL_GENERIC_ERROR; + if(ssl->loglevel) printf("sqAcceptSSL: setting accept state\n"); + SSL_set_accept_state(ssl->ssl); + } + + if(ssl->loglevel) printf("sqAcceptSSL: BIO_write %d bytes\n", srcLen); + + n = BIO_write(ssl->bioRead, srcBuf, srcLen); + + if(n < srcLen) { + if(ssl->loglevel) printf("sqAcceptSSL: BIO_write wrote less than expected\n"); + return SQSSL_GENERIC_ERROR; + } + if(n < 0) { + if(ssl->loglevel) printf("sqAcceptSSL: BIO_write failed\n"); + return SQSSL_GENERIC_ERROR; + } + + if(ssl->loglevel) printf("sqAcceptSSL: SSL_accept\n"); + result = SSL_accept(ssl->ssl); + + if(result <= 0) { + int count = 0; + int error = SSL_get_error(ssl->ssl, result); + if(error != SSL_ERROR_WANT_READ) { + if(ssl->loglevel) printf("sqAcceptSSL: SSL_accept failed\n"); + ERR_print_errors_fp(stdout); + return SQSSL_GENERIC_ERROR; + } + if(ssl->loglevel) printf("sqAcceptSSL: sqCopyBioSSL\n"); + count = sqCopyBioSSL(ssl, ssl->bioWrite, dstBuf, dstLen); + return count ? count : SQSSL_NEED_MORE_DATA; + } + + /* We are connected. Verify the cert. */ + ssl->state = SQSSL_CONNECTED; + + if(ssl->loglevel) printf("sqAcceptSSL: SSL_get_peer_certificate\n"); + cert = SSL_get_peer_certificate(ssl->ssl); + if(ssl->loglevel) printf("sqAcceptSSL: cert = %x\n", (int)cert); + + if(cert) { + X509_NAME_get_text_by_NID(X509_get_subject_name(cert), + NID_commonName, peerName, + sizeof(peerName)); + if(ssl->loglevel) printf("sqAcceptSSL: peerName = %s\n", peerName); + ssl->peerName = strdup(peerName); + X509_free(cert); + + /* Check the result of verification */ + result = SSL_get_verify_result(ssl->ssl); + if(ssl->loglevel) printf("sqAcceptSSL: SSL_get_verify_result = %d\n", result); + /* FIXME: Figure out the actual failure reason */ + ssl->certFlags = result ? SQSSL_OTHER_ISSUE : SQSSL_OK; + } else { + ssl->certFlags = SQSSL_NO_CERTIFICATE; + } + return sqCopyBioSSL(ssl, ssl->bioWrite, dstBuf, dstLen); +} + +/* sqEncryptSSL: Encrypt data for SSL transmission. + Arguments: + handle - the SSL handle + srcBuf - the unencrypted input data + srcLen - the size of the input data + dstBuf - the output buffer for the encrypted contents + dstLen - the size of the output buffer + Returns: The size of the output generated or an error code. +*/ +sqInt sqEncryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + int nbytes; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL || ssl->state != SQSSL_CONNECTED) return SQSSL_INVALID_STATE; + + if(ssl->loglevel) printf("sqEncryptSSL: Encrypting %d bytes\n", srcLen); + + nbytes = SSL_write(ssl->ssl, srcBuf, srcLen); + if(nbytes != srcLen) return SQSSL_GENERIC_ERROR; + return sqCopyBioSSL(ssl, ssl->bioWrite, dstBuf, dstLen); +} + +/* sqDecryptSSL: Decrypt data for SSL transmission. + Arguments: + handle - the SSL handle + srcBuf - the encrypted input data + srcLen - the size of the input data + dstBuf - the output buffer for the decrypted contents + dstLen - the size of the output buffer + Returns: The size of the output generated or an error code. +*/ +sqInt sqDecryptSSL(sqInt handle, char* srcBuf, sqInt srcLen, char *dstBuf, sqInt dstLen) { + int nbytes; + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL || ssl->state != SQSSL_CONNECTED) return SQSSL_INVALID_STATE; + + nbytes = BIO_write(ssl->bioRead, srcBuf, srcLen); + if(nbytes != srcLen) return SQSSL_GENERIC_ERROR; + nbytes = SSL_read(ssl->ssl, dstBuf, dstLen); + if(nbytes <= 0) { + int error = SSL_get_error(ssl->ssl, nbytes); + if(error != SSL_ERROR_WANT_READ && error != SSL_ERROR_ZERO_RETURN) { + return SQSSL_GENERIC_ERROR; + } + nbytes = 0; + } + return nbytes; +} + +/* sqGetStringPropertySSL: Retrieve a string property from SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + Returns: The string value of the property. +*/ +char* sqGetStringPropertySSL(sqInt handle, int propID) { + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL) return NULL; + switch(propID) { + case SQSSL_PROP_PEERNAME: return ssl->peerName; + case SQSSL_PROP_CERTNAME: return ssl->certName; + default: + if(ssl->loglevel) printf("sqGetStringPropertySSL: Unknown property ID %d\n", propID); + return NULL; + } + return NULL; +} + +/* sqSetStringPropertySSL: Set a string property in SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + propName - the property string + propLen - the length of the property string + Returns: Non-zero if successful. +*/ +sqInt sqSetStringPropertySSL(sqInt handle, int propID, char *propName, sqInt propLen) { + sqSSL *ssl = sslFromHandle(handle); + char *property = NULL; + + if(ssl == NULL) return 0; + + if(propLen) { + property = calloc(1, propLen+1); + memcpy(property, propName, propLen); + }; + + if(ssl->loglevel) printf("sqSetStringPropertySSL(%d): %s\n", propID, property); + + switch(propID) { + case SQSSL_PROP_CERTNAME: ssl->certName = property; break; + default: + if(ssl->loglevel) printf("sqSetStringPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 1; +} + +/* sqGetIntPropertySSL: Retrieve an integer property from SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + Returns: The integer value of the property. +*/ +int sqGetIntPropertySSL(sqInt handle, int propID) { + sqSSL *ssl = sslFromHandle(handle); + + if(ssl == NULL) return 0; + switch(propID) { + case SQSSL_PROP_SSLSTATE: return ssl->state; + case SQSSL_PROP_CERTSTATE: return ssl->certFlags; + case SQSSL_PROP_VERSION: return 1; + case SQSSL_PROP_LOGLEVEL: return ssl->loglevel; + default: + if(ssl->loglevel) printf("sqGetIntPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 0; +} + +/* sqSetIntPropertySSL: Set an integer property in SSL. + Arguments: + handle - the ssl handle + propID - the property id to retrieve + propValue - the property value + Returns: Non-zero if successful. +*/ +sqInt sqSetIntPropertySSL(sqInt handle, sqInt propID, sqInt propValue) { + sqSSL *ssl = sslFromHandle(handle); + if(ssl == NULL) return 0; + + switch(propID) { + case SQSSL_PROP_LOGLEVEL: ssl->loglevel = propValue; break; + default: + if(ssl->loglevel) printf("sqSetIntPropertySSL: Unknown property ID %d\n", propID); + return 0; + } + return 1; +} diff --git a/platforms/win32/misc/GreenCogSqueak.ico b/platforms/win32/misc/GreenCogSqueak.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6d03cf9fa70a6531d7be789b8fbb849128e1655 GIT binary patch literal 69927 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 literal 0 HcmV?d00001 diff --git a/scripts/mkvmarchives b/scripts/mkvmarchives index 1ba5ed7..85e65f0 100755 --- a/scripts/mkvmarchives +++ b/scripts/mkvmarchives @@ -47,68 +47,68 @@ fi EXES= REV=`grep 'SvnRawRevisionString.*Rev:' platforms/Cross/vm/sqSCCSVersion.h \ | sed 's/^.*Rev: \([0-9][0-9]*\) $";/\1/'` -echo SVNREV=$REV -export REV +TAG=`date +%g.%U.`$REV +echo REV=$REV TAG=$TAG if [ -n "$CL" ]; then - rm -rf coglinux.tgz - COPYFILE_DISABLE=1 tar czf coglinux.tgz coglinux + rm -rf coglinux-$TAG.tgz + COPYFILE_DISABLE=1 tar czf coglinux-$TAG.tgz coglinux EXES="$EXES coglinux/lib/squeak/[0-9.-]*/squeak" fi if [ -n "$CTL" ]; then - rm -rf cogmtlinux.tgz - COPYFILE_DISABLE=1 tar czf cogmtlinux.tgz cogmtlinux + rm -rf cogmtlinux-$TAG.tgz + COPYFILE_DISABLE=1 tar czf cogmtlinux-$TAG.tgz cogmtlinux EXES="$EXES cogmtlinux/lib/squeak/[0-9.-]*/squeak" fi if [ -n "$CM" ]; then test -d Cog.app || mkdir Cog.app - rm -rf Cog.app/* Cog.app.tgz + rm -rf Cog.app/* Cog.app-$TAG.tgz (cd macbuild/Fast.app>/dev/null;tar cf - *)|(cd Cog.app;tar xvf -) - tar czf Cog.app.tgz Cog.app - EXES="$EXES Cog.app/Contents/MacOS/Croquet" + tar czf Cog.app-$TAG.tgz Cog.app + EXES="$EXES Cog.app/Contents/MacOS/Squeak" fi if [ -n "$CTM" ]; then test -d CogMT.app || mkdir CogMT.app - rm -rf CogMT.app/* CogMT.app.tgz + rm -rf CogMT.app/* CogMT.app-$TAG.tgz (cd macbuild/FastMT.app>/dev/null;tar cf - *)|(cd CogMT.app;tar xvf -) - tar czf CogMT.app.tgz CogMT.app - EXES="$EXES CogMT.app/Contents/MacOS/Croquet" + tar czf CogMT.app-$TAG.tgz CogMT.app + EXES="$EXES CogMT.app/Contents/MacOS/Squeak" fi if [ -n "$CW" ]; then test -d cogwin || mkdir cogwin - rm -rf cogwin/* cogwin.zip - ln cygwinbuild/build/vm/{Croquet.exe,Croquet.ini,Croquet.map,Croquet.exe.manifest} cogwin - ln cygwinbuild/build/vm/{CroquetConsole.exe,CroquetConsole.ini,CroquetConsole.map} cogwin + rm -rf cogwin/* cogwin-$TAG.zip + ln cygwinbuild/build/vm/{Squeak.exe,Squeak.ini,Squeak.map,Squeak.exe.manifest} cogwin + ln cygwinbuild/build/vm/{SqueakConsole.exe,SqueakConsole.ini,SqueakConsole.map} cogwin ln cygwinbuild/build/vm/*.dll cogwin - zip -vr cogwin.zip cogwin - EXES="$EXES cogwin/Croquet.exe" + zip -vr cogwin-$TAG.zip cogwin + EXES="$EXES cogwin/Squeak.exe" fi if [ -n "$CTW" ]; then test -d cogmtwin || mkdir cogmtwin - rm -rf cogmtwin/* cogmtwin.zip - ln cygwinbuild/buildmt/vm/{Croquet.exe,Croquet.ini,Croquet.map,Croquet.exe.manifest} cogmtwin - ln cygwinbuild/buildmt/vm/{CroquetConsole.exe,CroquetConsole.ini,CroquetConsole.map} cogmtwin + rm -rf cogmtwin/* cogmtwin-$TAG.zip + ln cygwinbuild/buildmt/vm/{Squeak.exe,Squeak.ini,Squeak.map,Squeak.exe.manifest} cogmtwin + ln cygwinbuild/buildmt/vm/{SqueakConsole.exe,SqueakConsole.ini,SqueakConsole.map} cogmtwin ln cygwinbuild/buildmt/vm/*.dll cogmtwin - zip -vr cogmtwin.zip cogmtwin - EXES="$EXES cogmtwin/Croquet.exe" + zip -vr cogmtwin-$TAG.zip cogmtwin + EXES="$EXES cogmtwin/Squeak.exe" fi if [ -n "$NL" ]; then - rm -rf nsvmlinux.tgz nsvmlinux-`date +%g.%U.$REV`.tgz - COPYFILE_DISABLE=1 tar czf nsvmlinux-`date +%g.%U.$REV`.tgz nsvmlinux + rm -rf nsvmlinux-$TAG.tgz nsvmlinux-$TAG.tgz + COPYFILE_DISABLE=1 tar czf nsvmlinux-$TAG.tgz nsvmlinux EXES="$EXES nsvmlinux/lib/nsvm/4.0-$REV/nsvm" fi if [ -n "$NM" ]; then test -d Newspeak\ Virtual\ Machine.app || mkdir Newspeak\ Virtual\ Machine.app - rm -rf Newspeak\ Virtual\ Machine.app/* Newspeak\ Virtual\ Machine.app.tgz + rm -rf Newspeak\ Virtual\ Machine.app/* Newspeak\ Virtual\ Machine.app-$TAG.tgz (cd $NSB/macbuild/Fast.app>/dev/null;tar cf - *)|(cd Newspeak\ Virtual\ Machine.app;tar xvf -) - tar czf Newspeak\ Virtual\ Machine.app.tgz Newspeak\ Virtual\ Machine.app + tar czf Newspeak\ Virtual\ Machine.app-$TAG.tgz Newspeak\ Virtual\ Machine.app EXES="$EXES Newspeak Virtual Machine.app/Contents/MacOS/Newspeak Virtual Machine" fi if [ -n "$NW" ]; then test -d nsvmwin || mkdir nsvmwin - rm -rf nsvmwin/* nsvmwin.zip + rm -rf nsvmwin/* nsvmwin-$TAG.zip ln $NSB/cygwinbuild/build/vm/{nsvm.exe,nsvm.map,nsvm.exe.manifest} nsvmwin ln $NSB/cygwinbuild/build/vm/*.dll nsvmwin - zip -vr nsvmwin.zip nsvmwin + zip -vr nsvmwin-$TAG.zip nsvmwin EXES="$EXES nsvmwin/nsvm.exe" fi for vm in $EXES diff --git a/scripts/uploadvms b/scripts/uploadvms index 197b297..6e4a7ae 100755 --- a/scripts/uploadvms +++ b/scripts/uploadvms @@ -1,6 +1,7 @@ #!/bin/sh IFS=" " +VERBOSE= REV="`svnversion | sed 's/^.*://'`" case $REV in *M) echo -n "source tree is modified, are you sure you want to continue? " @@ -18,8 +19,8 @@ fi TAG=`date +%g.%U.`$REV echo REV=$REV TAG=$TAG -CSARCS="Cog.app.tgz coglinux.tgz cogwin.zip" -CMARCS="cogmtlinux.tgz CogMT.app.tgz cogmtwin.zip" +CSARCS="Cog.app-$TAG.tgz coglinux-$TAG.tgz cogwin-$TAG.zip" +CMARCS="cogmtlinux-$TAG.tgz CogMT.app-$TAG.tgz cogmtwin-$TAG.zip" NSARCS="Newspeak Virtual Machine-$TAG.dmg nsvmlinux-$TAG.tgz nsvm-$TAG.msi" NMARCS="Newspeak Virtual MachineMT-$TAG.dmg nsvmmtlinux-$TAG.tgz nsvmmt-$TAG.msi" if [ $# = 0 ]; then @@ -34,22 +35,23 @@ else case $1 in -r) REV=$1;; -c) ARCHIVES="$ARCHIVES $CSARCS $CMARCS";; - -cl) ARCHIVES="$ARCHIVES coglinux.tgz";; - -cm) ARCHIVES="$ARCHIVES Cog.app.tgz";; - -cw) ARCHIVES="$ARCHIVES cogwin.zip";; - -ctl) ARCHIVES="$ARCHIVES cogmtlinux.tgz";; - -ctm) ARCHIVES="$ARCHIVES CogMT.app.tgz";; - -ctw) ARCHIVES="$ARCHIVES cogmtwin.zip";; + -cl) ARCHIVES="$ARCHIVES coglinux-$TAG.tgz";; + -cm) ARCHIVES="$ARCHIVES Cog.app-$TAG.tgz";; + -cw) ARCHIVES="$ARCHIVES cogwin-$TAG.zip";; + -ctl) ARCHIVES="$ARCHIVES cogmtlinux-$TAG.tgz";; + -ctm) ARCHIVES="$ARCHIVES CogMT.app-$TAG.tgz";; + -ctw) ARCHIVES="$ARCHIVES cogmtwin-$TAG.zip";; -nl) ARCHIVES="$ARCHIVES nsvmlinux-$TAG.tgz";; -nm) ARCHIVES="$ARCHIVES Newspeak Virtual Machine-$TAG.dmg" CheckDMG=1;; -nw) ARCHIVES="$ARCHIVES nsvm-$TAG.msi" CheckMSI=1;; -n) ARCHIVES="$ARCHIVES $NSARCS";; - -l) ARCHIVES="$ARCHIVES coglinux.tgz cogmtlinux.tgz nsvmlinux-$TAG.tgz";; - -m) ARCHIVES="$ARCHIVES Cog.app.tgz CogMT.app.tgz Newspeak Virtual Machine-$TAG.dmg" + -l) ARCHIVES="$ARCHIVES coglinux-$TAG.tgz cogmtlinux-$TAG.tgz nsvmlinux-$TAG.tgz";; + -m) ARCHIVES="$ARCHIVES Cog.app-$TAG.tgz CogMT.app-$TAG.tgz Newspeak Virtual Machine-$TAG.dmg" CheckDMG=1;; - -w) ARCHIVES="$ARCHIVES cogwin.tgz cogmtwin.zip nsvm-$TAG.msi" + -v) VERBOSE=1;; + -w) ARCHIVES="$ARCHIVES cogwin-$TAG.tgz cogmtwin-$TAG.zip nsvm-$TAG.msi" CheckMSI=1;; -?|-h) echo usage: $0 [-r REV -l -m -w -c -n -cl -cm -cw -ctl -ctm -ctw -nl -nm -nw]; exit 0;; *) break @@ -57,10 +59,15 @@ else shift done fi +if [ -n "$VERBOSE" ]; then + for a in $ARCHIVES; do + echo upload $a + done +fi if [ -n "$CheckDMG" -a ! -f "Newspeak Virtual Machine-$TAG.dmg" ]; then NMID=nscogbuild/macbuild/installer if [ -f "Newspeak Virtual Machine-$TAG.dmg" ]; then - echo -n + true elif [ -f "$NMID/Newspeak Virtual Machine-$TAG.dmg" ]; then ln "$NMID/Newspeak Virtual Machine-$TAG.dmg" . else @@ -71,7 +78,7 @@ fi if [ -n "$CheckMSI" -a ! -f nsvm-$TAG.msi ]; then NWID=nscogbuild/cygwinbuild/installer if [ -f nsvm-$TAG.msi ]; then - echo -n + true elif [ -f "$NWID/nsvm-$TAG.msi" ]; then ln "$NWID/nsvm-$TAG.msi" . else @@ -88,6 +95,7 @@ N.B. For Squeak/Pharo/Croquet please use the archives whose names begin with non-blocking FFI calls. END + echo getting svn log svn log platforms/Cross/vm/sqSCCSVersion.h >>README.$REV vi README.$REV fi @@ -110,5 +118,5 @@ done ssh -x eliotmiranda@bugsy.dreamhost.com mkdir mirandabanda.org/files/Cog/VM/VM.r$REV echo scp -p ChangeHistory README.$REV $ARCHIVES "$@" eliotmiranda@bugsy.dreamhost.com:mirandabanda.org/files/Cog/VM/VM.r$REV scp -p ChangeHistory README.$REV $ARCHIVES "$@" eliotmiranda@bugsy.dreamhost.com:mirandabanda.org/files/Cog/VM/VM.r$REV -echo ssh eliotmiranda@bugsy.dreamhost.com chmod a-w mirandabanda.org/files/Cog/VM/VM.r$REV mirandabanda.org/files/Cog/VM/VM.r$REV/* \\\; ls -al mirandabanda.org/files/Cog/VM/VM.r$REV -ssh eliotmiranda@bugsy.dreamhost.com chmod a-w mirandabanda.org/files/Cog/VM/VM.r$REV \"mirandabanda.org/files/Cog/VM/VM.r$REV/*\" \; ls -al mirandabanda.org/files/Cog/VM/VM.r$REV +echo ssh eliotmiranda@bugsy.dreamhost.com mirandabanda.org/files/Cog/VM/VM.r$REV/* \\\; ls -al mirandabanda.org/files/Cog/VM/VM.r$REV +ssh eliotmiranda@bugsy.dreamhost.com chmod a-w \"mirandabanda.org/files/Cog/VM/VM.r$REV/*\" \; ls -al mirandabanda.org/files/Cog/VM/VM.r$REV diff --git a/stackbuild/macbuild/CoreVM.plist b/stackbuild/macbuild/CoreVM.plist index 34f097f..79af3b1 100644 --- a/stackbuild/macbuild/CoreVM.plist +++ b/stackbuild/macbuild/CoreVM.plist @@ -14,9 +14,9 @@ image CFBundleTypeIconFile - Croquet.icns + SqueakImage.icns CFBundleTypeName - Croquet Image File + Squeak Image File CFBundleTypeOSTypes STim @@ -30,9 +30,9 @@ sources CFBundleTypeIconFile - Croquet.icns + SqueakSources.icns CFBundleTypeName - Croquet Sources File + Squeak Sources File CFBundleTypeOSTypes STso @@ -46,9 +46,9 @@ changes CFBundleTypeIconFile - Croquet.icns + SqueakChanges.icns CFBundleTypeName - Croquet Changes File + Squeak Changes File CFBundleTypeOSTypes STch @@ -366,21 +366,21 @@ CFBundleExecutable - Croquet + Squeak CFBundleGetInfoString - Croquet Cog 4.0.0 http://www.mirandabanda.org + Squeak Cog Stack 4.0.0 http://www.mirandabanda.org CFBundleShortVersionString - Croquet Cog 4.0.0 + Squeak Cog Stack 4.0.0 CFBundleVersion 4.0.0 CFBundleIconFile - Croquet.icns + GreenCogSqueak.icns CFBundleIdentifier com.squeak.Cog CFBundleInfoDictionaryVersion 6.0 CFBundleName - Croquet + Squeak CFBundlePackageType APPL CFBundleSignature @@ -484,7 +484,7 @@ SqueakUIFlushUseHighPercisionClock SqueakUnTrustedDirectory - ~/Library/Preferences/Croquet/Internet/Untrusted/ + ~/Library/Preferences/Squeak/Internet/Untrusted/ SqueakWindowAttribute ggAAHw== SqueakWindowHasTitle diff --git a/stackbuild/macbuild/CoreVM.xcodeproj/project.pbxproj b/stackbuild/macbuild/CoreVM.xcodeproj/project.pbxproj index 1c596e6..5fbf572 100755 --- a/stackbuild/macbuild/CoreVM.xcodeproj/project.pbxproj +++ b/stackbuild/macbuild/CoreVM.xcodeproj/project.pbxproj @@ -250,7 +250,7 @@ A2FB6B730CCD723F00A29088 /* LocalePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = A2FB6B720CCD723F00A29088 /* LocalePlugin.h */; }; DA6061C40AA515470009E25D /* sqMacMain.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AEF402EB4E0A0100013C /* sqMacMain.c */; }; DA6061CA0AA5155E0009E25D /* sqNamedPrims.c in Sources */ = {isa = PBXBuildFile; fileRef = F5F8AFDD02EB4E0A0100013C /* sqNamedPrims.c */; }; - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* Croquet.icns */; }; + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */ = {isa = PBXBuildFile; fileRef = DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -291,7 +291,7 @@ 94196AAE09974200005962BF /* sqMacUIEventsUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIEventsUniversal.c; sourceTree = ""; }; 94196AAF09974200005962BF /* sqMacUIMenuBarUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacUIMenuBarUniversal.c; sourceTree = ""; }; 94196AB009974200005962BF /* sqMacWindowUniversal.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacWindowUniversal.c; sourceTree = ""; }; - 941A3C0C09AA144000C9D25A /* Croquet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Croquet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 941A3C0C09AA144000C9D25A /* Squeak.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Squeak.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9426FF0F09F489D200ECEDDC /* chartables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = chartables.c; sourceTree = ""; }; 9426FF1009F489D200ECEDDC /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; 9426FF1109F489D200ECEDDC /* get.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = get.c; sourceTree = ""; }; @@ -386,7 +386,7 @@ A2FB6B580CCD71B000A29088 /* sqMacLocaleCarbon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMacLocaleCarbon.h; path = LocalePlugin/sqMacLocaleCarbon.h; sourceTree = ""; }; A2FB6B720CCD723F00A29088 /* LocalePlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LocalePlugin.h; path = LocalePlugin/LocalePlugin.h; sourceTree = ""; }; DAD40DAF0AA60CE90082521A /* CoreVM.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = CoreVM.plist; sourceTree = ""; }; - DAFA08930AA64625008DF459 /* Croquet.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Croquet.icns; path = resources/ProjectBuilder/Croquet.icns; sourceTree = ""; }; + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = GreenCogSqueak.icns; path = resources/ProjectBuilder/GreenCogSqueak.icns; sourceTree = ""; }; F5F8AE0F02EB4E090100013C /* sqMacOpenGL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sqMacOpenGL.h; sourceTree = ""; }; F5F8AE3D02EB4E090100013C /* sqMacInternetConfiguration.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacInternetConfiguration.c; sourceTree = ""; }; F5F8AE3F02EB4E090100013C /* sqMacJoystickAndTablet.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqMacJoystickAndTablet.c; sourceTree = ""; }; @@ -553,7 +553,7 @@ isa = PBXGroup; children = ( 664A73DB0300584000A80109 /* Squeak VM.r */, - DAFA08930AA64625008DF459 /* Croquet.icns */, + DAFA08930AA64625008DF459 /* GreenCogSqueak.icns */, 664A73DC0300584000A80109 /* Squeak.icns */, 664A73DD0300584000A80109 /* SqueakChanges.icns */, 664A73DE0300584000A80109 /* SqueakImage.icns */, @@ -569,7 +569,7 @@ 08773F3000C6A1C4C0A80109 /* Products */ = { isa = PBXGroup; children = ( - 941A3C0C09AA144000C9D25A /* Croquet.app */, + 941A3C0C09AA144000C9D25A /* Squeak.app */, ); name = Products; sourceTree = ""; @@ -1695,9 +1695,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 941A3B2B09AA144000C9D25A /* Croquet */ = { + 941A3B2B09AA144000C9D25A /* Squeak */ = { isa = PBXNativeTarget; - buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */; + buildConfigurationList = 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */; buildPhases = ( 941A3B2C09AA144000C9D25A /* Headers */, 941A3B7109AA144000C9D25A /* Resources */, @@ -1714,10 +1714,10 @@ "; dependencies = ( ); - name = Croquet; + name = Squeak; productInstallPath = "$(USER_APPS_DIR)"; productName = "Squeak VM OPT"; - productReference = 941A3C0C09AA144000C9D25A /* Croquet.app */; + productReference = 941A3C0C09AA144000C9D25A /* Squeak.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -1740,7 +1740,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 941A3B2B09AA144000C9D25A /* Croquet */, + 941A3B2B09AA144000C9D25A /* Squeak */, ); }; /* End PBXProject section */ @@ -1758,7 +1758,7 @@ 941A3B7709AA144000C9D25A /* SqueakGeneric.icns in Resources */, 941A3B7809AA144000C9D25A /* SqueakProject.icns in Resources */, 941A3B7909AA144000C9D25A /* SqueakSources.icns in Resources */, - DAFA08940AA64625008DF459 /* Croquet.icns in Resources */, + DAFA08940AA64625008DF459 /* GreenCogSqueak.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1981,7 +1981,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2057,7 +2057,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; ZERO_LINK = NO; @@ -2084,7 +2084,7 @@ HAVE_SYS_TIME_H, ); GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1)"; - GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS_QUOTED_FOR_TARGET_1 = "BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_UNROLL_LOOPS = YES; GCC_VERSION_i386 = 4.2; @@ -2095,7 +2095,7 @@ $SRCROOT, ); ICC_DATA_NO_ALIAS = NO; - ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Croquet Cog OS/X 4.0.0\\\"\""; + ICC_DEFINES = "ILP32=1 _NONSTD_SOURCE $(GCC_PREPROCESSOR_DEFINITIONS) BUILD_VERSION=\"\\\"Squeak Cog OS/X 4.0.0\\\"\""; ICC_FP_MODEL = src; ICC_LANG_ANSI_OPT = NO; ICC_OPTLEVEL = speedHLO; @@ -2109,7 +2109,7 @@ OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PER_ARCH_CFLAGS_i386 = "-O3 -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium-m -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS"; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ""; WRAPPER_EXTENSION = app; @@ -2152,7 +2152,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; - PRODUCT_NAME = Croquet; + PRODUCT_NAME = Squeak; SECTORDER_FLAGS = ""; UNSTRIPPED_PRODUCT = YES; WARNING_CFLAGS = ""; @@ -2234,7 +2234,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Croquet" */ = { + 941A3C0709AA144000C9D25A /* Build configuration list for PBXNativeTarget "Squeak" */ = { isa = XCConfigurationList; buildConfigurations = ( 941A3C0809AA144000C9D25A /* Development */, diff --git a/stackbuild/macbuild/makeclean b/stackbuild/macbuild/makeclean index 65b820e..caf0ad9 100644 --- a/stackbuild/macbuild/makeclean +++ b/stackbuild/macbuild/makeclean @@ -1,3 +1,3 @@ #!/bin/bash -rm -r ./build ./*/build ./plugin-projects/*/build ./Fast.app ./Debug.app ./Assert.app ./Croquet.app +rm -r ./build ./*/build ./plugin-projects/*/build ./Fast.app ./Debug.app ./Assert.app ./Croquet.app ./Squeak.app diff --git a/stackbuild/macbuild/makevm b/stackbuild/macbuild/makevm index 7e31715..fb53cdd 100755 --- a/stackbuild/macbuild/makevm +++ b/stackbuild/macbuild/makevm @@ -6,8 +6,9 @@ IFS=' BUILD_CONFIGURATION=Deployment NSD_BUILD_CONFIGURATION=Deployment XCD_BUILD_CONFIGURATION=Release +APP=Squeak.app VMAPP=".app" -DEST="Croquet" +DEST="Squeak" VMXCP=CoreVM SFP=SqueakFFIPrims KEEP= @@ -57,9 +58,9 @@ echo echo $VMXCP xcodebuild -project $VMXCP.xcodeproj -configuration $BUILD_CONFIGURATION xcodebuild -project $VMXCP.xcodeproj -configuration $BUILD_CONFIGURATION if [ -d "$DEST" ]; then - mv build/$BUILD_CONFIGURATION/Croquet.app/* "$DEST" + mv build/$BUILD_CONFIGURATION/$APP/* "$DEST" else - mv build/$BUILD_CONFIGURATION/Croquet.app "$DEST" + mv build/$BUILD_CONFIGURATION/$APP "$DEST" fi ../../scripts/versionInfoPlist ../../platforms CoreVM.plist "$DEST/Contents/Info.plist" diff --git a/stackbuild/macbuild/resources/ProjectBuilder/GreenCogSqueak.icns b/stackbuild/macbuild/resources/ProjectBuilder/GreenCogSqueak.icns new file mode 100644 index 0000000000000000000000000000000000000000..acdd741875ad7015e42d218026643153078bdde3 GIT binary patch literal 135400 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ͫvuB$#g!5zfyCF|GT=5}AWub?165jCd7gIt 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