[sword-devel] OS X/iPhoneOS based development

Dmitrijs Ledkovs dmitrij.ledkov at ubuntu.com
Mon Jun 14 13:03:05 MST 2010


On 14 June 2010 18:59, Manfred Bergmann <manfred.bergmann at me.com> wrote:
> Hi Greg.
>
> I was always using a makefile compiled library. However creating multi-architecture builds (i386, x86_64, ppc) was always kind of a hassle.

ppc64 as well for G5 macs =)

> This is very easily done by Xcode because it compiles for all targets and combines the builds and I'm actually quite happy that I can use this now.

FUD =)

you can use isysroots to compile universal binaries using apple
toolchain the same way XCode does it.

http://developer.apple.com/mac/library/technotes/tn2005/tn2137.html

I've used 10.5 sdk but the 10.4u (NB u = universal) can be used as
well, 10.6 sdk doesn't have ppc.

I took current trunk, autoreconf -f -i (NB using apple autoreconf not
anything you get via macports/fink) and did this:

CXXFLAGS="-mmacosx-version-min=10.5 -isysroot
/Developer/SDKs/MacOSX10.5.sdk -arch i386 -arch x86_64 -arch ppc -arch
ppc64" CFLAGS="-mmacosx-version-min=10.5 -isysroot
/Developer/SDKs/MacOSX10.5.sdk -arch i386 -arch x86_64 -arch ppc -arch
ppc64" LDFLAGS="-arch i386 -arch x86_64 -arch ppc -arch ppc64"
./configure --disable-dependency-tracking --with-icusword
--without-icu --prefix=/here

(bogus prefix to make sure I don't pull in any non-universal dylibs i
have there)

$ file lib/.libs/libsword-1.6.1.dylib
lib/.libs/libsword-1.6.1.dylib: Mach-O universal binary with 4 architectures
lib/.libs/libsword-1.6.1.dylib (for architecture i386):	Mach-O
dynamically linked shared library i386
lib/.libs/libsword-1.6.1.dylib (for architecture x86_64):	Mach-O
64-bit dynamically linked shared library x86_64
lib/.libs/libsword-1.6.1.dylib (for architecture ppc7400):	Mach-O
dynamically linked shared library ppc
lib/.libs/libsword-1.6.1.dylib (for architecture ppc64):	Mach-O 64-bit
dynamically linked shared library ppc64

I'm not sure how to wrap this into a proper Mac OS X framework and
whether there is need for that at all.

Using similar options you should be able to compile for iPhone SDK, I
don't have it installed.

On the other note do you think 10.4u install base is still there? And
do we need to support it.

> How is this done with CMake?
>

As far as I can see CMake style source/targets are just converted into
XCode xml/plst project file, so you would still need to use xcode to
define debug/release/sdk/target-arches.

Using the sdk and gcc isysroot imho is far more UNIX-like =)

>
> Manfred
>
>
> Am 14.06.2010 um 18:51 schrieb Gregory Hellings:
>
>> Manfred,
>>
>> My CMake build system is supposed to support iPhone configurations. It would keep you from having to update your xcode poject every time files are changed, etc. I have built the library succesfully against the simulator files using my CMake configure, but have not had any takers on actually testing the library against an actual app.
>>
>> --Greg
>>
>>
>>
>> On Jun 14, 2010, at 11:52 AM, Manfred Bergmann <manfred.bergmann at me.com> wrote:
>>
>>> Troy, I'd like to put this into this bindings folder.
>>> If you could create a "objc" folder there and give me commit rights? I'm almost finished creating a proper Xcode project.
>>>
>>>
>>>
>>> Manfred
>>>
>>>
>>> Am 16.04.2010 um 07:58 schrieb Troy A. Griffitts:
>>>
>>>> These all sound like good suggestions.  Manfred, let me know what you
>>>> decide and I'll either give you access to sword/bindings/objc or create
>>>> a repository for you.
>>>>
>>>> Troy
>>>>
>>>>
>>>> Peter von Kaehne wrote:
>>>>> Would not the natural place be the bindings directory in the engine?
>>>>>
>>>>>
>>>>>
>>>>> Nic Carter wrote:
>>>>>> I suggest you put it in a specific place in your MacSword SVN (or
>>>>>> Bazaar if that's what you use now?) and I can access it from there.  :)
>>>>>>
>>>>>> On 16/04/2010, at 2:32 AM, Manfred Bergmann wrote:
>>>>>>
>>>>>>> Alright then.
>>>>>>> Can anyone with the proper rights create a Subversion folder? Or do
>>>>>>> we use Bazaar? I switched over to Bazaar. :)
>>>>>>> I believe I'm admin in Jira so I can create a project there myself.
>>>>>>>
>>>>>>>
>>>>>>> Manfred
>>>>>>>
>>>>>>>
>>>>>>> Am 15.04.2010 um 10:30 schrieb Nic Carter:
>>>>>>>
>>>>>>>> Hi Manfred,
>>>>>>>>
>>>>>>>> This all sounds good.  :)
>>>>>>>>
>>>>>>>> Just one quick thing, though:  PocketSword will be one app that
>>>>>>>> works on both iPad and iPhone/iPod touch.  I was looking at this
>>>>>>>> today and I think this will be the best way forward. Apple have
>>>>>>>> designed everything so that this is easily possible, with one
>>>>>>>> codebase...  :)
>>>>>>>>
>>>>>>>> Oh, and to answer your question about NSUserDefaults, yes, that's
>>>>>>>> there!  I have just added unlocking of modules to PocketSword, which
>>>>>>>> will be available in v1.2.2 (currently in beta), and that works
>>>>>>>> great using the code in SwordModule.mm  :)
>>>>>>>>
>>>>>>>> Thanks for this work, Manfred!  :)
>>>>>>>> ybic
>>>>>>>>  nic...  :)
>>>>>>>>
>>>>>>>> ----
>>>>>>>> Nic Carter
>>>>>>>> PocketSword Developer - an iPhone Bible Study app
>>>>>>>> www: http://crosswire.org/pocketsword
>>>>>>>> iTunes: http://itunes.apple.com/app/Pocketsword/id341046078
>>>>>>>> Twitter: http://twitter.com/pocketsword
>>>>>>>>
>>>>>>>> On 15/04/2010, at 7:15 PM, Manfred Bergmann wrote:
>>>>>>>>
>>>>>>>>> Hi there.
>>>>>>>>>
>>>>>>>>> Now with the iPad already released in USA and in other countries
>>>>>>>>> shortly I'd like to push for a consolidation of the Objective-C++
>>>>>>>>> SWORD wrapper classes.
>>>>>>>>> Which over time has grown quite large consisting of 20 classes in
>>>>>>>>> the version MacSword uses. Just for an explanation to others, they
>>>>>>>>> build the basis for SWORD based OS X applications and are intended
>>>>>>>>> to be able to code in Objective-C exclusively in upper levels of
>>>>>>>>> the application (UI).
>>>>>>>>> PocketSword uses a subset of those classes with some modifications.
>>>>>>>>>
>>>>>>>>> Now shortly since I believe we will again branch for the iPad
>>>>>>>>> because it will be a different UI eventually I feel that we have to
>>>>>>>>> do something now. Otherwise we will end up having to maintain three
>>>>>>>>> code bases which could be one. And it will be a mess.
>>>>>>>>>
>>>>>>>>> Since MacSword 2.2 was released recently I have some time now to
>>>>>>>>> work on this.
>>>>>>>>> I would suggest to make a framework of the Objective-C wrapper
>>>>>>>>> classes which can then be used in any OS X (Cocoa) based
>>>>>>>>> application just as easily as other frameworks can be used. It
>>>>>>>>> would still be necessary to have different builds for ARM and
>>>>>>>>> Intel/PPC and Xcode projects but those can use the same code base.
>>>>>>>>> If any user of the framework needs customised behaviour it is still
>>>>>>>>> possible to subclass if really needed.
>>>>>>>>>
>>>>>>>>> The things that need closer look are:
>>>>>>>>> - Make it work in gc and none-gc environments.
>>>>>>>>> In MacSword 2.2 refactorings I tried to put in -dealloc and
>>>>>>>>> -finalize methods in all classes I touched together with
>>>>>>>>> autoreleased initialisations.
>>>>>>>>> - Logging.
>>>>>>>>> This might need some time. While I would like to be able to write
>>>>>>>>> logs to file with specifying log levels this is not something the
>>>>>>>>> iPhone/iPad wants due to slower FS access. But I'm sure there is a
>>>>>>>>> solution to this. If some protocols are defined each front-end can
>>>>>>>>> still implement it's own logging implementation.
>>>>>>>>> - Code that uses NSUserDefaults.
>>>>>>>>> Right now keys for locked modules are stored in NSUserDefaults. Is
>>>>>>>>> this something that works on iPhoneOS?
>>>>>>>>> - Searching/indexing.
>>>>>>>>> While the iPhone uses the SWORD provided clucene based indexing and
>>>>>>>>> searching MacSword uses SearchKit.
>>>>>>>>> This not a problem at all but we have to define a protocol where
>>>>>>>>> each application can implement a provider.
>>>>>>>>> - Further we would need a place to source control it. Can we have a
>>>>>>>>> place for it at CrossWire including a new project in Jira?
>>>>>>>>>
>>>>>>>>> Comments?
>>>>>>>>>
>>>>>>>>> Nic, if you are busy with things for PocketSword right now, don't
>>>>>>>>> worry. I would start working on this, compare both code bases and
>>>>>>>>> would start a discussion with you about things I'm uncertain - if
>>>>>>>>> you give your "go" to do this all.
>>>>>>>>> I'd also like to finally put in some Unit tests for critical parts
>>>>>>>>> so that it can be tested more easily. Unfortunately Unit testing is
>>>>>>>>> not so comfortable in Obj-C as it is in Java.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Manfred
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>>>>> Instructions to unsubscribe/change your settings at above page
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>>>> Instructions to unsubscribe/change your settings at above page
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>>> Instructions to unsubscribe/change your settings at above page
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>>> Instructions to unsubscribe/change your settings at above page
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>>> Instructions to unsubscribe/change your settings at above page
>>>>
>>>>
>>>> _______________________________________________
>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>>
>>>
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
>



More information about the sword-devel mailing list