]> git.saurik.com Git - wxWidgets.git/blobdiff - BuildSVN.txt
Use correct extensions in wxDynamicLibrary::CanonicalizeName() on OS X.
[wxWidgets.git] / BuildSVN.txt
index 639487e5589dc037bcbf9be71aff0e57952ad916..06d5fd8b736223ba264c114e834c485521d34858 100644 (file)
-------------------------------------------------------------------------\r
-                How to build the sources from SVN\r
-------------------------------------------------------------------------\r
-\r
-Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac\r
-etc. alongside these instructions.\r
-\r
-I) Windows using plain makefiles\r
-----------------------------------------\r
-\r
-a) If using Microsoft Visual C++ 5.0 or 6.0\r
-\r
-Ensure that the command-line compiler and tools (including\r
-nmake) are installed and ready to run.  Depending on your\r
-installation there may be a batch file (commonly named VCVARS32.BAT)\r
-that needs to be run to set correct environment variables and PATH entries.\r
-\r
-Continue with item c) below.\r
-\r
-\r
-b) If using the MinGW or Cygwin compilers\r
-\r
-You can get MinGW from  http://www.mingw.org/\r
-\r
-Cygwin is available at  http://www.cygwin.com/\r
-\r
-If you are using Cygwin or MinGW together with the MSYS environment, you\r
-can build the library using configure (see "Unix ports" and\r
-"Windows using configure" below). You can also\r
-build wxWidgets without configure using native makefile, but only with\r
-MinGW. Using Cygwin together with Windows makefile is no longer supported.\r
-\r
-If building with MinGW without configure:\r
-\r
--> Set your path so that it includes the directory\r
-   where your compiler and tools reside\r
-\r
--> Make sure you have GNU Make installed. It must be Windows native version.\r
-   Download it from http://www.mingw.org, the executable will be called\r
-   mingw32-make.exe.\r
-\r
--> Modern version of MinGW is required; preferably MinGW 2.0 (with gcc3),\r
-   but MinGW with gcc-2.95.3 will suffice. If you are using 2.95, you will\r
-   have to change variable GCC_VERSION in config.gcc (see msw/install.txt\r
-   for details).\r
-\r
-If using configure, Unix instructions apply.\r
-\r
-\r
-c) Build instructions\r
-\r
-Assuming that you installed the wxWidgets sources into c:\wxWidgets:\r
-\r
--> Copy c:\wxWidgets\include\wx\msw\setup0.h\r
-   to   c:\wxWidgets\include\wx\msw\setup.h\r
--> Edit c:\wxWidgets\include\wx\msw\setup.h to choose\r
-   the features you would like to compile wxWidgets with[out].\r
-\r
-   and std iostreams are disabled with\r
-   #define wxUSE_STD_IOSTREAM   0\r
-\r
--> type: cd c:\wxWidgets\build\msw\r
--> type: make -f makefile.gcc  (if using GNU tools)\r
-or type: nmake -f makefile.vc   (if using MS VC++)\r
-etc.\r
-\r
-   See also docs/msw/install.txt for additional compilation options.\r
-\r
-d) Borland (including free command line tools)\r
-   Download tools from http://www.borland.com/downloads/\r
-\r
-   See docs/msw/install.txt for details; in brief:\r
-\r
--> type cd c:\wxWidgets\build\msw\r
--> type make -f makefile.bcc\r
-\r
-You can customize many things in the build process, detailed description is\r
-in docs/msw/install.txt.\r
-\r
-\r
-II) Unix ports\r
---------------\r
-\r
-Building wxGTK or wxMotif completely without configure\r
-won't ever work, but there is now a new makefile system\r
-that works without libtool and automake, using only\r
-configure to create what is needed.\r
-\r
-In order to create configure, you need to have the\r
-GNU autoconf package (version > 2.54) installed\r
-on your system and type run "autoconf" in the base\r
-directory (or run the autogen.sh script in the same\r
-directory, which just calls autoconf). Note that you usually don't\r
-need to do this because configure is included in SVN.\r
-\r
-Set WXWIN environment variable to the base directory such\r
-as ~/wxWidgets (this is actually not really needed).\r
-\r
--> type: export WXWIN=~/wxWidgets\r
--> type: md mybuild\r
--> type: cd mybuild\r
--> type: ../configure --with-motif\r
-or type: ../configure --with-gtk\r
--> type: make\r
--> type: su <type root password>\r
--> type: make install\r
--> type: ldconfig\r
--> type: exit\r
-\r
-Call configure with --disable-shared to create a static\r
-library. Calling "make uninstall" will remove the installed\r
-library and "make dist" will create a distribution (not\r
-yet complete).\r
-\r
-III) Windows using configure\r
-----------------------------------------\r
-\r
-wxWidgets can be built on Windows using MSYS (see\r
-http://www.mingw.org/), which is a POSIX build environment\r
-for Windows. With MSYS you can just ./configure && make (see also VII,\r
-Unix->Windows cross-compiling using configure).\r
-\r
-Of course, you can also build the library using plain makefiles (see\r
-section I).\r
-\r
-V) MacOS X using configure and the Developer Tools\r
-----------------------------------------\r
-\r
-You need to have the Developer Tools installed. If this is not the case,\r
-you will need to register at the Apple Developer web site (this is a free\r
-registration) in order to download the Developer Tools installer.\r
-\r
-In order to create configure, you need to have the\r
-GNU autoconf package (version >= 2.54) installed\r
-on your system and type run "autoconf" in the base\r
-directory (or run the autogen.sh script in the same\r
-directory, which just calls autoconf).\r
-\r
--> type: mkdir macbuild\r
--> type: cd macbuild\r
--> type: ../configure --with-mac\r
-or type: ../configure\r
--> type: make\r
-\r
-VI) OS/2\r
-----------------------------------------\r
-No notes.\r
-\r
-VII) Unix->Windows cross-compiling using configure\r
---------------------------------------------------\r
-\r
-First you'll need a cross-compiler; linux glibc binaries of MinGW and\r
-Cygwin (both based on egcs) can be found at\r
-ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,\r
-based on the latest MinGW release can be found at\r
-http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html\r
-Otherwise you can compile one yourself.\r
-\r
-[ A Note about Cygwin and MinGW: the main difference is that Cygwin\r
-binaries are always linked against cygwin.dll. This dll encapsulates most\r
-standard Unix C extensions, which is very handy if you're porting unix\r
-software to windows. However, wxMSW doesn't need this, so MinGW is\r
-preferable if you write portable C(++). ]\r
-\r
-You might want to build both Unix and Windows binaries in the same source\r
-tree; to do this make subdirs for each e.g. unix and win32. If you've\r
-already build wxWidgets in the main dir, do a 'make distclean' there,\r
-otherwise configure will get confused. (In any case, read the section 'Unix\r
-using configure' and make sure you're able to build a native wxWidgets\r
-library; cross-compiling errors can be pretty obscure and you'll want to be\r
-sure that your configure setup is basically sound.)\r
-\r
-To cross compile the windows library, do\r
--> cd win32\r
-(or whatever you called it)\r
-Now run configure. There are two ways to do this\r
--> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw\r
-where --build= should read whatever platform you're building on. Configure\r
-will notice that build and host platforms differ, and automatically prepend\r
-i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).\r
-The other way to run configure is by specifying the names of the binaries\r
-yourself:\r
--> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \\r
-   DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \\r
-   ../configure --host=i586-mingw32 --with-mingw\r
-\r
-(all assuming you're using MinGW)\r
-By default this will compile a DLL, if you want a static library,\r
-specify --disable-shared.\r
-\r
-Type\r
--> make\r
-and wait, wait, wait. Don't leave the room, because the minute you do there\r
-will be a compile error :-)\r
-\r
-NB: if you are using a very old compiler you risk to get quite a few warnings\r
-    about "ANSI C++ forbids implicit conversion from 'void *'" in all places\r
-    where va_arg macro is used. This is due to a bug in (some versions of)\r
-    MinGW headers which may be corrected by upgrading your compier,\r
-    otherwise you might edit the file\r
-\r
-    ${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h\r
-\r
-    (instead of egcs-2.91.57 you may have something different), searching for\r
-    the lines\r
-\r
-/* Define __gnuc_va_list.  */\r
-\r
-#ifndef __GNUC_VA_LIST\r
-#define __GNUC_VA_LIST\r
-#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)\r
-typedef char *__gnuc_va_list;\r
-#else\r
-typedef void *__gnuc_va_list;\r
-#endif\r
-#endif\r
-\r
-    and adding "|| defined(_WIN32)" to the list of platforms on which\r
-    __gnuc_va_list is char *.\r
-\r
-If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib\r
-(or just libwx_msw.a if you opted for a static build).\r
-Now try building the minimal sample:\r
-\r
--> cd samples/minimal\r
--> make\r
-\r
-and run it with wine, for example (or copy to a Windows box)\r
--> wine minimal.exe\r
-\r
-If all is well, do an install; from win32\r
--> make install\r
-\r
-Native and cross-compiled installations can co-exist peacefully\r
-(as long as their widget sets differ), except for wx-config. You might\r
-want to rename the cross-compiled one to i586-mingw32-wx-config, or something.\r
-\r
-Cross-compiling TODO:\r
----------------------\r
-- resource compiling must be done manually for now (should/can we link the\r
-default wx resources into libwx_msw.a?) [ No we can't; the linker won't\r
-link it in... you have to supply an object file ]\r
-- static executables are HUGE -- there must be room for improvement.\r
-\r
+------------------------------------------------------------------------
+                How to build the sources from SVN
+------------------------------------------------------------------------
+
+Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
+etc. alongside these instructions.
+
+I) Windows using plain makefiles
+----------------------------------------
+
+a) If using Microsoft Visual C++ 5.0 or 6.0
+
+Ensure that the command-line compiler and tools (including
+nmake) are installed and ready to run.  Depending on your
+installation there may be a batch file (commonly named VCVARS32.BAT)
+that needs to be run to set correct environment variables and PATH entries.
+
+Continue with item c) below.
+
+
+b) If using the MinGW or Cygwin compilers
+
+You can get MinGW from  http://www.mingw.org/
+
+Cygwin is available at  http://www.cygwin.com/
+
+If you are using Cygwin or MinGW together with the MSYS environment, you
+can build the library using configure (see "Unix ports" and
+"Windows using configure" below). You can also
+build wxWidgets without configure using native makefile, but only with
+MinGW. Using Cygwin together with Windows makefile is no longer supported.
+
+If building with MinGW without configure:
+
+-> Set your path so that it includes the directory
+   where your compiler and tools reside
+
+-> Make sure you have GNU Make installed. It must be Windows native version.
+   Download it from http://www.mingw.org, the executable will be called
+   mingw32-make.exe.
+
+-> Modern version of MinGW is required; preferably MinGW 2.0 (with gcc3),
+   but MinGW with gcc-2.95.3 will suffice. If you are using 2.95, you will
+   have to change variable GCC_VERSION in config.gcc (see msw/install.txt
+   for details).
+
+If using configure, Unix instructions apply.
+
+
+c) Build instructions
+
+Assuming that you installed the wxWidgets sources into c:\wxWidgets:
+
+-> Copy c:\wxWidgets\include\wx\msw\setup0.h
+   to   c:\wxWidgets\include\wx\msw\setup.h
+-> Edit c:\wxWidgets\include\wx\msw\setup.h to choose
+   the features you would like to compile wxWidgets with[out].
+
+   and std iostreams are disabled with
+   #define wxUSE_STD_IOSTREAM   0
+
+-> type: cd c:\wxWidgets\build\msw
+-> type: make -f makefile.gcc  (if using GNU tools)
+or type: nmake -f makefile.vc   (if using MS VC++)
+etc.
+
+   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 cd c:\wxWidgets\build\msw
+-> type make -f makefile.bcc
+
+You can customize many things in the build process, detailed description is
+in docs/msw/install.txt.
+
+
+II) Unix ports
+--------------
+
+Building wxGTK or wxMotif completely without configure
+won't ever work, but there is now a new makefile system
+that works without libtool and automake, using only
+configure to create what is needed.
+
+In order to create configure, you need to have the
+GNU autoconf package (version > 2.54) 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). Note that you usually don't
+need to do this because configure is included in SVN.
+
+Set WXWIN environment variable to the base directory such
+as ~/wxWidgets (this is actually not really needed).
+
+-> type: export WXWIN=~/wxWidgets
+-> type: md mybuild
+-> type: cd mybuild
+-> type: ../configure --with-motif
+or type: ../configure --with-gtk
+-> type: make
+-> type: su <type root password>
+-> type: make install
+-> type: ldconfig
+-> type: exit
+
+Call configure with --disable-shared to create a static
+library. Calling "make uninstall" will remove the installed
+library and "make dist" will create a distribution (not
+yet complete).
+
+III) Windows using configure
+----------------------------------------
+
+wxWidgets 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).
+
+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.54) 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
+----------------------------------------
+No notes.
+
+VII) Unix->Windows cross-compiling using configure
+--------------------------------------------------
+
+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 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
+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
+tree; to do this make subdirs for each e.g. unix and win32. If you've
+already build wxWidgets in the main dir, do a 'make distclean' there,
+otherwise configure will get confused. (In any case, read the section 'Unix
+using configure' and make sure you're able to build a native wxWidgets
+library; cross-compiling errors can be pretty obscure and you'll want to be
+sure that your configure setup is basically sound.)
+
+To cross compile the windows library, do
+-> 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
+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!).
+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 \
+   ../configure --host=i586-mingw32 --with-mingw
+
+(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 :-)
+
+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
+
+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
+-> make install
+
+Native and cross-compiled installations can co-exist peacefully
+(as long as their widget sets differ), except for wx-config. You might
+want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
+
+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 ]
+- static executables are HUGE -- there must be room for improvement.
+