Author: wyoung
Date: Fri Mar 3 08:13:40 2006
New Revision: 1203
URL: http://svn.gna.org/viewcvs/mysqlpp?rev=1203&view=rev
Log:
Reworked the README* and HACKERS files to cover the new Bakefile stuff
instead of autotools + makemake.
Modified:
branches/v2.1-bakefile/HACKERS
branches/v2.1-bakefile/README
branches/v2.1-bakefile/README.mingw
branches/v2.1-bakefile/README.unix
branches/v2.1-bakefile/README.vc
Modified: branches/v2.1-bakefile/HACKERS
URL:
http://svn.gna.org/viewcvs/mysqlpp/branches/v2.1-bakefile/HACKERS?rev=1203&r1=1202&r2=1203&view=diff
==============================================================================
--- branches/v2.1-bakefile/HACKERS (original)
+++ branches/v2.1-bakefile/HACKERS Fri Mar 3 08:13:40 2006
@@ -49,33 +49,29 @@
Adding Support for a Different Compiler
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- One of the most common requests we get is to add support
- for less common compilers or build systems. We're happy to
- accept patches to add such support, provided they comply with
- certain rules.
+ MySQL++ now uses the Bakefile system for creating project
+ files and makefiles. This allows us to make changes to a
+ single set of files, and have the proper changes be made
+ to all generated project files and makefiles. In the past,
+ we used more ad-hoc systems, and we'd frequently forget to
+ update individual project files and makefiles, so at any
+ given time, at least one target was likely to be broken.
- We don't want proprietary "project files" and such. We find
- that they tend to "rot" quickly. It's human nature for a
- person to submit such a file, and then fail to maintain it.
- Meanwhile, the library keeps changing, so the project file
- becomes less and less relevant over time. The project
- maintainers cannot reliably maintain these files, because we
- don't have access to the tools that use them. To avoid this,
- we've settled on two build systems: GNU autotools for Unixy
- systems, and our own 'makemake' system for everything else.
- Because the project maintainers actively use both of these,
- the maintenance to track most library changes is on our
- shoulders. It isn't a perfect system, but it's better than
- the alternative.
+ If MySQL++ doesn't currently ship with project files or
+ makefiles tuned for your compiler of choice, you need
+ to work through the Bakefile mechanism to add support.
+ We're not willing to do ad-hoc platform support any more,
+ so please don't ask if you can send us project files instead;
+ we don't want them.
- We're not willing to accept patches that provide only partial
- library support. In the past, we've had broken ports that
- were missing important library features, or that crashed when
- built in certain ways. If you can't provide feature parity
- with the existing ports, we're not interested. The reason is,
- few will knowingly use a crippled version of MySQL++, since
- the alternatives are usually acceptable. Therefore, such ports
- become maintenance baggage, with little compensating value.
+ If you want to port MySQL++ to another platform, we need to
+ be confident that the entire library works on your platform
+ before we'll accept patches. In the past, we've had broken
+ ports that were missing important library features, or
+ that crashed when built in certain ways. Few people will
+ knowingly use a crippled version of MySQL++, since there are
+ usually acceptable alternatives. Therefore, such ports become
+ maintenance baggage with little compensating value.
Maintaining a Private CVS Repository
@@ -104,33 +100,28 @@
$(cat CVS/Repository) > equal_list.patch
-On Manipulating the Autotools Input Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- If you are going to hack on the autotools files (*.am, *.in and
- everything in the config subdir), run the command:
+On Manipulating the Bakefiles and Autoconf Files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ If change any of the Bakefiles (*.bkl) or the autoconf stuff
+ (configure.ac and everything in the config subdir), you need
+ to run the command:
- $ ./bootstrap [pedantic] [options]
+ $ ./bootstrap [pedantic] [noexamples] [configure options]
- The primary purpose of this command is to rebuild all the
- autotools output files, and to enable "maintainer mode".
- In maintainer mode, the build system is set up such that if you
- change any of these autotools input files in the future, their
- dependents will be re-generated automatically. Occasionally
- automake/autoconf gets confused and you have to run it again,
- but this is rare.
+ This command rebuilds all of the project files and makefiles
+ that depend on the Bakefiles and Autoconf stuff.
- If the first argument to the bootstrap script is 'pedantic'
- (without the quotes) it will turn on a bunch of GCC-specific
- flags which make the compiler much pickier about the source
- code it will accept without warnings. It is useful to enable
- this mode whenever you are making large changes to the library,
- to ensure that you haven't done something silly. We strive to
- keep MySQL++ in a state where it never gives compiler warnings
- in pedantic mode. We're not 100% there yet with all compilers,
- but we're trying...
+ If you pass 'pedantic' to the bootstrap script, it will set
+ up the autoconf build system so it turns on all of GCC's
+ warnings and such. It's useful to build the library in this
+ mode when making changes to make sure there are no obvious
+ problems with the code.
- Anything after the optional pedantic argument is passed as
- arguments to the configure script. See the README file in
- this directory for more information about the flags that the
- script accepts.
+ If you pass 'noexamples', the examples won't be built.
+ You can pass any of the previous options in any order.
+ As soon as the bootstrap script sees an options that it
+ doesn't understand, it stops processing the command line.
+ Any subsequent options are passed (indirectly) to the configure
+ script. See README.unix for more on configure script options.
+
Modified: branches/v2.1-bakefile/README
URL:
http://svn.gna.org/viewcvs/mysqlpp/branches/v2.1-bakefile/README?rev=1203&r1=1202&r2=1203&view=diff
==============================================================================
--- branches/v2.1-bakefile/README (original)
+++ branches/v2.1-bakefile/README Fri Mar 3 08:13:40 2006
@@ -43,28 +43,26 @@
Building the Library
~~~~~~~~~~~~~~~~~~~~
- MySQL++ has two supported build systems.
+ As of version 2.1, MySQL++ uses the Bakefile build system. This
+ tool creates platform-specific project files and makefiles. We
+ currently support these options:
- The first is based on the GNU autotools, and is primarily
- for Linux, Mac OS X, Cygwin, and the "real" Unices.
- See README.unix for details. There's a possiblity that
- it will also work on Cygwin competitors such as MKS, UWin,
- and Microsoft SFU, but this hasn't been tested.
+ autoconf:
+ For Unixy platforms, including Linux, Mac OS X, and
+ Cygwin. See README.unix for details. Supplementary
+ details for Cygwin are in README.cygwin.
- Mainstream Win32 tool chains are supported -- if at all --
- by the MySQL++-specific 'makemake' system. If your platform
- is one of those supported, it will have a secondary README
- file in this directory with more details.
+ Visual C++:
+ We ship Visual C++ 6 project files, but MySQL++ only
+ works with Visual C++ 7.1 (a.k.a. Visual Studio 2003)
+ or newer. Your version of Visual Studio will upgrade
+ these project files for you. See README.vc for details.
- If your system isn't supported by the autotools or makemake
- systems, you will have to either add that support, or find
- some way to build the library yourself. We welcome patches
- to add new platform support on the mailing list. We would
- much prefer to have extensions to the existing build systems
- than completely new systems, such as project files for
- proprietary IDEs. The project's history shows that project
- files tend to be neglected as new library features are added,
- so we're reluctant to accept these.
+ MinGW:
+ We ship Makefiles made for MinGW. These currently only
+ work for building static versions of the library,
+ which has licensing ramifications. See README.mingw
+ for details.
Example Programs
Modified: branches/v2.1-bakefile/README.mingw
URL:
http://svn.gna.org/viewcvs/mysqlpp/branches/v2.1-bakefile/README.mingw?rev=1203&r1=1202&r2=1203&view=diff
==============================================================================
--- branches/v2.1-bakefile/README.mingw (original)
+++ branches/v2.1-bakefile/README.mingw Fri Mar 3 08:13:40 2006
@@ -30,23 +30,19 @@
cd c:\mysql\lib\gcc
dlltool -k -d c:\mysql++\libmysqlclient.def -l libmysqlclient.a
- To configure the MySQL++ library to build with MinGW, say
- "makemake mingw" in the project's root directory. If you
- change the Makefile.base or Makefile.mingw files, you will
- have to run makemake again.
+ Now you can build the library with this command:
+
+ mingw32-make -f Makefile.mingw
- Now you can build the library with the command "mingw32-make".
- That command ensures that you're using the MinGW version
- of GNU make, and not some other version. In particular,
- the Cygwin and MSYS versions of GNU make WILL NOT WORK.
- This problem is not insurmountable; if you want to fix it,
- see Makefile.vc files, which work around differences among
- these versions of GNU make. Please send a patch for this to
- the mailing list if you do it.
+ Notice that we're using the MinGW-specific version of GNU
+ make, not the Cygwin or MSYS versions. This is in order to
+ get proper path separator handling.
- If you didn't install MySQL in c:\mysql, you will have to
- change Makefile.mingw in the lib and examples subdirectories
- and re-run "makemake mingw". You may also look at changing
- these files for various other reasons, such as if you don't
- like the way we name the DLL file. If you want to change
- the install location, that is in install.bat.
+ If you didn't install MySQL in c:\mysql, it's probably simplest
+ to just change the Makefile.mingw files. Theoretically you
+ could adjust the Bakefiles instead, but due to the way we're
+ using Bakefile, it's a little difficult to rebuild Makefiles
+ on Windows right now.
+
+ If you want to change the install location, that is in
+ install.bat.
Modified: branches/v2.1-bakefile/README.unix
URL:
http://svn.gna.org/viewcvs/mysqlpp/branches/v2.1-bakefile/README.unix?rev=1203&r1=1202&r2=1203&view=diff
==============================================================================
--- branches/v2.1-bakefile/README.unix (original)
+++ branches/v2.1-bakefile/README.unix Fri Mar 3 08:13:40 2006
@@ -1,6 +1,6 @@
Building the Library and Example Programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- MySQL++ uses the GNU autotools, so you can build it with the
+ MySQL++ uses the GNU autoconf, so you can build it with the
standard commands:
# ./configure
Modified: branches/v2.1-bakefile/README.vc
URL:
http://svn.gna.org/viewcvs/mysqlpp/branches/v2.1-bakefile/README.vc?rev=1203&r1=1202&r2=1203&view=diff
==============================================================================
--- branches/v2.1-bakefile/README.vc (original)
+++ branches/v2.1-bakefile/README.vc Fri Mar 3 08:13:40 2006
@@ -5,104 +5,23 @@
not support a sufficiently broad set of the Standard C++ language.
-About the New Build System (makemake)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- As of MySQL++ v2.0, we have changed the VC++ build system over to
- a command-line based system, instead of Visual Studio project
- files. We've done this for many reasons:
-
- 1. Not everyone has the IDE: Microsoft has made their
- command-line tools available for free at various times,
- and these offers usually do not include the Visual
- Studio IDE.
-
- 2. Project files tend to be tied to one version of
- Visual Studio. Newer versions can migrate old project
- files, but then old versions cannot read the new files.
- So, each time there's a new version of Visual Studio,
- there's a transition period where at least two versions
- of the IDE are still in common use. Makefiles,
- by contrast, work with all versions, without changes.
-
- 3. Standardization: project files types proliferated
- in the old system, and we would frequently forget to
- update all of the project files when changing the
- corresponding autotools files. In the new system,
- there are only two places where build system changes
- need to be made: one for systems using the autotools,
- and one for systems using makemake.
-
- So, please do not ask for the Visual Studio project files to
- return. They cause more problems than they solve.
-
-
-Prerequisite: GNU make
-~~~~~~~~~~~~~~~~~~~~~~
- The Makefiles generated by makemake require GNU make.
- They used to work with Microsoft's nmake, but that held us
- back from adding several useful features.
-
- We've tested with two ports of GNU make for Windows: Cygwin and
- MinGW.
-
- To get GNU make through Cygwin, go to http://cygwin.com/ and
- get the Cygwin setup program. GNU make isn't part of the
- default installation, so you will have to add it. It's in
- the Devel category.
-
- To get the MinGW version of GNU make, go to http://mingw.org/
- and download it directly. You shouldn't need to download
- anything but the GNU make package, as it should run standalone.
-
- Once you have done either of these, you will need to add
- the bin directory containing GNU make to your PATH. If you
- don't know how to do this, open Windows Help and search for
- Environment Variables.
-
-
Building the Library and Example Programs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- First, you need to open a Windows command prompt (cmd.exe).
- The easiest way to do this is to go into your Visual Studio
- program group under the Start menu and in the Tools folder
- find the Command Prompt item. All it does is open a command
- window and run a batch file called vcvars32.bat to set
- up the environment variables needed to run the Visual C++
- command-line tools. If you have a different way to open a
- command prompt that you prefer, you can use that and run the
- vcvars32.bat file by hand.
+ Due to a limitation in Bakefile (the tool we use to generate
+ the project files) there are two different workspaces (a.k.a.
+ "solutions"): one in the lib subdirectory and one in the
+ examples subdirectory. You only have to build the project
+ in the lib subdirectory, but you are encouraged to also build
+ the examples, as they are good tests of whether your library
+ is built and working correctly.
- To create the Makefiles, say "makemake vc" in the project's root
- directory. You only have to do this once, unless you change
- Makefile.base or Makefile.vc.
-
- Now you can run GNU make to build the library and examples.
- If you've installed GNU make through Cygwin, the command is
- "make". If you're using the MinGW version of GNU make, it's
- "mingw32-make" instead.
-
- The build process creates debug and release versions of the MySQL++
- DLL, as well as import libraries for those DLLs. It's possible to
- create a static library, but we don't do this in the distributed
- Makefiles because linking to such a library is a license violation
- for programs not licensed under the GPL or LGPL. Using the
- library in DLL form avoids this problem.
-
- The build process also builds the example programs. They are built
- in debug mode. You should run the major examples to make sure
- the library is built correctly; see examples/README details.
+ If you didn't install MySQL in c:\mysql, you will have to change
+ the project options.
Once the library is built and you're satisfied that it's working
- correctly, say "make install" at the project root. By default,
- it installs the library files and headers in subdirectories
- under c:\mysql++.
-
- If you didn't install MySQL in c:\mysql, you will have to change
- Makefile.vc in the lib and examples subdirectories and re-run
- "makemake vc". You may also look at changing these files for
- various other reasons, such as if you don't like the way we name
- the DLL file, or want the 'install' target to put the MySQL++
- development files somewhere other than c:\mysql++.
+ correctly, you can run the install.bat file at the project
+ root to automatically install the library files and headers in
+ subdirectories under c:\mysql++.
Using MySQL++ in Your Own Projects
_______________________________________________
Mysqlpp-commits mailing list
[email protected]
https://mail.gna.org/listinfo/mysqlpp-commits