summaryrefslogtreecommitdiff
authoreilers <eilers>2004-04-01 12:06:55 (UTC)
committer eilers <eilers>2004-04-01 12:06:55 (UTC)
commit4a8682d099023312464480ec4c21c531b81b801d (patch) (side-by-side diff)
treeda0e870a87c9478afebad7ad43c24fde65a41e8b
parent833413cc389e7ddc929c081e29279a6556733407 (diff)
downloadopie-4a8682d099023312464480ec4c21c531b81b801d.zip
opie-4a8682d099023312464480ec4c21c531b81b801d.tar.gz
opie-4a8682d099023312464480ec4c21c531b81b801d.tar.bz2
Some mac specific fixes..
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--development/macosx/README_MACOSX30
-rw-r--r--development/macosx/config_macosx151
-rw-r--r--include.pro1
3 files changed, 108 insertions, 74 deletions
diff --git a/development/macosx/README_MACOSX b/development/macosx/README_MACOSX
index 4cb5908..ac62046 100644
--- a/development/macosx/README_MACOSX
+++ b/development/macosx/README_MACOSX
@@ -1,150 +1,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/opiedb
+libopie2
pim-applications (addressbook, todolist, datebook, today)
A lot of applications and plugins which are not platform specific.
-What will follow soon:
-
-libopie2 (libopiecore and libopiedb works already !)
-
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
+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 \ No newline at end of file
diff --git a/development/macosx/config_macosx b/development/macosx/config_macosx
index 656a468..53a1c9b 100644
--- a/development/macosx/config_macosx
+++ b/development/macosx/config_macosx
@@ -1,291 +1,306 @@
#
# Automatically generated make config: don't edit
#
#
# Build Parameters
#
# CONFIG_TARGET_X86 is not set
CONFIG_TARGET_MACOSX=y
# CONFIG_TARGET_SHARP is not set
# CONFIG_TARGET_IPAQ is not set
# CONFIG_TARGET_RAMSES is not set
# CONFIG_TARGET_SIMPAD is not set
# CONFIG_TARGET_YOPY is not set
# CONFIG_OPTIMIZE is not set
CONFIG_DEBUG=y
CONFIG_QUICK_LAUNCH=y
-# CONFIG_OPIE_NO_OVERRIDE_QT is not set
+CONFIG_QUICKLAUNCH_PATH="/Users/stefan/Developer/opie/bin/quicklauncher"
CONFIG_SPECFILE="qws/macx-generic-g++"
CONFIG_EXPERIMENTAL=y
#
+# Configuration
+#
+# CONFIG_OPIE_NO_OVERRIDE_QT is not set
+# CONFIG_OPIE_NO_BUILTIN_SHUTDOWN is not set
+# CONFIG_OPIE_NO_BUILTIN_CALIBRATE is not set
+CONFIG_OPIE_SOUND_FRAGMENT_SHIFT="16"
+# CONFIG_USE_REALTIME_AUDIO_THREAD is not set
+# CONFIG_OPIE_HIGH_RES_SMALL_PHY is not set
+# CONFIG_OPIE_NEW_ALLOC is not set
+# CONFIG_OPIE_NO_SOUND_PCM_READ_BITS is not set
+CONFIG_OPIE_WE_VERSION="15"
+
+#
# Base
#
CONFIG_LIBQPE=y
# CONFIG_X11 is not set
CONFIG_LIBOPIE=y
+
+#
+#
+#
+CONFIG_LIBOPIE2CORE=y
+CONFIG_LIBOPIE2DB=y
+# CONFIG_LIBOPIE2NET is not set
+CONFIG_LIBOPIE2PIM=y
+CONFIG_SQL_PIM_BACKEND=y
+CONFIG_LIBOPIE2UI=y
+# CONFIG_LIBOPIE2MM is not set
+
+#
+# the examples need a libqpe, libopie2core, libopie2db, libopie2net, libopie2pim, libopie2ui and libopie2mm
+#
+
+#
+#
+#
+CONFIG_LIBQTAUX=y
# CONFIG_OPIE-LOGIN is not set
# CONFIG_OPIEALARM is not set
CONFIG_QUICKLAUNCHER=y
CONFIG_LAUNCHER=y
CONFIG_PRELOAD=y
CONFIG_LAUNCHER_CORE=y
-CONFIG_QWS=y
+# CONFIG_SYMLINKER is not set
#
#
#
#
# Applets
#
CONFIG_BATTERYAPPLET=y
# CONFIG_CARDMON is not set
CONFIG_CLIPBOARDAPPLET=y
CONFIG_CLOCKAPPLET=y
CONFIG_HOMEAPPLET=y
# CONFIG_IRDAAPPLET is not set
# CONFIG_LOGOUTAPPLET is not set
# CONFIG_OBEXAPPLET is not set
# CONFIG_OBEX is not set
# CONFIG_RESTARTAPPLET is not set
# CONFIG_ROTATEAPPLET is not set
# CONFIG_SCREENSHOTAPPLET is not set
# CONFIG_SUSPENDAPPLET is not set
# CONFIG_VMEMO is not set
# CONFIG_VOLUMEAPPLET is not set
# CONFIG_VTAPPLET is not set
+# CONFIG_MEMORYAPPLET is not set
#
# Network applet needs a libqpe and libopie2 (core, ui, net)
#
CONFIG_NOTESAPPLET=y
-# CONFIG_WIRELESSAPPLET is not set
#
# Apps
#
# CONFIG_CALIBRATE is not set
# CONFIG_EMBEDDEDKONSOLE is not set
-CONFIG_FILEBROWSER=y
CONFIG_HELPBROWSER=y
# CONFIG_OAPP is not set
-CONFIG_OIPKG=y
CONFIG_QCOP=y
CONFIG_TEXTEDIT=y
# CONFIG_ADVANCEDFM is not set
-# CONFIG_AQPKG is not set
CONFIG_CHECKBOOK=y
+CONFIG_CONFEDIT=y
# CONFIG_ODICT is not set
# CONFIG_BARTENDER is not set
# CONFIG_OPIE-CONSOLE is not set
# CONFIG_OPIE-READER is not set
CONFIG_OPIE-SHEET=y
CONFIG_OPIE-WRITE=y
CONFIG_OXYGEN=y
-CONFIG_SYSINFO=y
+# CONFIG_QASHMONEY is not set
CONFIG_TABLEVIEWER=y
-CONFIG_TINYKATE=y
-CONFIG_LIBKATE=y
+# CONFIG_LIBKATE is not set
# CONFIG_ZSAFE is not set
#
# Communications and Networking
#
# CONFIG_GSMTOOL is not set
# CONFIG_KEYPEBBLE is not set
# CONFIG_MOBILEMSG is not set
-# CONFIG_MAIL is not set
+
+#
+# Net
+#
# CONFIG_FTPLIB is not set
-# CONFIG_MAILIT is not set
+# CONFIG_LIBMAILWRAPPER is not set
# CONFIG_OPIEIRC is not set
# CONFIG_OPIE-RDESKTOP is not set
+# CONFIG_OPIETOOTH is not set
# CONFIG_UBROWSER is not set
#
-# wellenreiter needs libqpe, libopie1 and libopie2 (core+net+ui)
+# wellenreiter needs a libqpe and libopie2 (core+net+ui)
#
#
# Games
#
-CONFIG_BACKGAMMON=y
-CONFIG_BOUNCE=y
-CONFIG_BUZZWORD=y
-CONFIG_FIFTEEN=y
-CONFIG_GO=y
-CONFIG_KBILL=y
-CONFIG_KCHECKERS=y
-CONFIG_KPACMAN=y
-CONFIG_MINDBREAKER=y
-CONFIG_MINESWEEP=y
-# CONFIG_WORDGAME is not set
-CONFIG_PARASHOOT=y
-CONFIG_QASTEROIDS=y
+# CONFIG_BACKGAMMON is not set
+# CONFIG_BOUNCE is not set
+# CONFIG_BUZZWORD is not set
+# CONFIG_FIFTEEN is not set
+# CONFIG_GO is not set
+# CONFIG_KBILL is not set
+# CONFIG_KCHECKERS is not set
+# CONFIG_KPACMAN is not set
+# CONFIG_MINDBREAKER is not set
+# CONFIG_MINESWEEP is not set
+# CONFIG_YATZEE is not set
+# CONFIG_PARASHOOT is not set
+# CONFIG_QASTEROIDS is not set
# CONFIG_SFCAVE is not set
# CONFIG_SFCAVE-SDL is not set
# CONFIG_SNAKE is not set
-CONFIG_SOLITAIRE=y
+# CONFIG_SOLITAIRE is not set
# CONFIG_TETRIX is not set
# CONFIG_TICTAC is not set
+# CONFIG_WORDGAME is not set
#
# Graphics and Multimedia
#
# CONFIG_FREETYPE is not set
CONFIG_DRAWPAD=y
-# CONFIG_QPDF is not set
# CONFIG_OPIEPLAYER is not set
-
-#
-# opie-camera needs a libqpe, libopie and libopie2core
-#
+# CONFIG_CAMERA is not set
# CONFIG_OPIEPLAYER2 is not set
# CONFIG_OPIEREC is not set
-CONFIG_SHOWIMG=y
+# CONFIG_SHOWIMG is not set
+# CONFIG_TONLEITER is not set
#
# Input methods
#
# CONFIG_DASHER is not set
# CONFIG_DVORAK is not set
CONFIG_HANDWRITING=y
#
# opie-handwriting-classicset automatically selected
#
#
# opie-handwriting-graffitiset automatically selected
#
CONFIG_JUMPX=y
# CONFIG_KEYBOARD is not set
CONFIG_KJUMPX=y
# CONFIG_MULTIKEY is not set
CONFIG_PICKBOARD=y
CONFIG_UNIKEYBOARD=y
#
# Pim
#
CONFIG_ADDRESSBOOK=y
CONFIG_DATEBOOK=y
+CONFIG_DATEBOOK2=y
CONFIG_OSEARCH=y
CONFIG_TODAY=y
CONFIG_TODO=y
#
# Today Plugins
#
# CONFIG_TODAY_FORTUNE is not set
# CONFIG_TODAY_STOCKTICKER is not set
# CONFIG_TODAY_WEATHER is not set
CONFIG_TODAY_ADDRESSBOOK=y
CONFIG_TODAY_DATEBOOK=y
-CONFIG_TODAY_MAIL=y
+
+#
+# opie-today-mailplugin requires libopie2core, libopie2pim, and libmailwrapper
+#
CONFIG_TODAY_TODOLIST=y
#
# Settings
#
CONFIG_BUTTON-SETTINGS=y
CONFIG_CITYTIME=y
CONFIG_LAUNCHER-SETTINGS=y
-CONFIG_LIGHT-AND-POWER=y
+# CONFIG_LIGHT-AND-POWER is not set
CONFIG_SECURITY=y
CONFIG_APPEARANCE2=y
+# CONFIG_AQPKG is not set
CONFIG_BACKUP=y
+CONFIG_DOCTAB=y
CONFIG_LANGUAGE=y
-CONFIG_MEDIUMMOUNT=y
-CONFIG_NETSYSTEMTIME=y
-# CONFIG_NETWORKSETUP is not set
+# CONFIG_MEDIUMMOUNT is not set
+# CONFIG_NETSYSTEMTIME is not set
# CONFIG_SOUND is not set
# CONFIG_SSHKEYS is not set
+CONFIG_SYSINFO=y
CONFIG_TABMANAGER=y
# CONFIG_USERMANAGER is not set
#
# Theming
#
#
# Decorations
#
CONFIG_DECO_FLAT=y
CONFIG_DECO_LIQUID=y
CONFIG_DECO_POLISHED=y
#
# Styles
#
CONFIG_FLAT=y
CONFIG_FRESH=y
CONFIG_LIQUID=y
CONFIG_METAL=y
CONFIG_THEME=y
#
# Tools
#
CONFIG_CALCULATOR=y
CONFIG_CLOCK=y
CONFIG_EUROCONV=y
# CONFIG_FORMATTER is not set
CONFIG_OPIE-SH=y
# CONFIG_REMOTE is not set
#
# Development
#
# CONFIG_KEYVIEW is not set
#
# Examples
#
# CONFIG_EXAMPLES is not set
#
#
#
#
-# Experimental
-#
-
-#
-# libopie2
-#
-# CONFIG_LIBOPIE2CORE is not set
-
-#
-# libopie2db needs a libqpe and libopie2core
-#
-
-#
-# libopie2net needs a libqpe and libopie2core
-#
-
-#
-# libopie2pim needs a libqpe and libopie2core
-#
-
-#
-# libopie2ui needs a libqpe and libopie2core
-#
-
-#
-# libopie2mm needs a libqpe and libopie2core
+# Unsupported / Unmaintained
#
+# CONFIG_FILEBROWSER is not set
+# CONFIG_MAILIT is not set
+# CONFIG_OIPKG is not set
+# CONFIG_QPDF is not set
#
#
#
#
-# the examples need a libqpe, libopie2core, libopie2db, libopie2net, libopie2pim, libopie2ui and libopie2mm
-#
-
-#
-# SQL-Support needs libopie2db!
+# Experimental
#
+# CONFIG_LIBSLCOMPAT is not set
+# CONFIG_QWS is not set
diff --git a/include.pro b/include.pro
index ced5c9f..56f588e 100644
--- a/include.pro
+++ b/include.pro
@@ -1,128 +1,129 @@
include ( $(OPIEDIR)/gen.pro )
# base opie install path
# prefix = /opt/QtPalmtop ??? Why here (eilers) ???
prefix = $(OPIEDIR)
contains( CONFIG, quick-app-lib ) {
TEMPLATE = lib
CONFIG += plugin # "plugin" will be removed automatically later if not MacOSX ! (eilers)
DESTDIR = $(OPIEDIR)/plugins/application
DEFINES += OPIE_APP_INTERFACE
!contains( TARGET, launcher ) {
message( Linking $$TARGET to quicklauncher )
system( rm -f $$(OPIEDIR)/bin/$$TARGET )
system( ln -sf $$QUICKLAUNCH_PATH $$(OPIEDIR)/bin/$$TARGET )
}
}
contains ( CONFIG, quick-app-bin ) {
TEMPLATE = app
DESTDIR = $(OPIEDIR)/bin
DEFINES -= OPIE_APP_INTERFACE
message( Touching plugins/application/lib$${TARGET}.so.0 )
system( touch $$(OPIEDIR)/plugins/application/lib$${TARGET}.so.0 )
}
contains( TEMPLATE, lib ) {
target.path = $$prefix/lib
}
!contains( TEMPLATE, lib ) {
target.path = $$prefix/bin
}
INSTALLS += target
# ipkg control files
control.path = /CONTROL
control.files = control postinst prerm postrm preinst conffiles
INSTALLS += control
# images, default is $$prefix/pics/$$TARGET
pics.path = $$prefix/pics/$$TARGET
pics.files = pics/*
INSTALLS += pics
# sounds, default path is $$prefix/sounds/$$TARGET
sounds.path = $$prefix/sounds/$$TARGET
sounds.files = sounds/*
INSTALLS += sounds
# init scripts, default path is /etc/init.d
init.path = /etc/init.d
init.files = init.d/*
INSTALLS += init
# data, default path is /usr/share/$$TARGET
data.path = /usr/share/$$TARGET
data.files = share/*
INSTALLS += data
etc.path = $$prefix/etc/
etc.files = etc/*
INSTALLS += etc
apps.path = $$prefix/apps/
apps.files = apps/*
INSTALLS += apps
# sounds, default path is $$prefix/sounds/$$TARGET
sounds.path = $$prefix/sounds/$$TARGET
sounds.files = sounds/*
INSTALLS += sounds
# anything in nonstandard paths
root.path = /
root.files = root/*
INSTALLS += root
# new targets
opie-lupdate.target = opie-lupdate
opie-lupdate.commands = opie-lupdate $(PRO)
opie-lrelease.target = opie-lrelease
opie-lrelease.commands = opie-lrelease $(PRO)
lupdate.target = lupdate
lupdate.commands = lupdate -noobsolete $(PRO)
lrelease.target = lrelease
lrelease.commands = lrelease $(PRO)
# new message target to get all strings from the apps with and without tr
messages.target = messages
messages.commands = xgettext -C -n -ktr -kQT_TRANSLATE_NOOP $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-tr.po' && xgettext -C -n -a $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-allstrings.po'
ipk.target = ipk
ipk.commands = tmp=`mktemp -d /tmp/ipkg-opie.XXXXXXXXXX` && ( $(MAKE) INSTALL_ROOT="$$$$tmp" install && ipkg-build $$$$tmp; rm -rf $$$$tmp; )
QMAKE_EXTRA_UNIX_TARGETS += lupdate lrelease ipk opie-lupdate opie-lrelease messages
+
CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
contains( CONFTEST, y ){
QMAKE_LFLAGS += -Wl
LIBS -= -ldl
LIBS -= -lcrypt
LIBS -= -lm
# Manual including indirect referenced libraries which are not loaded
# by the mac-linker automatically
CONFTEST = $$system( echo $CONFIG_SQL_PIM_BACKEND )
contains( CONFTEST, y ){
LIBS += -lopiedb2 -lqpe
} else {
LIBS += -lqpe
}
}
else {
QMAKE_LFLAGS += -Wl,-rpath=$$prefix/lib
# I am not sure whether it is a good idea to change the way plugins is build
# on linux. Therefore I remove the "plugin" term, which is needed by MacOS-X
CONFIG -= plugin
}
LIBS += -L$(OPIEDIR)/lib
MOC_DIR=.moc/$(PLATFORM)
OBJECTS_DIR=.obj/$(PLATFORM)
#was here now at thetop
#include ( $(OPIEDIR)/gen.pro )