[Vm-dev] VM Maker: CMakeVMMaker-EstebanLorenzano.173.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Aug 1 09:46:18 UTC 2012
Esteban Lorenzano uploaded a new version of CMakeVMMaker to project VM Maker:
http://source.squeak.org/VMMaker/CMakeVMMaker-EstebanLorenzano.173.mcz
==================== Summary ====================
Name: CMakeVMMaker-EstebanLorenzano.173
Author: EstebanLorenzano
Time: 1 August 2012, 11:46:02.715 am
UUID: f53e0e46-a3e3-4f7e-8dea-00f099de9a0a
Ancestors: CMakeVMMaker-IgorStasenko.172
fixes for compiling freetype on iOS
=============== Diff against CMakeVMMaker-IgorStasenko.172 ===============
Item was changed:
----- Method: CMFreetype2>>build (in category 'generating actions') -----
build
+
gen
puts:
'
add_custom_command(OUTPUT "${ft2config}"
+ COMMAND ./configure --prefix=''${installPrefix}'' ', self configurationFlags, '
- COMMAND ./configure --prefix=''${installPrefix}'' CFLAGS=''-arch i386'' LDFLAGS=''-arch i386''
WORKING_DIRECTORY "${libSourcesDir}"
DEPENDS "${unpackTarget}"
)
add_custom_command(OUTPUT "${ft2libInstalled}"
COMMAND make
COMMAND make install
WORKING_DIRECTORY "${libSourcesDir}"
DEPENDS "${ft2config}"
COMMENT "Building ${libName}"
)
'
!
Item was changed:
+ ----- Method: CMFreetype2>>includeDir (in category 'accessing') -----
- ----- Method: CMFreetype2>>includeDir (in category 'as yet unclassified') -----
includeDir
"see setVariables"
" `<prefix>/include/freetype2' must be in your current inclusion path "
^ '"${thirdpartyDir}/out/include" "${thirdpartyDir}/out/include/freetype2"'!
Item was changed:
Object subclass: #CMThirdpartyLibrary
+ instanceVariableNames: 'gen vmGen configurationFlags'
- instanceVariableNames: 'gen vmGen'
classVariableNames: ''
poolDictionaries: ''
category: 'CMakeVMMaker-Libs'!
!CMThirdpartyLibrary commentStamp: 'IgorStasenko 6/7/2012 04:53' prior: 0!
My subclasses describing a configuration/settings necessary to build some third-party library used by VM
or by one of it's plugins.
We cannot use cmake configuration for those libraries, since most of them having own
configuration/make scripts which build that library.
I serve as a convenience layer for building those libraries and connecting them with cmake configuration,
as well as provide necessary information, what output file(s) should be bundled with virtual machine.
!
Item was added:
+ ----- Method: CMThirdpartyLibrary>>configurationFlags (in category 'settings') -----
+ configurationFlags
+ ^(configurationFlags
+ ifNil: [ self defaultConfigurationFlags ])
+ reduce: [ :a :b | a, ' ', b]!
Item was added:
+ ----- Method: CMThirdpartyLibrary>>configurationFlags: (in category 'settings') -----
+ configurationFlags: aCollection
+ configurationFlags := aCollection
+ !
Item was added:
+ ----- Method: CMThirdpartyLibrary>>defaultConfigurationFlags (in category 'settings') -----
+ defaultConfigurationFlags
+ ^#(
+ 'CFLAGS=''-arch i386'''
+ 'LDFLAGS=''-arch i386''')!
Item was changed:
----- Method: CogFamilyCocoaIOSConfig>>setGlobalOptions: (in category 'settings') -----
setGlobalOptions: maker
"set any CMake global options, before declaring a project in cmake file"
+ maker set: 'CMAKE_C_COMPILER' to: '/usr/bin/gcc'.
+ maker set: 'CMAKE_CXX_COMPILER' to: '/usr/bin/g++'.
- maker set: 'CMAKE_C_COMPILER' to: '/usr/bin/gcc-4.2'.
- maker set: 'CMAKE_CXX_COMPILER' to: '/usr/bin/g++-4.2'.
maker set: 'CMAKE_OSX_ARCHITECTURES' to: 'i386'.
maker set: 'CMAKE_OSX_SYSROOT' to: '/'.
" maker set: 'CMAKE_OSX_SYSROOT' to: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk'"!
Item was changed:
----- Method: StackIPhoneConfig>>commonCompilerFlags (in category 'settings') -----
commonCompilerFlags
"Common compiler flags"
^{
"'-miphoneos-version-min=4.3'. "
'-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS', self sdkVersion, '.sdk'.
'-x objective-c'.
'-std=gnu99'.
'-falign-functions=16'.
'-fno-gcse'.
'-fno-cse-follow-jumps'.
'-fvisibility=hidden'.
'-funroll-loops'.
'-finline-functions'.
'-mno-thumb'.
'-fwrapv'.
'-DSTACKVM=1'.
'-DCOGMTVM=0'.
'-DUSE_GLOBAL_STRUCT=0'.
'-DBASE_HEADER_SIZE=4'.
'-DTARGET_OS_IS_IPHONE'.
'-DHAVE_UUID_GENERATE'.
"'-DUSE_INLINE_MEMORY_ACCESSORS'. "
'-DHAVE_SYS_TIME_H'.
'-DLSB_FIRST'.
'-DHAVE_NANOSLEEP'.
'-DISQUEAK_IMAGE=', self imageName.
'-DISQUEAK_SOURCES=PharoV10'}!
Item was added:
+ ----- Method: StackIPhoneConfig>>configureFT2Plugin: (in category 'plugin extra rules') -----
+ configureFT2Plugin: maker
+ "extra rules for Freetype plugin.
+ a custom rule to build freetype library"
+ | lib devRoot sdkRoot |
+
+ maker isExternal
+ ifFalse: [ self error: 'building internal FT2Plugin is not supported yet' ].
+
+ devRoot := '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer'.
+ sdkRoot := '{devRoot}/SDKs/iPhoneOS{sdkVersion}.sdk'
+ nameFormat: {'devRoot'->devRoot. 'sdkVersion'->self sdkVersion} asDictionary.
+
+ "add freetype library into loop"
+ lib := self addThirdpartyLibrary: 'freetype2'.
+ lib configurationFlags: ({
+ '--host=arm-apple-darwin'.
+ '--enable-static=yes'.
+ '--enable-shared=yes'.
+ 'CC={devRoot}/usr/bin/gcc'.
+ 'CXX={devRoot}/usr/bin/g++'.
+ "'AR={devRoot}/usr/bin/ld'."
+ 'CFLAGS=\\"-arch armv6 -std=c99 -Wno-trigraphs -O2 -fwrapv -Wreturn-type -Wunused-variable -fmessage-length=0 -miphoneos-version-min=4.0 -I{sdkRoot}/usr/include/libxml2 -isysroot {sdkRoot}\\"'.
+ 'LDFLAGS=\\"-arch armv6 -isysroot {sdkRoot}\\"'}
+ collect: [ :each | each nameFormat: {'sdkRoot'->sdkRoot. 'devRoot'->devRoot} asDictionary ]).
+
+ "maker set: 'XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR' toString: ''."
+
+ "link plugin with freetype lib"
+ maker addExternalLibrary: lib targetForLinking.
+ maker includeDirectories: lib includeDir.
+ !
Item was changed:
----- Method: StackIPhoneConfig>>platformSources (in category 'source files') -----
platformSources
"files added from platform/iOS/vm dir "
^ #(
'Common/main.m'
'Common/Classes/Queue.m'
'Common/Classes/sqMacV2Time.c'
'Common/Classes/sqSqueakAppDelegate.m'
'Common/Classes/sqSqueakFileDirectoryAPI.m'
'Common/Classes/sqSqueakFileDirectoryInterface.m'
'Common/Classes/sqSqueakInfoPlistInterface.m'
'Common/Classes/sqSqueakMainApplication.m'
'Common/Classes/sqSqueakMainApplication+attributes.m'
'Common/Classes/sqSqueakMainApplication+events.m'
'Common/Classes/sqSqueakMainApplication+imageReadWrite.m'
'Common/Classes/sqSqueakMainApplication+sound.m'
'Common/Classes/sqSqueakMainApplication+vmAndImagePath.m'
'Common/Classes/sqSqueakMainApplication+screen.m'
'Common/Classes/sqSqueakMainApplication+cursor.m'
"'Common/Classes/sqSqueakCursorAPI.m'"
'Common/Classes/sqSqueakAttributesAPI.m'
'Common/Classes/sqSqueakSoundAPI.m'
'Common/Classes/sqSqueakVmAndImagePathAPI.m'
'Common/Classes/sqSqueakMainApp.m'
'Common/Classes/sqSqueakEventsAPI.m'
'Common/Classes/sqSqueakScreenAPI.m'
'Common/Classes/sqSqueakScreenAndWindow.m'
'iPhone/Classes/SqueakNoOGLIPhoneAppDelegate.m'
'iPhone/Classes/sqSqueakIPhoneApplication.m'
'iPhone/Classes/sqSqueakIPhoneApplication+attributes.m'
'iPhone/Classes/sqSqueakIPhoneApplication+clipboard.m'
'iPhone/Classes/sqSqueakIPhoneApplication+imageReadWrite.m'
'iPhone/Classes/sqSqueakIPhoneApplication+events.m'
'iPhone/Classes/sqSqueakIPhoneApplication+Network.m'
'iPhone/Classes/sqSqueakiPhoneApplication+sound.m'
'iPhone/Classes/sqSqueakIPhoneFileDirectoryInterface.m'
'iPhone/Classes/sqSqueakIPhoneInfoPlistInterface.m'
'iPhone/Classes/sqiPhoneScreenAndWindow.m'
'iPhone/Classes/SqueakUIView.m'
'iPhone/Classes/SqueakUIViewCALayer.m'
'iPhone/Classes/SqueakUIViewOpenGL.m'
'iPhone/Classes/SqueakUIController.m'
'iPhone/Classes/sqSqueakIPhoneClipboardAPI.m'
'iPhone/macintoshextra.c'
'iPhone/osExports.c'
"'iPhone/sqDummyaio.c'" "I'm using real aio.c from unix (and seems to work)"
'iPhone/sqMacV2Memory.c'
+ 'iPhone/sqMacUnixExternalPrims.m'
)!
Item was changed:
----- Method: StackIPhoneConfig>>setCommonProperties: (in category 'settings') -----
setCommonProperties: maker
maker set: 'CMAKE_CROSSCOMPILING' to: 'TRUE'.
maker set: 'CMAKE_SYSTEM_NAME' to: 'Darwin'.
maker set: 'CMAKE_SYSTEM_PROCESSOR' to: 'arm'.
maker set: 'SDKVER' toString: self sdkVersion.
maker set: 'DEVROOT' toString: '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer'.
maker set: 'SDKROOT' toString: '${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk'.
maker set: 'CMAKE_OSX_SYSROOT' to: 'iphoneos${SDKVER}'.
- maker set: 'CMAKE_C_COMPILER' to: '${DEVROOT}/usr/bin/llvm-gcc'.
- maker set: 'CMAKE_CXX_COMPILER' to: '${DEVROOT}/usr/bin/llvm-g++'.
-
maker set: 'CMAKE_FIND_ROOT_PATH' to: '"${SDKROOT}" "${DEVROOT}"'.
maker set: 'CMAKE_FIND_ROOT_PATH_MODE_PROGRAM' to: 'ONLY'.
maker set: 'CMAKE_FIND_ROOT_PATH_MODE_LIBRARY' to: 'ONLY'.
maker set: 'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE' to: 'ONLY'.
+ maker set: 'CMAKE_EXE_LINKER_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
+ maker set: 'CMAKE_C_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
+ maker set: 'CMAKE_CXX_FLAGS' toString: '--sysroot ${SDKROOT} -L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
- maker set: 'CMAKE_EXE_LINKER_FLAGS' toString: '-L${SDKROOT}/usr/lib -L${SDKROOT}/usr/lib/system'.
maker addFrameworks: self frameworks.!
Item was added:
+ ----- Method: StackIPhoneConfig>>setGlobalOptions: (in category 'settings') -----
+ setGlobalOptions: maker
+ "set any CMake global options, before declaring a project in cmake file"
+
+ maker
+ set: 'CMAKE_C_COMPILER'
+ to: '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'.
+ maker
+ set: 'CMAKE_CXX_COMPILER'
+ to: '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++'.
+ maker set: 'CMAKE_OSX_ARCHITECTURES' to: 'arm6'.
+ maker set: 'CMAKE_OSX_SYSROOT' to: '/'.
+ !
Item was added:
+ ----- Method: String>>nameFormat: (in category '*cmakevmmaker-extensions') -----
+ nameFormat: aDictionary
+ "format the receiver with aDictionary
+
+ simplest example:
+ 'foo {name} bar' format: {'name'->value}.
+ "
+ | result stream |
+ result := String new writeStream.
+ stream := self readStream.
+
+ [stream atEnd]
+ whileFalse: [| currentChar |
+ currentChar := stream next.
+ currentChar == ${
+ ifTrue: [| expression |
+ expression := self getEnclosedExpressionFrom: stream.
+ result nextPutAll: (aDictionary at: expression ifAbsent: [ 'UNDEFINED' ]) asString ]
+ ifFalse: [
+ currentChar == $\
+ ifTrue: [
+ stream atEnd
+ ifFalse: [result nextPut: stream next]]
+ ifFalse: [result nextPut: currentChar]]].
+
+ ^ result contents!
More information about the Vm-dev
mailing list