[Vm-dev] VM Maker: CMakeVMMakerSqueak-tty.43.mcz
Eliot Miranda
eliot.miranda at gmail.com
Tue Jun 10 23:55:56 UTC 2014
Hi All,
in the below, everything looks sane except configH. This looks like an
awful mistake. It appears to be capturing the output of an autoconf or
CMake run, determining things like USE_X11 USE_X11_GLX USE_QUARTZ
USE_QUARTZ_CGL USE_RFB HAVE_LIBX11 HAVE_LIBXEXT HAVE_LIBDL HAVE_DYLD
HAVE_LIBFFI etc that should be determined at VM configure time, on the host
system, immediately before compile, /not/ at source generation time.
What's going on here?
On Tue, Jun 10, 2014 at 3:15 PM, <commits at source.squeak.org> wrote:
>
> Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
> http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.43.mcz
>
> ==================== Summary ====================
>
> Name: CMakeVMMakerSqueak-tty.43
> Author: tty
> Time: 10 June 2014, 6:15:54.458 pm
> UUID: af66e1e9-4379-4938-98bd-0d4b36fcda1c
> Ancestors: CMakeVMMakerSqueak-tty.42
>
> Added SqueakCMakeVMMakerAbstractBuilder query for available build types.
>
> Started (finally!) the actual build configuration construction.
>
> This auto-generated image is missing B2DPlugin, so I will investigate that
> and return to the builds
>
> =============== Diff against CMakeVMMakerSqueak-tty.42 ===============
>
> Item was added:
> + ----- Method: Linux32x86Config>>configH (in category 'squeak
> compatibility') -----
> + configH
> + " right now its like that "
> + ^ '
> + #ifndef __sq_config_h
> + #define __sq_config_h
> +
> + /* explicit image width */
> +
> + #define HAVE_INTERP_H 1
> +
> + /* package options */
> +
> + #define USE_X11 1
> + #define USE_X11_GLX 1
> + /* #undef USE_QUARTZ */
> + /* #undef USE_QUARTZ_CGL */
> + /* #undef USE_RFB */
> +
> + /* libraries */
> +
> + /* #undef HAVE_LIBX11 */
> + #define HAVE_LIBXEXT 1
> + #define HAVE_LIBDL 1
> + /* #undef HAVE_DYLD */
> + /* #undef HAVE_LIBFFI */
> + /* #undef HAVE_ICONV */
> +
> + /* #undef USE_AUDIO_NONE */
> + /* #undef USE_AUDIO_SUN */
> + /* #undef USE_AUDIO_NAS */
> + /* #undef USE_AUDIO_OSS */
> + /* #undef USE_AUDIO_MACOSX */
> + /* #undef OSS_DEVICE */
> +
> + /* header files */
> +
> + #define HAVE_UNISTD_H 1
> + /* #undef NEED_GETHOSTNAME_P */
> +
> + #define HAVE_DIRENT_H 1
> + /* #undef HAVE_SYS_NDIR_H */
> + /* #undef HAVE_SYS_DIR_H */
> + /* #undef HAVE_NDIR_H */
> + #define HAVE_DLFCN_H 1
> + /* #undef HAVE_ICONV_H */
> +
> + #define HAVE_SYS_TIME_H 1
> + #define TIME_WITH_SYS_TIME 1
> +
> + #define HAVE_SYS_FILIO_H 1
> +
> + /* #undef HAVE_SYS_AUDIOIO_H */
> + /* #undef HAVE_SUN_AUDIOIO_H */
> +
> + /* #undef HAVE_PTY_H */
> + /* #undef HAVE_UTIL_H */
> + #define HAVE_LIBUTIL_H 1
> + /* #undef HAVE_STROPTS_H */
> +
> + #define HAVE_GL_GL_H 1
> + /* #undef HAVE_OPENGL_GL_H */
> +
> + /* #undef NEED_SUNOS_H */
> +
> +
> + #define HAVE_UUID_H
> + /* system calls/library functions */
> +
> + #define AT_EXIT atexit
> +
> + #define HAVE_TZSET 1
> +
> + #define HAVE_OPENPTY 1
> + /* #undef HAVE_UNIX98_PTYS */
> +
> + #define HAVE_SNPRINTF 1
> + /* #undef HAVE___SNPRINTF */
> +
> + #define HAVE_MMAP 1
> +
> + /* #undef HAVE_DYLD */
> +
> + #define HAVE_LANGINFO_CODESET 1
> +
> + #define HAVE_ALLOCA 1
> + /* #undef HAVE_ALLOCA_H */
> +
> + #define HAVE_UNSETENV 1
> +
> + #define HAVE_NANOSLEEP 1
> +
> + /* widths of primitive types */
> +
> + #define SIZEOF_INT 4
> + #define SIZEOF_LONG 4
> + #define SIZEOF_LONG_LONG 8
> + #define SIZEOF_VOID_P 4
> +
> + /* structures */
> +
> + #define HAVE_TM_GMTOFF 1
> + #define HAVE_TIMEZONE 1
> +
> + /* typedefs */
> +
> + /* #undef size_t */
> + /* #undef socklen_t */
> +
> + #define squeakInt64 long long
> +
> + /* architecture */
> +
> + #define OS_TYPE "unix"
> +
> + #define VM_HOST "i386-freebsd8.2"
> + #define VM_HOST_CPU "i386"
> + /* #undef VM_HOST_VENDOR */
> + #define VM_HOST_OS "freebsd8.2"
> + #define VM_BUILD_STRING "Unix built on "__DATE__ " "__TIME__" Compiler:
> "__VERSION__
> +
> + /* #undef WORDS_BIGENDIAN */
> + /* #undef DOUBLE_WORD_ALIGNMENT */
> +
> + /* damage containment */
> +
> + /* #undef DARWIN */
> +
> + #ifdef NEED_SUNOS_H
> + # include "sunos.h"
> + #endif
> +
> + /* other configured variables */
> +
> + #define SQ_VERSION "3.9a-7024"
> + #define VM_VERSION "3.9-7"
> + #define VM_MODULE_PREFIX ""
> + /* #undef VM_DLSYM_PREFIX */
> + #define VM_X11DIR "/usr/X11R6/lib"
> +
> + /* avoid dependencies on glibc2.3 */
> +
> + /* #undef HAVE_FEATURES_H */
> +
> + #if defined(HAVE_FEATURES_H)
> + # include "glibc.h"
> + #endif
> +
> + #endif /* __sq_config_h */
> +
> +
>
>
>
>
>
>
> '!
>
> Item was changed:
> ----- Method: Linux32x86Config>>defaultExternalPlugins (in category
> 'plugins') -----
> defaultExternalPlugins
> + " tty 2014.06.10 cut-n-paste from
> Cog/build.linux32x86/newspeak.cog.spur/build/plugins.ext"
> + ^ #(B3DAcceleratorPlugin
> + BochsIA32Plugin
> + SqueakFFIPrims
> + SqueakSSL
> + LocalePlugin
> + UnixOSProcessPlugin
> + UUIDPlugin)!
> - ^ #(SqueakSSL )!
>
> Item was changed:
> ----- Method: Linux32x86Config>>defaultInternalPlugins (in category
> 'plugins') -----
> defaultInternalPlugins
> + " tty 2014.06.10 cut-n-paste from
> Cog/build.linux32x86/newspeak.cog.spur/build/plugins.int"
> - " cut-n-paste from Cog/build.linux32x86/newspeak.cog.v3/build"
> ^ #(
> AsynchFilePlugin
> BMPReadWriterPlugin
> B2DPlugin
> BitBltPlugin
> DSAPrims
> DropPlugin
> FileCopyPlugin
> FilePlugin
> FloatArrayPlugin
> FloatMathPlugin
> ZipPlugin
> JPEGReadWriter2Plugin
> JPEGReaderPlugin
> LargeIntegers
> Matrix2x3Plugin
> MiscPrimitivePlugin
> IA32ABI
> RePlugin
> SecurityPlugin
> SocketPlugin
> SurfacePlugin
> UUIDPlugin
> UnixOSProcessPlugin
> VMProfileLinuxSupportPlugin)!
>
> Item was added:
> + ----- Method: Linux32x86Config>>extraVMSettings: (in category 'squeak
> compatibility') -----
> + extraVMSettings: maker
> + self generateConfigH.
> +
> +
> + "output a fake version.c file"
> +
> + self write:
> + 'int vm_serial= 1;
> + char *vm_date= "<HERE IS SUPPOSED TO BE THE DATE>";
> + char *cc_version= "<HERE IS SUPPOSED TO BE gcc VERSION>";
> + char *ux_version= "<FAKE FROZEN VERSION FOR DEBUGGING PURPOSES>";
> + '
> + toFile: 'version.c'.
> + !
>
> Item was added:
> + ----- Method: Linux32x86Config>>generate (in category 'squeak
> compatibility') -----
> + generate
> + ^ CMakeVMGeneratorForSqueak generate: self !
>
> Item was added:
> + ----- Method: Linux32x86Config>>generateConfigH (in category 'squeak
> compatibility') -----
> + generateConfigH
> + "will fix that later"
> + self write: self configH toFile: 'config.h'!
>
> Item was changed:
> ----- Method: Linux32x86NewspeakSistaSpurConfig>>excludeFromBuild (in
> category 'cmake') -----
> excludeFromBuild
> "over-ride to exclude yourself from a build"
> + ^true "tty 2014.06.10 not implemented on gnu side"!
> - ^false!
>
> Item was changed:
> ----- Method: Linux32x86NewspeakSistaV3Config>>excludeFromBuild (in
> category 'cmake') -----
> excludeFromBuild
> "over-ride to exclude yourself from a build"
> + ^true "tty 2014.06.10 not implemented on gnu side"!
> - ^false!
>
> Item was changed:
> Object subclass: #SqueakCMakeVMMakerAbstractBuilder
> + instanceVariableNames: 'buildTypeAndDirectoryInfo config'
> - instanceVariableNames: 'buildTypeAndDirectoryInfo'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'CMakeVMMakerSqueak-Builder'!
> SqueakCMakeVMMakerAbstractBuilder class
> instanceVariableNames: 'default'!
>
> + !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 6/10/2014 12:46'
> prior: 0!
> - !SqueakCMakeVMMakerAbstractBuilder commentStamp: 'tty 6/8/2014 17:21'
> prior: 0!
> I am an abstract base class for various CMakeVMMakerSqueak builders.
>
> I am a singleton.
> + I am a facade to the various
> Squeak[Platform][WordSize][VM][MemoryManager]Config classes
> + I provide facilities to query my configurations.
> + I use the Visitor pattern in collecting information about my
> configurations.
> - I am a facade to the various
> Squeak[Platform][WordSize][VM][MemoryManager]Config classes that provide
> all the functionality.
> - I also act as a repository of common information for the various
> configurations.
> - Think of me as lipstick on a pig.
>
> + Usage:
> + -------------------------Using
> CMakeVMMakerSqueak-------------------------
> + The easiest way to use this is to utilize one of the concrete Builders
> in category CMakeVMMakerSqueak-Builder.
>
> + With a builder, you can query it for information and then invoke it to
> generate configurations and or source.
> - Each one of my subclasses manages the CMakeVMMakerSqueak configurations
> -------->in a specific category<-----.
> - Win32Builder handles the Win32 Smalltalk Category, IOSBuilder handles
> the Smalltalk IOS category.
> - Yes, its a limitation of the design, but so it goes.
>
> + Printing or inspecting the following lines will give you a flavor of a
> typical work-flow.
>
> + -------------Buildable/non-buildable configurations---------
>
> + SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:false
> "buildable configurations"
> + SqueakCMakeVMMakerAbstractBuilder showExcludeFromBuild:true. "edit
> that configs 'excludeFromBuild' method to change"
> + SqueakCMakeVMMakerAbstractBuilder availableBuildTypes
>
> + -------------------------Querying Builders and CMake
> Configurations---------------
>
> + SqueakLinux32X86Builder configurationsCategory
> + SqueakLinux32X86Builder buildDirectory
> + SqueakLinux32X86Builder availableBuilds
> + SqueakLinux32X86Builder availableBuildTypesFor:(SqueakLinux32X86Builder
> availableBuilds at:1)
> + SqueakLinux32X86Builder availableBuildTypesFor:
> #Linux32x86SqueakStackSpurConfig
> + SqueakLinux32X86Builder availableBuildTypesFor:
> #Linux32x86SqueakStackV3Config
> + SqueakLinux32X86Builder sourceDirectoryFor:(SqueakLinux32X86Builder
> availableBuilds at:1)
>
> + -------------------------Generating CMake files and/or Source
> code-------------------------
>
> + SqueakLinux32X86Builder
> + configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType:
> #debug
> + generate "generate only CMake config files"
>
> + SqueakLinux32X86Builder
> + configureABuildFor: #Linux32x86SqueakCogV3Config withBuildType:
> #debug
> + generateWithSources "generate configurations and invoke VMMaker
> to generate source code"
>
> + -------------------------Compiling Instructions-------------------------
> + open a terminal and go to the configurations build directory for that
> configuration. (SqueakLinux32X86Builder buildDirectory)
> + change into the build type subdirectory (build, build.assert,
> build.debug...etc)
> + source build.sh will run the build process
> + executable is placed in /products folder. (SqueakLinux32X86Builder
> ouputDirectory)
>
> !
> SqueakCMakeVMMakerAbstractBuilder class
> instanceVariableNames: 'default'!
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder
> class>>availableBuildTypes (in category 'queries') -----
> + availableBuildTypes
> + default ifNil:[default:= self new].
> + ^default availableBuildTypes.!
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder class>>generate (in
> category 'building') -----
> + generate
> + default ifNil:[default:= self new].
> + ^default generate!
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder
> class>>generateWithSource (in category 'building') -----
> + generateWithSource
> + default ifNil:[default:= self new].
> + ^default generateWithSource!
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder>>availableBuildTypes (in
> category 'queries') -----
> + availableBuildTypes
> + ^self buildTypeAndDirectoryInfo keys asSortedCollection
> + !
>
> Item was changed:
> ----- Method:
> SqueakCMakeVMMakerAbstractBuilder>>configureABuildFor:withBuildType: (in
> category 'building') -----
> configureABuildFor: configSymbol withBuildType: typeSymbol
> + | i |
> - |config i |
> "Do some sanity checks, then set the internal state of a
> Configuration for a particular build type. "
> [
> ((Smalltalk at: configSymbol) category) = (self
> configurationsCategory) "verify the class is handled by this concrete
> builder"
> ifTrue:[
> config := (Smalltalk at: configSymbol)
> new. "verify this config can handle this build
> type."
> config excludeFromBuild
> "has a developer excluded this build
> manually?"
> ifTrue:[^self
> userErrorConfigMarkedAsExcludeFromBuild: configSymbol].
> i:=config availableBuilds
> indexOf:typeSymbol
> ifAbsent:[^self
> userErrorInvalidBuildType: typeSymbol "this config does not support this
> build type"
>
> forConfiguration: configSymbol
>
> hasTypes: config availableBuilds].
> config configureForBuildType: typeSymbol.
> "config configure yourself"
> + ^self]
> - ^config]
> ifFalse:[^self userErrorInvalidTarget: configSymbol]
> ] ifError:[^'error configureABuildFor: ''', configSymbol].
>
> ^nil.
>
>
> !
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder>>generate (in category
> 'building') -----
> + generate
> + (config isKindOf: CPlatformConfig)
> + ifTrue:[config generate]
> + !
>
> Item was added:
> + ----- Method: SqueakCMakeVMMakerAbstractBuilder>>generateWithSource (in
> category 'building') -----
> + generateWithSource
> + (config isKindOf: CPlatformConfig)
> + ifTrue:[config generateWithSource]
> + !
>
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140610/3a774d83/attachment-0001.htm
More information about the Vm-dev
mailing list