summaryrefslogtreecommitdiff
path: root/development/macosx/README_MACOSX
blob: ac6204607259dcffeec359d995225218fa6b509c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
Information about porting Opie to MacOS-X (eilers)
==================================================

Credits:
--------

Special thanks to Andreas Junghans (webmaster@lucid-cake.net) for its patches for qt-X11 (2.3.2), 
QT/E (2.3.5) and qtopia (1.6.1).
Without them, I wouldn't be able to provide the port for OPIE to MacOS-X that fast..
Thanks to Juergen Graf to debug this very generic README ! 

Status:
-------
This work is done, do provide a development platform for Apple-Users! Please do not expect that you
could create a productive Opie system for the Mac with it !!

The basic system works quite well. But a lot of applications and plugins,
which are platform specific, need some work to be compileable.

What is ready:

libqpe
libopie1
libopie2
pim-applications (addressbook, todolist, datebook, today)
A lot of applications and plugins which are not platform specific.

ToDO:
-----
There are some functions in the sourcecode which are not yet ported to Mac. If the 
MacOS environment should be used for real productive work, the following functions 
must be implemented correctly:

libopie/pim/otimezone.cpp: 
Accessing of "setenv(...)" on Mac caused bus-errors. 
Workaround/Fix: Unknown
Current-State: setenv() was just commented out. Thus the related functions may behave wrong! 

library/filemanager.cpp:
The sendfile() function is not available in MacOSX. Therefore a workaround must be implemented.
Workaround/Fix: Unknown. The function is available in the header files, but disabled by a 
"#ifdef SENDFILE" .. and not implemented int the c-library.
If it will be supported, it should activate itself automatically by the "#ifdef"..


How to compile Opie for MacOS-X:
-------------------------------

Before compiling for MacOS-X, you need the following:

1. X11-Server+X11SDK 			(Provided by Apple)
2. QT-2.3.2 for X11 			(Provided by Trolltech)
3. QT/E-2.3.7       			(Provided by Trolltech)
4. Patches for QT-2.3.2 for MacOSX   	(take the one in this directory !)
5. Patches for QT/E-2.3.7 for MacOSX 	(take the one, provided in $OPIEDIR/qt)

The Patch for QT-2.3.2 is provided in this directory and is called "qt232-X11.patch".

The Patch for QT/E for Opie, including all other opie-patches is available in the
qt-directory ($OPIEDIR/qt) and is called "qte237-all-macosx.patch".

Please read further, how to compile the stuff.

HOWTO COMPILE:
-------------

Compile QT-2.3.2:

Go to into the basic directory of qt-2.3.2 and enter 
export QTDIR=`pwd`
export DYLD_LIBRARY_PATH=$QTDIR/lib
./configure -no-xft -platform darwin-g++
make
After compiling successful (I hope) you need qvfb:
cd tools/qvfb
make

Compile QT/E-2.3.7:

Got to into the basic directory of qt-2.3.2 and enter 
export QTDIR=`pwd`
export QPEDIR=$QTDIR
export DYLD_LIBRARY_PATH=$QTDIR/lib
./configure -platform darwin-generic-g++ -qconfig qpe -qvfb -depths 4,8,16,32
make

Now create a link for the uic of qt-2.3.2 into the bin-directory of qt/e 2.3.7 ! 
Otherwise OPIE will fail to compile !

Compile OPIE:
Set your environment
(You may use the script "set_vars.sh" to set your variables successfully !
BUT: You have to customize this script for YOUR needs !!)
Go into the basic directory of Opie
make menuconfig" 
set "Build Parameters"->"Target Machine"->"Mac OS X (DARWIN)" to activate the platform specific changes.
save and exit the menuconfig app
make  (ATTENTION: See Known Bugs below!!)

You will see that a lot of applications and plugins/applets will not compile
successfully, due to the fact that they are not ported to this platform.
You may disable them to be able to compile the rest.

Remember: A lot of configuration-settings are not tested and might fail to compile. 
If you want to avoid misconfigurations, you may want to start with
the config-file in this directory. Just copy "config_macosx" to $OPIEDIR/.config
to get a working configuration to start with.

(The missing apps/plugins will be ported on demand.)

Known Bugs (compilation problems):
-----------
The Apple-Linker does not load indirect linked libraries automatically ( if somebody
has a solution here, please inform me !!), therefore I had to add "-lopiedb2" and "-lqpe"
for applications/libraries who used libraries which are linked against them.
A goot solution would be to add it in the project files of these application, but this would
influence the linux-platform as well... :(
As a first (but stupid) solution, I added this linker parameter to the global "include.pro" 
which adds them for everything.. Yes, also for libqpe etc.. 
Therefore this project will not compile out of the box. You have to compile in a two-pass way:

Pass 1: Find the line "LIBS += -lopiedb2 -lqpe" in the file include.pro and comment out it (put a "#" 
        in front of it)
	Do a "make -k" to compile what is already compileable (some will not compile)
Pass 2: Remove the comment from Pass1 and do a "make". The rest should compile now successfully.


I know, this is a silly solution ! But I don't have anything better without influence the Linux build 
process too much .. I  would be happy, if somebody could help me here !

SPECIAL INFORMATION FOR USERS OF PANTHER
----------------------------------------
I had a lot of problems compiling qt-2.3.2 and QT/E-2.3.7 on Panther. The
new release of the X-Server causes a lot of trouble.. 

To compile QT-2.3.2 successfully, you have to disable support of freetype fonts and you have
to use the patch in this directory, otherwise your wont't be able to compile !
Use the param "-no-xft" for the configure script to disable this function !

Information for Developers:
---------------------------

1. Platform specific code should be surrounded by
#ifdef Q_OS_MACX
MACOS-X CODE
#else
OTHER-CODE
#endif

2. The Plugin-Handling by MacOS-X is different than it is by Linux. 
On linux-systems, shared libraries are not different to dynamic loaded libraries
(aka plugins). They just are different whether they are loaded automatically
at startup or manually by any application.
On MacOS-X, the plugins are loaded by a special mechanism and must be in a special
binary format. Therefore you have to add the term "plugin" to the CONFIG-clause, as 
for instance:

TEMPLATE=lib
CONFIG += qt plugin release

If you don't add "plugin" you will get a shared library which is not loadable 
(Error-Code: NSObjectFileImageInappropriateFile (2))!



For problems, help and flames, feel free to contact me at

eilers.stefan@epost.de