[Vm-dev] VM Maker: CMakeVMMakerSqueak-tty.99.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Dec 7 17:06:21 UTC 2014
Timothy M uploaded a new version of CMakeVMMakerSqueak to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMakerSqueak-tty.99.mcz
==================== Summary ====================
Name: CMakeVMMakerSqueak-tty.99
Author: tty
Time: 7 December 2014, 12:06:45.248 pm
UUID: 54f0685d-07a7-4701-b0f1-6f0539702cac
Ancestors: CMakeVMMakerSqueak-tty.98
Plugins can now render their CMake files using the CMakeTemplate wrappers .
Linux64x86w32BitSqueakCogV3Config builds and runs for the #build buildType.
Flagged a potential issue in Templates that stream a collection asString. bears keeping an eye on.
Tests pass.
Next up:
port the Windows stack to templates.
remove the 'generate' methods in favor of 'generateByTemplate' methods.
=============== Diff against CMakeVMMakerSqueak-tty.98 ===============
Item was changed:
----- Method: CMakeAddCompileOptions>>options (in category 'accessing') -----
options
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | options asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeAddCustomCommandOutput>>commandsandargs (in category 'accessing') -----
commandsandargs
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | commandsandargs asStringOn: stream delimiter: ' ' ]!
Item was changed:
----- Method: CMakeAddDefinitions>>definitions (in category 'accessing') -----
definitions
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | definitions asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeAddExecutableNameOptionSource>>sources (in category 'accessing') -----
sources
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | sources asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeAddLibrary>>sources (in category 'accessing') -----
sources
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | sources asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeIncludeDirectories>>dirs (in category 'accessing') -----
dirs
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | dirs asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeListAppend>>elements (in category 'accessing') -----
elements
+ | e |
+ self flag:'tty'. "see Note 1 below"
+ e := elements inject: '' into: [:res :each | res , ' "' , each, '"' ]. "quote each element"
+ ^ e
+
+
+ "
+ This breaks my convention in other Templates of using
+
+ ^ String streamContents: [:stream | dirs asStringOn: stream delimiter: ' ' ].
+
+ This bears watching.
+
+
+
+ "!
- ^ String streamContents: [:stream | elements asStringOn: stream delimiter: ' ' ]
- !
Item was changed:
----- Method: CMakeListAppend>>list:elements: (in category 'accessing') -----
list: aString elements: anObject
list:=aString.
elements := anObject.
+ self content:' list( APPEND ', list, ' ' , self elements, ')'
- self content:' list( APPEND ', list, ' "' , self elements, '")'
!
Item was changed:
----- Method: CMakeSetProperty>>values (in category 'accessing') -----
values
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | values asStringOn: stream delimiter: ' ' ]!
Item was changed:
----- Method: CMakeSetSourceFilesProperties>>files (in category 'accessing') -----
files
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | files asStringOn: stream delimiter: ' ' ]
!
Item was changed:
----- Method: CMakeSetTargetProperties>>propertiesandvalues (in category 'accessing') -----
propertiesandvalues
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
^ String streamContents: [:stream | propertiesandvalues asStringOn: stream delimiter: ' ' ]!
Item was changed:
----- Method: CMakeTargetLinkLibraries>>items (in category 'accessing') -----
items
+ self flag:'tty'. "see CMakeListAppend>>elements for inject method to use If I have doublequotes are needed. "
+ ^ String streamContents: [:stream | items asStringOn: stream delimiter: ' ' ]
+
+ !
- ^ String streamContents: [:stream | items asStringOn: stream delimiter: ' ' ]!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateBitBltSimulation: (in category 'plugin extra rules') -----
configureByTemplateBitBltSimulation: aMaker
aMaker templates
addLast: ((CMakeIncludeDirectories new) dirs: (OrderedCollection with: '${pluginCross}'));
+ addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '${pluginCross}/BitBltGeneric.c'));
+ addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '${pluginCross}/BitBltDispatch.c'))
- addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '$(pluginCross)/BitBltGeneric.c'));
- addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '$(pluginCross)/BitBltDispatch.c'))
!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateCroquetPlugin: (in category 'plugin extra rules') -----
configureByTemplateCroquetPlugin: aMaker
aMaker templates
+ addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '${pluginCross}/TriBoxStub.c'))
- addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '$(pluginCross)/TriBoxStub.c'))
!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateFilePlugin: (in category 'plugin extra rules') -----
configureByTemplateFilePlugin: aMaker
aMaker templates
+ addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '${pluginCross}/sqFilePluginBasicPrims.c'))
- addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '$(pluginCross)/sqFilePluginBasicPrims.c'))
!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateFloatMathPlugin: (in category 'plugin extra rules') -----
configureByTemplateFloatMathPlugin: aMaker
|cfiles pfiles|
cfiles:= #(
'acos.c' 'acosh.c' 'asin.c' 'asinh.c' 'atan.c' 'atan2.c' 'atanh.c'
'copysign.c' 'cos.c' 'cosh.c' 'exp.c' 'expm1.c' 'finite.c' 'fmod.c'
'hypot.c' 'isnan.c' 'k_cos.c' 'k_rem_pio2.c' 'k_sin.c' 'k_tan.c' 'ldexp.c'
'log.c' 'log10.c' 'log1p.c' 'modf.c' 'pow.c' 'rem_pio2.c' 'rint.c'
'scalb.c' 'scalbn.c' 'sin.c' 'sinh.c' 'sqrt.c' 'tan.c' 'tanh.c' ).
pfiles:=OrderedCollection new. "Anybody who knows how to do this elegantly, please change this"
+ cfiles do:[:each | pfiles addLast:('${pluginCross}/', each)].
- cfiles do:[:each | pfiles addLast:('$(pluginCross)/', each)].
aMaker templates
addLast:((CMakeListAppend new) list:'sources' elements: pfiles);
addLast:((CMakeAddDefinitions new) definitions: (OrderedCollection with: '-O0')). "See Note 1."
self isLittleEndian
ifTrue: [
aMaker templates
addLast:((CMakeAddDefinitions new) definitions: (OrderedCollection with:'-D__LITTLE_ENDIAN=1' ))]. "See Note 2."
aMaker templates "See Note 3."
addLast:((CMakeIfAddDefinitionsElseAddDefinitions new)
condition:'${WIN32}'
ifdefinitions:'-Werror-implicit-function-declaration'
elsedefinitions:'-DNO_ISNAN')
"
Note 1. according to http://www.netlib.org/fdlibm/readme it should be compiled with no optimizations
Note 2. compile with -D__LITTLE_ENDIAN This macro is set automatically in fdlibm.h when compiled ith -m32 but
not when compiled with -m64 (Nicolas Cellier)
Note 3. It may be better to push these down to SqueakMacintoshConfig, SqueakUnixConfig, SqueakWindowsConfig.
I think it is clearer here.
In the mean time this template outputs the following:
if (${WIN32})
add_definitions(-Werror-implicit-function-declaration) <---push down to SqueakWindowsConfig
else(${WIN32})
add_definitions(-DNO_ISNAN) <---push down to SqueakUnix/MacConfigs
endif (${WIN32})'.
"!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateMpeg3Plugin: (in category 'plugin extra rules') -----
configureByTemplateMpeg3Plugin: aMaker
|cfiles pfiles|
cfiles:=#( 'libmpeg/bitstream.c' 'libmpeg/changesForSqueak.c' 'libmpeg/audio/dct.c'
'libmpeg/video/getpicture.c' 'libmpeg/audio/header.c' 'libmpeg/video/headers.c'
'libmpeg/video/idct.c' 'libmpeg/audio/layer1.c' 'libmpeg/audio/layer2.c'
'libmpeg/audio/layer3.c' 'libmpeg/libmpeg3.c' 'libmpeg/video/macroblocks.c'
'libmpeg/video/mmxtest.c' 'libmpeg/video/motion.c' 'libmpeg/mpeg3atrack.c'
'libmpeg/audio/mpeg3audio.c' 'libmpeg/mpeg3demux.c' 'libmpeg/mpeg3io.c'
'libmpeg/mpeg3title.c' 'libmpeg/video/mpeg3video.c' 'libmpeg/mpeg3vtrack.c'
'libmpeg/video/output.c' 'libmpeg/audio/pcm.c' 'libmpeg/video/reconstruct.c'
'libmpeg/video/seek.c' 'libmpeg/video/slice.c' 'libmpeg/audio/synthesizers.c'
'libmpeg/audio/tables.c' 'libmpeg/video/vlc.c' ).
pfiles:=OrderedCollection new. "Anybody who knows how to do this elegantly, please change this"
+ cfiles do:[:each | pfiles addLast:('${pluginCross}/', each)].
- cfiles do:[:each | pfiles addLast:('$(pluginCross)/', each)].
aMaker templates
addLast: ((CMakeIncludeDirectories new) dirs: (OrderedCollection with: '${pluginCross}/libmpeg ${pluginCross}/libmpeg/audio ${pluginCross}/libmpeg/video'));
addLast:((CMakeListAppend new) list:'sources' elements: pfiles).
!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateSoundCodecPlugin: (in category 'plugin extra rules') -----
configureByTemplateSoundCodecPlugin: aMaker
aMaker templates
addLast:((CMakeListAppend new)
list:'sources'
+ elements: (OrderedCollection with: '${pluginCross}/sqSoundCodecPluginBasicPrims.c')).
- elements: (OrderedCollection with: '$(pluginCross)/sqSoundCodecPluginBasicPrims.c')).
!
Item was changed:
----- Method: CPlatformConfigForSqueak>>configureByTemplateSurfacePlugin: (in category 'plugin extra rules') -----
configureByTemplateSurfacePlugin: aMaker
aMaker templates
addLast:((CMakeSet new) variable: #sources value: '');"remove default source file"
+ addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '${pluginCross}/SurfacePlugin.c')).
- addLast:((CMakeListAppend new) list:'sources' elements: (OrderedCollection with: '$(pluginCross)/SurfacePlugin.c')).
!
More information about the Vm-dev
mailing list