| ~~ Licensed to the Apache Software Foundation (ASF) under one or more |
| ~~ contributor license agreements. See the NOTICE file distributed with |
| ~~ this work for additional information regarding copyright ownership. |
| ~~ The ASF licenses this file to You under the Apache License, Version 2.0 |
| ~~ (the "License"); you may not use this file except in compliance with |
| ~~ the License. You may obtain a copy of the License at |
| ~~ |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~~ |
| ~~ Unless required by applicable law or agreed to in writing, software |
| ~~ distributed under the License is distributed on an "AS IS" BASIS, |
| ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ~~ See the License for the specific language governing permissions and |
| ~~ limitations under the License. |
| ------ |
| Building Apache log4cxx with Apache Ant |
| ------ |
| ------ |
| ------ |
| |
| Building Apache log4cxx with Apache Ant |
| |
| {{{https://ant.apache.org}Apache Ant}} with cpptasks from the |
| {{{http://ant-contrib.sourceforge.net}Ant-Contrib}} project can be used to build log4cxx |
| with supported compilers and is also used to generate the IDE project files included |
| in the releases. The Apache Maven build which is used to generate the site documentation |
| and release packaging delegates to this build. The Ant build can build APR and APR-Util |
| if source is available. |
| |
| * Quick start: |
| |
| * Install {{{https://ant.apache.org}Apache Ant}} 1.6.5 or later. |
| |
| * Install cpptasks 1.0b5 or later from the {{{http://ant-contrib.sourceforge.net}Ant-Contrib Project}}. |
| ant-contribs 1.0b3 or later is needed for some less frequent build targets. |
| |
| * Install APR and APR-Util or place source in apr and apr-util directories as a |
| sibling to the log4cxx directory. |
| |
| * Install gzip and zip (used for compression by RollingFileAppender) and |
| sed (used to normalize output files for comparison in unit tests). |
| |
| * Install log4j 1.2. Used in testing of SocketAppender. |
| |
| Building and testing log4cxx on a Unix platform with packaged APR and APR-Util. |
| |
| +----+ |
| $ export CLASSPATH=~/cpptasks/cpptasks-1.0b5.jar |
| $ cd apache-log4cxx-x.x.x |
| $ ant |
| +----+ |
| |
| Building and testing log4cxx on a Unix platform with APR and APR-Util built from source. |
| |
| +----+ |
| $ export CLASSPATH=~/cpptasks/cpptasks-1.0b5.jar |
| $ tar -xvzf apr-1.2.12.tar.gz |
| $ mv apr-1.2.12 apr |
| $ tar -xvzf apr-util-1.2.12.tar.gz |
| $ mv apr-util-1.2.12 apr-util |
| $ cd apache-log4cxx-x.x.x |
| $ ant |
| +----+ |
| |
| Building and testing log4cxx on a Microsoft Windows with APR and APR-Util built from source. |
| |
| +----+ |
| $ "%VS120COMNTOOLS%\vsvars32.bat"
|
| $ set PATH=\apache-ant-1.7.0\bin;%PATH% |
| $ set CLASSPATH=\cpptasks\cpptasks-1.0b5.jar |
| $ tar -xvzf apr-1.2.12.tar.gz |
| $ rename apr-1.2.12 apr |
| $ tar -xvzf apr-util-1.2.12.tar.gz |
| $ rename apr-util-1.2.12 apr-util |
| $ cd apache-log4cxx-x.x.x |
| $ ant -Dcompiler=xyz |
| +----+ |
| |
| * Common ant targets |
| |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build | build log4cxx library. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | check | build logcxx library and build and run unit tests and examples. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | clean | Delete all generated files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-unittest | build log4cxx library and unit test. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | run-socketserver | Tests SocketAppender with Java-based receiver. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-projects-vc6 | Build Microsoft Visual Studio 6 project files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-projects-vc7 | Build Microsoft Visual Studio .NET project files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-projects-vc8 | Build Microsoft Visual Studio 2005 project files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-projects-vc9 | Build Microsoft Visual Studio 2008 project files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| | build-projects-xcode | Build Apple Xcode project files. | |
| *-----------------------+---------------------------------------------------------------------------------------------+ |
| |
| All build products will be placed in the target subdirectory. |
| |
| Project files should be generated after successfully building the library, however it is possible |
| to generate Microsoft Visual Studio project files on other platforms. The project |
| files will typically be missing references to the Platform SDK libraries. |
| The Maven project modifies the generated project files for release preparation. Generation |
| of Xcode projects from Microsoft Windows is not supported. |
| |
| * ant options |
| |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dcompiler | Compiler, see {{{http://ant-contrib.sourceforge.net/cpptasks/antdocs/CCTask.html}cpptasks documentation}} for full list. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Ddebug | Build for debugging, yes (default), no. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dfind | Attempt to locate compiled APR and APR-Util, yes (default), no. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-apr | path to non-default location for APR. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-apr-util | path to non-default location for APR-Util. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+
|
| | -Denable-char | Enable char API methods, choice of yes (default), no. |
|
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Denable-wchar_t | Enable wchar_t API methods, choice of yes (default), no. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Denable-unichar | Enable UniChar API methods, choice of yes, no (default). | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Denable-cfstring | Enable CFString API methods, requires Mac OS/X CoreFoundation, choice of yes, no (default). | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-logchar | Internal character representation, choice of utf-8 (default non-Windows), wchar_t (default Windows), unichar. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-charset | External character encoding, choice of utf-8, iso-8859-1, usascii, ebcdic, auto (default). | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-SMTP | SMTP implementation for SMTPAppender, choice of libesmtp, no (default). | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dwith-ODBC | OBDC implementation for ODBCAppender, choice of auto (default), unixODBC, iODBC, Microsoft, no | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dlog4j.jar | Path to log4j.jar for run-socketserver. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dprojects.dir | Location for generated IDE projects. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
| | -Dlib.type | Library type to create, choice of shared (default), static. |
|
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+
|
| | -Druntime | Type of C runtime library to use, choice of dynamic (default), static. |
|
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+
|
| | -Doptimize | Optimization: none (default), speed, size. |
|
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+
|
| | -p | Display available targets and quit. | |
| *-------------------+--------------------------------------------------------------------------------------------------------------------------+ |
|
|
| SMTP and ODBC options can depend on libraries that that have different licenses. You should |
| review the corresponding licenses and understand the implications before redistribution.
|
|
|
| Combining -Dlib.type=shared and -Druntime=static is unsafe. |
| |
| Properties may also be placed in a build.properties file in the log4cxx directory. The file has |
| to be in the default format for {{{https://en.wikipedia.org/wiki/.properties}Java properties files}},
|
| especially one must not provide options using the syntax -Dxy=z like on the shell, but only as
|
| xy=z per line.
|
| |
| * Platform specific notes: |
| |
| ** Microsoft Windows |
| |
| {{{http://gnuwin32.sourceforge.net}GnuWin32}} |
| provides binary versions of sed, gzip and zip. Alternative, |
| the bin directory of {{{https://www.cygwin.com}Cygwin}} may be placed on the path. |
| |
| If -Dwith-SMTP=libesmtp is specified, the build will attempt to build |
| libesmtp from source, unfortunately libesmtp depends on poll.h and will not build. |
| |
| APR 1.2.12 has a known issue that will prevent |
| compilation with Visual Studio 6 unless a later Platform SDK is installed. |
| See APR bug {{{https://issues.apache.org/bugzilla/show_bug.cgi?44327}44327}}. |
| APR 1.2.11 and the corresponding APR-Util 1.2.10 will compile with Visual Studio 6. |
|
|
| If your are using Visual Studio, vsvars32.bat from the directory ...\Common7\Tools needs to be
|
| executed manually before a build. This script sets include paths etc., else you will get a lot
|
| of errors about missing windows.h and such.
|
| |
| *** Cygwin: |
| |
| gcc 3.x does not provide wchar_t support which needs to be explicitly disabled. |
| The Win32 path to the APR libraries need to be provided (CYGWIN_HOME/lib) if compiling against an installed APR and APR-Util. |
| |
| +-----+ |
| $ cd apache-log4cxx-x.x.x |
| $ ant -Dos.family=cygwin -Dwith-apr=/cygwin/lib -Dwith-apr-util=/cygwin/lib -Denable-wchar_t=0 |
| +-----+ |
| |
| *** MinGW: |
|
|
| +----+ |
| $ cd apache-log4cxx-x.x.x |
| $ path c:\mingw\bin;%PATH% |
| $ ant -Dcompiler=gcc -Dfind=false build-all |
| $ cd src\test\resources |
| $ set TOTO=wonderful |
| $ set key1=value1 |
| $ set key2=value2 |
| $ ..\..\..\target\debug\shared\testsuite -v |
| $ ..\..\..\target\debug\shared\trivial |
| $ ..\..\..\target\debug\shared\stream |
| +----+ |
| |
| Running "ant check" was observed to fail with unexpected exceptions |
| in streamtestcase and datetimedateformattestcase. |
| See {{{https://issues.apache.org/jira/browse/LOGCXX-244}LOGCXX-244}}. |
| |
| ** Debian: |
| |
| Apache APR, APR-Util, Ant and log4j and zip may be installed using: |
| |
| +----+ |
| $ sudo apt-get install libapr1-dev libaprutil1-dev ant ant-optional liblog4j1.2-java zip |
| +----+ |
| |
| ** Mac OS/X: |
| |
| APR and APR-Util are provided by the platform in Mac OS/X 10.5 and iODBC in 10.4. |
| |
| Site generation requires "doxygen" command on path which can be provided |
| by installing Doxygen.app and then setting the path like: |
| |
| +---+ |
| $ setenv PATH /Applications/Doxygen.app/Contents/Resources:$PATH |
| +---+ |