]> git.saurik.com Git - wxWidgets.git/blobdiff - BuildCVS.txt
documented wxIsMainThread() and other thread-related stuff
[wxWidgets.git] / BuildCVS.txt
index bcc040f3d76c4a837d9e074d0943e9c4bc63d670..998a8963888e4f3e8a1b201b0d8af08866522aa9 100644 (file)
@@ -2,6 +2,9 @@
                 How to build the sources from CVS
 ------------------------------------------------------------------------
 
                 How to build the sources from CVS
 ------------------------------------------------------------------------
 
+Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
+etc. alongside these instructions.
+
 I) Windows using plain makefiles
 ----------------------------------------
 
 I) Windows using plain makefiles
 ----------------------------------------
 
@@ -16,74 +19,58 @@ varaibles and PATH entries.
 Continue with item c) below.
 
 
 Continue with item c) below.
 
 
-b) If using the GNU MinGW32 or GNU CygWin32 compilers
-
-You'll need the compiler itself which is available from
-
-  http://www.cygwin.com
+b) If using the MinGW or Cygwin compilers
 
 
-When using MingW32 you'll need GNU make which is a part
-of the CygWin32 toolchain and is also available as a stand
-alone port without the infamous Cygwin.dll from
+You can get MinGW from  http://www.mingw.org/
 
 
-  http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32
+Cygwin is available at  http://sources.redhat.com/cygwin/
 
 
-The makefile has small problems with Cygwin´s tools
-so it is recommended not to use these (but MingGW32
-and its make.exe).
+The makefile might have small problems with Cygwin's tools
+so it is recommended to use MinGW and its toolchain instead
+if possible.
 
 -> Set your path so that it includes the directory
    where your compiler and tools reside
 
 
 -> Set your path so that it includes the directory
    where your compiler and tools reside
 
-b-2) Using Mingw32 with gcc-2.95 and Anders Norlander's 
-       Win32 headers
-
-Using the newer gcc-2.95/Noralander header combination
-will allow you to compile more of the MSW code, such
-as OLE and Drag-n-Drop.
-
-Instructions are similar to those for Regular Mingw32 except
+-> If your are using an old MinGW version (gcc-2.95 or older),
+   you might need to fix some headers with the patches contained
+   in the wxWin\Mingw32-gcc295.patches file. PLEASE APPLY THESE
+   PATCHES BY HAND! There are apparently a few different versions
+   of the headers floating around. Note that these patches are
+   not needed if you are using MinGW gcc-2.95.2 or newer.
+  
+-> Edit wx/src/makeg95.env and set the MINGW32 variable at the top of
+   the file to either 1 (you have MinGW) or 0 (you have Cygwin).
+   Also set the MINGW32VERSION variable appropiately.
 
 
-->Get the compiler from 
-    ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95/
 
 
-->patch the gcc headers with info in wxWin\Mingw32-gcc295.patches. 
-  PLEASE APPLY THESE PATCHES BY HAND! There are apparently a few
-  different versions of the headers floating around.
-
-->copy wxWin\src\makeg295.env to wxWin\src\makeg95.env
-
-    
 c) Build instructions
 
 -> Assumming that you installed the wxWindows sources
    into c:\wxWin
 -> Copy c:\wxWin\include\wx\msw\setup0.h
    to   c:\wxWin\include\wx\msw\setup.h
 c) Build instructions
 
 -> Assumming that you installed the wxWindows sources
    into c:\wxWin
 -> Copy c:\wxWin\include\wx\msw\setup0.h
    to   c:\wxWin\include\wx\msw\setup.h
--> Edit c:\wxWin\include\wx\msw\setup.h so that
-   most features are enabled (i.e. defined to 1) with
-   #define wxUSE_ODBC          0       
-   #define wxUSE_SOCKETS       0
-   #define wxUSE_HTML          1
-   #define wxUSE_THREADS       1
-   #define wxUSE_FS_INET       0
-   #define wxUSE_FS_ZIP        1
-   #define wxUSE_BUSYINFO      1
-   #define wxUSE_DYNLIB_CLASS  1
-   #define wxUSE_ZIPSTREAM     1
-   #define wxUSE_LIBJPEG       1
-   #define wxUSE_LIBPNG        1
-
-   and iostreams ares disabled with
+-> Edit c:\wxWin\include\wx\msw\setup.h to choose
+   the features you would like to compile wxWindows with[out].
+
+   and std iostreams are disabled with
    #define wxUSE_STD_IOSTREAM   0
    #define wxUSE_STD_IOSTREAM   0
-   
-   note: ODBC and SOCKETS can be 1 for gcc-2.95
-   
 -> type: cd c:\wxWin\src\msw
 -> type: cd c:\wxWin\src\msw
+-> type: set WXWIN=c:\wxWin
 -> type: make -f makefile.g95  (if using GNU tools)
 -> type: make -f makefile.g95  (if using GNU tools)
-or type: make -f makefile.g295 (if using Mingw32/gcc-2.95)     
-or type: make -f makefile.vc   (if using MS VC++)
+or type: nmake -f makefile.vc   (if using MS VC++)
+
+   See also docs/msw/install.txt for additional compilation options.
 
 
+d) Borland (including free command line tools)
+   Download tools from http://www.borland.com/downloads/
+   
+   See docs/msw/install.txt for details; in brief
+
+-> type set WXWIN=c:\wxwindows
+-> type cd %WXWIN%\src\msw
+-> type make -f makefile.b32
 
 II) Unix ports
 --------------
 
 II) Unix ports
 --------------
@@ -121,33 +108,67 @@ yet complete).
 III) Windows using configure
 ----------------------------------------
 
 III) Windows using configure
 ----------------------------------------
 
-Take a look at Unix->Windows cross compiling. With minor
-modifications, this should work in Windows if you've got the cygnus
-utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed.
-See http://www.cygnus.com for these programs, or go straight to their
-ftp server at ftp://sourceware.cygnus.com/pub/cygwin/.
+wxWindows can be built on Windows using MSYS (see
+http://www.mingw.org/), which is a POSIX build environment
+for Windows. With MSYS you can just ./configure && make (see also VII,
+Unix->Windows cross-compiling using configure).
 
 Of course, you can also build the library using plain makefiles (see
 section I).
 
 
 Of course, you can also build the library using plain makefiles (see
 section I).
 
-V) MacOS
+IV) Classic MacOS using CodeWarrior (eg MacOS 8.x/9.x)
+----------------------------------------
+
+Refer to the readme.txt and install.txt files in docs/mac to build
+wxWindows under Classic Mac OS using CodeWarrior.
+
+If you are checking out the CVS sources using cvs under Mac OS X and
+compiling under Classic Mac OS:
+
+- make sure that all text files have a Mac OS type of 'TEXT' otherwise
+  CodeWarrior may ignore them. Checking out the CVS sources using cvs
+  under Mac OS X creates untyped files which can lead to compilation
+  errors under CodeWarrior which are hard to track down.
+
+- convert the xml files to CodeWarrior binary projects using the supplied
+  AppleScript in docs/mac (M5xml2mcp.applescript for CodeWarrior 5.3)
+
+V) MacOS X using configure and the Developer Tools
 ----------------------------------------
 
 ----------------------------------------
 
+You need to have the Developer Tools installed. If this is not the case,
+you will need to register at the Apple Developer web site (this is a free
+registration) in order to download the Developer Tools installer.
+
+In order to create configure, you need to have the
+GNU autoconf package (version 2.13 or 2.14) installed
+on your system and type run "autoconf" in the base
+directory (or run the autogen.sh script in the same
+directory, which just calls autoconf).
+
+-> type: mkdir macbuild
+-> type: cd macbuild
+-> type: ../configure --with-mac
+or type: ../configure
+-> type: make
+
 VI) OS/2
 ----------------------------------------
 
 VII) Unix->Windows cross-compiling using configure
 --------------------------------------------------
 
 VI) OS/2
 ----------------------------------------
 
 VII) Unix->Windows cross-compiling using configure
 --------------------------------------------------
 
-First you'll need a cross-compiler; linux glibc binaries of mingw32 and
-cygwin32 (both based on egcs) can be found at
-ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Otherwise you can
-compile one yourself. Check the relevant FAQs.
+First you'll need a cross-compiler; linux glibc binaries of MinGW and
+Cygwin (both based on egcs) can be found at
+ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,
+based on the latest MinGW release can be found at
+http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html
+Otherwise you can compile one yourself.
 
 
-[ A Note about cygwin32 and mingw32: the main difference is that cygwin32
+[ A Note about Cygwin and MinGW: the main difference is that Cygwin
 binaries are always linked against cygwin.dll. This dll encapsulates most
 standard Unix C extensions, which is very handy if you're porting unix
 binaries are always linked against cygwin.dll. This dll encapsulates most
 standard Unix C extensions, which is very handy if you're porting unix
-software to windows. However, wxMSW doesn't need this, so mingw32 is
+software to windows. However, wxMSW doesn't need this, so MinGW is
 preferable if you write portable C(++). ]
 
 You might want to build both Unix and Windows binaries in the same source
 preferable if you write portable C(++). ]
 
 You might want to build both Unix and Windows binaries in the same source
@@ -162,8 +183,7 @@ To cross compile the windows library, do
 -> cd win32
 (or whatever you called it)
 Now run configure. There are two ways to do this
 -> cd win32
 (or whatever you called it)
 Now run configure. There are two ways to do this
--> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw \
-   --enable-dnd=no
+-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw
 where --build= should read whatever platform you're building on. Configure
 will notice that build and host platforms differ, and automatically prepend
 i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
 where --build= should read whatever platform you're building on. Configure
 will notice that build and host platforms differ, and automatically prepend
 i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
@@ -171,30 +191,50 @@ The other way to run configure is by specifying the names of the binaries
 yourself:
 -> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
    DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
 yourself:
 -> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
    DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
-   ../configure --host=i586-mingw32 --with-mingw --enable-dnd=no
-
-(all assuming you're using mingw32)
-Drag'n'drop is disabled because mingw32 lacks (AFAIK) OLE headers.
-
-[ Update: some new mingw32 versions now have a new set of windows header
-files, which apparently can handle ole. Untested at the moment ]
+   ../configure --host=i586-mingw32 --with-mingw
 
 
-Configure will conclude that shared libraries are out of the question and
-opt for a static one. I haven't looked into DLL creation yet.
+(all assuming you're using MinGW)
+By default this will compile a DLL, if you want a static library,
+specify --disable-shared.
 
 Type
 -> make
 and wait, wait, wait. Don't leave the room, because the minute you do there
 will be a compile error :-)
 
 
 Type
 -> make
 and wait, wait, wait. Don't leave the room, because the minute you do there
 will be a compile error :-)
 
-If this is successful, you end up with a libwx_msw.a in win32/lib.  Now try
-building the minimal sample:
+NB: if you are using a very old compiler you risk to get quite a few warnings
+    about "ANSI C++ forbids implicit conversion from 'void *'" in all places
+    where va_arg macro is used. This is due to a bug in (some versions of)
+    MinGW headers which may be corrected by upgrading your compier,
+    otherwise you might edit the file
+
+    ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h
+
+    (instead of egcs-2.91.57 you may have something different), searching for
+    the lines
+
+/* Define __gnuc_va_list.  */
+
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
+typedef char *__gnuc_va_list;
+#else
+typedef void *__gnuc_va_list;
+#endif
+#endif
+
+    and adding "|| defined(_WIN32)" to the list of platforms on which
+    __gnuc_va_list is char *.
+
+If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib
+(or just libwx_msw.a if you opted for a static build).
+Now try building the minimal sample:
 
 -> cd samples/minimal
 -> make
 
 -> cd samples/minimal
 -> make
--> mv minimal minimal.exe
 
 
-and run it with wine, for example
+and run it with wine, for example (or copy to a Windows box)
 -> wine minimal.exe
 
 If all is well, do an install; from win32
 -> wine minimal.exe
 
 If all is well, do an install; from win32
@@ -209,6 +249,5 @@ Cross-compiling TODO:
 - resource compiling must be done manually for now (should/can we link the
 default wx resources into libwx_msw.a?) [ No we can't; the linker won't
 link it in... you have to supply an object file ]
 - resource compiling must be done manually for now (should/can we link the
 default wx resources into libwx_msw.a?) [ No we can't; the linker won't
 link it in... you have to supply an object file ]
-- dynamic libraries
 - static executables are HUGE -- there must be room for improvement.
 
 - static executables are HUGE -- there must be room for improvement.