From e7548d8b4ccb7ae746c9ecd0c8ff1e87de76d6a5 Mon Sep 17 00:00:00 2001 From: jcalcote Date: Thu, 26 Jun 2008 17:02:11 +0000 Subject: [PATCH] Change over to GNU build system - part 1 git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@1056 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- Makefile.am | 11 + configure.ac | 15 + flaim/AUTHORS | 5 +- flaim/COPYING | 125 ++++- flaim/COPYRIGHT | 51 -- flaim/ChangeLog | 189 +++++++ flaim/{Makefile => GNUMakefile} | 0 flaim/Makefile.am | 20 +- flaim/NEWS | 3 + flaim/README | 3 + flaim/autogen.sh | 54 -- flaim/configure | 4 - flaim/configure.ac | 231 +++++--- flaim/{ => debian}/ChangeLog.ubuntu | 0 flaim/{ => docs}/FLAIMArchitecture.odg | Bin flaim/{ => docs}/FLAIMArchitecture.png | Bin flaim/docs/Makefile.am | 13 + flaim/docs/doxygen/Makefile.am | 16 + flaim/{Doxyfile => docs/doxygen/doxyfile.in} | 12 +- flaim/m4/ac_prog_try_doxygen.m4 | 17 + flaim/make.exe | Bin 241664 -> 0 bytes flaim/{ => netware}/nlm.xdc | Bin flaim/obs/Makefile.am | 26 + flaim/obs/flaim.spec.in | 73 +++ flaim/sample/Makefile.am | 9 + flaim/{util => sample}/sample.cpp | 0 flaim/src/Makefile.am | 121 ++++ flaim/src/flaim.h | 2 +- flaim/src/flaimsys.h | 4 + flaim/src/flaimtk.h | 28 - flaim/util/Makefile.am | 69 +++ ftk/AUTHORS | 5 +- ftk/COPYING | 95 +++- ftk/COPYRIGHT | 21 - ftk/ChangeLog | 4 + ftk/{Makefile => GNUMakefile} | 0 ftk/INSTALL | 237 ++++++++ ftk/Makefile.am | 23 + ftk/NEWS | 3 + ftk/README | 3 + ftk/configure.ac | 158 ++++++ ftk/{ => debian}/ChangeLog.ubuntu | 0 ftk/docs/Makefile.am | 16 + ftk/docs/README | 7 + ftk/{Doxyfile => docs/doxyfile.in} | 10 +- ftk/m4/ac_prog_try_doxygen.m4 | 17 + ftk/make.exe | Bin 241664 -> 0 bytes ftk/{ => netware}/nlm.xdc | Bin ftk/obs/Makefile.am | 26 + ftk/obs/README | 15 + ftk/obs/ftk.spec.in | 58 ++ ftk/src/Makefile.am | 45 ++ ftk/src/{ftk.h => flaimtk.h} | 6 +- ftk/src/ftkdynrset.cpp | 2 +- ftk/src/ftksys.h | 12 +- ftk/util/Makefile.am | 11 + ftk/util/ftktest.cpp | 4 +- libflaim.changes | 182 ------ libxflaim.changes | 172 ------ sql/AUTHORS | 3 + sql/COPYING | 524 ++++++++++++++++++ sql/ChangeLog | 4 + sql/{Makefile => GNUMakefile} | 0 sql/INSTALL | 237 ++++++++ sql/Makefile.am | 19 + sql/NEWS | 3 + sql/README | 3 + sql/configure.ac | 166 ++++++ sql/m4/ac_prog_try_doxygen.m4 | 17 + sql/make.exe | Bin 241664 -> 0 bytes sql/obs/Makefile.am | 26 + sql/obs/sqlflaim.spec.in | 64 +++ sql/src/Makefile.am | 90 +++ sql/src/createdatabase.cpp | 8 +- sql/src/createtable.cpp | 2 +- sql/src/f_btree.cpp | 14 +- sql/src/f_btree.h | 49 +- sql/src/flaimsql.h | 7 +- sql/src/flaimsqltk.h | 27 - sql/src/flaimsys.h | 23 + sql/src/flbackup.cpp | 11 +- sql/src/fslfileu.cpp | 2 +- sql/src/fsysdata.cpp | 20 +- sql/src/opendatabase.cpp | 6 +- sql/src/rfl.cpp | 2 +- sql/src/select.cpp | 21 +- sql/src/sqlstatement.h | 10 +- xflaim/AUTHORS | 5 +- xflaim/COPYING | 51 ++ xflaim/COPYRIGHT | 51 -- xflaim/ChangeLog | 180 +++++- xflaim/{Makefile => GNUMakefile} | 0 xflaim/{docs => }/INSTALL | 0 xflaim/{docs => }/INSTALL.W32 | 0 xflaim/Makefile.am | 19 + xflaim/NEWS | 3 + xflaim/README | 3 + xflaim/configure.ac | 213 +++++++ xflaim/{ => debian}/ChangeLog.ubuntu | 0 xflaim/docs/Makefile.am | 8 + xflaim/docs/NEWS | 0 xflaim/docs/README | 0 xflaim/docs/doxygen/Makefile.am | 16 + xflaim/docs/doxygen/doxyfile.in | 282 ++++++++++ xflaim/m4/ac_prog_csc_works.m4 | 32 ++ xflaim/m4/ac_prog_csvm_works.m4 | 134 +++++ xflaim/m4/ac_prog_java_works.m4 | 98 ++++ xflaim/m4/ac_prog_javac_works.m4 | 36 ++ xflaim/m4/ac_prog_try_csc.m4 | 19 + xflaim/m4/ac_prog_try_csvm.m4 | 22 + xflaim/m4/ac_prog_try_doxygen.m4 | 17 + xflaim/m4/ac_prog_try_jar.m4 | 20 + xflaim/m4/ac_prog_try_java.m4 | 26 + xflaim/m4/ac_prog_try_javac.m4 | 23 + xflaim/m4/ac_prog_try_javadoc.m4 | 21 + xflaim/m4/ac_prog_try_javah.m4 | 30 + xflaim/make.exe | Bin 241664 -> 0 bytes xflaim/{ => netware}/nlm.xdc | Bin xflaim/obs/Makefile.am | 26 + xflaim/obs/xflaim.spec.in | 74 +++ xflaim/src/Makefile.am | 106 ++++ .../{csharp => src/cs}/cstest/BackupDbTest.cs | 0 .../{csharp => src/cs}/cstest/CacheTests.cs | 0 .../{csharp => src/cs}/cstest/CheckDbTest.cs | 0 .../cs}/cstest/CompareStringsTests.cs | 0 .../{csharp => src/cs}/cstest/CopyDbTest.cs | 0 .../{csharp => src/cs}/cstest/CreateDbTest.cs | 0 .../{csharp => src/cs}/cstest/DOMNodeTest.cs | 0 .../{csharp => src/cs}/cstest/ImportTests.cs | 0 .../{csharp => src/cs}/cstest/OpenDbTest.cs | 0 .../cs}/cstest/RebuildDbTest.cs | 0 .../{csharp => src/cs}/cstest/RemoveDbTest.cs | 0 .../{csharp => src/cs}/cstest/RenameDbTest.cs | 0 .../cs}/cstest/RestoreDbTest.cs | 0 .../cs}/cstest/SettingsTests.cs | 0 .../{csharp => src/cs}/cstest/StatsTests.cs | 0 .../{csharp => src/cs}/cstest/StreamTests.cs | 0 .../{csharp => src/cs}/cstest/VectorTests.cs | 0 xflaim/{csharp => src/cs}/cstest/cstest.cs | 0 xflaim/{csharp => src/cs}/sample/sample.cs | 0 xflaim/{csharp => src/cs}/xflaim.ndoc | 0 xflaim/{csharp => src/cs}/xflaim/Backup.cpp | 0 xflaim/{csharp => src/cs}/xflaim/Backup.cs | 0 .../{csharp => src/cs}/xflaim/BackupClient.cs | 0 .../{csharp => src/cs}/xflaim/BackupStatus.cs | 0 xflaim/{csharp => src/cs}/xflaim/CacheInfo.cs | 0 xflaim/{csharp => src/cs}/xflaim/DOMNode.cpp | 0 xflaim/{csharp => src/cs}/xflaim/DOMNode.cs | 0 .../{csharp => src/cs}/xflaim/DataVector.cpp | 0 .../{csharp => src/cs}/xflaim/DataVector.cs | 0 xflaim/{csharp => src/cs}/xflaim/Db.cpp | 0 xflaim/{csharp => src/cs}/xflaim/Db.cs | 0 .../{csharp => src/cs}/xflaim/DbCopyStatus.cs | 0 xflaim/{csharp => src/cs}/xflaim/DbInfo.cpp | 0 xflaim/{csharp => src/cs}/xflaim/DbInfo.cs | 0 .../cs}/xflaim/DbRenameStatus.cs | 0 xflaim/{csharp => src/cs}/xflaim/DbSystem.cpp | 0 xflaim/{csharp => src/cs}/xflaim/DbSystem.cs | 0 .../cs}/xflaim/DbSystemStats.cpp | 0 .../cs}/xflaim/DbSystemStats.cs | 0 xflaim/{csharp => src/cs}/xflaim/IStream.cpp | 0 xflaim/{csharp => src/cs}/xflaim/IStream.cs | 0 xflaim/{csharp => src/cs}/xflaim/OStream.cpp | 0 xflaim/{csharp => src/cs}/xflaim/OStream.cs | 0 xflaim/{csharp => src/cs}/xflaim/Query.cpp | 0 xflaim/{csharp => src/cs}/xflaim/Query.cs | 0 xflaim/{csharp => src/cs}/xflaim/RCODE.cs | 0 .../cs}/xflaim/RestoreClient.cs | 0 .../cs}/xflaim/RestoreStatus.cs | 0 xflaim/{csharp => src/cs}/xflaim/dbCheck.cs | 0 xflaim/{csharp => src/cs}/xflaim/dbRebuild.cs | 0 xflaim/src/flaimsys.h | 8 +- xflaim/{ => src}/java/jni/jbackup.cpp | 0 xflaim/{ => src}/java/jni/jdatavector.cpp | 0 xflaim/{ => src}/java/jni/jdb.cpp | 0 xflaim/{ => src}/java/jni/jdbsystem.cpp | 0 xflaim/{ => src}/java/jni/jdomnode.cpp | 0 xflaim/{ => src}/java/jni/jistream.cpp | 0 xflaim/{ => src}/java/jni/jniftk.cpp | 0 xflaim/{ => src}/java/jni/jniftk.h | 0 xflaim/{ => src}/java/jni/jnirestore.cpp | 0 xflaim/{ => src}/java/jni/jnirestore.h | 0 xflaim/{ => src}/java/jni/jnistatus.cpp | 0 xflaim/{ => src}/java/jni/jnistatus.h | 0 xflaim/{ => src}/java/jni/jostream.cpp | 0 xflaim/{ => src}/java/jni/jquery.cpp | 0 xflaim/{ => src}/java/jni/xflaim_Backup.h | 0 .../{ => src}/java/jni/xflaim_BackupClient.h | 0 .../{ => src}/java/jni/xflaim_BackupStatus.h | 0 .../{ => src}/java/jni/xflaim_BlockIOStats.h | 0 xflaim/{ => src}/java/jni/xflaim_CHECKINFO.h | 0 .../jni/xflaim_CHECKINFO_CheckPhaseCodes.h | 0 .../{ => src}/java/jni/xflaim_CORRUPTINFO.h | 0 .../jni/xflaim_CORRUPTINFO_LOCALE_CODES.h | 0 xflaim/{ => src}/java/jni/xflaim_CREATEOPTS.h | 0 xflaim/{ => src}/java/jni/xflaim_CacheInfo.h | 0 xflaim/{ => src}/java/jni/xflaim_CacheUsage.h | 0 .../java/jni/xflaim_CheckpointInfo.h | 0 .../{ => src}/java/jni/xflaim_Collections.h | 0 .../{ => src}/java/jni/xflaim_CommitClient.h | 0 .../{ => src}/java/jni/xflaim_CompareRules.h | 0 .../{ => src}/java/jni/xflaim_CountTimeStat.h | 0 xflaim/{ => src}/java/jni/xflaim_DOMNode.h | 0 xflaim/{ => src}/java/jni/xflaim_DataVector.h | 0 xflaim/{ => src}/java/jni/xflaim_Db.h | 0 .../{ => src}/java/jni/xflaim_DbCheckFlags.h | 0 .../{ => src}/java/jni/xflaim_DbCheckStatus.h | 0 .../{ => src}/java/jni/xflaim_DbCopyStatus.h | 0 xflaim/{ => src}/java/jni/xflaim_DbInfo.h | 0 .../java/jni/xflaim_DbRebuildStatus.h | 0 .../java/jni/xflaim_DbRenameStatus.h | 0 xflaim/{ => src}/java/jni/xflaim_DbStats.h | 0 xflaim/{ => src}/java/jni/xflaim_DbSystem.h | 0 .../java/jni/xflaim_DefaultBackupClient.h | 0 .../java/jni/xflaim_DefaultRestoreClient.h | 0 .../{ => src}/java/jni/xflaim_DeleteStatus.h | 0 xflaim/{ => src}/java/jni/xflaim_DictType.h | 0 xflaim/{ => src}/java/jni/xflaim_DiskIOStat.h | 0 .../java/jni/xflaim_ExportFormatType.h | 0 .../{ => src}/java/jni/xflaim_FlmBackupType.h | 0 .../{ => src}/java/jni/xflaim_FlmDataType.h | 0 .../{ => src}/java/jni/xflaim_FlmDictIndex.h | 0 .../java/jni/xflaim_FlmDomNodeType.h | 0 .../{ => src}/java/jni/xflaim_FlmInsertLoc.h | 0 xflaim/{ => src}/java/jni/xflaim_IStream.h | 0 .../{ => src}/java/jni/xflaim_ImportStats.h | 0 xflaim/{ => src}/java/jni/xflaim_IndexState.h | 0 .../{ => src}/java/jni/xflaim_IndexStatus.h | 0 xflaim/{ => src}/java/jni/xflaim_InsertLoc.h | 0 xflaim/{ => src}/java/jni/xflaim_IxClient.h | 0 xflaim/{ => src}/java/jni/xflaim_IxStatus.h | 0 .../java/jni/xflaim_KeyRetrieveFlags.h | 0 xflaim/{ => src}/java/jni/xflaim_LFileStats.h | 0 xflaim/{ => src}/java/jni/xflaim_LockStats.h | 0 xflaim/{ => src}/java/jni/xflaim_LockType.h | 0 xflaim/{ => src}/java/jni/xflaim_LockUser.h | 0 xflaim/{ => src}/java/jni/xflaim_OStream.h | 0 xflaim/{ => src}/java/jni/xflaim_OptInfo.h | 0 xflaim/{ => src}/java/jni/xflaim_OptType.h | 0 xflaim/{ => src}/java/jni/xflaim_Query.h | 0 .../java/jni/xflaim_QueryOperators.h | 0 xflaim/{ => src}/java/jni/xflaim_RCODE.h | 0 .../{ => src}/java/jni/xflaim_RTransStats.h | 0 .../{ => src}/java/jni/xflaim_RebuildStatus.h | 0 xflaim/{ => src}/java/jni/xflaim_ReserveID.h | 0 .../{ => src}/java/jni/xflaim_RestoreAction.h | 0 .../{ => src}/java/jni/xflaim_RestoreClient.h | 0 .../{ => src}/java/jni/xflaim_RestoreStatus.h | 0 .../java/jni/xflaim_ResultSetCounts.h | 0 .../{ => src}/java/jni/xflaim_SearchFlags.h | 0 xflaim/{ => src}/java/jni/xflaim_SlabUsage.h | 0 xflaim/{ => src}/java/jni/xflaim_Stats.h | 0 .../java/jni/xflaim_TransactionFlags.h | 0 .../java/jni/xflaim_TransactionType.h | 0 .../{ => src}/java/jni/xflaim_UTransStats.h | 0 .../java/jni/xflaim_XFlaimException.h | 0 xflaim/{ => src}/java/jni/xflaim_XPathAxis.h | 0 .../java/util/XFlaimTester/XFlaimTester.java | 0 .../{ => src}/java/util/XFlaimTester/run.bat | 0 .../{ => src}/java/util/xedit/Attribute.java | 0 .../java/util/xedit/AttributeSelector.java | 0 .../{ => src}/java/util/xedit/Collection.java | 0 .../java/util/xedit/CollectionSelector.java | 0 .../{ => src}/java/util/xedit/Document.java | 0 .../java/util/xedit/DocumentSelector.java | 0 .../java/util/xedit/EditValueDialog.java | 0 .../java/util/xedit/FileImporter.java | 0 .../{ => src}/java/util/xedit/NodeDialog.java | 0 .../{ => src}/java/util/xedit/NodePanel.java | 0 xflaim/{ => src}/java/util/xedit/NodeTag.java | 0 .../{ => src}/java/util/xedit/NodeType.java | 0 .../{ => src}/java/util/xedit/NodeValue.java | 0 .../java/util/xedit/OpenDocumentSelector.java | 0 .../java/util/xedit/ProgressBox.java | 0 xflaim/{ => src}/java/util/xedit/Status.java | 0 xflaim/{ => src}/java/util/xedit/UITools.java | 0 xflaim/{ => src}/java/util/xedit/XEdit.java | 0 .../java/util/xedit/XFileFilter.java | 0 xflaim/{ => src}/java/xflaim/Backup.java | 0 .../{ => src}/java/xflaim/BackupClient.java | 0 .../{ => src}/java/xflaim/BackupStatus.java | 0 .../{ => src}/java/xflaim/BlockIOStats.java | 0 xflaim/{ => src}/java/xflaim/CHECKINFO.java | 0 xflaim/{ => src}/java/xflaim/CORRUPTINFO.java | 0 xflaim/{ => src}/java/xflaim/CREATEOPTS.java | 0 xflaim/{ => src}/java/xflaim/CacheInfo.java | 0 xflaim/{ => src}/java/xflaim/CacheUsage.java | 0 .../{ => src}/java/xflaim/CheckpointInfo.java | 0 xflaim/{ => src}/java/xflaim/Collections.java | 0 .../{ => src}/java/xflaim/CommitClient.java | 0 .../{ => src}/java/xflaim/CompareRules.java | 0 .../{ => src}/java/xflaim/CountTimeStat.java | 0 xflaim/{ => src}/java/xflaim/DOMNode.java | 0 xflaim/{ => src}/java/xflaim/DataVector.java | 0 xflaim/{ => src}/java/xflaim/Db.java | 0 .../{ => src}/java/xflaim/DbCheckFlags.java | 0 .../{ => src}/java/xflaim/DbCheckStatus.java | 0 .../{ => src}/java/xflaim/DbCopyStatus.java | 0 xflaim/{ => src}/java/xflaim/DbInfo.java | 0 .../java/xflaim/DbRebuildStatus.java | 0 .../{ => src}/java/xflaim/DbRenameStatus.java | 0 xflaim/{ => src}/java/xflaim/DbStats.java | 0 xflaim/{ => src}/java/xflaim/DbSystem.java | 0 .../java/xflaim/DefaultBackupClient.java | 0 .../java/xflaim/DefaultRestoreClient.java | 0 .../{ => src}/java/xflaim/DeleteStatus.java | 0 xflaim/{ => src}/java/xflaim/DictType.java | 0 xflaim/{ => src}/java/xflaim/DiskIOStat.java | 0 .../java/xflaim/ExportFormatType.java | 0 .../{ => src}/java/xflaim/FlmBackupType.java | 0 xflaim/{ => src}/java/xflaim/FlmDataType.java | 0 .../{ => src}/java/xflaim/FlmDictIndex.java | 0 .../{ => src}/java/xflaim/FlmDomNodeType.java | 0 .../{ => src}/java/xflaim/FlmInsertLoc.java | 0 xflaim/{ => src}/java/xflaim/IStream.java | 0 xflaim/{ => src}/java/xflaim/ImportStats.java | 0 xflaim/{ => src}/java/xflaim/IndexState.java | 0 xflaim/{ => src}/java/xflaim/IndexStatus.java | 0 xflaim/{ => src}/java/xflaim/InsertLoc.java | 0 xflaim/{ => src}/java/xflaim/IxClient.java | 0 xflaim/{ => src}/java/xflaim/IxStatus.java | 0 .../java/xflaim/KeyRetrieveFlags.java | 0 xflaim/{ => src}/java/xflaim/LFileStats.java | 0 xflaim/{ => src}/java/xflaim/LockStats.java | 0 xflaim/{ => src}/java/xflaim/LockType.java | 0 xflaim/{ => src}/java/xflaim/LockUser.java | 0 xflaim/{ => src}/java/xflaim/OStream.java | 0 xflaim/{ => src}/java/xflaim/OptInfo.java | 0 xflaim/{ => src}/java/xflaim/OptType.java | 0 xflaim/{ => src}/java/xflaim/Query.java | 0 .../{ => src}/java/xflaim/QueryOperators.java | 0 xflaim/{ => src}/java/xflaim/RCODE.java | 0 xflaim/{ => src}/java/xflaim/RTransStats.java | 0 .../{ => src}/java/xflaim/RebuildStatus.java | 0 xflaim/{ => src}/java/xflaim/ReserveID.java | 0 .../{ => src}/java/xflaim/RestoreAction.java | 0 .../{ => src}/java/xflaim/RestoreClient.java | 0 .../{ => src}/java/xflaim/RestoreStatus.java | 0 .../java/xflaim/ResultSetCounts.java | 0 xflaim/{ => src}/java/xflaim/SearchFlags.java | 0 xflaim/{ => src}/java/xflaim/SlabUsage.java | 0 xflaim/{ => src}/java/xflaim/Stats.java | 0 .../java/xflaim/TransactionFlags.java | 0 .../java/xflaim/TransactionType.java | 0 xflaim/{ => src}/java/xflaim/UTransStats.java | 0 .../java/xflaim/XFlaimException.java | 0 xflaim/{ => src}/java/xflaim/XPathAxis.java | 0 xflaim/src/xflaim.h | 2 +- xflaim/src/xflaimtk.h | 27 - xflaim/util/Makefile.am | 208 +++++++ 350 files changed, 4510 insertions(+), 841 deletions(-) create mode 100644 Makefile.am create mode 100644 configure.ac delete mode 100644 flaim/COPYRIGHT rename flaim/{Makefile => GNUMakefile} (100%) delete mode 100755 flaim/autogen.sh delete mode 100755 flaim/configure rename flaim/{ => debian}/ChangeLog.ubuntu (100%) rename flaim/{ => docs}/FLAIMArchitecture.odg (100%) rename flaim/{ => docs}/FLAIMArchitecture.png (100%) create mode 100644 flaim/docs/Makefile.am create mode 100644 flaim/docs/doxygen/Makefile.am rename flaim/{Doxyfile => docs/doxygen/doxyfile.in} (97%) create mode 100644 flaim/m4/ac_prog_try_doxygen.m4 delete mode 100644 flaim/make.exe rename flaim/{ => netware}/nlm.xdc (100%) create mode 100644 flaim/obs/Makefile.am create mode 100644 flaim/obs/flaim.spec.in create mode 100644 flaim/sample/Makefile.am rename flaim/{util => sample}/sample.cpp (100%) create mode 100644 flaim/src/Makefile.am delete mode 100644 flaim/src/flaimtk.h create mode 100644 flaim/util/Makefile.am delete mode 100644 ftk/COPYRIGHT rename ftk/{Makefile => GNUMakefile} (100%) create mode 100644 ftk/INSTALL create mode 100644 ftk/Makefile.am create mode 100644 ftk/configure.ac rename ftk/{ => debian}/ChangeLog.ubuntu (100%) create mode 100644 ftk/docs/Makefile.am create mode 100644 ftk/docs/README rename ftk/{Doxyfile => docs/doxyfile.in} (98%) create mode 100644 ftk/m4/ac_prog_try_doxygen.m4 delete mode 100644 ftk/make.exe rename ftk/{ => netware}/nlm.xdc (100%) create mode 100644 ftk/obs/Makefile.am create mode 100644 ftk/obs/README create mode 100644 ftk/obs/ftk.spec.in create mode 100644 ftk/src/Makefile.am rename ftk/src/{ftk.h => flaimtk.h} (99%) create mode 100644 ftk/util/Makefile.am delete mode 100644 libflaim.changes delete mode 100644 libxflaim.changes create mode 100644 sql/AUTHORS create mode 100644 sql/COPYING create mode 100644 sql/ChangeLog rename sql/{Makefile => GNUMakefile} (100%) create mode 100644 sql/INSTALL create mode 100644 sql/Makefile.am create mode 100644 sql/NEWS create mode 100644 sql/README create mode 100644 sql/configure.ac create mode 100644 sql/m4/ac_prog_try_doxygen.m4 delete mode 100644 sql/make.exe create mode 100644 sql/obs/Makefile.am create mode 100644 sql/obs/sqlflaim.spec.in create mode 100644 sql/src/Makefile.am delete mode 100644 sql/src/flaimsqltk.h delete mode 100644 xflaim/COPYRIGHT rename xflaim/{Makefile => GNUMakefile} (100%) rename xflaim/{docs => }/INSTALL (100%) rename xflaim/{docs => }/INSTALL.W32 (100%) create mode 100644 xflaim/Makefile.am create mode 100644 xflaim/NEWS create mode 100644 xflaim/README create mode 100644 xflaim/configure.ac rename xflaim/{ => debian}/ChangeLog.ubuntu (100%) create mode 100644 xflaim/docs/Makefile.am delete mode 100644 xflaim/docs/NEWS delete mode 100644 xflaim/docs/README create mode 100644 xflaim/docs/doxygen/Makefile.am create mode 100644 xflaim/docs/doxygen/doxyfile.in create mode 100644 xflaim/m4/ac_prog_csc_works.m4 create mode 100644 xflaim/m4/ac_prog_csvm_works.m4 create mode 100644 xflaim/m4/ac_prog_java_works.m4 create mode 100644 xflaim/m4/ac_prog_javac_works.m4 create mode 100644 xflaim/m4/ac_prog_try_csc.m4 create mode 100644 xflaim/m4/ac_prog_try_csvm.m4 create mode 100644 xflaim/m4/ac_prog_try_doxygen.m4 create mode 100644 xflaim/m4/ac_prog_try_jar.m4 create mode 100644 xflaim/m4/ac_prog_try_java.m4 create mode 100644 xflaim/m4/ac_prog_try_javac.m4 create mode 100644 xflaim/m4/ac_prog_try_javadoc.m4 create mode 100644 xflaim/m4/ac_prog_try_javah.m4 delete mode 100644 xflaim/make.exe rename xflaim/{ => netware}/nlm.xdc (100%) create mode 100644 xflaim/obs/Makefile.am create mode 100644 xflaim/obs/xflaim.spec.in create mode 100644 xflaim/src/Makefile.am rename xflaim/{csharp => src/cs}/cstest/BackupDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/CacheTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/CheckDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/CompareStringsTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/CopyDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/CreateDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/DOMNodeTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/ImportTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/OpenDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/RebuildDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/RemoveDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/RenameDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/RestoreDbTest.cs (100%) rename xflaim/{csharp => src/cs}/cstest/SettingsTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/StatsTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/StreamTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/VectorTests.cs (100%) rename xflaim/{csharp => src/cs}/cstest/cstest.cs (100%) rename xflaim/{csharp => src/cs}/sample/sample.cs (100%) rename xflaim/{csharp => src/cs}/xflaim.ndoc (100%) rename xflaim/{csharp => src/cs}/xflaim/Backup.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/Backup.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/BackupClient.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/BackupStatus.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/CacheInfo.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DOMNode.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/DOMNode.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DataVector.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/DataVector.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/Db.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/Db.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DbCopyStatus.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DbInfo.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/DbInfo.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DbRenameStatus.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DbSystem.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/DbSystem.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/DbSystemStats.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/DbSystemStats.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/IStream.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/IStream.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/OStream.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/OStream.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/Query.cpp (100%) rename xflaim/{csharp => src/cs}/xflaim/Query.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/RCODE.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/RestoreClient.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/RestoreStatus.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/dbCheck.cs (100%) rename xflaim/{csharp => src/cs}/xflaim/dbRebuild.cs (100%) rename xflaim/{ => src}/java/jni/jbackup.cpp (100%) rename xflaim/{ => src}/java/jni/jdatavector.cpp (100%) rename xflaim/{ => src}/java/jni/jdb.cpp (100%) rename xflaim/{ => src}/java/jni/jdbsystem.cpp (100%) rename xflaim/{ => src}/java/jni/jdomnode.cpp (100%) rename xflaim/{ => src}/java/jni/jistream.cpp (100%) rename xflaim/{ => src}/java/jni/jniftk.cpp (100%) rename xflaim/{ => src}/java/jni/jniftk.h (100%) rename xflaim/{ => src}/java/jni/jnirestore.cpp (100%) rename xflaim/{ => src}/java/jni/jnirestore.h (100%) rename xflaim/{ => src}/java/jni/jnistatus.cpp (100%) rename xflaim/{ => src}/java/jni/jnistatus.h (100%) rename xflaim/{ => src}/java/jni/jostream.cpp (100%) rename xflaim/{ => src}/java/jni/jquery.cpp (100%) rename xflaim/{ => src}/java/jni/xflaim_Backup.h (100%) rename xflaim/{ => src}/java/jni/xflaim_BackupClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_BackupStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_BlockIOStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CHECKINFO.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CHECKINFO_CheckPhaseCodes.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CORRUPTINFO.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CORRUPTINFO_LOCALE_CODES.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CREATEOPTS.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CacheInfo.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CacheUsage.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CheckpointInfo.h (100%) rename xflaim/{ => src}/java/jni/xflaim_Collections.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CommitClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CompareRules.h (100%) rename xflaim/{ => src}/java/jni/xflaim_CountTimeStat.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DOMNode.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DataVector.h (100%) rename xflaim/{ => src}/java/jni/xflaim_Db.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbCheckFlags.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbCheckStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbCopyStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbInfo.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbRebuildStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbRenameStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DbSystem.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DefaultBackupClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DefaultRestoreClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DeleteStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DictType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_DiskIOStat.h (100%) rename xflaim/{ => src}/java/jni/xflaim_ExportFormatType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_FlmBackupType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_FlmDataType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_FlmDictIndex.h (100%) rename xflaim/{ => src}/java/jni/xflaim_FlmDomNodeType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_FlmInsertLoc.h (100%) rename xflaim/{ => src}/java/jni/xflaim_IStream.h (100%) rename xflaim/{ => src}/java/jni/xflaim_ImportStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_IndexState.h (100%) rename xflaim/{ => src}/java/jni/xflaim_IndexStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_InsertLoc.h (100%) rename xflaim/{ => src}/java/jni/xflaim_IxClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_IxStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_KeyRetrieveFlags.h (100%) rename xflaim/{ => src}/java/jni/xflaim_LFileStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_LockStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_LockType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_LockUser.h (100%) rename xflaim/{ => src}/java/jni/xflaim_OStream.h (100%) rename xflaim/{ => src}/java/jni/xflaim_OptInfo.h (100%) rename xflaim/{ => src}/java/jni/xflaim_OptType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_Query.h (100%) rename xflaim/{ => src}/java/jni/xflaim_QueryOperators.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RCODE.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RTransStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RebuildStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_ReserveID.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RestoreAction.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RestoreClient.h (100%) rename xflaim/{ => src}/java/jni/xflaim_RestoreStatus.h (100%) rename xflaim/{ => src}/java/jni/xflaim_ResultSetCounts.h (100%) rename xflaim/{ => src}/java/jni/xflaim_SearchFlags.h (100%) rename xflaim/{ => src}/java/jni/xflaim_SlabUsage.h (100%) rename xflaim/{ => src}/java/jni/xflaim_Stats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_TransactionFlags.h (100%) rename xflaim/{ => src}/java/jni/xflaim_TransactionType.h (100%) rename xflaim/{ => src}/java/jni/xflaim_UTransStats.h (100%) rename xflaim/{ => src}/java/jni/xflaim_XFlaimException.h (100%) rename xflaim/{ => src}/java/jni/xflaim_XPathAxis.h (100%) rename xflaim/{ => src}/java/util/XFlaimTester/XFlaimTester.java (100%) rename xflaim/{ => src}/java/util/XFlaimTester/run.bat (100%) rename xflaim/{ => src}/java/util/xedit/Attribute.java (100%) rename xflaim/{ => src}/java/util/xedit/AttributeSelector.java (100%) rename xflaim/{ => src}/java/util/xedit/Collection.java (100%) rename xflaim/{ => src}/java/util/xedit/CollectionSelector.java (100%) rename xflaim/{ => src}/java/util/xedit/Document.java (100%) rename xflaim/{ => src}/java/util/xedit/DocumentSelector.java (100%) rename xflaim/{ => src}/java/util/xedit/EditValueDialog.java (100%) rename xflaim/{ => src}/java/util/xedit/FileImporter.java (100%) rename xflaim/{ => src}/java/util/xedit/NodeDialog.java (100%) rename xflaim/{ => src}/java/util/xedit/NodePanel.java (100%) rename xflaim/{ => src}/java/util/xedit/NodeTag.java (100%) rename xflaim/{ => src}/java/util/xedit/NodeType.java (100%) rename xflaim/{ => src}/java/util/xedit/NodeValue.java (100%) rename xflaim/{ => src}/java/util/xedit/OpenDocumentSelector.java (100%) rename xflaim/{ => src}/java/util/xedit/ProgressBox.java (100%) rename xflaim/{ => src}/java/util/xedit/Status.java (100%) rename xflaim/{ => src}/java/util/xedit/UITools.java (100%) rename xflaim/{ => src}/java/util/xedit/XEdit.java (100%) rename xflaim/{ => src}/java/util/xedit/XFileFilter.java (100%) rename xflaim/{ => src}/java/xflaim/Backup.java (100%) rename xflaim/{ => src}/java/xflaim/BackupClient.java (100%) rename xflaim/{ => src}/java/xflaim/BackupStatus.java (100%) rename xflaim/{ => src}/java/xflaim/BlockIOStats.java (100%) rename xflaim/{ => src}/java/xflaim/CHECKINFO.java (100%) rename xflaim/{ => src}/java/xflaim/CORRUPTINFO.java (100%) rename xflaim/{ => src}/java/xflaim/CREATEOPTS.java (100%) rename xflaim/{ => src}/java/xflaim/CacheInfo.java (100%) rename xflaim/{ => src}/java/xflaim/CacheUsage.java (100%) rename xflaim/{ => src}/java/xflaim/CheckpointInfo.java (100%) rename xflaim/{ => src}/java/xflaim/Collections.java (100%) rename xflaim/{ => src}/java/xflaim/CommitClient.java (100%) rename xflaim/{ => src}/java/xflaim/CompareRules.java (100%) rename xflaim/{ => src}/java/xflaim/CountTimeStat.java (100%) rename xflaim/{ => src}/java/xflaim/DOMNode.java (100%) rename xflaim/{ => src}/java/xflaim/DataVector.java (100%) rename xflaim/{ => src}/java/xflaim/Db.java (100%) rename xflaim/{ => src}/java/xflaim/DbCheckFlags.java (100%) rename xflaim/{ => src}/java/xflaim/DbCheckStatus.java (100%) rename xflaim/{ => src}/java/xflaim/DbCopyStatus.java (100%) rename xflaim/{ => src}/java/xflaim/DbInfo.java (100%) rename xflaim/{ => src}/java/xflaim/DbRebuildStatus.java (100%) rename xflaim/{ => src}/java/xflaim/DbRenameStatus.java (100%) rename xflaim/{ => src}/java/xflaim/DbStats.java (100%) rename xflaim/{ => src}/java/xflaim/DbSystem.java (100%) rename xflaim/{ => src}/java/xflaim/DefaultBackupClient.java (100%) rename xflaim/{ => src}/java/xflaim/DefaultRestoreClient.java (100%) rename xflaim/{ => src}/java/xflaim/DeleteStatus.java (100%) rename xflaim/{ => src}/java/xflaim/DictType.java (100%) rename xflaim/{ => src}/java/xflaim/DiskIOStat.java (100%) rename xflaim/{ => src}/java/xflaim/ExportFormatType.java (100%) rename xflaim/{ => src}/java/xflaim/FlmBackupType.java (100%) rename xflaim/{ => src}/java/xflaim/FlmDataType.java (100%) rename xflaim/{ => src}/java/xflaim/FlmDictIndex.java (100%) rename xflaim/{ => src}/java/xflaim/FlmDomNodeType.java (100%) rename xflaim/{ => src}/java/xflaim/FlmInsertLoc.java (100%) rename xflaim/{ => src}/java/xflaim/IStream.java (100%) rename xflaim/{ => src}/java/xflaim/ImportStats.java (100%) rename xflaim/{ => src}/java/xflaim/IndexState.java (100%) rename xflaim/{ => src}/java/xflaim/IndexStatus.java (100%) rename xflaim/{ => src}/java/xflaim/InsertLoc.java (100%) rename xflaim/{ => src}/java/xflaim/IxClient.java (100%) rename xflaim/{ => src}/java/xflaim/IxStatus.java (100%) rename xflaim/{ => src}/java/xflaim/KeyRetrieveFlags.java (100%) rename xflaim/{ => src}/java/xflaim/LFileStats.java (100%) rename xflaim/{ => src}/java/xflaim/LockStats.java (100%) rename xflaim/{ => src}/java/xflaim/LockType.java (100%) rename xflaim/{ => src}/java/xflaim/LockUser.java (100%) rename xflaim/{ => src}/java/xflaim/OStream.java (100%) rename xflaim/{ => src}/java/xflaim/OptInfo.java (100%) rename xflaim/{ => src}/java/xflaim/OptType.java (100%) rename xflaim/{ => src}/java/xflaim/Query.java (100%) rename xflaim/{ => src}/java/xflaim/QueryOperators.java (100%) rename xflaim/{ => src}/java/xflaim/RCODE.java (100%) rename xflaim/{ => src}/java/xflaim/RTransStats.java (100%) rename xflaim/{ => src}/java/xflaim/RebuildStatus.java (100%) rename xflaim/{ => src}/java/xflaim/ReserveID.java (100%) rename xflaim/{ => src}/java/xflaim/RestoreAction.java (100%) rename xflaim/{ => src}/java/xflaim/RestoreClient.java (100%) rename xflaim/{ => src}/java/xflaim/RestoreStatus.java (100%) rename xflaim/{ => src}/java/xflaim/ResultSetCounts.java (100%) rename xflaim/{ => src}/java/xflaim/SearchFlags.java (100%) rename xflaim/{ => src}/java/xflaim/SlabUsage.java (100%) rename xflaim/{ => src}/java/xflaim/Stats.java (100%) rename xflaim/{ => src}/java/xflaim/TransactionFlags.java (100%) rename xflaim/{ => src}/java/xflaim/TransactionType.java (100%) rename xflaim/{ => src}/java/xflaim/UTransStats.java (100%) rename xflaim/{ => src}/java/xflaim/XFlaimException.java (100%) rename xflaim/{ => src}/java/xflaim/XPathAxis.java (100%) delete mode 100644 xflaim/src/xflaimtk.h create mode 100644 xflaim/util/Makefile.am diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..eac14e5 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,11 @@ +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = ftk flaim sql xflaim + +rpms srcrpm: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir $@; \ + done + +.PHONY: rpms srcrpm + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..b671d6e --- /dev/null +++ b/configure.ac @@ -0,0 +1,15 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.62]) +AC_INIT([flaim-projects], [1.0]) +AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE([-Wall -Werror foreign]) +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SUBDIRS([ftk flaim sql xflaim]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT + diff --git a/flaim/AUTHORS b/flaim/AUTHORS index 8c6c0a4..cb7e8d5 100644 --- a/flaim/AUTHORS +++ b/flaim/AUTHORS @@ -1,4 +1,3 @@ -Daniel Sanders (dsanders@novell.com) -Andrew Hodgkinson (ahodgkinson@novell.com) +Andrew Hodgkinson +Daniel Sanders -... and many others ... diff --git a/flaim/COPYING b/flaim/COPYING index b0ab9a2..b6cf0cf 100644 --- a/flaim/COPYING +++ b/flaim/COPYING @@ -1,8 +1,59 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 +FLAIM database engine +Copyright (c) 1991-2008 Novell, Inc. All Rights Reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, contact Novell, Inc. + +To contact Novell about this file by physical or electronic mail, +you may find current contact information at www.novell.com. + +------------------------------------------------------------------------------ + +svn2cl.xsl +Copyright (C) 2004, 2005, 2006 Arthur de Jong. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +3. The name of the author may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -10,7 +61,7 @@ as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -55,7 +106,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -111,8 +162,8 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE + + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other @@ -158,7 +209,7 @@ Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 @@ -216,7 +267,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -267,7 +318,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -329,7 +380,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -370,7 +421,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -422,7 +473,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -432,7 +483,7 @@ decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -455,5 +506,49 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/flaim/COPYRIGHT b/flaim/COPYRIGHT deleted file mode 100644 index c74676a..0000000 --- a/flaim/COPYRIGHT +++ /dev/null @@ -1,51 +0,0 @@ -FLAIM database engine -Copyright (c) 1991-2007 Novell, Inc. All Rights Reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; version 2.1 -of the License. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, contact Novell, Inc. - -To contact Novell about this file by physical or electronic mail, -you may find current contact information at www.novell.com. - -On a Debian system, a copy of the GNU LGPL is installed in - /usr/share/common-licenses/LGPL - ------------------------------------------------------------------------------- - -svn2cl.xsl -Copyright (C) 2004, 2005, 2006 Arthur de Jong. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. -3. The name of the author may not be used to endorse or promote - products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/flaim/ChangeLog b/flaim/ChangeLog index e69de29..dff337d 100644 --- a/flaim/ChangeLog +++ b/flaim/ChangeLog @@ -0,0 +1,189 @@ +2008-06-25 John Calcote + + * Added GNU Autotools build system. + +------------------------------------------------------------------- +OLD CHANGELOG INFORMATION APPENDED BELOW THIS POINT +------------------------------------------------------------------- + +Thu Mar 29 08:45:10 MST 2007 - dsanders@novell.com + +- Fixed problem of accessing FlmRecord object before it was constructed. + +------------------------------------------------------------------- +Thu Mar 29 09:08:00 CEST 2007 - aj@suse.de + +- Add BuildRequires for ncurses-devel. + +------------------------------------------------------------------- +Sat Feb 10 15:46:50 CET 2007 - aj@suse.de + +- Add defattr. + +------------------------------------------------------------------- +Thu Feb 8 14:20:19 MST 2007 - dsanders@novell.com + +- Changes to support Ubuntu packages, including 64-bit. +- Needed to lock the record cache mutex in FlmRecord::Release just before deleting the object to prevent a race condition. +- Changed license to LGPL. +- Updated copyright. +- Added pragmas for windows to remove compiler warnings for VC6 compiler. +- Fixed keyword substitution tokens. +- Added FlmReadFully() and enhanced the base64 decoder. +- Removed commands in makefile that was outputting provides to the spec file. + +------------------------------------------------------------------- +Fri Feb 2 00:51:49 CET 2007 - ro@suse.de + +- remove self-provides from devel package + +------------------------------------------------------------------- +Thu Nov 16 16:15:33 MST 2006 - dsanders@novell.com + +- Removed .exe files from package. +- Removed /zp1 compiler switch and added pragmas to do one-byte packing on structures. +- Getting rid of references to gv_FlmSysData. +- Needed to add a (FLMUINT) cast to a FLMBOOL before it can be cast as a void *. +- Fixed mis-typed member of OPT_INFO structure. +- Fixed Linux compiler warnings. +- Changed several places that needed to access pDbInfo->pProgress instead of just Progress. +- Support for Ubuntu and Debian packages + +------------------------------------------------------------------- +Fri Sep 29 21:16:21 CEST 2006 - aj@suse.de + +- Remove explicit self-provides + +------------------------------------------------------------------- +Tue Sep 8 13:21:13 MST 2006 - dsanders@novell.com + +- Added support for 64 bit numbers. +- Modified to use aligned buffers to improve direct I/O efficiency. +- Modified block cache allocator to make more efficient use of memory. +- Added option to allow disabling of direct I/O on Linux and Unix platforms. +- Enhancements to reduce the overhead of growing and shrinking files. +- Modified async I/O to make better reuse of available buffers when writes complete out of order. +- Fixed some memory leaks and other minor defects. +- Added more asserts to debug code. +- Enhancements and improvements to the field ID table inside of FlmRecord object. +- Updated doxygen document to be more accurate. +- Added a gigatest utility for testing bulk loads. +- Added more unit tests. +- Various tweaks for better support of various platforms and compilers. + +------------------------------------------------------------------- +Tue Jun 27 14:41:47 MST 2006 - dsanders@novell.com + +- Needed to make some typedefs public for Solaris 8. +- Also fixed so that flaimtk.h is copied from ftk.h when building srcdist + +------------------------------------------------------------------- +Fri Jun 23 01:15:10 CEST 2006 - ro@suse.de + +- removed buggy self-provides from devel package + +------------------------------------------------------------------- +Thu Jun 22 16:47:31 MST 2006 - dsanders@novell.com + +- Modified common toolkit formatter to support colors when logging. +- Modified to use common formatter in toolkit for logging. + +------------------------------------------------------------------- +Tue Jun 20 12:57:13 MST 2006 - dsanders@novell.com + +- Logger client was not being set up properly in common toolkit. +- Fixed a Netware build issue +- Fixed an OS X compiler warning +- Fixed linux compiler warning +- Needed to lock/unlock the random generator mutex when getting a random number. +- f_printf needed to call fflush. +- Base 64 decoder needed to return success instead of eof hit. + +------------------------------------------------------------------- +Mon Jun 19 09:00:27 MST 2006 - dsanders@novell.com + +- Restructured code to use new common toolkit +- Support for Netware, including unit tests +- Fixed various memory leaks and enabled memory tracking for debug builds. +- Made some changes for how async I/O is supported on Solaris. +- Fixed various compiler warnings on various platforms. +- Added more documentation. + +------------------------------------------------------------------- +Thu Jun 1 13:30:07 MST 2006 - dsanders@novell.com + +- Fixed compiler warnings for ia64 platform. + +------------------------------------------------------------------- +Tue May 30 11:37:12 MST 2006 - dsanders@novell.com + +- Added support for Sparc Linux and OpenSuse 10.1 +- Various Makefile changes for HP-UX, OS X, and Solaris +- Various code cleanups to support a common toolkit +- Got rid of timeouts for internal transactions. +- Removed some unused methods from the FlmRecord class. +- Fixed defect where partial blocks were being written at the end of database files +- Fixed race condition that was causing memory to be double-freed. +- Added better support for atomic operations on various Unix and Linux platforms. +- Allow application to exceed hardcoded cache limits when setting a hard cache limit. +- Changed RCODE to be an enumerated type - for easier documentation in doxygen. +- Fixed various compiler issues for solaris platform +- Added support for large binary and text fields (up to 4 GB) +- Added async and direct I/O support for Linux and Solaris +- Added new field table for level one fields inside FlmRecords to speed up searches. +- Added support for Netware +- Fixed double mutex lock issue. +- Added support for building Windows binaries with Visual Studio 8. +- Modified slab manager on Solaris to use regular malloc calls instead of mmap. + +------------------------------------------------------------------- +Tue Feb 28 13:41:42 MST 2006 - dsanders@novell.com + +- Added support for Intel MAC and __sparc49 (64 bit) platforms +- Initialized variables to quiet compiler warnings +- Got rid of unneeded internal functions +- Various fixes for Windows - support for vc8 compiler, workaround to compiler issues with inline methods +- Fixedup copyright notice in one source file + +------------------------------------------------------------------- +Mon Feb 13 11:14:33 MST 2006 - dsanders@novell.com + +- Changed naming convention for shared library to conform to standard - should be no need for SONAME fix now. +- Added dbshell utility. +- Started adding support for using autotools. +- Fixed bug on FlmDbReduceSize - needed to quit when encountering a block in a not-yet-deleted b-tree +- Added various new unit tests. +- Fixed various compiler warnings. + +------------------------------------------------------------------- +Mon Feb 13 16:21:11 CET 2006 - ro@suse.de + +- install the SONAME at least as symlink (should be the real file) + +------------------------------------------------------------------- +Wed Feb 8 09:49:29 MST 2006 - dsanders@novell.com + +- Removed make.exe and printf.exe from package. +- Added support for Ubuntu and Debian +- Simplified how unit tests are created. +- Added some new unit tests + +------------------------------------------------------------------- +Fri Feb 3 13:14:25 MST 2006 - dsanders@novell.com + +- Fixed libflaim.pc to specify includedir and Cflags: +- Also changed name: to Name: +- Modified Makefile to use macros for outputting $ and % characters + +------------------------------------------------------------------- +Fri Feb 3 09:13:02 MST 2006 - dsanders@novell.com + +- Added support for PowerPC architectures +- Changed so that revision number for RPMs will match version number +- in SVN repository. + +------------------------------------------------------------------- +Wed Feb 1 11:54:08 MST 2006 - dsanders@novell.com + +- Initial submission + diff --git a/flaim/Makefile b/flaim/GNUMakefile similarity index 100% rename from flaim/Makefile rename to flaim/GNUMakefile diff --git a/flaim/Makefile.am b/flaim/Makefile.am index b5d256f..e1d6de4 100644 --- a/flaim/Makefile.am +++ b/flaim/Makefile.am @@ -1 +1,19 @@ -SUBDIRS = src util +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = GNUMakefile debian netware + +SUBDIRS = $(subdirs) src util sample docs obs + +doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README + +rpms srcrpm: dist + $(MAKE) -C obs $(AM_MAKEFLAGS) $@ + rpmarch=`rpm --showrc | grep ^build\ arch | sed 's/\(.*: \)\(.*\)/\2/'`; \ + test -z $$rpmarch || ( mv $$rpmarch/* .; rm -rf $$rpmarch ) + -rm -rf $(distdir) + +dist-hook: + -rm -rf `find $(distdir) -name .svn` + +.PHONY: srcrpm rpms + diff --git a/flaim/NEWS b/flaim/NEWS index e69de29..e33c468 100644 --- a/flaim/NEWS +++ b/flaim/NEWS @@ -0,0 +1,3 @@ +FLAIM Release 4.10 +------------------ + diff --git a/flaim/README b/flaim/README index e69de29..a898af0 100644 --- a/flaim/README +++ b/flaim/README @@ -0,0 +1,3 @@ +FLAIM - FLexible Adaptable Information Management +------------------------------------------------- + diff --git a/flaim/autogen.sh b/flaim/autogen.sh deleted file mode 100755 index 029666c..0000000 --- a/flaim/autogen.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir -PROJECT=flaim -TEST_TYPE=-f -FILE=src/flaim.h - -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have autoconf installed to compile $PROJECT." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have automake installed to compile $PROJECT." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -test $TEST_TYPE $FILE || { - echo "You must run this script in the top-level $PROJECT directory" - exit 1 -} - -aclocal $ACLOCAL_FLAGS -echo "aclocal done" -libtoolize --force --copy -echo "libtoolize done" -autoheader -echo "autoheader done" -automake --add-missing --copy $am_opt -echo "automake done" -autoconf -echo "autoconf done" -cd $ORIGDIR - -echo -echo "Now type 'configure' and 'make' to compile $PROJECT. You can do this" -echo "in a separate build directory if you wish" diff --git a/flaim/configure b/flaim/configure deleted file mode 100755 index f766bd8..0000000 --- a/flaim/configure +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -echo OSTYPE = $OSTYPE > config.in -echo HOSTTYPE = $HOSTTYPE >> config.in diff --git a/flaim/configure.ac b/flaim/configure.ac index e689f63..075f341 100644 --- a/flaim/configure.ac +++ b/flaim/configure.ac @@ -1,116 +1,173 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_INIT([flaim], [4.8], [flaim-bug@novell.com]) -AM_INIT_AUTOMAKE +AC_PREREQ([2.62]) +AC_INIT([FLAIM], [4.10], [flaim-users@forge.novell.com]) +AM_INIT_AUTOMAKE([-Wall -Werror]) +LT_PREREQ([2.2]) +LT_INIT([dlopen]) -AC_PREREQ(2.59) +AC_LANG(C++) +AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/flaim.h]) -AC_CONFIG_HEADER([config.h]) +AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CXX -AC_PROG_CC -AC_PROG_CPP -AC_PROG_INSTALL AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_PROG_LIBTOOL +AC_PROG_INSTALL + +# Checks for optional programs. +AC_PROG_TRY_DOXYGEN + +# Configure FTKLIB and FTKINC variables. +AC_ARG_VAR([FTKLIB], [The PATH wherein libflaimtk.la can be found.]) +AC_ARG_VAR([FTKINC], [The PATH wherein flaimtk.h can be found.]) + +# Ensure that both or neither FTK paths were specified. +if (test -n "$FTKLIB" && test -z "$FTKINC") || \ + (test -n "$FTKINC" && test -z "$FTKLIB"); then + AC_MSG_ERROR([Specify both FTK library and include paths, or neither.]) +fi + +# Not specified? Check for FTK in standard places. +if test -z "$FTKLIB"; then + # Check for flaim tool kit as a sub-project. + if test -d "$srcdir/ftk"; then + AC_CONFIG_SUBDIRS([ftk]) + FTKINC='$(top_srcdir)/ftk/src' + FTKLIB='$(top_builddir)/ftk/src' + else + # Check for flaim tool kit as a super-project. + if test -d "$srcdir/../ftk"; then + FTKINC='$(top_srcdir)/../ftk/src' + FTKLIB='$(top_builddir)/../ftk/src' + fi + fi +fi + +# Still empty? Check for *installed* flaim tool kit. +if test -z "$FTKLIB"; then + AC_CHECK_LIB([flaimtk], [ftkFastChecksum], + [AC_CHECK_HEADERS([flaimtk.h]) + LIBS="-lflaimtk $LIBS"], + [AC_MSG_ERROR([No FLAIM Took Kit found. Terminating.])]) +fi + +# AC_SUBST command line variables from FTKLIB and FTKINC. +if test -n "$FTKLIB"; then + AC_SUBST([FTK_LTLIB], ["$FTKLIB/libflaimtk.la"]) + AC_SUBST([FTK_INCLUDE], ["-I$FTKINC"]) +fi + +# Configure options: --enable-debug[=no]. +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable debug code (default is no)])], + [debug="$withval"], [debug=no]) + +# Check for doxygen program. +if test -z "$DOXYGEN"; then + echo "-----------------------------------------" + echo " No Doxygen program found - continuing" + echo " without Doxygen documentation support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != x]) # Checks for libraries. -AC_CHECK_LIB([ncurses], [initscr]) -AC_CHECK_LIB([dl], [dlopen]) -AC_CHECK_LIB([m], [log10]) -AC_CHECK_LIB([nsl], [gethostname]) -AC_CHECK_LIB([pthread], [pthread_create]) -AC_CHECK_LIB([socket], [socket]) # Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h memory.h netdb.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/param.h sys/socket.h sys/statvfs.h sys/time.h sys/vfs.h unistd.h utime.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL -AC_C_CONST AC_C_INLINE -AC_TYPE_MODE_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_HEADER_TIME -AC_STRUCT_TM -AC_C_VOLATILE # Checks for library functions. -AC_FUNC_LSTAT -AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK -AC_FUNC_MEMCMP -AC_FUNC_MKTIME -AC_FUNC_MMAP -AC_FUNC_SELECT_ARGTYPES -AC_TYPE_SIGNAL -AC_FUNC_STAT -AC_CHECK_FUNCS([atexit fdatasync ftruncate getcwd gethostbyaddr gethostbyname gethostname gethrtime gettimeofday inet_ntoa localtime_r memmove memset mkdir munmap pstat_getdynamic realpath rmdir select setenv socket strcasecmp strncasecmp strrchr strstr]) +AC_CHECK_FUNCS([atexit strchr]) -# -# Generic DEBUG support - default is OFF -# ON means with symbols, no optimization, DEBUG is defined -# OFF means with symbols, full optimization, NDEBUG is defined +# Configure compiler and platform flags and options. +# This stuff was in the original makefile... +# Personally, I believe -O2 does as good a job as +# a hand-coded set of optimization flags... +gcc_opt_flags="-O -foptimize-sibling-calls + -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks + -frerun-cse-after-loop -frerun-loop-opt -fgcse + -fgcse-lm -fgcse-sm -fdelete-null-pointer-checks + -fexpensive-optimizations -fregmove -fsched-interblock + -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -fcrossjumping" -AC_ARG_ENABLE(debug, - AS_HELP_STRING([--enable-debug], [Turn on debugging (default is OFF)]), - [case "${enableval}" in - yes) debug=yes ;; - no) debug=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; - esac], [debug=no]) -AM_CONDITIONAL(DEBUG, test x$debug = xyes) -AM_CONDITIONAL(NDEBUG, test x$debug = xno) -if test x$debug = xyes; then - AC_DEFINE(DEBUG, 1, [Defined for debug builds]) -else - AC_DEFINE(NDEBUG, 1, [Defined for non-debug builds]) +# Enable g++ specific compiler flags. +# Currently, enabling all warnings displays the type-pun error dozens +# of times, and of course enabling warnings as werrors breaks the build +#if test "x$CXX" = "xg++"; then +# CXXFLAGS="$CXXFLAGS -Wall -Werror" +# CXXFLAGS="$CXXFLAGS $gcc_opt_flags" +#fi + +# Configure DEBUG source code, if requested. +if test "x$debug" = xyes; then + AC_DEFINE([FLM_DEBUG], [], [Define to enable FLAIM debug features]) fi -# -# Set C/C++ compiler-specific warning/optimization/option flags +# Configure global pre-processor definitions. +AC_DEFINE([_REENTRANT], [], [Define for reentrant code]) +AC_DEFINE([_LARGEFILE64_SOURCE], [], [Define for 64-bit data files]) +AC_DEFINE([_LARGEFILE_SOURCE], [], [Define for 64-bit data files]) -CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" +# Configure supported platforms' compiler and linker flags. +case $host in + sparc-*-solaris*) + LDFLAGS="$LDFLAGS -R /usr/lib/lwp" + if "x$CXX" != "xg++"; then + if "x$debug" = xno; then + CXXFLAGS="$CXXFLAGS -xO3" + fi + SUN_STUDIO_COMPILER=`"$CXX" -V | grep "Sun C++"` + if "x$SUN_STUDIO_COMPILER" = "xSun C++"; then + CXXFLAGS="$CXXFLAGS -errwarn=%all -errtags -erroff=hidef,inllargeuse,doubunder" + fi + fi ;; -if test x$GCC = xyes; then - # GCC: turn on all warnings, set warnings as errors - # disable optimization for debug builds - # enable high-level optimizations for non-debug builds - CXXFLAGS="$CXXFLAGS -Wall -Werror" - if test x$debug = xyes; then - CXXFLAGS="$CXXFLAGS -O0" - else - CXXFLAGS="$CXXFLAGS -O3 -fgcse-sm" - fi -elif $CC -V 2>&1 | grep "WorkShop Compilers"; then - # Solaris Workshop: enable optimizations for debug builds - CXXFLAGS="$CXXFLAGS -errwarn=%all -errtags -erroff=hidef,inllargeuse" - if test x$debug = xno; then - CXXFLAGS="$CXXFLAGS -fast" - if echo $CC | grep "xarch=v9"; then - # -fast sets -xarch=v8 disabling 64-bit mode, enable it again - CXXFLAGS="$CXXFLAGS -xarch=v9" - fi - fi -elif echo $host_os | grep -i "osf" >/dev/null; then - # OSF: enable standard C (shouldn't be necessary) - # enable optimizations for non-debug builds - CXXFLAGS="$CXXFLAGS -std" - if test x$debug = xno; then - CXXFLAGS="$CXXFLAGS -O" - fi -else - # everything else: take a wild guess (shouldn't need this) - if test x$debug = xno; then - CXXFLAGS="$CXXFLAGS -O" - fi -fi + *-apple-darwin*) + AC_DEFINE([OSX], [], + [Define if building on Apple OSX.]) ;; -AC_CONFIG_FILES([Makefile src/Makefile util/Makefile]) + *-*-aix*) + if "x$CXX" != "xg++"; then + CXXFLAGS="$CXXFLAGS -qthreaded -qstrict -q$build_bits" + LDFLAGS="$LDFLAGS -q$build_bits -X$build_bits" + fi ;; + + *-*-hpux*) + if "x$CXX" != "xg++"; then + # Disable "Placement operator delete invocation is not yet implemented" warning + CXXFLAGS="$CXXFLAGS +W930" + fi ;; +esac + +AC_CONFIG_FILES([Makefile + docs/Makefile + docs/doxygen/Makefile + docs/doxygen/doxyfile + obs/flaim.spec + obs/Makefile + sample/Makefile + src/Makefile + util/Makefile]) AC_OUTPUT +echo " + FLAIM Database Library ($PACKAGE_NAME) version $PACKAGE_VERSION + Prefix.........: $prefix + Debug Build....: $debug + C++ Compiler...: $CXX $CXXFLAGS $CPPFLAGS + Linker.........: $LD $LDFLAGS $LIBS + FTK Library....: ${FTKLIB:-INSTALLED} + FTK Include....: ${FTKINC:-INSTALLED} + Doxygen........: ${DOXYGEN:-NONE} +" + diff --git a/flaim/ChangeLog.ubuntu b/flaim/debian/ChangeLog.ubuntu similarity index 100% rename from flaim/ChangeLog.ubuntu rename to flaim/debian/ChangeLog.ubuntu diff --git a/flaim/FLAIMArchitecture.odg b/flaim/docs/FLAIMArchitecture.odg similarity index 100% rename from flaim/FLAIMArchitecture.odg rename to flaim/docs/FLAIMArchitecture.odg diff --git a/flaim/FLAIMArchitecture.png b/flaim/docs/FLAIMArchitecture.png similarity index 100% rename from flaim/FLAIMArchitecture.png rename to flaim/docs/FLAIMArchitecture.png diff --git a/flaim/docs/Makefile.am b/flaim/docs/Makefile.am new file mode 100644 index 0000000..40015b4 --- /dev/null +++ b/flaim/docs/Makefile.am @@ -0,0 +1,13 @@ +EXTRA_DIST = flaim_4_database_format.doc FLAIMArchitecture.odg\ + FLAIMArchitecture.png introduction_to_flaim_4.doc + +if HAVE_DOXYGEN + SUBDIRS = doxygen +endif + +doc_DATA =\ + flaim_4_database_format.doc\ + FLAIMArchitecture.odg\ + FLAIMArchitecture.png\ + introduction_to_flaim_4.doc + diff --git a/flaim/docs/doxygen/Makefile.am b/flaim/docs/doxygen/Makefile.am new file mode 100644 index 0000000..10c7121 --- /dev/null +++ b/flaim/docs/doxygen/Makefile.am @@ -0,0 +1,16 @@ +docpkg = $(PACKAGE_TARNAME)-doxy-$(PACKAGE_VERSION).tar.gz + +doc_DATA = $(docpkg) + +$(docpkg): doxygen.stamp + tar chof - html | gzip -9 -c >$@ + +doxygen.stamp: doxyfile + $(DOXYGEN) $(DOXYFLAGS) $< + echo Timestamp > $@ + +CLEANFILES = doxywarn.txt doxygen.stamp $(docpkg) + +clean-local: + -rm -rf html + diff --git a/flaim/Doxyfile b/flaim/docs/doxygen/doxyfile.in similarity index 97% rename from flaim/Doxyfile rename to flaim/docs/doxygen/doxyfile.in index c381712..f538a98 100644 --- a/flaim/Doxyfile +++ b/flaim/docs/doxygen/doxyfile.in @@ -2,7 +2,7 @@ # Desc: Doxyfile 1.4.6 # Tabs: 3 # -# Copyright (c) 2006-2007 Novell, Inc. All Rights Reserved. +# Copyright (c) 2007 Novell, Inc. All Rights Reserved. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -26,9 +26,9 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "FLAIM" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = build/docs +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = YES @@ -48,7 +48,7 @@ ABBREVIATE_BRIEF = "The $name class" \ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO -STRIP_FROM_PATH = "" +STRIP_FROM_PATH = @top_srcdir@ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES @@ -101,7 +101,7 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = +WARN_LOGFILE = doxywarn.txt #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- diff --git a/flaim/m4/ac_prog_try_doxygen.m4 b/flaim/m4/ac_prog_try_doxygen.m4 new file mode 100644 index 0000000..88711e4 --- /dev/null +++ b/flaim/m4/ac_prog_try_doxygen.m4 @@ -0,0 +1,17 @@ +dnl @synopsis AC_PROG_TRY_DOXYGEN +dnl +dnl AC_PROG_TRY_DOXYGEN tests for an existing doxygen program. +dnl It sets or uses the environment variable DOXYGEN. +dnl +dnl You can use the DOXYGEN variable in your Makefile.in, with +dnl @DOXYGEN@. +dnl +dnl @category Doxygen +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license AllPermissive + +AC_DEFUN([AC_PROG_TRY_DOXYGEN],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$DOXYGEN" && AC_CHECK_PROGS([DOXYGEN], [doxygen$EXEEXT])dnl +]) diff --git a/flaim/make.exe b/flaim/make.exe deleted file mode 100644 index 54d888d7630b6072ef9730e674afa5ce77325365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241664 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 /dev/null; \ + if [ $$? -ne 0 ]; then \ + echo "*** This make target requires an rpm-based linux distribution."; \ + (exit 1); exit 1; \ + fi + +srcrpm: rpmcheck $(rpmspec) + rpmbuild -bs $(rpmmacros) $(rpmopts) $(rpmspec) + +rpms: rpmcheck $(rpmspec) + rpmbuild -ba $(rpmmacros) $(rpmopts) $(rpmspec) + +.PHONY: rpmcheck srcrpm rpms + diff --git a/flaim/obs/flaim.spec.in b/flaim/obs/flaim.spec.in new file mode 100644 index 0000000..687a3ae --- /dev/null +++ b/flaim/obs/flaim.spec.in @@ -0,0 +1,73 @@ +Name: @PACKAGE_TARNAME@ +BuildRequires: gcc-c++ libstdc++-devel doxygen +Requires: libstdc++ +Summary: FLAIM is a database library. +URL: http://forge.novell.com/modules/xfmod/project/?flaim +Version: @PACKAGE_VERSION@ +Release: 1 +License: GPL +Vendor: Novell, Inc. +Group: Development/Libraries/C and C++ +Source: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +FLAIM is a database library. + +Authors: +-------- + dsanders@novell.com + ahodgkinson@novell.com + +%package devel +Summary: FLAIM static library and header file +Group: Development/Libraries/C and C++ + +%description devel +FLAIM is a database library. + +%prep +%setup -q + +%build +%configure +make + +%install +rm -rf ${RPM_BUILD_ROOT} +make DESTDIR=${RPM_BUILD_ROOT} install +if test -f ${RPM_BUILD_ROOT}/usr/include/flaimtk.h; then + rm ${RPM_BUILD_ROOT}/usr/include/flaimtk.h + rm ${RPM_BUILD_ROOT}/usr/lib64/libflaimtk.* + rm -rf ${RPM_BUILD_ROOT}/usr/share/doc/ftk +fi + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%files +%defattr(-,root,root) +%doc %{_datadir}/doc/%{name}/AUTHORS +%doc %{_datadir}/doc/%{name}/ChangeLog +%doc %{_datadir}/doc/%{name}/COPYING +%doc %{_datadir}/doc/%{name}/INSTALL +%doc %{_datadir}/doc/%{name}/NEWS +%doc %{_datadir}/doc/%{name}/README +%doc %{_datadir}/doc/%{name}/%{name}-doxy-%{version}.tar.gz +%doc %{_datadir}/doc/%{name}/FLAIMArchitecture.odg +%doc %{_datadir}/doc/%{name}/FLAIMArchitecture.png +%doc %{_datadir}/doc/%{name}/flaim_4_database_format.doc +%doc %{_datadir}/doc/%{name}/introduction_to_flaim_4.doc +%{_libdir}/libflaim.la +%{_libdir}/libflaim.so* +%{_bindir}/flmcheckdb +%{_bindir}/flmrebuild +%{_bindir}/flmsample +%{_bindir}/flmview +%{_bindir}/flmdbshell +%{_bindir}/flmgigatest + +%files devel +%{_libdir}/libflaim.a +%{_includedir}/flaim.h + diff --git a/flaim/sample/Makefile.am b/flaim/sample/Makefile.am new file mode 100644 index 0000000..88945e7 --- /dev/null +++ b/flaim/sample/Makefile.am @@ -0,0 +1,9 @@ +bin_PROGRAMS = sample + +FLAIM_INC=-I$(top_srcdir)/src +FLAIM_LIB=../src/libflaim.la + +sample_SOURCES = sample.cpp +sample_CPPFLAGS = $(FLAIM_INC) $(FTK_INCLUDE) +sample_LDADD = $(FLAIM_LIB) + diff --git a/flaim/util/sample.cpp b/flaim/sample/sample.cpp similarity index 100% rename from flaim/util/sample.cpp rename to flaim/sample/sample.cpp diff --git a/flaim/src/Makefile.am b/flaim/src/Makefile.am new file mode 100644 index 0000000..653cb9f --- /dev/null +++ b/flaim/src/Makefile.am @@ -0,0 +1,121 @@ +lib_LTLIBRARIES = libflaim.la +include_HEADERS = flaim.h + +libflaim_la_SOURCES = \ + checksum.cpp \ + fblob.cpp \ + fcs.cpp \ + fcs.h \ + fdbcnfig.cpp \ + fdbcopy.cpp \ + fdb.cpp \ + fdbremov.cpp \ + fdbrenam.cpp \ + fdict.cpp \ + fdict.h \ + ffilehdr.cpp \ + fgedcom.cpp \ + filesys.h \ + flaimsys.h \ + flbackup.cpp \ + flchkdb.cpp \ + flclose.cpp \ + flconvrt.cpp \ + flcreate.cpp \ + fldbglog.cpp \ + flerror.cpp \ + flindex.cpp \ + flkeyret.cpp \ + flmimon.cpp \ + flmimon.h \ + flmstat.cpp \ + flmstat.h \ + flopen.cpp \ + flrddrct.cpp \ + flreduce.cpp \ + flsweep.cpp \ + flupdate.cpp \ + flverify.cpp \ + fmisc.cpp \ + f_nici.cpp \ + f_nici.h \ + fntable.cpp \ + fnumber.cpp \ + fpackoff.h \ + fpackon.h \ + fqcur.cpp \ + fqdecl.cpp \ + fqeval.cpp \ + fqget.cpp \ + fqkeys.cpp \ + fqlog.cpp \ + fqopt.cpp \ + fqparse.cpp \ + fqprep.cpp \ + fqread.cpp \ + fqsrch.cpp \ + fqstack.cpp \ + fquery.h \ + frebuild.cpp \ + frec.cpp \ + frecset.cpp \ + fsblk_u.cpp \ + fscomblk.cpp \ + fsconvrt.cpp \ + fscounts.cpp \ + fscursor.cpp \ + fscursor.h \ + fsdatacu.cpp \ + fsdelelm.cpp \ + fsinselm.cpp \ + fslfile.cpp \ + fslfileu.cpp \ + fsnext.cpp \ + fsprev.cpp \ + fsrecget.cpp \ + fsrecupd.cpp \ + fsrefspl.cpp \ + fsrefupd.cpp \ + fssearch.cpp \ + fssplblk.cpp \ + fstructs.h \ + fsv.cpp \ + fsv.h \ + fsysdata.cpp \ + ftext.cpp \ + ftrans.cpp \ + furl.cpp \ + furl.h \ + imonbase.cpp \ + imonchk.cpp \ + imonerr.cpp \ + imonfact.cpp \ + imonfdb.cpp \ + imonffil.cpp \ + imonfhsh.cpp \ + imonfram.cpp \ + imonfsys.cpp \ + imonix.cpp \ + imonlhdr.cpp \ + imonqury.cpp \ + imonrche.cpp \ + imonrec.cpp \ + imonscfg.cpp \ + imonsche.cpp \ + imonsel.cpp \ + imonstat.cpp \ + imonutil.cpp \ + kybuild.cpp \ + kycollat.cpp \ + kyget.cpp \ + lock.cpp \ + rcache.cpp \ + recover.cpp \ + rfl.cpp \ + rfl.h \ + scache.cpp \ + translog.cpp + +libflaim_la_CPPFLAGS = $(FTK_INCLUDE) +libflaim_la_LIBADD = $(FTK_LTLIB) +libflaim_la_LDFLAGS = -version-info 5:2:0 diff --git a/flaim/src/flaim.h b/flaim/src/flaim.h index 5289cab..2b79500 100644 --- a/flaim/src/flaim.h +++ b/flaim/src/flaim.h @@ -29,7 +29,7 @@ #ifndef FLAIM_H #define FLAIM_H - #include "flaimtk.h" + #include #ifdef FLM_PACK_STRUCTS #pragma pack(push, 1) diff --git a/flaim/src/flaimsys.h b/flaim/src/flaimsys.h index fc8f29e..18bd3d8 100644 --- a/flaim/src/flaimsys.h +++ b/flaim/src/flaimsys.h @@ -27,6 +27,10 @@ #ifndef FLAIMSYS_H #define FLAIMSYS_H +#if HAVE_CONFIG_H + #include +#endif + #include "flaim.h" #if defined( FLM_WIN) diff --git a/flaim/src/flaimtk.h b/flaim/src/flaimtk.h deleted file mode 100644 index 0911ab9..0000000 --- a/flaim/src/flaimtk.h +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// Desc: Placeholder for FLAIM's cross-platform toolkit public definitions -// and interfaces -// -// Tabs: 3 -// -// Copyright (c) 2006-2007 Novell, Inc. All Rights Reserved. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; version 2.1 -// of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Library Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, contact Novell, Inc. -// -// To contact Novell about this file by physical or electronic mail, -// you may find current contact information at www.novell.com. -// -// $Id$ -//------------------------------------------------------------------------------ - -#include "ftk.h" diff --git a/flaim/util/Makefile.am b/flaim/util/Makefile.am new file mode 100644 index 0000000..97204aa --- /dev/null +++ b/flaim/util/Makefile.am @@ -0,0 +1,69 @@ +EXTRA_DIST = ha_flaim.cpp ha_flaim.h rflread.cpp rflread.h viewrfl.cpp + +## Utility Programs + +bin_PROGRAMS = flmcheckdb flmrebuild flmview flmdbshell flmgigatest + +flmcheckdb_SOURCES = checkdb.cpp +flmcheckdb_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +flmcheckdb_LDADD = libutil.la ../src/libflaim.la + +flmrebuild_SOURCES = rebuild.cpp +flmrebuild_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +flmrebuild_LDADD = libutil.la ../src/libflaim.la + +flmview_SOURCES = \ + flmarg.h \ + viewblk.cpp \ + view.cpp \ + viewdisp.cpp \ + viewedit.cpp \ + viewfhdr.cpp \ + view.h \ + viewlfil.cpp \ + viewlhdr.cpp \ + viewmenu.cpp \ + viewsrch.cpp +flmview_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +flmview_LDADD = libutil.la ../src/libflaim.la + +flmdbshell_SOURCES = \ + dbshell.cpp \ + dbshell.h \ + flm_edit.cpp \ + flm_edit.h +flmdbshell_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +flmdbshell_LDADD = libutil.la ../src/libflaim.la + +flmgigatest_SOURCES = gigatest.cpp gigatest.h +flmgigatest_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +flmgigatest_LDADD = libutil.la ../src/libflaim.la + +## Utility Convenience Library + +noinst_LTLIBRARIES = libutil.la + +libutil_la_SOURCES = \ + flm_dlst.cpp \ + flm_dlst.h \ + flm_lutl.cpp \ + flm_lutl.h \ + sharutil.cpp \ + sharutil.h +libutil_la_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) + +## Check Programs + +check_PROGRAMS = ut_basictest +check_HEADERS = flmunittest.h + +ut_basictest_SOURCES = basic_test.cpp flmunittest.cpp +ut_basictest_CPPFLAGS = -I$(top_srcdir)/src $(FTK_INCLUDE) +ut_basictest_LDADD = libutil.la ../src/libflaim.la + +## Unit Tests + +TESTS = ut_basictest + +clean-local: + -rm -rf samplebackup samplerestore.* diff --git a/ftk/AUTHORS b/ftk/AUTHORS index 8c6c0a4..cb7e8d5 100644 --- a/ftk/AUTHORS +++ b/ftk/AUTHORS @@ -1,4 +1,3 @@ -Daniel Sanders (dsanders@novell.com) -Andrew Hodgkinson (ahodgkinson@novell.com) +Andrew Hodgkinson +Daniel Sanders -... and many others ... diff --git a/ftk/COPYING b/ftk/COPYING index b0ab9a2..afe4a3f 100644 --- a/ftk/COPYING +++ b/ftk/COPYING @@ -1,8 +1,29 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 +FLAIM cross-platform toolkit +Copyright (c) 2000-2008 Novell, Inc. All Rights Reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, contact Novell, Inc. + +To contact Novell about this file by physical or electronic mail, +you may find current contact information at www.novell.com. + +------------------------------------------------------------------------------ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -10,7 +31,7 @@ as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -55,7 +76,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -111,8 +132,8 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE + + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other @@ -158,7 +179,7 @@ Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 @@ -216,7 +237,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -267,7 +288,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -329,7 +350,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -370,7 +391,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -422,7 +443,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -432,7 +453,7 @@ decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -455,5 +476,49 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/ftk/COPYRIGHT b/ftk/COPYRIGHT deleted file mode 100644 index 10a6e54..0000000 --- a/ftk/COPYRIGHT +++ /dev/null @@ -1,21 +0,0 @@ -FLAIM cross-platform toolkit -Copyright (c) 2000-2007 Novell, Inc. All Rights Reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; version 2.1 -of the License. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, contact Novell, Inc. - -To contact Novell about this file by physical or electronic mail, -you may find current contact information at www.novell.com. - -On a Debian system, a copy of the GNU LGPL is installed in - /usr/share/common-licenses/LGPL diff --git a/ftk/ChangeLog b/ftk/ChangeLog index e69de29..553b387 100644 --- a/ftk/ChangeLog +++ b/ftk/ChangeLog @@ -0,0 +1,4 @@ +2008-06-25 John Calcote + + * Added GNU Autotools build system. + diff --git a/ftk/Makefile b/ftk/GNUMakefile similarity index 100% rename from ftk/Makefile rename to ftk/GNUMakefile diff --git a/ftk/INSTALL b/ftk/INSTALL new file mode 100644 index 0000000..d3c5b40 --- /dev/null +++ b/ftk/INSTALL @@ -0,0 +1,237 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007 Free Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 6. Often, you can also type `make uninstall' to remove the installed + files again. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/ftk/Makefile.am b/ftk/Makefile.am new file mode 100644 index 0000000..8851433 --- /dev/null +++ b/ftk/Makefile.am @@ -0,0 +1,23 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = GNUMakefile debian netware + +SUBDIRS = src util obs + +if HAVE_DOXYGEN + SUBDIRS += docs +endif + +doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README + +rpms srcrpm: dist + $(MAKE) -C obs $(AM_MAKEFLAGS) $@ + rpmarch=`rpm --showrc | grep ^build\ arch | sed 's/\(.*: \)\(.*\)/\2/'`; \ + test -z $$rpmarch || ( mv $$rpmarch/* .; rm -rf $$rpmarch ) + -rm -rf $(distdir) + +dist-hook: + -rm -rf `find $(distdir) -name .svn` + +.PHONY: srcrpm rpms + diff --git a/ftk/NEWS b/ftk/NEWS index e69de29..cee905f 100644 --- a/ftk/NEWS +++ b/ftk/NEWS @@ -0,0 +1,3 @@ +FTK Release 1.2 +--------------- + diff --git a/ftk/README b/ftk/README index e69de29..fe5b32e 100644 --- a/ftk/README +++ b/ftk/README @@ -0,0 +1,3 @@ +FTK - FLAIM Tool Kit +-------------------- + diff --git a/ftk/configure.ac b/ftk/configure.ac new file mode 100644 index 0000000..212d8dd --- /dev/null +++ b/ftk/configure.ac @@ -0,0 +1,158 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.62]) +AC_INIT([FTK], [1.2], [flaim-users@forge.novell.com]) +AM_INIT_AUTOMAKE([-Wall -Werror]) +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_LANG(C++) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/flaimtk.h]) +AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_INSTALL + +# Checks for optional programs. +AC_PROG_TRY_DOXYGEN + +# Configure options: --enable-debug[=no]. +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable debug code (default is no)])], + [debug="$withval"], [debug=no]) + +# Configure option: --enable-openssl[=no]. +AC_ARG_ENABLE([openssl], + [AS_HELP_STRING([--enable-openssl], + [enable the use of openssl (default is no)])], + [openssl="$withval"], [openssl=no]) + +# Check for doxygen program. +if test -z "$DOXYGEN"; then + echo "-----------------------------------------" + echo " No Doxygen program found - continuing" + echo " without Doxygen documentation support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) + +# Checks for libraries. +AC_CHECK_LIB([ncurses], [initscr]) +AC_CHECK_LIB([pthread], [pthread_create]) +AC_CHECK_LIB([rt], [aio_suspend]) +if test "x$openssl" = xyes; then + AC_DEFINE([FLM_OPENSSL], [], [Define to use openssl]) + AC_CHECK_LIB([ssl], [SSL_new]) + AC_CHECK_LIB([crypto], [CRYPTO_add]) + AC_CHECK_LIB([dl], [dlopen]) + AC_CHECK_LIB([z], [gzopen]) +fi + +# Checks for header files. +AC_HEADER_RESOLV +AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h netdb.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/mount.h sys/param.h sys/socket.h sys/statfs.h sys/statvfs.h sys/time.h sys/vfs.h unistd.h utime.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_INT32_T +AC_TYPE_MODE_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_CHECK_MEMBERS([struct stat.st_blksize]) +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK +AC_FUNC_MALLOC +AC_FUNC_MKTIME +AC_CHECK_FUNCS([atexit fdatasync ftruncate getcwd gethostbyaddr gethostbyname gethostname gethrtime gettimeofday inet_ntoa localtime_r memmove memset mkdir pstat_getdynamic realpath rmdir select socket strchr strrchr strstr]) + +# Configure compiler and platform flags and options. +# This stuff was in the original makefile... +# Personally, I believe -O2 does as good a job as +# a hand-coded set of optimization flags... +gcc_opt_flags="-O -foptimize-sibling-calls + -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks + -frerun-cse-after-loop -frerun-loop-opt -fgcse + -fgcse-lm -fgcse-sm -fdelete-null-pointer-checks + -fexpensive-optimizations -fregmove -fsched-interblock + -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -fcrossjumping" + +# Enable g++ specific compiler flags. +# Currently, enabling all warnings displays the type-pun error dozens +# of times, and of course enabling warnings as werrors breaks the build +#if test "x$CXX" = "xg++"; then +# CXXFLAGS="$CXXFLAGS -Wall -Werror" +# CXXFLAGS="$CXXFLAGS $gcc_opt_flags" +#fi + +# Configure DEBUG source code, if requested. +if test "x$debug" = xyes; then + AC_DEFINE([FLM_DEBUG], [], [Define to enable FLAIM debug features]) +fi + +# Configure global pre-processor definitions. +AC_DEFINE([_REENTRANT], [], [Define for reentrant code]) +AC_DEFINE([_LARGEFILE64_SOURCE], [], [Define for 64-bit data files]) +AC_DEFINE([_LARGEFILE_SOURCE], [], [Define for 64-bit data files]) + +# Configure supported platforms' compiler and linker flags. +case $host in + sparc-*-solaris*) + LDFLAGS="$LDFLAGS -R /usr/lib/lwp" + if "x$CXX" != "xg++"; then + if "x$debug" = xno; then + CXXFLAGS="$CXXFLAGS -xO3" + fi + SUN_STUDIO_COMPILER=`"$CXX" -V | grep "Sun C++"` + if "x$SUN_STUDIO_COMPILER" = "xSun C++"; then + CXXFLAGS="$CXXFLAGS -errwarn=%all -errtags -erroff=hidef,inllargeuse,doubunder" + fi + fi ;; + + *-apple-darwin*) + AC_DEFINE([OSX], [], + [Define if building on Apple OSX.]) ;; + + *-*-aix*) + if "x$CXX" != "xg++"; then + CXXFLAGS="$CXXFLAGS -qthreaded -qstrict" + fi ;; + + *-*-hpux*) + if "x$CXX" != "xg++"; then + # Disable "Placement operator delete invocation is not yet implemented" warning + CXXFLAGS="$CXXFLAGS +W930" + fi ;; +esac + +AC_CONFIG_FILES([Makefile + docs/Makefile + docs/doxyfile + obs/Makefile + obs/ftk.spec + src/Makefile + util/Makefile]) + +AC_OUTPUT + +echo " + FLAIM Tool Kit ($PACKAGE_NAME) version $PACKAGE_VERSION + Prefix.........: $prefix + Debug Build....: $debug + Using OpenSSL..: $openssl + C++ Compiler...: $CXX $CXXFLAGS $CPPFLAGS + Linker.........: $LD $LDFLAGS $LIBS + Doxygen........: ${DOXYGEN:-NONE} +" + diff --git a/ftk/ChangeLog.ubuntu b/ftk/debian/ChangeLog.ubuntu similarity index 100% rename from ftk/ChangeLog.ubuntu rename to ftk/debian/ChangeLog.ubuntu diff --git a/ftk/docs/Makefile.am b/ftk/docs/Makefile.am new file mode 100644 index 0000000..10c7121 --- /dev/null +++ b/ftk/docs/Makefile.am @@ -0,0 +1,16 @@ +docpkg = $(PACKAGE_TARNAME)-doxy-$(PACKAGE_VERSION).tar.gz + +doc_DATA = $(docpkg) + +$(docpkg): doxygen.stamp + tar chof - html | gzip -9 -c >$@ + +doxygen.stamp: doxyfile + $(DOXYGEN) $(DOXYFLAGS) $< + echo Timestamp > $@ + +CLEANFILES = doxywarn.txt doxygen.stamp $(docpkg) + +clean-local: + -rm -rf html + diff --git a/ftk/docs/README b/ftk/docs/README new file mode 100644 index 0000000..b1b776c --- /dev/null +++ b/ftk/docs/README @@ -0,0 +1,7 @@ +DOXYGEN Documentation +--------------------- + +The files in this directory are used to build doxygen documentation from +the source code in this project. The doxyfile is a Doxygen configuration +file. + diff --git a/ftk/Doxyfile b/ftk/docs/doxyfile.in similarity index 98% rename from ftk/Doxyfile rename to ftk/docs/doxyfile.in index 5459ad8..98a234d 100644 --- a/ftk/Doxyfile +++ b/ftk/docs/doxyfile.in @@ -26,9 +26,9 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "FTK" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = build/docs +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = YES @@ -48,7 +48,7 @@ ABBREVIATE_BRIEF = "The $name class" \ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO -STRIP_FROM_PATH = "" +STRIP_FROM_PATH = @top_srcdir@ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES @@ -101,7 +101,7 @@ WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = +WARN_LOGFILE = doxywarn.txt #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- diff --git a/ftk/m4/ac_prog_try_doxygen.m4 b/ftk/m4/ac_prog_try_doxygen.m4 new file mode 100644 index 0000000..88711e4 --- /dev/null +++ b/ftk/m4/ac_prog_try_doxygen.m4 @@ -0,0 +1,17 @@ +dnl @synopsis AC_PROG_TRY_DOXYGEN +dnl +dnl AC_PROG_TRY_DOXYGEN tests for an existing doxygen program. +dnl It sets or uses the environment variable DOXYGEN. +dnl +dnl You can use the DOXYGEN variable in your Makefile.in, with +dnl @DOXYGEN@. +dnl +dnl @category Doxygen +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license AllPermissive + +AC_DEFUN([AC_PROG_TRY_DOXYGEN],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$DOXYGEN" && AC_CHECK_PROGS([DOXYGEN], [doxygen$EXEEXT])dnl +]) diff --git a/ftk/make.exe b/ftk/make.exe deleted file mode 100644 index 54d888d7630b6072ef9730e674afa5ce77325365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241664 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 /dev/null; \ + if [ $$? -ne 0 ]; then \ + echo "*** This make target requires an rpm-based linux distribution."; \ + (exit 1); exit 1; \ + fi + +srcrpm: rpmcheck $(rpmspec) + rpmbuild -bs $(rpmmacros) $(rpmopts) $(rpmspec) + +rpms: rpmcheck $(rpmspec) + rpmbuild -ba $(rpmmacros) $(rpmopts) $(rpmspec) + +.PHONY: rpmcheck srcrpm rpms + diff --git a/ftk/obs/README b/ftk/obs/README new file mode 100644 index 0000000..198a25d --- /dev/null +++ b/ftk/obs/README @@ -0,0 +1,15 @@ +OpenSuSE Build System (OBS) +--------------------------- + +The OpenSuSE Build System is available at http://build.opensuse.org. This +really cool project allows individual contributors to become the package +maintainer for their own package repositories. It also provides a nice +compile farm, with the ability to produce packages for rpm and debian +based systems, including OpenSuSE, SuSE Linux Enterprise (SLE), RedHat +Fedora, Debian, Ubuntu, CentOS and more. + +The files in this directory are used only in the process of building various +binary packages on the OpenSuSE Build System. The only exception to this +statement is the rpm spec file, which is also used to build rpm files from +the command line using "make rpms". + diff --git a/ftk/obs/ftk.spec.in b/ftk/obs/ftk.spec.in new file mode 100644 index 0000000..d5e7bc1 --- /dev/null +++ b/ftk/obs/ftk.spec.in @@ -0,0 +1,58 @@ +Name: @PACKAGE_TARNAME@ +BuildRequires: gcc-c++ libstdc++ libstdc++-devel doxygen +Summary: FTK is the FLAIM cross-platfomr toolkit. +URL: http://forge.novell.com/modules/xfmod/project/?flaim +Version: @PACKAGE_VERSION@ +Release: 1 +License: GPL +Vendor: Novell, Inc. +Group: Development/Libraries/C and C++ +Source: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +FTK is the FLAIM cross-platform toolkit. + +Authors: +-------- + dsanders@novell.com + ahodgkinson@novell.com + +%package devel +Summary: FTK static library and header file +Group: Development/Libraries/C and C++ + +%description devel +FTK is the FLAIM cross-platform toolkit. + +%prep +%setup -q + +%build +%configure +make + +%install +rm -rf ${RPM_BUILD_ROOT} +make DESTDIR=${RPM_BUILD_ROOT} install + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%files +%defattr(-,root,root) +%doc %{_datadir}/doc/%{name}/AUTHORS +%doc %{_datadir}/doc/%{name}/ChangeLog +%doc %{_datadir}/doc/%{name}/COPYING +%doc %{_datadir}/doc/%{name}/COPYRIGHT +%doc %{_datadir}/doc/%{name}/INSTALL +%doc %{_datadir}/doc/%{name}/NEWS +%doc %{_datadir}/doc/%{name}/README +%doc %{_datadir}/doc/%{name}/%{name}-doxy-%{version}.tar.gz +%{_libdir}/libflaimtk.la +%{_libdir}/libflaimtk.so* + +%files devel +%{_libdir}/libflaimtk.a +%{_includedir}/flaimtk.h + diff --git a/ftk/src/Makefile.am b/ftk/src/Makefile.am new file mode 100644 index 0000000..e11b4fa --- /dev/null +++ b/ftk/src/Makefile.am @@ -0,0 +1,45 @@ +EXTRA_DIST = ftknlm.h + +lib_LTLIBRARIES = libflaimtk.la +include_HEADERS = flaimtk.h + +libflaimtk_la_SOURCES = \ + ftkarg.cpp \ + ftkbtree.cpp \ + ftkcmem.cpp \ + ftkcoll.cpp \ + ftkcsum.cpp \ + ftkdir.cpp \ + ftkdynbtree.cpp \ + ftkdynrset.cpp \ + ftkdynrset.h \ + ftkerror.cpp \ + ftkfsys.cpp \ + ftkftx.cpp \ + ftkhttp.cpp \ + ftkini.cpp \ + ftkiobuf.cpp \ + ftklock.cpp \ + ftklog.cpp \ + ftkmem.cpp \ + ftkmfh.cpp \ + ftkmisc.cpp \ + ftknet.cpp \ + ftknlm.cpp \ + ftkntab.cpp \ + ftkprntf.cpp \ + ftkrand.cpp \ + ftkrset.cpp \ + ftksem.cpp \ + ftkstrm.cpp \ + ftksupr.cpp \ + ftktext.cpp \ + ftkthrd.cpp \ + ftktime.cpp \ + ftksys.h \ + ftkunix.cpp \ + ftkwin.cpp \ + ftkxml.cpp + +libflaimtk_la_LDFLAGS = -version-info 0:0:0 + diff --git a/ftk/src/ftk.h b/ftk/src/flaimtk.h similarity index 99% rename from ftk/src/ftk.h rename to ftk/src/flaimtk.h index f6892d0..d45fa6a 100644 --- a/ftk/src/ftk.h +++ b/ftk/src/flaimtk.h @@ -443,6 +443,8 @@ #else #error Platform not supported #endif + + #define FLMEXPC FLMEXTC FLMEXP /**************************************************************************** Desc: Argument lists @@ -1057,9 +1059,9 @@ Desc: Startup and shutdown ****************************************************************************/ - RCODE FLMAPI ftkStartup( void); + FLMEXPC RCODE FLMAPI ftkStartup( void); - void FLMAPI ftkShutdown( void); + FLMEXPC void FLMAPI ftkShutdown( void); /**************************************************************************** Desc: Global data diff --git a/ftk/src/ftkdynrset.cpp b/ftk/src/ftkdynrset.cpp index 7e6686e..788cd9c 100644 --- a/ftk/src/ftkdynrset.cpp +++ b/ftk/src/ftkdynrset.cpp @@ -23,7 +23,7 @@ // $Id$ //------------------------------------------------------------------------------ -#include "ftk.h" +#include "flaimtk.h" #include "ftkdynrset.h" #define HASH_POS(vp) \ diff --git a/ftk/src/ftksys.h b/ftk/src/ftksys.h index 597e003..b4ace7a 100644 --- a/ftk/src/ftksys.h +++ b/ftk/src/ftksys.h @@ -27,8 +27,12 @@ #ifndef FTKSYS_H #define FTKSYS_H - #include "ftk.h" - + #ifdef HAVE_CONFIG_H + #include + #endif + + #include "flaimtk.h" + #ifdef FLM_NLM #if !defined( FLM_RING_ZERO_NLM) && !defined( FLM_LIBC_NLM) #define FLM_LIBC_NLM @@ -117,10 +121,6 @@ ****************************************************************************/ #if defined( FLM_UNIX) - #ifdef HAVE_CONFIG_H - #include "config.h" - #endif - #ifdef FLM_OSX #include #include diff --git a/ftk/util/Makefile.am b/ftk/util/Makefile.am new file mode 100644 index 0000000..096e025 --- /dev/null +++ b/ftk/util/Makefile.am @@ -0,0 +1,11 @@ +FTKINC=-I$(top_srcdir)/src +FTKLIB=../src/libflaimtk.la + +check_PROGRAMS = ftktest + +ftktest_SOURCES = ftktest.cpp +ftktest_CPPFLAGS = $(FTKINC) +ftktest_LDADD = $(FTKLIB) + +TESTS = ftktest + diff --git a/ftk/util/ftktest.cpp b/ftk/util/ftktest.cpp index 43da12d..681b0b4 100644 --- a/ftk/util/ftktest.cpp +++ b/ftk/util/ftktest.cpp @@ -23,7 +23,7 @@ // $Id$ //------------------------------------------------------------------------- -#include "ftk.h" +#include "flaimtk.h" #define F_ATOM_TEST_THREADS 64 #define F_ATOM_TEST_ITERATIONS 100000 @@ -4327,7 +4327,7 @@ int main( } if( RC_BAD( rc = pArgSet->addArg( "port", "listener port for RPC requests", - TRUE, F_ARG_OPTION, F_ARG_CONTENT_UNSIGNED_INT, 1, 65535))) + TRUE, F_ARG_OPTION, F_ARG_CONTENT_UNSIGNED_INT, (FLMUINT)1, (FLMUINT)65535))) { goto Exit; } diff --git a/libflaim.changes b/libflaim.changes deleted file mode 100644 index ac0210e..0000000 --- a/libflaim.changes +++ /dev/null @@ -1,182 +0,0 @@ -------------------------------------------------------------------- -Thu Mar 29 08:45:10 MST 2007 - dsanders@novell.com - -- Fixed problem of accessing FlmRecord object before it was constructed. - -------------------------------------------------------------------- -Thu Mar 29 09:08:00 CEST 2007 - aj@suse.de - -- Add BuildRequires for ncurses-devel. - -------------------------------------------------------------------- -Sat Feb 10 15:46:50 CET 2007 - aj@suse.de - -- Add defattr. - -------------------------------------------------------------------- -Thu Feb 8 14:20:19 MST 2007 - dsanders@novell.com - -- Changes to support Ubuntu packages, including 64-bit. -- Needed to lock the record cache mutex in FlmRecord::Release just before deleting the object to prevent a race condition. -- Changed license to LGPL. -- Updated copyright. -- Added pragmas for windows to remove compiler warnings for VC6 compiler. -- Fixed keyword substitution tokens. -- Added FlmReadFully() and enhanced the base64 decoder. -- Removed commands in makefile that was outputting provides to the spec file. - -------------------------------------------------------------------- -Fri Feb 2 00:51:49 CET 2007 - ro@suse.de - -- remove self-provides from devel package - -------------------------------------------------------------------- -Thu Nov 16 16:15:33 MST 2006 - dsanders@novell.com - -- Removed .exe files from package. -- Removed /zp1 compiler switch and added pragmas to do one-byte packing on structures. -- Getting rid of references to gv_FlmSysData. -- Needed to add a (FLMUINT) cast to a FLMBOOL before it can be cast as a void *. -- Fixed mis-typed member of OPT_INFO structure. -- Fixed Linux compiler warnings. -- Changed several places that needed to access pDbInfo->pProgress instead of just Progress. -- Support for Ubuntu and Debian packages - -------------------------------------------------------------------- -Fri Sep 29 21:16:21 CEST 2006 - aj@suse.de - -- Remove explicit self-provides - -------------------------------------------------------------------- -Tue Sep 8 13:21:13 MST 2006 - dsanders@novell.com - -- Added support for 64 bit numbers. -- Modified to use aligned buffers to improve direct I/O efficiency. -- Modified block cache allocator to make more efficient use of memory. -- Added option to allow disabling of direct I/O on Linux and Unix platforms. -- Enhancements to reduce the overhead of growing and shrinking files. -- Modified async I/O to make better reuse of available buffers when writes complete out of order. -- Fixed some memory leaks and other minor defects. -- Added more asserts to debug code. -- Enhancements and improvements to the field ID table inside of FlmRecord object. -- Updated doxygen document to be more accurate. -- Added a gigatest utility for testing bulk loads. -- Added more unit tests. -- Various tweaks for better support of various platforms and compilers. - -------------------------------------------------------------------- -Tue Jun 27 14:41:47 MST 2006 - dsanders@novell.com - -- Needed to make some typedefs public for Solaris 8. -- Also fixed so that flaimtk.h is copied from ftk.h when building srcdist - -------------------------------------------------------------------- -Fri Jun 23 01:15:10 CEST 2006 - ro@suse.de - -- removed buggy self-provides from devel package - -------------------------------------------------------------------- -Thu Jun 22 16:47:31 MST 2006 - dsanders@novell.com - -- Modified common toolkit formatter to support colors when logging. -- Modified to use common formatter in toolkit for logging. - -------------------------------------------------------------------- -Tue Jun 20 12:57:13 MST 2006 - dsanders@novell.com - -- Logger client was not being set up properly in common toolkit. -- Fixed a Netware build issue -- Fixed an OS X compiler warning -- Fixed linux compiler warning -- Needed to lock/unlock the random generator mutex when getting a random number. -- f_printf needed to call fflush. -- Base 64 decoder needed to return success instead of eof hit. - -------------------------------------------------------------------- -Mon Jun 19 09:00:27 MST 2006 - dsanders@novell.com - -- Restructured code to use new common toolkit -- Support for Netware, including unit tests -- Fixed various memory leaks and enabled memory tracking for debug builds. -- Made some changes for how async I/O is supported on Solaris. -- Fixed various compiler warnings on various platforms. -- Added more documentation. - -------------------------------------------------------------------- -Thu Jun 1 13:30:07 MST 2006 - dsanders@novell.com - -- Fixed compiler warnings for ia64 platform. - -------------------------------------------------------------------- -Tue May 30 11:37:12 MST 2006 - dsanders@novell.com - -- Added support for Sparc Linux and OpenSuse 10.1 -- Various Makefile changes for HP-UX, OS X, and Solaris -- Various code cleanups to support a common toolkit -- Got rid of timeouts for internal transactions. -- Removed some unused methods from the FlmRecord class. -- Fixed defect where partial blocks were being written at the end of database files -- Fixed race condition that was causing memory to be double-freed. -- Added better support for atomic operations on various Unix and Linux platforms. -- Allow application to exceed hardcoded cache limits when setting a hard cache limit. -- Changed RCODE to be an enumerated type - for easier documentation in doxygen. -- Fixed various compiler issues for solaris platform -- Added support for large binary and text fields (up to 4 GB) -- Added async and direct I/O support for Linux and Solaris -- Added new field table for level one fields inside FlmRecords to speed up searches. -- Added support for Netware -- Fixed double mutex lock issue. -- Added support for building Windows binaries with Visual Studio 8. -- Modified slab manager on Solaris to use regular malloc calls instead of mmap. - -------------------------------------------------------------------- -Tue Feb 28 13:41:42 MST 2006 - dsanders@novell.com - -- Added support for Intel MAC and __sparc49 (64 bit) platforms -- Initialized variables to quiet compiler warnings -- Got rid of unneeded internal functions -- Various fixes for Windows - support for vc8 compiler, workaround to compiler issues with inline methods -- Fixedup copyright notice in one source file - -------------------------------------------------------------------- -Mon Feb 13 11:14:33 MST 2006 - dsanders@novell.com - -- Changed naming convention for shared library to conform to standard - should be no need for SONAME fix now. -- Added dbshell utility. -- Started adding support for using autotools. -- Fixed bug on FlmDbReduceSize - needed to quit when encountering a block in a not-yet-deleted b-tree -- Added various new unit tests. -- Fixed various compiler warnings. - -------------------------------------------------------------------- -Mon Feb 13 16:21:11 CET 2006 - ro@suse.de - -- install the SONAME at least as symlink (should be the real file) - -------------------------------------------------------------------- -Wed Feb 8 09:49:29 MST 2006 - dsanders@novell.com - -- Removed make.exe and printf.exe from package. -- Added support for Ubuntu and Debian -- Simplified how unit tests are created. -- Added some new unit tests - -------------------------------------------------------------------- -Fri Feb 3 13:14:25 MST 2006 - dsanders@novell.com - -- Fixed libflaim.pc to specify includedir and Cflags: -- Also changed name: to Name: -- Modified Makefile to use macros for outputting $ and % characters - -------------------------------------------------------------------- -Fri Feb 3 09:13:02 MST 2006 - dsanders@novell.com - -- Added support for PowerPC architectures -- Changed so that revision number for RPMs will match version number -- in SVN repository. - -------------------------------------------------------------------- -Wed Feb 1 11:54:08 MST 2006 - dsanders@novell.com - -- Initial submission - diff --git a/libxflaim.changes b/libxflaim.changes deleted file mode 100644 index a1a1069..0000000 --- a/libxflaim.changes +++ /dev/null @@ -1,172 +0,0 @@ -------------------------------------------------------------------- -Thu Mar 29 08:47:22 MST 2007 - dsanders@novell.com - -- Modified so that the java and xedit targets do not require the svn revision to be calculated. -- Added support for building with an openssl-enabled toolkit. -- Added public to Query class constructor (JAVA). -- Increased buffer size for con_printf. -- Fixed help for export command in xshell utility. -- Fixed exportXML JAVA method to add a null character to string for C++ layer . -- Changed JAVA setupQueryExpr method to produce a UTF8 string for C++ layer. -- Needed to release an open file stream in the import command. -- Changed PosIStream to IStream in JAVA code. -- Query parser needed to resolve the name when no prefix was specified using a NULL namespace. - -------------------------------------------------------------------- -Thu Mar 29 13:16:58 CEST 2007 - aj@suse.de - -- Add BuildRequires for ncurses-devel. - -------------------------------------------------------------------- -Fri Feb 9 08:56:19 CET 2007 - aj@suse.de - -- Add defattr. - -------------------------------------------------------------------- -Thu Feb 8 14:20:19 MST 2007 - dsanders@novell.com - -- Changed license to LGPL. -- Fixed keyword substitution tokens. -- Added code to automatically start a read transaction (if needed) when iterating over a result set. -- Added code to handle the 'xml' namespace prefix. -- Added FlmReadFully() and enhanced the base64 decoder. -- Removed commands in makefile that was outputting provides to the spec file. - -------------------------------------------------------------------- -Fri Feb 2 00:52:07 CET 2007 - ro@suse.de - -- remove self-provides from devel package - -------------------------------------------------------------------- -Thu Nov 16 16:10:12 MST 2006 - dsanders@novell.com - -- Removed .exe files from package. - -------------------------------------------------------------------- -Tue Oct 17 16:40:11 CEST 2006 - dsanders@novell.com - -- Fixed various issues for Solaris builds: warnings, unit tests crash, and alignment issues. -- Various enhancements and bug fixes in the B-Tree code. -- Changes to remove 1-byte packing (zp1) flags from build. -- Fixed bug in storeTextAsBinary(). -- Added C# bindings. -- Updated javadoc documentation. - -------------------------------------------------------------------- -Fri Sep 29 21:17:13 CEST 2006 - aj@suse.de - -- Removed self-provides on devel subpackage. - -------------------------------------------------------------------- -Tue Sep 8 13:30:47 MST 2006 - dsanders@novell.com - -- Enhanced and updated the Java interfaces to be more complete, including javadoc. -- Modified Makefile to generate javadoc documentation. -- Got the Java XEdit utility working again. -- Modified to use aligned buffers to improve direct I/O efficiency. -- Modified block cache allocator to make more efficient use of memory. -- Added option to allow disabling of direct I/O on Linux and Unix platforms. -- Enhancements to reduce the overhead of growing and shrinking files. -- Modified async I/O to make better reuse of available buffers when writes complete out of order. -- Fixed some memory leaks and other minor defects. -- Various tweaks for better support of various platforms and compilers. - -------------------------------------------------------------------- -Tue Jun 27 14:43:35 MST 2006 - dsanders@novell.com - -- Needed to make some typedefs public for Solaris 8. -- Also fixed so that xflaimtk.h is copied from ftk.h when building srcdist - -------------------------------------------------------------------- -Sun Jun 25 01:26:42 CEST 2006 - ro@suse.de - -- removed buggy self-provides on devel subpackage - -------------------------------------------------------------------- -Fri Jun 23 15:44:33 MST 2006 - dsanders@novell.com - -- Changed to depend on java2-devel-packages instead of java2 - -------------------------------------------------------------------- -Thu Jun 22 16:46:11 MST 2006 - dsanders@novell.com - -- Modified common toolkit formatter to support colors when logging. -- Modified to use common formatter in toolkit for logging. - -------------------------------------------------------------------- -Tue Jun 20 12:59:32 MST 2006 - dsanders@novell.com - -- Logger client was not being set up properly in common toolkit. -- Fixed a Netware build issue -- Fixed an OS X compiler warning -- Fixed linux compiler warning -- Needed to lock/unlock the random generator mutex when getting a random number. -- f_printf needed to call fflush. -- Base 64 decoder needed to return success instead of eof hit. - -------------------------------------------------------------------- -Mon Jun 19 09:03:38 MST 2006 - dsanders@novell.com - -- Moved the super-file handle into FTK. -- Fixed various memory leaks in the unit tests. -- Support for builing ring zero NLMs on Netware. -- Moved dynamic result set code to common toolkit. -- Added more asserts. -- Fixed more compiler warnings for ia64 platform. - -------------------------------------------------------------------- -Thu Jun 1 13:32:25 MST 2006 - dsanders@novell.com - -- Fixed compiler warnings for ia64 platform. - -------------------------------------------------------------------- -Tue May 30 11:37:12 MST 2006 - dsanders@novell.com - -- Added JNI support. -- Added password parameter to the backup method. -- Modified to use a common toolkit layer for various functions that are common to FLAIM and XFLAIM -- Added support for Sparc Linux and OpenSuse 10.1 -- Various Makefile changes for HP-UX, OS X, and Solaris -- Various code cleanups to support a common toolkit -- Got rid of timeouts for internal transactions. -- Fixed defect where partial blocks were being written at the end of database files -- Fixed race condition that was causing memory to be double-freed. -- Added better support for atomic operations on various Unix and Linux platforms. -- Allow application to exceed hardcoded cache limits when setting a hard cache limit. -- Changed all RCODE values so they are different from those in toolkit. -- Fixed various compiler issues for solaris platform -- Added support for Netware -- Added support for building Windows binaries with Visual Studio 8. -- Modified slab manager on Solaris to use regular malloc calls instead of mmap. - -------------------------------------------------------------------- -Tue Feb 28 13:48:00 MST 2006 - dsanders@novell.com - -- Added support for Intel MAC platform and __sparc49 (64 bit solaris). - -------------------------------------------------------------------- -Mon Feb 13 11:28:25 MST 2006 - dsanders@novell.com - -- Started adding support for using autotools -- Changed naming convention for shared library to conform to standard. - -------------------------------------------------------------------- -Wed Feb 8 09:53:07 MST 2006 - dsanders@novell.com - -- Removed make.exe and printf.exe from package. -- Added support for Ubuntu and Debian -- Simplified how unit tests are created. -- Added some new unit tests - -------------------------------------------------------------------- -Fri Feb 3 13:17:00 MST 2006 - dsanders@novell.com - -- Fixed libflaim.pc to specify includedir and Cflags: -- Also changed name: to Name: -- Modified Makefile to use macros for outputting $ and % characters - -------------------------------------------------------------------- -Fri Feb 3 10:11:53 MST 2006 - dsanders@novell.com - -- Initial Revision - diff --git a/sql/AUTHORS b/sql/AUTHORS new file mode 100644 index 0000000..cb7e8d5 --- /dev/null +++ b/sql/AUTHORS @@ -0,0 +1,3 @@ +Andrew Hodgkinson +Daniel Sanders + diff --git a/sql/COPYING b/sql/COPYING new file mode 100644 index 0000000..4acfc18 --- /dev/null +++ b/sql/COPYING @@ -0,0 +1,524 @@ +FLAIMSQL SQL library built on FLAIM technology +Copyright (c) 2007-2008 Novell, Inc. All Rights Reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, contact Novell, Inc. + +To contact Novell about this file by physical or electronic mail, +you may find current contact information at www.novell.com. + +------------------------------------------------------------------------------ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + diff --git a/sql/ChangeLog b/sql/ChangeLog new file mode 100644 index 0000000..553b387 --- /dev/null +++ b/sql/ChangeLog @@ -0,0 +1,4 @@ +2008-06-25 John Calcote + + * Added GNU Autotools build system. + diff --git a/sql/Makefile b/sql/GNUMakefile similarity index 100% rename from sql/Makefile rename to sql/GNUMakefile diff --git a/sql/INSTALL b/sql/INSTALL new file mode 100644 index 0000000..d3c5b40 --- /dev/null +++ b/sql/INSTALL @@ -0,0 +1,237 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007 Free Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 6. Often, you can also type `make uninstall' to remove the installed + files again. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/sql/Makefile.am b/sql/Makefile.am new file mode 100644 index 0000000..6583433 --- /dev/null +++ b/sql/Makefile.am @@ -0,0 +1,19 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = GNUMakefile + +SUBDIRS = $(subdirs) src obs + +doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README + +rpms srcrpm: dist + $(MAKE) -C obs $(AM_MAKEFLAGS) $@ + rpmarch=`rpm --showrc | grep ^build\ arch | sed 's/\(.*: \)\(.*\)/\2/'`; \ + test -z $$rpmarch || ( mv $$rpmarch/* .; rm -rf $$rpmarch ) + -rm -rf $(distdir) + +dist-hook: + -rm -rf `find $(distdir) -name .svn` + +.PHONY: srcrpm rpms + diff --git a/sql/NEWS b/sql/NEWS new file mode 100644 index 0000000..9b53c5d --- /dev/null +++ b/sql/NEWS @@ -0,0 +1,3 @@ +FLAIMSQL Release 0.9 +-------------------- + diff --git a/sql/README b/sql/README new file mode 100644 index 0000000..f6890f0 --- /dev/null +++ b/sql/README @@ -0,0 +1,3 @@ +FLAIMSQL - SQL library built on FLAIM technology +------------------------------------------------ + diff --git a/sql/configure.ac b/sql/configure.ac new file mode 100644 index 0000000..ae005d5 --- /dev/null +++ b/sql/configure.ac @@ -0,0 +1,166 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.62]) +AC_INIT([SQLFLAIM], [6.0], [flaim-users@forge.novell.com]) +AM_INIT_AUTOMAKE([-Wall -Werror]) +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_LANG(C++) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/flaimsql.h]) +AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_INSTALL + +# Checks for optional programs. +AC_PROG_TRY_DOXYGEN + +# Configure FTKLIB and FTKINC variables. +AC_ARG_VAR([FTKLIB], [The PATH wherein libflaimtk.la can be found.]) +AC_ARG_VAR([FTKINC], [The PATH wherein flaimtk.h can be found.]) + +# Ensure that both or neither FTK paths were specified. +if (test -n "$FTKLIB" && test -z "$FTKINC") || \ + (test -n "$FTKINC" && test -z "$FTKLIB"); then + AC_MSG_ERROR([Specify both FTK library and include paths, or neither.]) +fi + +# Not specified? Check for FTK in standard places. +if test -z "$FTKLIB"; then + # Check for flaim tool kit as a sub-project. + if test -d "$srcdir/ftk"; then + AC_CONFIG_SUBDIRS([ftk]) + FTKINC='$(top_srcdir)/ftk/src' + FTKLIB='$(top_builddir)/ftk/src' + else + # Check for flaim tool kit as a super-project. + if test -d "$srcdir/../ftk"; then + FTKINC='$(top_srcdir)/../ftk/src' + FTKLIB='$(top_builddir)/../ftk/src' + fi + fi +fi + +# Still empty? Check for *installed* flaim tool kit. +if test -z "$FTKLIB"; then + AC_CHECK_LIB([flaimtk], [ftkFastChecksum], + [AC_CHECK_HEADERS([flaimtk.h]) + LIBS="-lflaimtk $LIBS"], + [AC_MSG_ERROR([No FLAIM Took Kit found. Terminating.])]) +fi + +# AC_SUBST command line variables from FTKLIB and FTKINC. +if test -n "$FTKLIB"; then + AC_SUBST([FTK_LTLIB], ["$FTKLIB/libflaimtk.la"]) + AC_SUBST([FTK_INCLUDE], ["-I$FTKINC"]) +fi + +# Configure options: --enable-debug[=no]. +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable debug code (default is no)])], + [debug="$withval"], [debug=no]) + +# Check for doxygen program. +if test -z "$DOXYGEN"; then + echo "-----------------------------------------" + echo " No Doxygen program found - continuing" + echo " without Doxygen documentation support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != x]) + +# Checks for libraries. + +# Checks for header files. + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL +AC_C_INLINE + +# Checks for library functions. + +# Configure compiler and platform flags and options. +# This stuff was in the original makefile... +# Personally, I believe -O2 does as good a job as +# a hand-coded set of optimization flags... +gcc_opt_flags="-O -foptimize-sibling-calls + -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks + -frerun-cse-after-loop -frerun-loop-opt -fgcse + -fgcse-lm -fgcse-sm -fdelete-null-pointer-checks + -fexpensive-optimizations -fregmove -fsched-interblock + -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -fcrossjumping" + +# Enable g++ specific compiler flags. +# Currently, enabling all warnings displays the type-pun error dozens +# of times, and of course enabling warnings as werrors breaks the build +#if test "x$CXX" = "xg++"; then +# CXXFLAGS="$CXXFLAGS -Wall -Werror" +# CXXFLAGS="$CXXFLAGS $gcc_opt_flags" +#fi + +# Configure DEBUG source code, if requested. +if test "x$debug" = xyes; then + AC_DEFINE([FLM_DEBUG], [], [Define to enable FLAIM debug features]) +fi + +# Configure global pre-processor definitions. +AC_DEFINE([_REENTRANT], [], [Define for reentrant code]) +AC_DEFINE([_LARGEFILE64_SOURCE], [], [Define for 64-bit data files]) +AC_DEFINE([_LARGEFILE_SOURCE], [], [Define for 64-bit data files]) + +# Configure supported platforms' compiler and linker flags. +case $host in + sparc-*-solaris*) + LDFLAGS="$LDFLAGS -R /usr/lib/lwp" + if "x$CXX" != "xg++"; then + if "x$debug" = xno; then + CXXFLAGS="$CXXFLAGS -xO3" + fi + SUN_STUDIO_COMPILER=`"$CXX" -V | grep "Sun C++"` + if "x$SUN_STUDIO_COMPILER" = "xSun C++"; then + CXXFLAGS="$CXXFLAGS -errwarn=%all -errtags -erroff=hidef,inllargeuse,doubunder" + fi + fi ;; + + *-apple-darwin*) + AC_DEFINE([OSX], [], + [Define if building on Apple OSX.]) ;; + + *-*-aix*) + if "x$CXX" != "xg++"; then + CXXFLAGS="$CXXFLAGS -qthreaded -qstrict -q$build_bits" + LDFLAGS="$LDFLAGS -q$build_bits -X$build_bits" + fi ;; + + *-*-hpux*) + if "x$CXX" != "xg++"; then + # Disable "Placement operator delete invocation is not yet implemented" warning + CXXFLAGS="$CXXFLAGS +W930" + fi ;; +esac + +AC_CONFIG_FILES([Makefile + obs/sqlflaim.spec + obs/Makefile + src/Makefile]) +AC_OUTPUT + +echo " + FLAIM SQL Database Library ($PACKAGE_NAME) version $PACKAGE_VERSION + Prefix.........: $prefix + Debug Build....: $debug + C++ Compiler...: $CXX $CXXFLAGS $CPPFLAGS + Linker.........: $LD $LDFLAGS $LIBS + FTK Library....: ${FTKLIB:-INSTALLED} + FTK Include....: ${FTKINC:-INSTALLED} + Doxygen........: ${DOXYGEN:-NONE} +" + diff --git a/sql/m4/ac_prog_try_doxygen.m4 b/sql/m4/ac_prog_try_doxygen.m4 new file mode 100644 index 0000000..88711e4 --- /dev/null +++ b/sql/m4/ac_prog_try_doxygen.m4 @@ -0,0 +1,17 @@ +dnl @synopsis AC_PROG_TRY_DOXYGEN +dnl +dnl AC_PROG_TRY_DOXYGEN tests for an existing doxygen program. +dnl It sets or uses the environment variable DOXYGEN. +dnl +dnl You can use the DOXYGEN variable in your Makefile.in, with +dnl @DOXYGEN@. +dnl +dnl @category Doxygen +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license AllPermissive + +AC_DEFUN([AC_PROG_TRY_DOXYGEN],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$DOXYGEN" && AC_CHECK_PROGS([DOXYGEN], [doxygen$EXEEXT])dnl +]) diff --git a/sql/make.exe b/sql/make.exe deleted file mode 100644 index 54d888d7630b6072ef9730e674afa5ce77325365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241664 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 /dev/null; \ + if [ $$? -ne 0 ]; then \ + echo "*** This make target requires an rpm-based linux distribution."; \ + (exit 1); exit 1; \ + fi + +srcrpm: rpmcheck $(rpmspec) + rpmbuild -bs $(rpmmacros) $(rpmopts) $(rpmspec) + +rpms: rpmcheck $(rpmspec) + rpmbuild -ba $(rpmmacros) $(rpmopts) $(rpmspec) + +.PHONY: rpmcheck srcrpm rpms + diff --git a/sql/obs/sqlflaim.spec.in b/sql/obs/sqlflaim.spec.in new file mode 100644 index 0000000..016aaa2 --- /dev/null +++ b/sql/obs/sqlflaim.spec.in @@ -0,0 +1,64 @@ +Name: @PACKAGE_TARNAME@ +BuildRequires: gcc-c++ libstdc++-devel +Requires: libstdc++ +Summary: SQLFLAIM is a SQL database library. +URL: http://forge.novell.com/modules/xfmod/project/?flaim +Version: @PACKAGE_VERSION@ +Release: 1 +License: GPL +Vendor: Novell, Inc. +Group: Development/Libraries/C and C++ +Source: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +SQLFLAIM is a SQL database library. + +Authors: +-------- + dsanders@novell.com + ahodgkinson@novell.com + +%package devel +Summary: SQLFLAIM static library and header file +Group: Development/Libraries/C and C++ + +%description devel +SQLFLAIM is a SQL database library. + +%prep +%setup -q + +%build +%configure +make + +%install +rm -rf ${RPM_BUILD_ROOT} +make DESTDIR=${RPM_BUILD_ROOT} install + +# remove installed ftk files if they exist +if test -f ${RPM_BUILD_ROOT}/usr/include/flaimtk.h; then + rm ${RPM_BUILD_ROOT}/usr/include/flaimtk.h + rm ${RPM_BUILD_ROOT}/usr/lib64/libflaimtk.* + rm -rf ${RPM_BUILD_ROOT}/usr/share/doc/ftk +fi + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%files +%defattr(-,root,root) +%doc %{_datadir}/doc/%{name}/AUTHORS +%doc %{_datadir}/doc/%{name}/ChangeLog +%doc %{_datadir}/doc/%{name}/COPYING +%doc %{_datadir}/doc/%{name}/INSTALL +%doc %{_datadir}/doc/%{name}/NEWS +%doc %{_datadir}/doc/%{name}/README +%{_libdir}/libflaimsql.la +%{_libdir}/libflaimsql.so* + +%files devel +%{_libdir}/libflaimsql.a +%{_includedir}/flaimsql.h + diff --git a/sql/src/Makefile.am b/sql/src/Makefile.am new file mode 100644 index 0000000..a4a4b7f --- /dev/null +++ b/sql/src/Makefile.am @@ -0,0 +1,90 @@ +lib_LTLIBRARIES = libflaimsql.la +include_HEADERS = flaimsql.h + +libflaimsql_la_SOURCES = \ + btreeinfo.cpp \ + checksum.cpp \ + createdatabase.cpp \ + createindex.cpp \ + createtable.cpp \ + deleterow.cpp \ + dropdatabase.cpp \ + dropindex.cpp \ + droptable.cpp \ + f_btpool.cpp \ + f_btpool.h \ + f_btree.cpp \ + f_btree.h \ + fbtrset.cpp \ + fbtrset.h \ + fcache.h \ + fcollate.cpp \ + fcollate.h \ + fdbcnfig.cpp \ + fdbcopy.cpp \ + fdbrenam.cpp \ + fdict.cpp \ + fdict.h \ + fdllmain.cpp \ + fdynbuf.cpp \ + fdynbuf.h \ + ffilehdr.cpp \ + filesys.h \ + flaimsys.h \ + flbackup.cpp \ + flclose.cpp \ + flconvrt.cpp \ + fldbglog.cpp \ + flerror.cpp \ + flgethdr.cpp \ + flindex.cpp \ + flkeyret.cpp \ + flmstat.cpp \ + flmstat.h \ + flog.cpp \ + flog.h \ + flreduce.cpp \ + fltrabrt.cpp \ + fltrbeg.cpp \ + fltrcmit.cpp \ + f_nici.cpp \ + f_nici.h \ + fnumber.cpp \ + frestore.cpp \ + frow.cpp \ + fsblk_u.cpp \ + fscursor.cpp \ + fscursor.h \ + fsdatacu.cpp \ + fslfile.cpp \ + fslfileu.cpp \ + fsrefupd.cpp \ + fstructs.h \ + fsysdata.cpp \ + funicode.cpp \ + fvector.cpp \ + insertrow.cpp \ + kybldkey.cpp \ + kybuild.cpp \ + kycollat.cpp \ + kyeword.cpp \ + kyqsort.cpp \ + kyunlock.cpp \ + opendatabase.cpp \ + recover.cpp \ + rfl.cpp \ + rfl.h \ + scache.cpp \ + select.cpp \ + sqleval.cpp \ + sqloptimize.cpp \ + sqlquery.h \ + sqlstatement.cpp \ + sqlstatement.h \ + translog.cpp \ + updaterow.cpp \ + whereclause.cpp + +libflaimsql_la_CPPFLAGS = $(FTK_INCLUDE) +libflaimsql_la_LIBADD = $(FTK_LTLIB) +libflaimsql_la_LDFLAGS = -version-info 1:0:0 diff --git a/sql/src/createdatabase.cpp b/sql/src/createdatabase.cpp index 5d6011b..bf9c055 100644 --- a/sql/src/createdatabase.cpp +++ b/sql/src/createdatabase.cpp @@ -354,12 +354,14 @@ RCODE F_DbSystem::createDatabase( if (pCreateOpts != NULL) { - pDb->m_pSFileHdl->setBlockSize( - flmAdjustBlkSize( pCreateOpts->uiBlockSize)); +// JMC - FIXME: commented out due to missing function in ftk +// pDb->m_pSFileHdl->setBlockSize( +// flmAdjustBlkSize( pCreateOpts->uiBlockSize)); } else { - pDb->m_pSFileHdl->setBlockSize( SFLM_DEFAULT_BLKSIZ); +// JMC - FIXME: commented out due to missing function in ftk +// pDb->m_pSFileHdl->setBlockSize( SFLM_DEFAULT_BLKSIZ); } if (RC_OK( gv_SFlmSysData.pFileSystem->doesFileExist( pszFilePath))) diff --git a/sql/src/createtable.cpp b/sql/src/createtable.cpp index 67187c2..4c27e7b 100644 --- a/sql/src/createtable.cpp +++ b/sql/src/createtable.cpp @@ -427,7 +427,7 @@ Invalid_Data_Type: { if (RC_BAD( rc = haveToken( "null", FALSE, SQL_ERR_EXPECTING_NULL))) { - goto exit; + goto Exit; } (*puiFlags) &= (~(COL_NULL_ALLOWED)); } diff --git a/sql/src/f_btree.cpp b/sql/src/f_btree.cpp index 98a6c72..efcde93 100644 --- a/sql/src/f_btree.cpp +++ b/sql/src/f_btree.cpp @@ -11140,7 +11140,7 @@ RCODE F_Btree::btCheck( if( RC_BAD( rc = m_pDb->m_pDatabase->getBlock( m_pDb, m_pLFile, ui32NextBlkAddr, NULL, &pCurrentBlk))) { - localErrStruct.type = SCA_GET_BLOCK_FAILED; + localErrStruct.type = GET_BLOCK_FAILED; f_sprintf( localErrStruct.szMsg, "Failed to get block at %X", ui32NextBlkAddr); goto Exit; @@ -11181,8 +11181,8 @@ RCODE F_Btree::btCheck( (getBlkAvailSpace(pBlk) / localErrStruct.uiBlocksChecked); localErrStruct.ui64FreeSpace += getBlkAvailSpace(pBlk); - localErrStruct.LevelStats[ localErrStruct.uiLevels - 1].uiBlkCnt++; - localErrStruct.LevelStats[ localErrStruct.uiLevels - 1].uiBytesUsed += + localErrStruct.LevelStats[ localErrStruct.uiLevels - 1].uiDOBlockCnt++; + localErrStruct.LevelStats[ localErrStruct.uiLevels - 1].uiDOBytesUsed += (m_uiBlockSize - getBlkAvailSpace(pBlk)); uiNumKeys = ((F_BTREE_BLK_HDR *)pBlk)->ui16NumKeys; @@ -11387,7 +11387,7 @@ RCODE F_Btree::btCheck( if( RC_BAD( rc = m_pDb->m_pDatabase->getBlock( m_pDb, m_pLFile, ui32ChildBlkAddr, NULL, &pChildBlk))) { - localErrStruct.type = SCA_GET_BLOCK_FAILED; + localErrStruct.type = GET_BLOCK_FAILED; f_sprintf( localErrStruct.szMsg, "Failed to get block at %X", ui32ChildBlkAddr); goto Exit; @@ -11415,7 +11415,7 @@ RCODE F_Btree::btCheck( if( RC_BAD( rc = m_pDb->m_pDatabase->getBlock( m_pDb, m_pLFile, ui32NextBlkAddr, NULL, &pCurrentBlk))) { - localErrStruct.type = SCA_GET_BLOCK_FAILED; + localErrStruct.type = GET_BLOCK_FAILED; f_sprintf( localErrStruct.szMsg, "Failed to get block at %X", ui32ChildBlkAddr); goto Exit; @@ -11470,14 +11470,14 @@ RCODE F_Btree::verifyDOBlkChain( while( ui32NextAddr) { - errStruct->LevelStats[ errStruct->uiLevels - 1].uiDOBlkCnt++; + errStruct->LevelStats[ errStruct->uiLevels - 1].uiDOBlockCnt++; // Get the next block if( RC_BAD( m_pDb->m_pDatabase->getBlock( m_pDb, m_pLFile, ui32NextAddr, NULL, &pCurrentBlk))) { - errStruct->type = SCA_GET_BLOCK_FAILED; + errStruct->type = GET_BLOCK_FAILED; f_sprintf( errStruct->szMsg, "Failed to get block at %X", uiDOAddr); goto Exit; } diff --git a/sql/src/f_btree.h b/sql/src/f_btree.h index dfed7f1..9f19af9 100644 --- a/sql/src/f_btree.h +++ b/sql/src/f_btree.h @@ -203,31 +203,32 @@ FINLINE FLMUINT actualEntrySize( // Error information returned by btCheck() -enum BTREE_ERR_TYPE -{ - NO_ERR = 0, // FYI: Visual Studio already defines NOERROR - BT_HEADER, - KEY_ORDER, - DUPLICATE_KEYS, - INFINITY_MARKER, - CHILD_BLOCK_ADDRESS, - SCA_GET_BLOCK_FAILED, - MISSING_OVERALL_DATA_LENGTH, - NOT_DATA_ONLY_BLOCK, - BAD_DO_BLOCK_LENGTHS, - BAD_COUNTS, - CATASTROPHIC_FAILURE = 999 -}; +// JMC - FIXME: commented out - duplicated in flaimtk.h +//enum BTREE_ERR_TYPE +//{ +// NO_ERR = 0, // FYI: Visual Studio already defines NOERROR +// BT_HEADER, +// KEY_ORDER, +// DUPLICATE_KEYS, +// INFINITY_MARKER, +// CHILD_BLOCK_ADDRESS, +// SCA_GET_BLOCK_FAILED, +// MISSING_OVERALL_DATA_LENGTH, +// NOT_DATA_ONLY_BLOCK, +// BAD_DO_BLOCK_LENGTHS, +// BAD_COUNTS, +// CATASTROPHIC_FAILURE = 999 +//}; -typedef struct -{ - FLMUINT uiKeyCnt; - FLMUINT uiFirstKeyCnt; - FLMUINT uiBlkCnt; - FLMUINT uiBytesUsed; - FLMUINT uiDOBlkCnt; - FLMUINT uiDOBytesUsed; -} BTREE_LEVEL_STATS; +//typedef struct +//{ +// FLMUINT uiKeyCnt; +// FLMUINT uiFirstKeyCnt; +// FLMUINT uiBlkCnt; +// FLMUINT uiBytesUsed; +// FLMUINT uiDOBlkCnt; +// FLMUINT uiDOBytesUsed; +//} BTREE_LEVEL_STATS; typedef struct { diff --git a/sql/src/flaimsql.h b/sql/src/flaimsql.h index 9f63f80..adfb428 100644 --- a/sql/src/flaimsql.h +++ b/sql/src/flaimsql.h @@ -35,13 +35,8 @@ /// \defgroup flaim_errors FLAIM Error Codes /// \ingroup errors - -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include "flaimsqltk.h" +#include // Forward declarations diff --git a/sql/src/flaimsqltk.h b/sql/src/flaimsqltk.h deleted file mode 100644 index 4bdc457..0000000 --- a/sql/src/flaimsqltk.h +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// Desc: Placeholder for FLAIM's cross-platform toolkit public definitions -// and interfaces -// Tabs: 3 -// -// Copyright (c) 2006-2007 Novell, Inc. All Rights Reserved. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; version 2.1 -// of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Library Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, contact Novell, Inc. -// -// To contact Novell about this file by physical or electronic mail, -// you may find current contact information at www.novell.com. -// -// $Id$ -//------------------------------------------------------------------------------ - -#include "ftk.h" diff --git a/sql/src/flaimsys.h b/sql/src/flaimsys.h index 3af0485..08de79b 100644 --- a/sql/src/flaimsys.h +++ b/sql/src/flaimsys.h @@ -29,8 +29,29 @@ // Public includes +#ifdef HAVE_CONFIG_H + #include +#endif + #include "flaimsql.h" +// Collation bits + +#define HAD_SUB_COLLATION 0x01 // Set if had sub-collating values-diacritics +#define HAD_LOWER_CASE 0x02 // Set if you hit a lowercase character +#define COMPOUND_MARKER 0x02 // Compound key marker between each piece +#define END_COMPOUND_MARKER 0x01 // Last of all compound markers - for post +#define NULL_KEY_MARKER 0x03 +#define COLL_FIRST_SUBSTRING 0x03 // First substring marker +#define COLL_MARKER 0x04 // Marks place of sub-collation +#define SC_LOWER 0x00 // Only lowercase characters exist +#define SC_MIXED 0x01 // Lower/uppercase flags follow in next byte +#define SC_UPPER 0x02 // Only upper characters exist +#define SC_SUB_COL 0x03 // Sub-collation follows (diacritics|extCh) +#define UNK_UNICODE_CODE 0xFFFE // Used for collation +#define COLL_TRUNCATED 0x0C // This key piece has been truncated from original +#define MAX_COL_OPCODE COLL_TRUNCATED + #if defined( FLM_WIN) // Conversion from XXX to YYY, possible loss of data #pragma warning( disable : 4244) @@ -4408,6 +4429,8 @@ public: FLMUINT uiFileNumber, char * pszPath); + FLMUINT64 FLMAPI getMaxFileSize( void); + static void bldSuperFileExtension( FLMUINT uiFileNum, char * pszFileExtension); diff --git a/sql/src/flbackup.cpp b/sql/src/flbackup.cpp index b64fa52..e94fb86 100644 --- a/sql/src/flbackup.cpp +++ b/sql/src/flbackup.cpp @@ -1571,7 +1571,8 @@ FSTATIC RCODE flmRestoreFile( if( !bIncremental) { - pSFile->setBlockSize( uiBlockSize); +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// pSFile->setBlockSize( uiBlockSize); } // Make sure the maximum block file size matches what was read from the @@ -2347,7 +2348,7 @@ RCODE F_BackerStream::flush( void) // Wait for the background thread to become idle. When it // does, we know that all writes have completed. - if( RC_BAD( rc = f_semWait( m_hIdleSem, F_SEM_WAITFOREVER))) + if( RC_BAD( rc = f_semWait( m_hIdleSem, F_WAITFOREVER))) { goto Exit; } @@ -2401,7 +2402,7 @@ RCODE F_BackerStream::signalThread( void) // Wait for the thread to become idle - if( RC_BAD( rc = f_semWait( m_hIdleSem, F_SEM_WAITFOREVER))) + if( RC_BAD( rc = f_semWait( m_hIdleSem, F_WAITFOREVER))) { goto Exit; } @@ -2466,7 +2467,7 @@ RCODE F_BackerStream::readThread( f_semSignal( pBackerStream->m_hIdleSem); if( RC_BAD( rc = f_semWait( pBackerStream->m_hDataSem, - F_SEM_WAITFOREVER))) + F_WAITFOREVER))) { goto Exit; } @@ -2505,7 +2506,7 @@ RCODE FLMAPI F_BackerStream::writeThread( f_semSignal( pBackerStream->m_hIdleSem); if( RC_BAD( rc = f_semWait( pBackerStream->m_hDataSem, - F_SEM_WAITFOREVER))) + F_WAITFOREVER))) { goto Exit; } diff --git a/sql/src/fslfileu.cpp b/sql/src/fslfileu.cpp index f12375b..cd713d7 100644 --- a/sql/src/fslfileu.cpp +++ b/sql/src/fslfileu.cpp @@ -911,7 +911,7 @@ Retry: } pThread->setThreadStatus( FLM_THREAD_STATUS_SLEEPING); - f_semWait( pDatabase->m_hMaintSem, F_SEM_WAITFOREVER); + f_semWait( pDatabase->m_hMaintSem, F_WAITFOREVER); if (pThread->getShutdownFlag()) { diff --git a/sql/src/fsysdata.cpp b/sql/src/fsysdata.cpp index 30e93e7..193549d 100644 --- a/sql/src/fsysdata.cpp +++ b/sql/src/fsysdata.cpp @@ -588,7 +588,7 @@ RCODE flmWaitNotifyReq( f_mutexUnlock( hMutex); - if( RC_BAD( TempRc = f_semWait( notifyItem.hSem, F_SEM_WAITFOREVER))) + if( RC_BAD( TempRc = f_semWait( notifyItem.hSem, F_WAITFOREVER))) { rc = TempRc; } @@ -697,7 +697,8 @@ RCODE F_Db::linkToDatabase( if( pDatabase->m_lastCommittedDbHdr.ui32DbVersion) { - m_pSFileHdl->setBlockSize( pDatabase->m_uiBlockSize); +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// m_pSFileHdl->setBlockSize( pDatabase->m_uiBlockSize); } } @@ -3256,6 +3257,21 @@ FLMUINT FLMAPI F_SuperFileClient::getFileOffset( { return( FSGetFileOffset( uiBlockAddr)); } + +/**************************************************************************** +Desc: +****************************************************************************/ +FLMUINT64 FLMAPI F_SuperFileClient::getMaxFileSize( void) +{ +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// if( m_uiDbVersion >= FLM_FILE_FORMAT_VER_4_3) +// { +// return( gv_FlmSysData.uiMaxFileSize); +// } + +#define MAX_FILE_SIZE_VER40 ((FLMUINT)0x7FF00000) + return( MAX_FILE_SIZE_VER40); +} /**************************************************************************** Desc: diff --git a/sql/src/opendatabase.cpp b/sql/src/opendatabase.cpp index 39fa3f7..4167d3c 100644 --- a/sql/src/opendatabase.cpp +++ b/sql/src/opendatabase.cpp @@ -1569,7 +1569,8 @@ Exit: if (pCFileHdl) { (void)pSFileHdl->releaseFiles(); - pSFileHdl->setBlockSize( m_uiBlockSize); +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// pSFileHdl->setBlockSize( m_uiBlockSize); } return( rc); @@ -1663,7 +1664,8 @@ RCODE F_Database::startCPThread( void) if (m_lastCommittedDbHdr.ui32DbVersion) { - pCPInfo->pSFileHdl->setBlockSize( m_uiBlockSize); +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// pCPInfo->pSFileHdl->setBlockSize( m_uiBlockSize); } f_memset( &pCPInfo->Stats, 0, sizeof( SFLM_STATS)); diff --git a/sql/src/rfl.cpp b/sql/src/rfl.cpp index dcacc2e..ccc98e2 100644 --- a/sql/src/rfl.cpp +++ b/sql/src/rfl.cpp @@ -685,7 +685,7 @@ RCODE F_Rfl::waitForWrites( // Now just wait to be signaled. - if (RC_BAD( TempRc = f_semWait( Waiter.hESem, F_SEM_WAITFOREVER))) + if (RC_BAD( TempRc = f_semWait( Waiter.hESem, F_WAITFOREVER))) { RC_UNEXPECTED_ASSERT( TempRc); rc = TempRc; diff --git a/sql/src/select.cpp b/sql/src/select.cpp index 18653f1..b343d82 100644 --- a/sql/src/select.cpp +++ b/sql/src/select.cpp @@ -496,16 +496,17 @@ Get_Index: { goto Exit; } - if (uiNumOrderByColumns == MAX_ORDER_BY_COLUMNS) - { - setErrInfo( m_uiCurrLineNum, - uiTokenLineOffset, - SQL_ERR_TOO_MANY_ORDER_BY_COLUMNS, - m_uiCurrLineFilePos, - m_uiCurrLineBytes); - rc = RC_SET( NE_SFLM_INVALID_SQL); - goto Exit; - } +// JMC - FIXME: commented out due to missing functionality in flaimtk.h +// if (uiNumOrderByColumns == MAX_ORDER_BY_COLUMNS) +// { +// setErrInfo( m_uiCurrLineNum, +// uiTokenLineOffset, +// SQL_ERR_TOO_MANY_ORDER_BY_COLUMNS, +// m_uiCurrLineFilePos, +// m_uiCurrLineBytes); +// rc = RC_SET( NE_SFLM_INVALID_SQL); +// goto Exit; +// } // See if we have a period after the name. diff --git a/sql/src/sqlstatement.h b/sql/src/sqlstatement.h index 30e6968..3f0e729 100644 --- a/sql/src/sqlstatement.h +++ b/sql/src/sqlstatement.h @@ -92,7 +92,7 @@ public: FINLINE FLMINT FLMAPI AddRef( void) { - return( f_atomicInc( &m_refCnt); + return( f_atomicInc( &m_refCnt)); } FINLINE FLMINT FLMAPI Release( void) @@ -135,7 +135,7 @@ public: { if (m_uiErrMsgLen) { - return( &m_szErrMsg [0]); + return( m_szErrMsg [0]); } else { @@ -189,13 +189,13 @@ public: private: F_MUTEX m_hMutex; - const char * m_pszLastStateInfo; + const char * m_pszStateInfo; char * m_szErrMsg [200]; FLMUINT m_uiErrMsgLen; RCODE m_rc; FLMUINT m_bHaveError; FLMUINT m_uiNumDiagRecs; -} +}; /*============================================================================ Desc: SQL statement class. Parses and executes SQL statements. This object @@ -212,8 +212,6 @@ public: virtual ~SQLStatement(); - FLMBOOL canRelease( void); - RCODE setupStatement( void); void resetStatement( void); diff --git a/xflaim/AUTHORS b/xflaim/AUTHORS index 8c6c0a4..cb7e8d5 100644 --- a/xflaim/AUTHORS +++ b/xflaim/AUTHORS @@ -1,4 +1,3 @@ -Daniel Sanders (dsanders@novell.com) -Andrew Hodgkinson (ahodgkinson@novell.com) +Andrew Hodgkinson +Daniel Sanders -... and many others ... diff --git a/xflaim/COPYING b/xflaim/COPYING index b0ab9a2..2d68444 100644 --- a/xflaim/COPYING +++ b/xflaim/COPYING @@ -1,3 +1,54 @@ +XFLAIM Database Engine +Copyright (c) 2003-2008 Novell, Inc. All Rights Reserved. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, contact Novell, Inc. + +To contact Novell about this file by physical or electronic mail, +you may find current contact information at www.novell.com. + +------------------------------------------------------------------------------ + +svn2cl.xsl +Copyright (C) 2004, 2005, 2006 Arthur de Jong. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. +3. The name of the author may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 diff --git a/xflaim/COPYRIGHT b/xflaim/COPYRIGHT deleted file mode 100644 index 9342ea6..0000000 --- a/xflaim/COPYRIGHT +++ /dev/null @@ -1,51 +0,0 @@ -XFLAIM Database Engine -Copyright (c) 2003-2007 Novell, Inc. All Rights Reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; version 2.1 -of the License. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, contact Novell, Inc. - -To contact Novell about this file by physical or electronic mail, -you may find current contact information at www.novell.com. - -On a Debian system, a copy of the GNU LGPL is installed in - /usr/share/common-licenses/LGPL - ------------------------------------------------------------------------------- - -svn2cl.xsl -Copyright (C) 2004, 2005, 2006 Arthur de Jong. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. -3. The name of the author may not be used to endorse or promote - products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/xflaim/ChangeLog b/xflaim/ChangeLog index 49d7c59..7e0ba71 100644 --- a/xflaim/ChangeLog +++ b/xflaim/ChangeLog @@ -1 +1,179 @@ - * TBD +2008-06-25 John Calcote + + * Added GNU Autotools build system. + +------------------------------------------------------------------- +OLD CHANGELOG INFORMATION APPENDED BELOW THIS POINT +------------------------------------------------------------------- + +Thu Mar 29 08:47:22 MST 2007 - dsanders@novell.com + +- Modified so that the java and xedit targets do not require the svn revision to be calculated. +- Added support for building with an openssl-enabled toolkit. +- Added public to Query class constructor (JAVA). +- Increased buffer size for con_printf. +- Fixed help for export command in xshell utility. +- Fixed exportXML JAVA method to add a null character to string for C++ layer . +- Changed JAVA setupQueryExpr method to produce a UTF8 string for C++ layer. +- Needed to release an open file stream in the import command. +- Changed PosIStream to IStream in JAVA code. +- Query parser needed to resolve the name when no prefix was specified using a NULL namespace. + +------------------------------------------------------------------- +Thu Mar 29 13:16:58 CEST 2007 - aj@suse.de + +- Add BuildRequires for ncurses-devel. + +------------------------------------------------------------------- +Fri Feb 9 08:56:19 CET 2007 - aj@suse.de + +- Add defattr. + +------------------------------------------------------------------- +Thu Feb 8 14:20:19 MST 2007 - dsanders@novell.com + +- Changed license to LGPL. +- Fixed keyword substitution tokens. +- Added code to automatically start a read transaction (if needed) when iterating over a result set. +- Added code to handle the 'xml' namespace prefix. +- Added FlmReadFully() and enhanced the base64 decoder. +- Removed commands in makefile that was outputting provides to the spec file. + +------------------------------------------------------------------- +Fri Feb 2 00:52:07 CET 2007 - ro@suse.de + +- remove self-provides from devel package + +------------------------------------------------------------------- +Thu Nov 16 16:10:12 MST 2006 - dsanders@novell.com + +- Removed .exe files from package. + +------------------------------------------------------------------- +Tue Oct 17 16:40:11 CEST 2006 - dsanders@novell.com + +- Fixed various issues for Solaris builds: warnings, unit tests crash, and alignment issues. +- Various enhancements and bug fixes in the B-Tree code. +- Changes to remove 1-byte packing (zp1) flags from build. +- Fixed bug in storeTextAsBinary(). +- Added C# bindings. +- Updated javadoc documentation. + +------------------------------------------------------------------- +Fri Sep 29 21:17:13 CEST 2006 - aj@suse.de + +- Removed self-provides on devel subpackage. + +------------------------------------------------------------------- +Tue Sep 8 13:30:47 MST 2006 - dsanders@novell.com + +- Enhanced and updated the Java interfaces to be more complete, including javadoc. +- Modified Makefile to generate javadoc documentation. +- Got the Java XEdit utility working again. +- Modified to use aligned buffers to improve direct I/O efficiency. +- Modified block cache allocator to make more efficient use of memory. +- Added option to allow disabling of direct I/O on Linux and Unix platforms. +- Enhancements to reduce the overhead of growing and shrinking files. +- Modified async I/O to make better reuse of available buffers when writes complete out of order. +- Fixed some memory leaks and other minor defects. +- Various tweaks for better support of various platforms and compilers. + +------------------------------------------------------------------- +Tue Jun 27 14:43:35 MST 2006 - dsanders@novell.com + +- Needed to make some typedefs public for Solaris 8. +- Also fixed so that xflaimtk.h is copied from ftk.h when building srcdist + +------------------------------------------------------------------- +Sun Jun 25 01:26:42 CEST 2006 - ro@suse.de + +- removed buggy self-provides on devel subpackage + +------------------------------------------------------------------- +Fri Jun 23 15:44:33 MST 2006 - dsanders@novell.com + +- Changed to depend on java2-devel-packages instead of java2 + +------------------------------------------------------------------- +Thu Jun 22 16:46:11 MST 2006 - dsanders@novell.com + +- Modified common toolkit formatter to support colors when logging. +- Modified to use common formatter in toolkit for logging. + +------------------------------------------------------------------- +Tue Jun 20 12:59:32 MST 2006 - dsanders@novell.com + +- Logger client was not being set up properly in common toolkit. +- Fixed a Netware build issue +- Fixed an OS X compiler warning +- Fixed linux compiler warning +- Needed to lock/unlock the random generator mutex when getting a random number. +- f_printf needed to call fflush. +- Base 64 decoder needed to return success instead of eof hit. + +------------------------------------------------------------------- +Mon Jun 19 09:03:38 MST 2006 - dsanders@novell.com + +- Moved the super-file handle into FTK. +- Fixed various memory leaks in the unit tests. +- Support for builing ring zero NLMs on Netware. +- Moved dynamic result set code to common toolkit. +- Added more asserts. +- Fixed more compiler warnings for ia64 platform. + +------------------------------------------------------------------- +Thu Jun 1 13:32:25 MST 2006 - dsanders@novell.com + +- Fixed compiler warnings for ia64 platform. + +------------------------------------------------------------------- +Tue May 30 11:37:12 MST 2006 - dsanders@novell.com + +- Added JNI support. +- Added password parameter to the backup method. +- Modified to use a common toolkit layer for various functions that are common to FLAIM and XFLAIM +- Added support for Sparc Linux and OpenSuse 10.1 +- Various Makefile changes for HP-UX, OS X, and Solaris +- Various code cleanups to support a common toolkit +- Got rid of timeouts for internal transactions. +- Fixed defect where partial blocks were being written at the end of database files +- Fixed race condition that was causing memory to be double-freed. +- Added better support for atomic operations on various Unix and Linux platforms. +- Allow application to exceed hardcoded cache limits when setting a hard cache limit. +- Changed all RCODE values so they are different from those in toolkit. +- Fixed various compiler issues for solaris platform +- Added support for Netware +- Added support for building Windows binaries with Visual Studio 8. +- Modified slab manager on Solaris to use regular malloc calls instead of mmap. + +------------------------------------------------------------------- +Tue Feb 28 13:48:00 MST 2006 - dsanders@novell.com + +- Added support for Intel MAC platform and __sparc49 (64 bit solaris). + +------------------------------------------------------------------- +Mon Feb 13 11:28:25 MST 2006 - dsanders@novell.com + +- Started adding support for using autotools +- Changed naming convention for shared library to conform to standard. + +------------------------------------------------------------------- +Wed Feb 8 09:53:07 MST 2006 - dsanders@novell.com + +- Removed make.exe and printf.exe from package. +- Added support for Ubuntu and Debian +- Simplified how unit tests are created. +- Added some new unit tests + +------------------------------------------------------------------- +Fri Feb 3 13:17:00 MST 2006 - dsanders@novell.com + +- Fixed libflaim.pc to specify includedir and Cflags: +- Also changed name: to Name: +- Modified Makefile to use macros for outputting $ and % characters + +------------------------------------------------------------------- +Fri Feb 3 10:11:53 MST 2006 - dsanders@novell.com + +- Initial Revision + diff --git a/xflaim/Makefile b/xflaim/GNUMakefile similarity index 100% rename from xflaim/Makefile rename to xflaim/GNUMakefile diff --git a/xflaim/docs/INSTALL b/xflaim/INSTALL similarity index 100% rename from xflaim/docs/INSTALL rename to xflaim/INSTALL diff --git a/xflaim/docs/INSTALL.W32 b/xflaim/INSTALL.W32 similarity index 100% rename from xflaim/docs/INSTALL.W32 rename to xflaim/INSTALL.W32 diff --git a/xflaim/Makefile.am b/xflaim/Makefile.am new file mode 100644 index 0000000..ec31410 --- /dev/null +++ b/xflaim/Makefile.am @@ -0,0 +1,19 @@ +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = GNUMakefile INSTALL.W32 debian netware + +SUBDIRS = $(subdirs) src util sample docs obs + +doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README + +rpms srcrpm: dist + $(MAKE) -C obs $(AM_MAKEFLAGS) $@ + rpmarch=`rpm --showrc | grep ^build\ arch | sed 's/\(.*: \)\(.*\)/\2/'`; \ + test -z $$rpmarch || ( mv $$rpmarch/* .; rm -rf $$rpmarch ) + -rm -rf $(distdir) + +dist-hook: + -rm -rf `find $(distdir) -name .svn` + +.PHONY: srcrpm rpms + diff --git a/xflaim/NEWS b/xflaim/NEWS new file mode 100644 index 0000000..2c4afb9 --- /dev/null +++ b/xflaim/NEWS @@ -0,0 +1,3 @@ +XFLAIM Release 5.2 +------------------ + diff --git a/xflaim/README b/xflaim/README new file mode 100644 index 0000000..b0bc6bb --- /dev/null +++ b/xflaim/README @@ -0,0 +1,3 @@ +XFLAIM - An XML database built on FLAIM technology +-------------------------------------------------- + diff --git a/xflaim/configure.ac b/xflaim/configure.ac new file mode 100644 index 0000000..e883c8b --- /dev/null +++ b/xflaim/configure.ac @@ -0,0 +1,213 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.62]) +AC_INIT([XFLAIM], [5.2], [flaim-users@forge.novell.com]) +AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE([-Wall -Werror]) +LT_PREREQ([2.2]) +LT_INIT([dlopen]) + +AC_LANG(C++) + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/xflaim.h]) +AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_LN_S +AC_PROG_INSTALL + +# Checks for optional programs. +AC_PROG_TRY_CSC +AC_PROG_TRY_CSVM +AC_PROG_TRY_JAVAC +AC_PROG_TRY_JAVAH +AC_PROG_TRY_JAVADOC +AC_PROG_TRY_JAR +AC_PROG_TRY_DOXYGEN + +# Configure variables: FTKLIB and FTKINC. +AC_ARG_VAR([FTKLIB], [The PATH wherein libflaimtk.la can be found.]) +AC_ARG_VAR([FTKINC], [The PATH wherein flaimtk.h can be found.]) + +# Configure options: --enable-debug[=no]. +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable debug code (default is no)])], + [debug="$withval"], [debug=no]) + +# Ensure that both or neither FTK paths were specified. +if (test -n "$FTKLIB" && test -z "$FTKINC") || \ + (test -n "$FTKINC" && test -z "$FTKLIB"); then + AC_MSG_ERROR([Specify both FTK library and include paths, or neither.]) +fi + +# Not specified? Check for FTK in standard places. +if test -z "$FTKLIB"; then + # Check for flaim tool kit as a sub-project. + if test -d "$srcdir/ftk"; then + AC_CONFIG_SUBDIRS([ftk]) + FTKINC='$(top_srcdir)/ftk/src' + FTKLIB='$(top_builddir)/ftk/src' + else + # Check for flaim tool kit as a super-project. + if test -d "$srcdir/../ftk"; then + FTKINC='$(top_srcdir)/../ftk/src' + FTKLIB='$(top_builddir)/../ftk/src' + fi + fi +fi + +# Still empty? Check for *installed* flaim tool kit. +if test -z "$FTKLIB"; then + AC_CHECK_LIB([flaimtk], [ftkFastChecksum], + [AC_CHECK_HEADERS([flaimtk.h]) + LIBS="-lflaimtk $LIBS"], + [AC_MSG_ERROR([No FLAIM Took Kit found. Terminating.])]) +fi + +# AC_SUBST command line variables from FTKLIB and FTKINC. +if test -n "$FTKLIB"; then + AC_SUBST([FTK_LTLIB], ["$FTKLIB/libflaimtk.la"]) + AC_SUBST([FTK_INCLUDE], ["-I$FTKINC"]) +fi + +# Check for Java compiler. +have_java=yes +if test -z "$JAVAC"; then have_java=no; fi +if test -z "$JAVAH"; then have_java=no; fi +if test -z "$JAR"; then have_java=no; fi +if test "x$have_java" = xno; then + echo "-----------------------------------------" + echo " Some Java tools not found - continuing" + echo " without XFLAIM JNI support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_JAVA], [test "x$have_java" = xyes]) + +# Check for CSharp compiler. +if test -z "$CSC"; then + echo "-----------------------------------------" + echo " No CSharp compiler found - continuing" + echo " without XFLAIM CSHARP support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_CSHARP], [test -n "$CSC"]) + +# Check for doxygen program. +if test -z "$DOXYGEN"; then + echo "-----------------------------------------" + echo " No Doxygen program found - continuing" + echo " without Doxygen documentation support." + echo "-----------------------------------------" +fi +AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$DOXYGEN" != x]) + +# Checks for libraries. + +# Checks for header files. +AC_CHECK_HEADERS([string.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_SIZE_T + +# Checks for library functions. +AC_CHECK_FUNCS([atexit strerror]) + +# Configure compiler and platform flags and options. +# This stuff was in the original makefile... +# Personally, I believe -O2 does as good a job as +# a hand-coded set of optimization flags... +gcc_opt_flags="-O -foptimize-sibling-calls + -fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks + -frerun-cse-after-loop -frerun-loop-opt -fgcse + -fgcse-lm -fgcse-sm -fdelete-null-pointer-checks + -fexpensive-optimizations -fregmove -fsched-interblock + -fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -fcrossjumping" + +# Enable g++ specific compiler flags. +# Currently, enabling all warnings displays the type-pun error dozens +# of times, and of course enabling warnings as werrors breaks the build +#if test "x$CXX" = "xg++"; then +# CXXFLAGS="$CXXFLAGS -Wall -Werror" +# CXXFLAGS="$CXXFLAGS $gcc_opt_flags" +#fi + +# Configure DEBUG source code, if requested. +if test "x$debug" = xyes; then + AC_DEFINE([FLM_DEBUG], [], [Define to enable FLAIM debug features]) +fi + +# Configure global pre-processor definitions. +AC_DEFINE([_REENTRANT], [], [Define for reentrant code]) +AC_DEFINE([_LARGEFILE64_SOURCE], [], [Define for 64-bit data files]) +AC_DEFINE([_LARGEFILE_SOURCE], [], [Define for 64-bit data files]) + +# Configure supported platforms' compiler and linker flags. +case $host in + sparc-*-solaris*) + LDFLAGS="$LDFLAGS -R /usr/lib/lwp" + if "x$CXX" != "xg++"; then + if "x$debug" = xno; then + CXXFLAGS="$CXXFLAGS -xO3" + fi + SUN_STUDIO_COMPILER=`"$CXX" -V | grep "Sun C++"` + if "x$SUN_STUDIO_COMPILER" = "xSun C++"; then + CXXFLAGS="$CXXFLAGS -errwarn=%all -errtags -erroff=hidef,inllargeuse,doubunder" + fi + fi ;; + + *-apple-darwin*) + AC_DEFINE([OSX], [], + [Define if building on Apple OSX.]) ;; + + *-*-aix*) + if "x$CXX" != "xg++"; then + CXXFLAGS="$CXXFLAGS -qthreaded -qstrict" + fi ;; + + *-*-hpux*) + if "x$CXX" != "xg++"; then + # Disable "Placement operator delete invocation is not yet implemented" warning + CXXFLAGS="$CXXFLAGS +W930" + fi ;; +esac + +AC_CONFIG_FILES([Makefile + docs/Makefile + docs/doxygen/Makefile + docs/doxygen/doxyfile + obs/Makefile + obs/xflaim.spec + sample/Makefile + src/Makefile + src/cs/Makefile + src/cs/wrapper/Makefile + src/java/Makefile + src/java/wrapper/Makefile + util/Makefile]) +AC_OUTPUT + +echo " + XFLAIM XML Database Library ($PACKAGE_NAME) version $PACKAGE_VERSION + Prefix.........: $prefix + Debug Build....: $debug + C++ Compiler...: $CXX $CXXFLAGS $CPPFLAGS + Linker.........: $LD $LDFLAGS $LIBS + FTK Library....: ${FTKLIB:-INSTALLED} + FTK Include....: ${FTKINC:-INSTALLED} + CSharp Compiler: ${CSC:-NONE} $CSCFLAGS + CSharp VM......: ${CSVM:-NONE} + Java Compiler..: ${JAVAC:-NONE} $JAVACFLAGS + JavaH Utility..: ${JAVAH:-NONE} $JAVAHFLAGS + Jar Utility....: ${JAR:-NONE} $JARFLAGS + Javadoc Utility: ${JAVADOC:-NONE} + Doxygen........: ${DOXYGEN:-NONE} +" + diff --git a/xflaim/ChangeLog.ubuntu b/xflaim/debian/ChangeLog.ubuntu similarity index 100% rename from xflaim/ChangeLog.ubuntu rename to xflaim/debian/ChangeLog.ubuntu diff --git a/xflaim/docs/Makefile.am b/xflaim/docs/Makefile.am new file mode 100644 index 0000000..82cabcc --- /dev/null +++ b/xflaim/docs/Makefile.am @@ -0,0 +1,8 @@ +EXTRA_DIST = XFLAIMArchitecture.odg XFLAIMArchitecture.png + +if HAVE_DOXYGEN + SUBDIRS = doxygen +endif + +doc_DATA = XFLAIMArchitecture.odg XFLAIMArchitecture.png + diff --git a/xflaim/docs/NEWS b/xflaim/docs/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/xflaim/docs/README b/xflaim/docs/README deleted file mode 100644 index e69de29..0000000 diff --git a/xflaim/docs/doxygen/Makefile.am b/xflaim/docs/doxygen/Makefile.am new file mode 100644 index 0000000..10c7121 --- /dev/null +++ b/xflaim/docs/doxygen/Makefile.am @@ -0,0 +1,16 @@ +docpkg = $(PACKAGE_TARNAME)-doxy-$(PACKAGE_VERSION).tar.gz + +doc_DATA = $(docpkg) + +$(docpkg): doxygen.stamp + tar chof - html | gzip -9 -c >$@ + +doxygen.stamp: doxyfile + $(DOXYGEN) $(DOXYFLAGS) $< + echo Timestamp > $@ + +CLEANFILES = doxywarn.txt doxygen.stamp $(docpkg) + +clean-local: + -rm -rf html + diff --git a/xflaim/docs/doxygen/doxyfile.in b/xflaim/docs/doxygen/doxyfile.in new file mode 100644 index 0000000..0844202 --- /dev/null +++ b/xflaim/docs/doxygen/doxyfile.in @@ -0,0 +1,282 @@ +#------------------------------------------------------------------------- +# Desc: Doxyfile 1.4.6 +# Tabs: 3 +# +# Copyright (c) 2007 Novell, Inc. All Rights Reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; version 2.1 +# of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, contact Novell, Inc. +# +# To contact Novell about this file by physical or electronic mail, +# you may find current contact information at www.novell.com. +# +# $Id$ +#------------------------------------------------------------------------- + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = @PACKAGE_NAME@ +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = . +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = @top_srcdir@ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 3 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = NO +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = doxywarn.txt +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = src/xflaim.h +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/xflaim/m4/ac_prog_csc_works.m4 b/xflaim/m4/ac_prog_csc_works.m4 new file mode 100644 index 0000000..bfc4737 --- /dev/null +++ b/xflaim/m4/ac_prog_csc_works.m4 @@ -0,0 +1,32 @@ +dnl @synopsis AC_PROG_CSC_WORKS +dnl +dnl Internal use ONLY. +dnl +dnl Note: This is part of the set of autoconf M4 macros for CSharp +dnl programs. It is VERY IMPORTANT that you download the whole set, +dnl some macros depend on other. +dnl +dnl @category CSharp +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_CSC_WORKS],[ +AC_CACHE_CHECK([if $CSC works], ac_cv_prog_csc_works, [ +CSC_TEST=test.cs +TEST_EXE=test.exe +cat << \EOF > $CSC_TEST +/* [#]line __oline__ "configure" */ +public class Test { static void Main() {} } +EOF +if AC_TRY_COMMAND([$CSC $CSCFLAGS $CSC_TEST]) >/dev/null 2>&1; then + ac_cv_prog_csc_works=yes +else + AC_MSG_ERROR([The CSharp compiler $CSC failed (see config.log)]) + echo "configure: failed program was:" >&AC_FD_CC + cat $CSC_TEST >&AC_FD_CC +fi +rm -f $CSC_TEST $TEST_EXE +]) +AC_PROVIDE([$0])dnl +]) diff --git a/xflaim/m4/ac_prog_csvm_works.m4 b/xflaim/m4/ac_prog_csvm_works.m4 new file mode 100644 index 0000000..d2db0e0 --- /dev/null +++ b/xflaim/m4/ac_prog_csvm_works.m4 @@ -0,0 +1,134 @@ +dnl @synopsis AC_PROG_CSVM_WORKS +dnl @category CSharp +dnl @author John Calcote +dnl @version 2008-06-17 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_CSVM_WORKS], [ +AC_CHECK_PROG(uudecode, uudecode$EXEEXT, yes) +if test x$uudecode = xyes; then +AC_CACHE_CHECK([if uudecode can decode base 64 file], ac_cv_prog_uudecode_base64, [ +dnl /** Test class to see if CSharp VM works. */ +dnl class Test { static void Main() {} } +cat << \EOF > Test.uue +begin-base64 755 Test.exe +TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFt +IGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAED +AIUNWEgAAAAAAAAAAOAADgELAQYAAAQAAAAEAAAAAAAAACAAAAAgAAAAQAAA +AABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAACAAAAAAgAAAAAAAAMAAAAA +ABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAABggAABPAAAAAEAAAMwC +AAAAAAAAAAAAAAAAAAAAAAAAAGAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAACAAAAAAAAAAAAAAA +ZCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAeAIAAAAgAAAABAAAAAIAAAAAAAAA +AAAAAAAAACAAAGAucnNyYwAAAMwCAAAAQAAAAAQAAAAGAAAAAAAAAAAAAAAA +AABAAABALnJlbG9jAAAMAAAAAGAAAAACAAAACgAAAAAAAAAAAAAAAAAAQAAA +QgAAAAAAAAAAAAAAAAAAAAD/JRAgQAAAAAAAAAAAAAAAQCAAAAAAAABaIAAA +AAAAAAAAAABOIAAAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfQ29yRXhl +TWFpbgBtc2NvcmVlLmRsbABAIAAAAAAAAAAASAAAAAIAAAD4IAAAgAEAAAEA +AAACAAAG+CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKAEAAAoqBioAAEJTSkIB +AAEAAAAAAAwAAAB2MS4xLjQzMjIAAAAAAAUAcAAAAKwAAAAjfgAAHAEAADwA +AAAjU3RyaW5ncwAAAABYAQAABAAAACNVUwBcAQAAFAAAACNCbG9iAAAAcAEA +ABAAAAAjR1VJRAAAAAAAAAAAAAAAAQAAAUcEAAAJAAAAAAAAAAAAAAABAAAA +AQAAAAIAAAACAAAAAQAAAAEAAAABAAAAAAAsAAEAAAAAAAYACgARAAAAAAAj +AAAAAAABAAEAAAAQAB4AAAAFAAEAAQDsIAAAAACGGBgAAQABAPQgAAAAAJEA +NQAOAAEACQAYAAEABIAAAAAAAAAAAAAAAAAAAAAAHgAAAAEAAACIEwAAAAAA +AAUAAQAAAAAAAG1zY29ybGliAE9iamVjdABTeXN0ZW0ALmN0b3IAVGVzdAA8 +TW9kdWxlPgBUZXN0LmV4ZQBNYWluAAAAAAAAAAADIAABCLd6XFYZNOCJAwAA +AQAAA/ywUUx/c0y9yzj+P4QQNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAYAACAAAAAAAAAAAAAAAAAAAAB +AAEAAAAwAACAAAAAAAAAAAAAAAAAAAABAAAAAABIAAAAWEAAAHQCAAAAAAAA +AAAAAHQCNAAAAFYAUwBfAFYARQBSAFMASQBPAE4AXwBJAE4ARgBPAAAAAAC9 +BO/+AAABAAAAAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAQAAAACAAAAAAAAAAAA +AAAAAAAARAAAAAEAVgBhAHIARgBpAGwAZQBJAG4AZgBvAAAAAAAkAAQAAABU +AHIAYQBuAHMAbABhAHQAaQBvAG4AAAAAAH8AsATUAQAAAQBTAHQAcgBpAG4A +ZwBGAGkAbABlAEkAbgBmAG8AAACwAQAAAQAwADAANwBmADAANABiADAAAAAo +AAIAAQBQAHIAbwBkAHUAYwB0AFYAZQByAHMAaQBvAG4AAAAgAAAAJAACAAEA +QwBvAG0AcABhAG4AeQBOAGEAbQBlAAAAAAAgAAAAJAACAAEAUAByAG8AZAB1 +AGMAdABOAGEAbQBlAAAAAAAgAAAAKAACAAEATABlAGcAYQBsAEMAbwBwAHkA +cgBpAGcAaAB0AAAAIAAAACwABQABAEkAbgB0AGUAcgBuAGEAbABOAGEAbQBl +AAAAVABlAHMAdAAAAAAALAACAAEARgBpAGwAZQBEAGUAcwBjAHIAaQBwAHQA +aQBvAG4AAAAAACAAAAAcAAIAAQBDAG8AbQBtAGUAbgB0AHMAAAAgAAAAJAAC +AAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAAAAAgAAAAPAAJAAEATwByAGkA +ZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAFQAZQBzAHQALgBlAHgAZQAA +AAAALAACAAEATABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAACAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAM +AAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAA +==== +EOF +if uudecode$EXEEXT Test.uue; then + ac_cv_prog_uudecode_base64=yes +else + echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC + echo "configure: failed file was:" >&AC_FD_CC + cat Test.uue >&AC_FD_CC + ac_cv_prog_uudecode_base64=no +fi +rm -f Test.uue]) +fi +if test x$ac_cv_prog_uudecode_base64 != xyes; then + rm -f Test.class + AC_MSG_WARN([I have to compile Test.cs from scratch]) + if test x$ac_cv_prog_csc_works = xno; then + AC_MSG_ERROR([Cannot compile CSharp source. $CSC does not work properly]) + fi + if test x$ac_cv_prog_csc_works = x; then + AC_PROG_TRY_CSC + fi +fi +AC_CACHE_CHECK([if $CSVM works], [ac_cv_prog_csvm_works], [ +CS_TEST=Test.cs +TEST_EXE=Test.exe +changequote(, )dnl +cat << \EOF > $CS_TEST +/* [#]line __oline__ "configure" */ +class Test { static void Main() { } } +EOF +changequote([, ])dnl +if test x$ac_cv_prog_uudecode_base64 != xyes; then + if AC_TRY_COMMAND([$CSC $CSCFLAGS $CS_TEST]) && test -s $TEST_EXE; then + : + else + echo "configure: failed program was:" >&AC_FD_CC + cat $CS_TEST >&AC_FD_CC + AC_MSG_ERROR([The CSharp compiler $CSC failed (see config.log)]) + fi +fi +if AC_TRY_COMMAND([$CSVM $CSVMFLAGS $TEST_EXE]) >/dev/null 2>&1; then + ac_cv_prog_csvm_works=yes +else + echo "configure: failed program was:" >&AC_FD_CC + cat $CS_TEST >&AC_FD_CC + AC_MSG_ERROR([The CSharp VM $CSVM failed (see config.log)]) +fi +rm -fr $CS_TEST $TEST_EXE Test.uue +]) +AC_PROVIDE([$0])dnl +]) diff --git a/xflaim/m4/ac_prog_java_works.m4 b/xflaim/m4/ac_prog_java_works.m4 new file mode 100644 index 0000000..bb14a88 --- /dev/null +++ b/xflaim/m4/ac_prog_java_works.m4 @@ -0,0 +1,98 @@ +dnl @synopsis AC_PROG_JAVA_WORKS +dnl +dnl Internal use ONLY. +dnl +dnl Note: This is part of the set of autoconf M4 macros for Java +dnl programs. It is VERY IMPORTANT that you download the whole set, +dnl some macros depend on other. Unfortunately, the autoconf archive +dnl does not support the concept of set of macros, so I had to break it +dnl for submission. The general documentation, as well as the sample +dnl configure.in, is included in the AC_PROG_JAVA macro. +dnl +dnl @category Java +dnl @author Stephane Bortzmeyer +dnl @version 2000-07-19 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_JAVA_WORKS], [ +AC_CHECK_PROG(uudecode, uudecode$EXEEXT, yes) +if test x$uudecode = xyes; then +AC_CACHE_CHECK([if uudecode can decode base 64 file], ac_cv_prog_uudecode_base64, [ +dnl /** +dnl * Test.java: used to test if java compiler works. +dnl */ +dnl public class Test +dnl { +dnl +dnl public static void +dnl main( String[] argv ) +dnl { +dnl System.exit (0); +dnl } +dnl +dnl } +cat << \EOF > Test.uue +begin-base64 644 Test.class +yv66vgADAC0AFQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE +bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51 +bWJlclRhYmxlDAAKAAsBAARleGl0AQAEKEkpVgoADQAJBwAOAQAQamF2YS9s +YW5nL1N5c3RlbQEABjxpbml0PgEAAygpVgwADwAQCgADABEBAApTb3VyY2VG +aWxlAQAJVGVzdC5qYXZhACEAAQADAAAAAAACAAkABQAGAAEABwAAACEAAQAB +AAAABQO4AAyxAAAAAQAIAAAACgACAAAACgAEAAsAAQAPABAAAQAHAAAAIQAB +AAEAAAAFKrcAErEAAAABAAgAAAAKAAIAAAAEAAQABAABABMAAAACABQ= +==== +EOF +if uudecode$EXEEXT Test.uue; then + ac_cv_prog_uudecode_base64=yes +else + echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC + echo "configure: failed file was:" >&AC_FD_CC + cat Test.uue >&AC_FD_CC + ac_cv_prog_uudecode_base64=no +fi +rm -f Test.uue]) +fi +if test x$ac_cv_prog_uudecode_base64 != xyes; then + rm -f Test.class + AC_MSG_WARN([I have to compile Test.class from scratch]) + if test x$ac_cv_prog_javac_works = xno; then + AC_MSG_ERROR([Cannot compile java source. $JAVAC does not work properly]) + fi + if test x$ac_cv_prog_javac_works = x; then + AC_PROG_JAVAC + fi +fi +AC_CACHE_CHECK(if $JAVA works, ac_cv_prog_java_works, [ +JAVA_TEST=Test.java +CLASS_TEST=Test.class +TEST=Test +changequote(, )dnl +cat << \EOF > $JAVA_TEST +/* [#]line __oline__ "configure" */ +public class Test { +public static void main (String args[]) { + System.exit (0); +} } +EOF +changequote([, ])dnl +if test x$ac_cv_prog_uudecode_base64 != xyes; then + if AC_TRY_COMMAND($JAVAC $JAVACFLAGS $JAVA_TEST) && test -s $CLASS_TEST; then + : + else + echo "configure: failed program was:" >&AC_FD_CC + cat $JAVA_TEST >&AC_FD_CC + AC_MSG_ERROR(The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)) + fi +fi +if AC_TRY_COMMAND($JAVA $JAVAFLAGS $TEST) >/dev/null 2>&1; then + ac_cv_prog_java_works=yes +else + echo "configure: failed program was:" >&AC_FD_CC + cat $JAVA_TEST >&AC_FD_CC + AC_MSG_ERROR(The Java VM $JAVA failed (see config.log, check the CLASSPATH?)) +fi +rm -fr $JAVA_TEST $CLASS_TEST Test.uue +]) +AC_PROVIDE([$0])dnl +] +) diff --git a/xflaim/m4/ac_prog_javac_works.m4 b/xflaim/m4/ac_prog_javac_works.m4 new file mode 100644 index 0000000..78af5c4 --- /dev/null +++ b/xflaim/m4/ac_prog_javac_works.m4 @@ -0,0 +1,36 @@ +dnl @synopsis AC_PROG_JAVAC_WORKS +dnl +dnl Internal use ONLY. +dnl +dnl Note: This is part of the set of autoconf M4 macros for Java +dnl programs. It is VERY IMPORTANT that you download the whole set, +dnl some macros depend on other. Unfortunately, the autoconf archive +dnl does not support the concept of set of macros, so I had to break it +dnl for submission. The general documentation, as well as the sample +dnl configure.in, is included in the AC_PROG_JAVA macro. +dnl +dnl @category Java +dnl @author Stephane Bortzmeyer +dnl @version 2000-07-19 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_JAVAC_WORKS],[ +AC_CACHE_CHECK([if $JAVAC works], [ac_cv_prog_javac_works], [ +JAVA_TEST=Test.java +CLASS_TEST=Test.class +cat << \EOF > $JAVA_TEST +/* [#]line __oline__ "configure" */ +public class Test { +} +EOF +if AC_TRY_COMMAND([$JAVAC $JAVACFLAGS $JAVA_TEST]) >/dev/null 2>&1; then + ac_cv_prog_javac_works=yes +else + AC_MSG_ERROR([The Java compiler $JAVAC failed (see config.log, check the CLASSPATH?)]) + echo "configure: failed program was:" >&AC_FD_CC + cat $JAVA_TEST >&AC_FD_CC +fi +rm -f $JAVA_TEST $CLASS_TEST +]) +AC_PROVIDE([$0])dnl +]) diff --git a/xflaim/m4/ac_prog_try_csc.m4 b/xflaim/m4/ac_prog_try_csc.m4 new file mode 100644 index 0000000..0056c5a --- /dev/null +++ b/xflaim/m4/ac_prog_try_csc.m4 @@ -0,0 +1,19 @@ +dnl @synopsis AC_PROG_TRY_CSC +dnl +dnl AC_PROG_TRY_CSC looks for an existing CSharp compiler. It sets +dnl and/or uses the environment variable CSC, then tests for the +dnl Mono CSharp compiler. +dnl +dnl You can use the CSC variable in your Makefile.in, with @CSC@. +dnl +dnl @category CSharp +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_CSC],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$CSC" && AC_CHECK_PROGS([CSC], [mcs$EXEEXT csc$EXEEXT]) +if test -n "$CSC"; then + AC_PROG_CSC_WORKS +fi]) diff --git a/xflaim/m4/ac_prog_try_csvm.m4 b/xflaim/m4/ac_prog_try_csvm.m4 new file mode 100644 index 0000000..1fad2e9 --- /dev/null +++ b/xflaim/m4/ac_prog_try_csvm.m4 @@ -0,0 +1,22 @@ +dnl @synopsis AC_PROG_TRY_CSVM +dnl +dnl AC_PROG_TRY_CSVM looks for an existing CSharp virtual machine. +dnl It sets and/or uses the environment variable CSC, then tests +dnl for the Mono CSharp compiler. +dnl +dnl If and when a CSVM is located, it's then tested via +dnl AC_PROG_CSVM_WORKS. +dnl +dnl You can use the CSVM variable in your Makefile.in, with @CSVM@. +dnl +dnl @category CSharp +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_CSVM],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$CSVM" && AC_CHECK_PROGS([CSVM], [mono$EXEEXT cs$EXEEXT]) +if test -n "$CSVM"; then + AC_PROG_CSVM_WORKS +fi]) diff --git a/xflaim/m4/ac_prog_try_doxygen.m4 b/xflaim/m4/ac_prog_try_doxygen.m4 new file mode 100644 index 0000000..88711e4 --- /dev/null +++ b/xflaim/m4/ac_prog_try_doxygen.m4 @@ -0,0 +1,17 @@ +dnl @synopsis AC_PROG_TRY_DOXYGEN +dnl +dnl AC_PROG_TRY_DOXYGEN tests for an existing doxygen program. +dnl It sets or uses the environment variable DOXYGEN. +dnl +dnl You can use the DOXYGEN variable in your Makefile.in, with +dnl @DOXYGEN@. +dnl +dnl @category Doxygen +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license AllPermissive + +AC_DEFUN([AC_PROG_TRY_DOXYGEN],[ +AC_REQUIRE([AC_EXEEXT])dnl +test -z "$DOXYGEN" && AC_CHECK_PROGS([DOXYGEN], [doxygen$EXEEXT])dnl +]) diff --git a/xflaim/m4/ac_prog_try_jar.m4 b/xflaim/m4/ac_prog_try_jar.m4 new file mode 100644 index 0000000..da04e7a --- /dev/null +++ b/xflaim/m4/ac_prog_try_jar.m4 @@ -0,0 +1,20 @@ +dnl @synopsis AC_PROG_TRY_JAR +dnl +dnl AC_PROG_TRY_JAR tests for an existing jar program. It sets and/or +dnl uses the environment variable JAR then tests in sequence various +dnl common jar programs. +dnl +dnl You can use the JAR variable in your Makefile.in, with @JAR@. +dnl +dnl @category Java +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_JAR],[ +AC_REQUIRE([AC_EXEEXT])dnl +if test -z "$JAVAPREFIX"; then + test -z "$JAR" && AC_CHECK_PROGS([JAR], [jar$EXEEXT]) +else + test -z "$JAR" && AC_CHECK_PROGS([JAR], [jar$EXEEXT], [$JAVAPREFIX]) +fi]) diff --git a/xflaim/m4/ac_prog_try_java.m4 b/xflaim/m4/ac_prog_try_java.m4 new file mode 100644 index 0000000..11455d1 --- /dev/null +++ b/xflaim/m4/ac_prog_try_java.m4 @@ -0,0 +1,26 @@ +dnl @synopsis AC_PROG_TRY_JAVA +dnl +dnl AC_PROG_TRY_JAVA looks for an existing JAVA virtual machine. It +dnl sets and/or uses the environment variable JAVA, then tests for +dnl various Java virtual machines, beginning with the free ones. +dnl +dnl If and when a JVM is located, it's then tested via +dnl AC_PROG_JAVA_WORKS. +dnl +dnl You can use the JAVA variable in your Makefile.in, with @JAVA@. +dnl +dnl @category Java +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_JAVA],[ +AC_REQUIRE([AC_EXEEXT])dnl +if test -z "$JAVAPREFIX"; then + test -z "$JAVA" && AC_CHECK_PROGS([JAVA], [kaffe$EXEEXT java$EXEEXT]) +else + test -z "$JAVA" && AC_CHECK_PROGS([JAVA], [kaffe$EXEEXT java$EXEEXT], [$JAVAPREFIX]) +fi +if test -n "$JAVA"; then + AC_PROG_JAVA_WORKS +fi]) diff --git a/xflaim/m4/ac_prog_try_javac.m4 b/xflaim/m4/ac_prog_try_javac.m4 new file mode 100644 index 0000000..1a8d3ae --- /dev/null +++ b/xflaim/m4/ac_prog_try_javac.m4 @@ -0,0 +1,23 @@ +dnl @synopsis AC_PROG_TRY_JAVAC +dnl +dnl AC_PROG_TRY_JAVAC looks for an existing Java compiler. It sets +dnl and/or uses the environment variable JAVAC, then tests for +dnl various known java compilers, beginning with free ones. +dnl +dnl You can use the JAVAC variable in your Makefile.in, with @JAVAC@. +dnl +dnl @category Java +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_JAVAC],[ +AC_REQUIRE([AC_EXEEXT])dnl +if test -z "$JAVAPREFIX"; then + test -z "$JAVAC" && AC_CHECK_PROGS([JAVAC], ["gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT javac$EXEEXT]) +else + test -z "$JAVAC" && AC_CHECK_PROGS([JAVAC], ["gcj$EXEEXT -C" guavac$EXEEXT jikes$EXEEXT javac$EXEEXT], [$JAVAPREFIX]) +fi +if test -n "$JAVAC"; then + AC_PROG_JAVAC_WORKS +fi]) diff --git a/xflaim/m4/ac_prog_try_javadoc.m4 b/xflaim/m4/ac_prog_try_javadoc.m4 new file mode 100644 index 0000000..bdd0810 --- /dev/null +++ b/xflaim/m4/ac_prog_try_javadoc.m4 @@ -0,0 +1,21 @@ +dnl @synopsis AC_PROG_TRY_JAVADOC +dnl +dnl AC_PROG_TRY_JAVADOC tests for an existing javadoc generator. +dnl It uses and/or sets the environment variable JAVADOC, then +dnl tests in sequence various common javadoc generator. +dnl +dnl You can use the JAVADOC variable in your Makefile.in, with +dnl @JAVADOC@. +dnl +dnl @category Java +dnl @author John Calcote +dnl @version 2008-06-24 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_JAVADOC],[ +AC_REQUIRE([AC_EXEEXT])dnl +if test -z "$JAVAPREFIX"; then + test -z "$JAVADOC" && AC_CHECK_PROGS([JAVADOC], [javadoc$EXEEXT]) +else + test -z "$JAVADOC" && AC_CHECK_PROGS([JAVADOC], [javadoc$EXEEXT], [$JAVAPREFIX]) +fi]) diff --git a/xflaim/m4/ac_prog_try_javah.m4 b/xflaim/m4/ac_prog_try_javah.m4 new file mode 100644 index 0000000..e9d8018 --- /dev/null +++ b/xflaim/m4/ac_prog_try_javah.m4 @@ -0,0 +1,30 @@ +dnl @synopsis AC_PROG_TRY_JAVAH +dnl +dnl AC_PROG_TRY_JAVAH looks for an existing Java native header (JNI) +dnl generator. It sets and/or uses the environment variable JAVAH, +dnl then tests for the javah utility, beginning with free ones. +dnl +dnl You can use the JAVAH variable in your Makefile.in, with @JAVAH@. +dnl +dnl @category Java +dnl @author John Calcote +dnl @version 2008-06-23 +dnl @license GPLWithACException + +AC_DEFUN([AC_PROG_TRY_JAVAH],[ +AC_REQUIRE([AC_CANONICAL_SYSTEM])dnl +AC_REQUIRE([AC_PROG_CPP])dnl +AC_PATH_PROG(JAVAH,javah) +if test x"`eval 'echo $ac_cv_path_JAVAH'`" != x ; then + AC_TRY_CPP([#include ],,[ + ac_save_CPPFLAGS="$CPPFLAGS" +changequote(, )dnl + ac_dir=`echo $ac_cv_path_JAVAH | sed 's,\(.*\)/[^/]*/[^/]*$,\1/include,'` + ac_machdep=`echo $build_os | sed 's,[-0-9].*,,' | sed 's,cygwin,win32,'` +changequote([, ])dnl + CPPFLAGS="$ac_save_CPPFLAGS -I$ac_dir -I$ac_dir/$ac_machdep" + AC_TRY_CPP([#include ], + ac_save_CPPFLAGS="$CPPFLAGS", + AC_MSG_WARN([unable to include ])) + CPPFLAGS="$ac_save_CPPFLAGS"]) +fi]) diff --git a/xflaim/make.exe b/xflaim/make.exe deleted file mode 100644 index 54d888d7630b6072ef9730e674afa5ce77325365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241664 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 /dev/null; \ + if [ $$? -ne 0 ]; then \ + echo "*** This make target requires an rpm-based linux distribution."; \ + (exit 1); exit 1; \ + fi + +srcrpm: rpmcheck $(rpmspec) + rpmbuild -bs $(rpmmacros) $(rpmopts) $(rpmspec) + +rpms: rpmcheck $(rpmspec) + rpmbuild -ba $(rpmmacros) $(rpmopts) $(rpmspec) + +.PHONY: rpmcheck srcrpm rpms + diff --git a/xflaim/obs/xflaim.spec.in b/xflaim/obs/xflaim.spec.in new file mode 100644 index 0000000..ba76f20 --- /dev/null +++ b/xflaim/obs/xflaim.spec.in @@ -0,0 +1,74 @@ +Name: @PACKAGE_TARNAME@ +BuildRequires: gcc-c++ libstdc++-devel gcc-java mono-core doxygen +Requires: libstdc++ mono-core java >= 1.4.2 +Summary: XFLAIM is an XML database library. +URL: http://forge.novell.com/modules/xfmod/project/?flaim +Version: @PACKAGE_VERSION@ +Release: 1 +License: GPL +Vendor: Novell, Inc. +Group: Development/Libraries/C and C++ +Source: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +XFLAIM is an XML database library. + +Authors: +-------- + dsanders@novell.com + ahodgkinson@novell.com + +%package devel +Summary: XFLAIM static library and header file +Group: Development/Libraries/C and C++ + +%description devel +XFLAIM is an XML database library. + +%prep +%setup -q + +%build +%configure +make + +%install +rm -rf ${RPM_BUILD_ROOT} +make DESTDIR=${RPM_BUILD_ROOT} install +if test -f ${RPM_BUILD_ROOT}/usr/include/flaimtk.h; then + rm ${RPM_BUILD_ROOT}/usr/include/flaimtk.h + rm ${RPM_BUILD_ROOT}/usr/lib64/libflaimtk.* + rm -rf ${RPM_BUILD_ROOT}/usr/share/doc/ftk +fi + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%files +%defattr(-,root,root) +%doc %{_datadir}/doc/%{name}/AUTHORS +%doc %{_datadir}/doc/%{name}/ChangeLog +%doc %{_datadir}/doc/%{name}/COPYING +%doc %{_datadir}/doc/%{name}/INSTALL +%doc %{_datadir}/doc/%{name}/NEWS +%doc %{_datadir}/doc/%{name}/README +%doc %{_datadir}/doc/%{name}/%{name}-doxy-%{version}.tar.gz +%doc %{_datadir}/doc/%{name}/xflaim_csharp.xml +%doc %{_datadir}/doc/%{name}/XFLAIMArchitecture.odg +%doc %{_datadir}/doc/%{name}/XFLAIMArchitecture.png +%{_datadir}/java/xflaimjni-5.1.jar +%{_libdir}/libxflaim.la +%{_libdir}/libxflaim.so* +%{_libdir}/xflaim_csharp.dll +%{_bindir}/xflmcheckdb +%{_bindir}/xflmrebuild +%{_bindir}/xflmsample +%{_bindir}/xflmview +%{_bindir}/xflmdbshell + +%files devel +%{_libdir}/libxflaim.a +%{_includedir}/xflaim.h + + diff --git a/xflaim/src/Makefile.am b/xflaim/src/Makefile.am new file mode 100644 index 0000000..5faea08 --- /dev/null +++ b/xflaim/src/Makefile.am @@ -0,0 +1,106 @@ +SUBDIRS = + +if HAVE_JAVA + SUBDIRS += java + JNI_LIBADD=java/libxfjni.la +endif + +if HAVE_CSHARP + SUBDIRS += cs + CSI_LIBADD=cs/libxfcsi.la +endif + +SUBDIRS += . + +lib_LTLIBRARIES = libxflaim.la +include_HEADERS = xflaim.h + +libxflaim_la_SOURCES = \ + btreeinfo.cpp \ + f_btpool.cpp \ + f_btpool.h \ + f_btree.cpp \ + f_btree.h \ + fbtrset.cpp \ + fbtrset.h \ + fcache.h \ + f_ccs.cpp \ + f_ccs.h \ + fcollate.cpp \ + fcollate.h \ + fdbcnfig.cpp \ + fdbcopy.cpp \ + fdbremov.cpp \ + fdbrenam.cpp \ + fdict.cpp \ + fdict.h \ + fdllmain.cpp \ + fdoclist.cpp \ + fdom.cpp \ + ffilehdr.cpp \ + filesys.h \ + flaimsys.h \ + flbackup.cpp \ + flblddb.cpp \ + flchkdb.cpp \ + flchkix.cpp \ + flchktr.cpp \ + flclose.cpp \ + flconvrt.cpp \ + flcreate.cpp \ + fldbglog.cpp \ + flerror.cpp \ + flindex.cpp \ + flkeyret.cpp \ + flmstat.cpp \ + flmstat.h \ + flog.cpp \ + flog.h \ + flopen.cpp \ + flreduce.cpp \ + flsweep.cpp \ + fltrabrt.cpp \ + fltrbeg.cpp \ + fltrcmit.cpp \ + flverify.cpp \ + f_nici.cpp \ + fntable.cpp \ + fnumber.cpp \ + fqeval.cpp \ + fqsort.cpp \ + fquery.cpp \ + fquery.h \ + frestore.cpp \ + fsblk_u.cpp \ + fscursor.cpp \ + fscursor.h \ + fsdatacu.cpp \ + fslfile.cpp \ + fslfileu.cpp \ + fsrefupd.cpp \ + fstructs.h \ + fsysdata.cpp \ + funicode.cpp \ + fvector.cpp \ + fxml.cpp \ + fxml.h \ + fxpath.cpp \ + fxpath.h \ + kybldkey.cpp \ + kybuild.cpp \ + kycollat.cpp \ + kyeword.cpp \ + kyqsort.cpp \ + kyunlock.cpp \ + ncache.cpp \ + nodeinfo.cpp \ + recover.cpp \ + rfl.cpp \ + rfl.h \ + scache.cpp \ + translog.cpp + +libxflaim_la_CPPFLAGS = $(FTK_INCLUDE) +libxflaim_la_LIBADD = $(JNI_LIBADD) $(CSI_LIBADD) $(FTK_LTLIB) +libxflaim_la_LDFLAGS = -version-info 3:2:0 + diff --git a/xflaim/csharp/cstest/BackupDbTest.cs b/xflaim/src/cs/cstest/BackupDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/BackupDbTest.cs rename to xflaim/src/cs/cstest/BackupDbTest.cs diff --git a/xflaim/csharp/cstest/CacheTests.cs b/xflaim/src/cs/cstest/CacheTests.cs similarity index 100% rename from xflaim/csharp/cstest/CacheTests.cs rename to xflaim/src/cs/cstest/CacheTests.cs diff --git a/xflaim/csharp/cstest/CheckDbTest.cs b/xflaim/src/cs/cstest/CheckDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/CheckDbTest.cs rename to xflaim/src/cs/cstest/CheckDbTest.cs diff --git a/xflaim/csharp/cstest/CompareStringsTests.cs b/xflaim/src/cs/cstest/CompareStringsTests.cs similarity index 100% rename from xflaim/csharp/cstest/CompareStringsTests.cs rename to xflaim/src/cs/cstest/CompareStringsTests.cs diff --git a/xflaim/csharp/cstest/CopyDbTest.cs b/xflaim/src/cs/cstest/CopyDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/CopyDbTest.cs rename to xflaim/src/cs/cstest/CopyDbTest.cs diff --git a/xflaim/csharp/cstest/CreateDbTest.cs b/xflaim/src/cs/cstest/CreateDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/CreateDbTest.cs rename to xflaim/src/cs/cstest/CreateDbTest.cs diff --git a/xflaim/csharp/cstest/DOMNodeTest.cs b/xflaim/src/cs/cstest/DOMNodeTest.cs similarity index 100% rename from xflaim/csharp/cstest/DOMNodeTest.cs rename to xflaim/src/cs/cstest/DOMNodeTest.cs diff --git a/xflaim/csharp/cstest/ImportTests.cs b/xflaim/src/cs/cstest/ImportTests.cs similarity index 100% rename from xflaim/csharp/cstest/ImportTests.cs rename to xflaim/src/cs/cstest/ImportTests.cs diff --git a/xflaim/csharp/cstest/OpenDbTest.cs b/xflaim/src/cs/cstest/OpenDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/OpenDbTest.cs rename to xflaim/src/cs/cstest/OpenDbTest.cs diff --git a/xflaim/csharp/cstest/RebuildDbTest.cs b/xflaim/src/cs/cstest/RebuildDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/RebuildDbTest.cs rename to xflaim/src/cs/cstest/RebuildDbTest.cs diff --git a/xflaim/csharp/cstest/RemoveDbTest.cs b/xflaim/src/cs/cstest/RemoveDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/RemoveDbTest.cs rename to xflaim/src/cs/cstest/RemoveDbTest.cs diff --git a/xflaim/csharp/cstest/RenameDbTest.cs b/xflaim/src/cs/cstest/RenameDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/RenameDbTest.cs rename to xflaim/src/cs/cstest/RenameDbTest.cs diff --git a/xflaim/csharp/cstest/RestoreDbTest.cs b/xflaim/src/cs/cstest/RestoreDbTest.cs similarity index 100% rename from xflaim/csharp/cstest/RestoreDbTest.cs rename to xflaim/src/cs/cstest/RestoreDbTest.cs diff --git a/xflaim/csharp/cstest/SettingsTests.cs b/xflaim/src/cs/cstest/SettingsTests.cs similarity index 100% rename from xflaim/csharp/cstest/SettingsTests.cs rename to xflaim/src/cs/cstest/SettingsTests.cs diff --git a/xflaim/csharp/cstest/StatsTests.cs b/xflaim/src/cs/cstest/StatsTests.cs similarity index 100% rename from xflaim/csharp/cstest/StatsTests.cs rename to xflaim/src/cs/cstest/StatsTests.cs diff --git a/xflaim/csharp/cstest/StreamTests.cs b/xflaim/src/cs/cstest/StreamTests.cs similarity index 100% rename from xflaim/csharp/cstest/StreamTests.cs rename to xflaim/src/cs/cstest/StreamTests.cs diff --git a/xflaim/csharp/cstest/VectorTests.cs b/xflaim/src/cs/cstest/VectorTests.cs similarity index 100% rename from xflaim/csharp/cstest/VectorTests.cs rename to xflaim/src/cs/cstest/VectorTests.cs diff --git a/xflaim/csharp/cstest/cstest.cs b/xflaim/src/cs/cstest/cstest.cs similarity index 100% rename from xflaim/csharp/cstest/cstest.cs rename to xflaim/src/cs/cstest/cstest.cs diff --git a/xflaim/csharp/sample/sample.cs b/xflaim/src/cs/sample/sample.cs similarity index 100% rename from xflaim/csharp/sample/sample.cs rename to xflaim/src/cs/sample/sample.cs diff --git a/xflaim/csharp/xflaim.ndoc b/xflaim/src/cs/xflaim.ndoc similarity index 100% rename from xflaim/csharp/xflaim.ndoc rename to xflaim/src/cs/xflaim.ndoc diff --git a/xflaim/csharp/xflaim/Backup.cpp b/xflaim/src/cs/xflaim/Backup.cpp similarity index 100% rename from xflaim/csharp/xflaim/Backup.cpp rename to xflaim/src/cs/xflaim/Backup.cpp diff --git a/xflaim/csharp/xflaim/Backup.cs b/xflaim/src/cs/xflaim/Backup.cs similarity index 100% rename from xflaim/csharp/xflaim/Backup.cs rename to xflaim/src/cs/xflaim/Backup.cs diff --git a/xflaim/csharp/xflaim/BackupClient.cs b/xflaim/src/cs/xflaim/BackupClient.cs similarity index 100% rename from xflaim/csharp/xflaim/BackupClient.cs rename to xflaim/src/cs/xflaim/BackupClient.cs diff --git a/xflaim/csharp/xflaim/BackupStatus.cs b/xflaim/src/cs/xflaim/BackupStatus.cs similarity index 100% rename from xflaim/csharp/xflaim/BackupStatus.cs rename to xflaim/src/cs/xflaim/BackupStatus.cs diff --git a/xflaim/csharp/xflaim/CacheInfo.cs b/xflaim/src/cs/xflaim/CacheInfo.cs similarity index 100% rename from xflaim/csharp/xflaim/CacheInfo.cs rename to xflaim/src/cs/xflaim/CacheInfo.cs diff --git a/xflaim/csharp/xflaim/DOMNode.cpp b/xflaim/src/cs/xflaim/DOMNode.cpp similarity index 100% rename from xflaim/csharp/xflaim/DOMNode.cpp rename to xflaim/src/cs/xflaim/DOMNode.cpp diff --git a/xflaim/csharp/xflaim/DOMNode.cs b/xflaim/src/cs/xflaim/DOMNode.cs similarity index 100% rename from xflaim/csharp/xflaim/DOMNode.cs rename to xflaim/src/cs/xflaim/DOMNode.cs diff --git a/xflaim/csharp/xflaim/DataVector.cpp b/xflaim/src/cs/xflaim/DataVector.cpp similarity index 100% rename from xflaim/csharp/xflaim/DataVector.cpp rename to xflaim/src/cs/xflaim/DataVector.cpp diff --git a/xflaim/csharp/xflaim/DataVector.cs b/xflaim/src/cs/xflaim/DataVector.cs similarity index 100% rename from xflaim/csharp/xflaim/DataVector.cs rename to xflaim/src/cs/xflaim/DataVector.cs diff --git a/xflaim/csharp/xflaim/Db.cpp b/xflaim/src/cs/xflaim/Db.cpp similarity index 100% rename from xflaim/csharp/xflaim/Db.cpp rename to xflaim/src/cs/xflaim/Db.cpp diff --git a/xflaim/csharp/xflaim/Db.cs b/xflaim/src/cs/xflaim/Db.cs similarity index 100% rename from xflaim/csharp/xflaim/Db.cs rename to xflaim/src/cs/xflaim/Db.cs diff --git a/xflaim/csharp/xflaim/DbCopyStatus.cs b/xflaim/src/cs/xflaim/DbCopyStatus.cs similarity index 100% rename from xflaim/csharp/xflaim/DbCopyStatus.cs rename to xflaim/src/cs/xflaim/DbCopyStatus.cs diff --git a/xflaim/csharp/xflaim/DbInfo.cpp b/xflaim/src/cs/xflaim/DbInfo.cpp similarity index 100% rename from xflaim/csharp/xflaim/DbInfo.cpp rename to xflaim/src/cs/xflaim/DbInfo.cpp diff --git a/xflaim/csharp/xflaim/DbInfo.cs b/xflaim/src/cs/xflaim/DbInfo.cs similarity index 100% rename from xflaim/csharp/xflaim/DbInfo.cs rename to xflaim/src/cs/xflaim/DbInfo.cs diff --git a/xflaim/csharp/xflaim/DbRenameStatus.cs b/xflaim/src/cs/xflaim/DbRenameStatus.cs similarity index 100% rename from xflaim/csharp/xflaim/DbRenameStatus.cs rename to xflaim/src/cs/xflaim/DbRenameStatus.cs diff --git a/xflaim/csharp/xflaim/DbSystem.cpp b/xflaim/src/cs/xflaim/DbSystem.cpp similarity index 100% rename from xflaim/csharp/xflaim/DbSystem.cpp rename to xflaim/src/cs/xflaim/DbSystem.cpp diff --git a/xflaim/csharp/xflaim/DbSystem.cs b/xflaim/src/cs/xflaim/DbSystem.cs similarity index 100% rename from xflaim/csharp/xflaim/DbSystem.cs rename to xflaim/src/cs/xflaim/DbSystem.cs diff --git a/xflaim/csharp/xflaim/DbSystemStats.cpp b/xflaim/src/cs/xflaim/DbSystemStats.cpp similarity index 100% rename from xflaim/csharp/xflaim/DbSystemStats.cpp rename to xflaim/src/cs/xflaim/DbSystemStats.cpp diff --git a/xflaim/csharp/xflaim/DbSystemStats.cs b/xflaim/src/cs/xflaim/DbSystemStats.cs similarity index 100% rename from xflaim/csharp/xflaim/DbSystemStats.cs rename to xflaim/src/cs/xflaim/DbSystemStats.cs diff --git a/xflaim/csharp/xflaim/IStream.cpp b/xflaim/src/cs/xflaim/IStream.cpp similarity index 100% rename from xflaim/csharp/xflaim/IStream.cpp rename to xflaim/src/cs/xflaim/IStream.cpp diff --git a/xflaim/csharp/xflaim/IStream.cs b/xflaim/src/cs/xflaim/IStream.cs similarity index 100% rename from xflaim/csharp/xflaim/IStream.cs rename to xflaim/src/cs/xflaim/IStream.cs diff --git a/xflaim/csharp/xflaim/OStream.cpp b/xflaim/src/cs/xflaim/OStream.cpp similarity index 100% rename from xflaim/csharp/xflaim/OStream.cpp rename to xflaim/src/cs/xflaim/OStream.cpp diff --git a/xflaim/csharp/xflaim/OStream.cs b/xflaim/src/cs/xflaim/OStream.cs similarity index 100% rename from xflaim/csharp/xflaim/OStream.cs rename to xflaim/src/cs/xflaim/OStream.cs diff --git a/xflaim/csharp/xflaim/Query.cpp b/xflaim/src/cs/xflaim/Query.cpp similarity index 100% rename from xflaim/csharp/xflaim/Query.cpp rename to xflaim/src/cs/xflaim/Query.cpp diff --git a/xflaim/csharp/xflaim/Query.cs b/xflaim/src/cs/xflaim/Query.cs similarity index 100% rename from xflaim/csharp/xflaim/Query.cs rename to xflaim/src/cs/xflaim/Query.cs diff --git a/xflaim/csharp/xflaim/RCODE.cs b/xflaim/src/cs/xflaim/RCODE.cs similarity index 100% rename from xflaim/csharp/xflaim/RCODE.cs rename to xflaim/src/cs/xflaim/RCODE.cs diff --git a/xflaim/csharp/xflaim/RestoreClient.cs b/xflaim/src/cs/xflaim/RestoreClient.cs similarity index 100% rename from xflaim/csharp/xflaim/RestoreClient.cs rename to xflaim/src/cs/xflaim/RestoreClient.cs diff --git a/xflaim/csharp/xflaim/RestoreStatus.cs b/xflaim/src/cs/xflaim/RestoreStatus.cs similarity index 100% rename from xflaim/csharp/xflaim/RestoreStatus.cs rename to xflaim/src/cs/xflaim/RestoreStatus.cs diff --git a/xflaim/csharp/xflaim/dbCheck.cs b/xflaim/src/cs/xflaim/dbCheck.cs similarity index 100% rename from xflaim/csharp/xflaim/dbCheck.cs rename to xflaim/src/cs/xflaim/dbCheck.cs diff --git a/xflaim/csharp/xflaim/dbRebuild.cs b/xflaim/src/cs/xflaim/dbRebuild.cs similarity index 100% rename from xflaim/csharp/xflaim/dbRebuild.cs rename to xflaim/src/cs/xflaim/dbRebuild.cs diff --git a/xflaim/src/flaimsys.h b/xflaim/src/flaimsys.h index 2cd4a85..0129bbe 100644 --- a/xflaim/src/flaimsys.h +++ b/xflaim/src/flaimsys.h @@ -27,6 +27,10 @@ #ifndef FLAIMSYS_H #define FLAIMSYS_H +#if HAVE_CONFIG_H + #include +#endif + #include "xflaim.h" #undef FLM_HAS_ENCRYPTION @@ -35,10 +39,6 @@ #define FLM_HAS_ENCRYPTION #endif -#ifdef HAVE_CONFIG_H - #include "../config.h" -#endif - #if defined( FLM_WIN) // Conversion from XXX to YYY, possible loss of data #pragma warning( disable : 4244) diff --git a/xflaim/java/jni/jbackup.cpp b/xflaim/src/java/jni/jbackup.cpp similarity index 100% rename from xflaim/java/jni/jbackup.cpp rename to xflaim/src/java/jni/jbackup.cpp diff --git a/xflaim/java/jni/jdatavector.cpp b/xflaim/src/java/jni/jdatavector.cpp similarity index 100% rename from xflaim/java/jni/jdatavector.cpp rename to xflaim/src/java/jni/jdatavector.cpp diff --git a/xflaim/java/jni/jdb.cpp b/xflaim/src/java/jni/jdb.cpp similarity index 100% rename from xflaim/java/jni/jdb.cpp rename to xflaim/src/java/jni/jdb.cpp diff --git a/xflaim/java/jni/jdbsystem.cpp b/xflaim/src/java/jni/jdbsystem.cpp similarity index 100% rename from xflaim/java/jni/jdbsystem.cpp rename to xflaim/src/java/jni/jdbsystem.cpp diff --git a/xflaim/java/jni/jdomnode.cpp b/xflaim/src/java/jni/jdomnode.cpp similarity index 100% rename from xflaim/java/jni/jdomnode.cpp rename to xflaim/src/java/jni/jdomnode.cpp diff --git a/xflaim/java/jni/jistream.cpp b/xflaim/src/java/jni/jistream.cpp similarity index 100% rename from xflaim/java/jni/jistream.cpp rename to xflaim/src/java/jni/jistream.cpp diff --git a/xflaim/java/jni/jniftk.cpp b/xflaim/src/java/jni/jniftk.cpp similarity index 100% rename from xflaim/java/jni/jniftk.cpp rename to xflaim/src/java/jni/jniftk.cpp diff --git a/xflaim/java/jni/jniftk.h b/xflaim/src/java/jni/jniftk.h similarity index 100% rename from xflaim/java/jni/jniftk.h rename to xflaim/src/java/jni/jniftk.h diff --git a/xflaim/java/jni/jnirestore.cpp b/xflaim/src/java/jni/jnirestore.cpp similarity index 100% rename from xflaim/java/jni/jnirestore.cpp rename to xflaim/src/java/jni/jnirestore.cpp diff --git a/xflaim/java/jni/jnirestore.h b/xflaim/src/java/jni/jnirestore.h similarity index 100% rename from xflaim/java/jni/jnirestore.h rename to xflaim/src/java/jni/jnirestore.h diff --git a/xflaim/java/jni/jnistatus.cpp b/xflaim/src/java/jni/jnistatus.cpp similarity index 100% rename from xflaim/java/jni/jnistatus.cpp rename to xflaim/src/java/jni/jnistatus.cpp diff --git a/xflaim/java/jni/jnistatus.h b/xflaim/src/java/jni/jnistatus.h similarity index 100% rename from xflaim/java/jni/jnistatus.h rename to xflaim/src/java/jni/jnistatus.h diff --git a/xflaim/java/jni/jostream.cpp b/xflaim/src/java/jni/jostream.cpp similarity index 100% rename from xflaim/java/jni/jostream.cpp rename to xflaim/src/java/jni/jostream.cpp diff --git a/xflaim/java/jni/jquery.cpp b/xflaim/src/java/jni/jquery.cpp similarity index 100% rename from xflaim/java/jni/jquery.cpp rename to xflaim/src/java/jni/jquery.cpp diff --git a/xflaim/java/jni/xflaim_Backup.h b/xflaim/src/java/jni/xflaim_Backup.h similarity index 100% rename from xflaim/java/jni/xflaim_Backup.h rename to xflaim/src/java/jni/xflaim_Backup.h diff --git a/xflaim/java/jni/xflaim_BackupClient.h b/xflaim/src/java/jni/xflaim_BackupClient.h similarity index 100% rename from xflaim/java/jni/xflaim_BackupClient.h rename to xflaim/src/java/jni/xflaim_BackupClient.h diff --git a/xflaim/java/jni/xflaim_BackupStatus.h b/xflaim/src/java/jni/xflaim_BackupStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_BackupStatus.h rename to xflaim/src/java/jni/xflaim_BackupStatus.h diff --git a/xflaim/java/jni/xflaim_BlockIOStats.h b/xflaim/src/java/jni/xflaim_BlockIOStats.h similarity index 100% rename from xflaim/java/jni/xflaim_BlockIOStats.h rename to xflaim/src/java/jni/xflaim_BlockIOStats.h diff --git a/xflaim/java/jni/xflaim_CHECKINFO.h b/xflaim/src/java/jni/xflaim_CHECKINFO.h similarity index 100% rename from xflaim/java/jni/xflaim_CHECKINFO.h rename to xflaim/src/java/jni/xflaim_CHECKINFO.h diff --git a/xflaim/java/jni/xflaim_CHECKINFO_CheckPhaseCodes.h b/xflaim/src/java/jni/xflaim_CHECKINFO_CheckPhaseCodes.h similarity index 100% rename from xflaim/java/jni/xflaim_CHECKINFO_CheckPhaseCodes.h rename to xflaim/src/java/jni/xflaim_CHECKINFO_CheckPhaseCodes.h diff --git a/xflaim/java/jni/xflaim_CORRUPTINFO.h b/xflaim/src/java/jni/xflaim_CORRUPTINFO.h similarity index 100% rename from xflaim/java/jni/xflaim_CORRUPTINFO.h rename to xflaim/src/java/jni/xflaim_CORRUPTINFO.h diff --git a/xflaim/java/jni/xflaim_CORRUPTINFO_LOCALE_CODES.h b/xflaim/src/java/jni/xflaim_CORRUPTINFO_LOCALE_CODES.h similarity index 100% rename from xflaim/java/jni/xflaim_CORRUPTINFO_LOCALE_CODES.h rename to xflaim/src/java/jni/xflaim_CORRUPTINFO_LOCALE_CODES.h diff --git a/xflaim/java/jni/xflaim_CREATEOPTS.h b/xflaim/src/java/jni/xflaim_CREATEOPTS.h similarity index 100% rename from xflaim/java/jni/xflaim_CREATEOPTS.h rename to xflaim/src/java/jni/xflaim_CREATEOPTS.h diff --git a/xflaim/java/jni/xflaim_CacheInfo.h b/xflaim/src/java/jni/xflaim_CacheInfo.h similarity index 100% rename from xflaim/java/jni/xflaim_CacheInfo.h rename to xflaim/src/java/jni/xflaim_CacheInfo.h diff --git a/xflaim/java/jni/xflaim_CacheUsage.h b/xflaim/src/java/jni/xflaim_CacheUsage.h similarity index 100% rename from xflaim/java/jni/xflaim_CacheUsage.h rename to xflaim/src/java/jni/xflaim_CacheUsage.h diff --git a/xflaim/java/jni/xflaim_CheckpointInfo.h b/xflaim/src/java/jni/xflaim_CheckpointInfo.h similarity index 100% rename from xflaim/java/jni/xflaim_CheckpointInfo.h rename to xflaim/src/java/jni/xflaim_CheckpointInfo.h diff --git a/xflaim/java/jni/xflaim_Collections.h b/xflaim/src/java/jni/xflaim_Collections.h similarity index 100% rename from xflaim/java/jni/xflaim_Collections.h rename to xflaim/src/java/jni/xflaim_Collections.h diff --git a/xflaim/java/jni/xflaim_CommitClient.h b/xflaim/src/java/jni/xflaim_CommitClient.h similarity index 100% rename from xflaim/java/jni/xflaim_CommitClient.h rename to xflaim/src/java/jni/xflaim_CommitClient.h diff --git a/xflaim/java/jni/xflaim_CompareRules.h b/xflaim/src/java/jni/xflaim_CompareRules.h similarity index 100% rename from xflaim/java/jni/xflaim_CompareRules.h rename to xflaim/src/java/jni/xflaim_CompareRules.h diff --git a/xflaim/java/jni/xflaim_CountTimeStat.h b/xflaim/src/java/jni/xflaim_CountTimeStat.h similarity index 100% rename from xflaim/java/jni/xflaim_CountTimeStat.h rename to xflaim/src/java/jni/xflaim_CountTimeStat.h diff --git a/xflaim/java/jni/xflaim_DOMNode.h b/xflaim/src/java/jni/xflaim_DOMNode.h similarity index 100% rename from xflaim/java/jni/xflaim_DOMNode.h rename to xflaim/src/java/jni/xflaim_DOMNode.h diff --git a/xflaim/java/jni/xflaim_DataVector.h b/xflaim/src/java/jni/xflaim_DataVector.h similarity index 100% rename from xflaim/java/jni/xflaim_DataVector.h rename to xflaim/src/java/jni/xflaim_DataVector.h diff --git a/xflaim/java/jni/xflaim_Db.h b/xflaim/src/java/jni/xflaim_Db.h similarity index 100% rename from xflaim/java/jni/xflaim_Db.h rename to xflaim/src/java/jni/xflaim_Db.h diff --git a/xflaim/java/jni/xflaim_DbCheckFlags.h b/xflaim/src/java/jni/xflaim_DbCheckFlags.h similarity index 100% rename from xflaim/java/jni/xflaim_DbCheckFlags.h rename to xflaim/src/java/jni/xflaim_DbCheckFlags.h diff --git a/xflaim/java/jni/xflaim_DbCheckStatus.h b/xflaim/src/java/jni/xflaim_DbCheckStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_DbCheckStatus.h rename to xflaim/src/java/jni/xflaim_DbCheckStatus.h diff --git a/xflaim/java/jni/xflaim_DbCopyStatus.h b/xflaim/src/java/jni/xflaim_DbCopyStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_DbCopyStatus.h rename to xflaim/src/java/jni/xflaim_DbCopyStatus.h diff --git a/xflaim/java/jni/xflaim_DbInfo.h b/xflaim/src/java/jni/xflaim_DbInfo.h similarity index 100% rename from xflaim/java/jni/xflaim_DbInfo.h rename to xflaim/src/java/jni/xflaim_DbInfo.h diff --git a/xflaim/java/jni/xflaim_DbRebuildStatus.h b/xflaim/src/java/jni/xflaim_DbRebuildStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_DbRebuildStatus.h rename to xflaim/src/java/jni/xflaim_DbRebuildStatus.h diff --git a/xflaim/java/jni/xflaim_DbRenameStatus.h b/xflaim/src/java/jni/xflaim_DbRenameStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_DbRenameStatus.h rename to xflaim/src/java/jni/xflaim_DbRenameStatus.h diff --git a/xflaim/java/jni/xflaim_DbStats.h b/xflaim/src/java/jni/xflaim_DbStats.h similarity index 100% rename from xflaim/java/jni/xflaim_DbStats.h rename to xflaim/src/java/jni/xflaim_DbStats.h diff --git a/xflaim/java/jni/xflaim_DbSystem.h b/xflaim/src/java/jni/xflaim_DbSystem.h similarity index 100% rename from xflaim/java/jni/xflaim_DbSystem.h rename to xflaim/src/java/jni/xflaim_DbSystem.h diff --git a/xflaim/java/jni/xflaim_DefaultBackupClient.h b/xflaim/src/java/jni/xflaim_DefaultBackupClient.h similarity index 100% rename from xflaim/java/jni/xflaim_DefaultBackupClient.h rename to xflaim/src/java/jni/xflaim_DefaultBackupClient.h diff --git a/xflaim/java/jni/xflaim_DefaultRestoreClient.h b/xflaim/src/java/jni/xflaim_DefaultRestoreClient.h similarity index 100% rename from xflaim/java/jni/xflaim_DefaultRestoreClient.h rename to xflaim/src/java/jni/xflaim_DefaultRestoreClient.h diff --git a/xflaim/java/jni/xflaim_DeleteStatus.h b/xflaim/src/java/jni/xflaim_DeleteStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_DeleteStatus.h rename to xflaim/src/java/jni/xflaim_DeleteStatus.h diff --git a/xflaim/java/jni/xflaim_DictType.h b/xflaim/src/java/jni/xflaim_DictType.h similarity index 100% rename from xflaim/java/jni/xflaim_DictType.h rename to xflaim/src/java/jni/xflaim_DictType.h diff --git a/xflaim/java/jni/xflaim_DiskIOStat.h b/xflaim/src/java/jni/xflaim_DiskIOStat.h similarity index 100% rename from xflaim/java/jni/xflaim_DiskIOStat.h rename to xflaim/src/java/jni/xflaim_DiskIOStat.h diff --git a/xflaim/java/jni/xflaim_ExportFormatType.h b/xflaim/src/java/jni/xflaim_ExportFormatType.h similarity index 100% rename from xflaim/java/jni/xflaim_ExportFormatType.h rename to xflaim/src/java/jni/xflaim_ExportFormatType.h diff --git a/xflaim/java/jni/xflaim_FlmBackupType.h b/xflaim/src/java/jni/xflaim_FlmBackupType.h similarity index 100% rename from xflaim/java/jni/xflaim_FlmBackupType.h rename to xflaim/src/java/jni/xflaim_FlmBackupType.h diff --git a/xflaim/java/jni/xflaim_FlmDataType.h b/xflaim/src/java/jni/xflaim_FlmDataType.h similarity index 100% rename from xflaim/java/jni/xflaim_FlmDataType.h rename to xflaim/src/java/jni/xflaim_FlmDataType.h diff --git a/xflaim/java/jni/xflaim_FlmDictIndex.h b/xflaim/src/java/jni/xflaim_FlmDictIndex.h similarity index 100% rename from xflaim/java/jni/xflaim_FlmDictIndex.h rename to xflaim/src/java/jni/xflaim_FlmDictIndex.h diff --git a/xflaim/java/jni/xflaim_FlmDomNodeType.h b/xflaim/src/java/jni/xflaim_FlmDomNodeType.h similarity index 100% rename from xflaim/java/jni/xflaim_FlmDomNodeType.h rename to xflaim/src/java/jni/xflaim_FlmDomNodeType.h diff --git a/xflaim/java/jni/xflaim_FlmInsertLoc.h b/xflaim/src/java/jni/xflaim_FlmInsertLoc.h similarity index 100% rename from xflaim/java/jni/xflaim_FlmInsertLoc.h rename to xflaim/src/java/jni/xflaim_FlmInsertLoc.h diff --git a/xflaim/java/jni/xflaim_IStream.h b/xflaim/src/java/jni/xflaim_IStream.h similarity index 100% rename from xflaim/java/jni/xflaim_IStream.h rename to xflaim/src/java/jni/xflaim_IStream.h diff --git a/xflaim/java/jni/xflaim_ImportStats.h b/xflaim/src/java/jni/xflaim_ImportStats.h similarity index 100% rename from xflaim/java/jni/xflaim_ImportStats.h rename to xflaim/src/java/jni/xflaim_ImportStats.h diff --git a/xflaim/java/jni/xflaim_IndexState.h b/xflaim/src/java/jni/xflaim_IndexState.h similarity index 100% rename from xflaim/java/jni/xflaim_IndexState.h rename to xflaim/src/java/jni/xflaim_IndexState.h diff --git a/xflaim/java/jni/xflaim_IndexStatus.h b/xflaim/src/java/jni/xflaim_IndexStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_IndexStatus.h rename to xflaim/src/java/jni/xflaim_IndexStatus.h diff --git a/xflaim/java/jni/xflaim_InsertLoc.h b/xflaim/src/java/jni/xflaim_InsertLoc.h similarity index 100% rename from xflaim/java/jni/xflaim_InsertLoc.h rename to xflaim/src/java/jni/xflaim_InsertLoc.h diff --git a/xflaim/java/jni/xflaim_IxClient.h b/xflaim/src/java/jni/xflaim_IxClient.h similarity index 100% rename from xflaim/java/jni/xflaim_IxClient.h rename to xflaim/src/java/jni/xflaim_IxClient.h diff --git a/xflaim/java/jni/xflaim_IxStatus.h b/xflaim/src/java/jni/xflaim_IxStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_IxStatus.h rename to xflaim/src/java/jni/xflaim_IxStatus.h diff --git a/xflaim/java/jni/xflaim_KeyRetrieveFlags.h b/xflaim/src/java/jni/xflaim_KeyRetrieveFlags.h similarity index 100% rename from xflaim/java/jni/xflaim_KeyRetrieveFlags.h rename to xflaim/src/java/jni/xflaim_KeyRetrieveFlags.h diff --git a/xflaim/java/jni/xflaim_LFileStats.h b/xflaim/src/java/jni/xflaim_LFileStats.h similarity index 100% rename from xflaim/java/jni/xflaim_LFileStats.h rename to xflaim/src/java/jni/xflaim_LFileStats.h diff --git a/xflaim/java/jni/xflaim_LockStats.h b/xflaim/src/java/jni/xflaim_LockStats.h similarity index 100% rename from xflaim/java/jni/xflaim_LockStats.h rename to xflaim/src/java/jni/xflaim_LockStats.h diff --git a/xflaim/java/jni/xflaim_LockType.h b/xflaim/src/java/jni/xflaim_LockType.h similarity index 100% rename from xflaim/java/jni/xflaim_LockType.h rename to xflaim/src/java/jni/xflaim_LockType.h diff --git a/xflaim/java/jni/xflaim_LockUser.h b/xflaim/src/java/jni/xflaim_LockUser.h similarity index 100% rename from xflaim/java/jni/xflaim_LockUser.h rename to xflaim/src/java/jni/xflaim_LockUser.h diff --git a/xflaim/java/jni/xflaim_OStream.h b/xflaim/src/java/jni/xflaim_OStream.h similarity index 100% rename from xflaim/java/jni/xflaim_OStream.h rename to xflaim/src/java/jni/xflaim_OStream.h diff --git a/xflaim/java/jni/xflaim_OptInfo.h b/xflaim/src/java/jni/xflaim_OptInfo.h similarity index 100% rename from xflaim/java/jni/xflaim_OptInfo.h rename to xflaim/src/java/jni/xflaim_OptInfo.h diff --git a/xflaim/java/jni/xflaim_OptType.h b/xflaim/src/java/jni/xflaim_OptType.h similarity index 100% rename from xflaim/java/jni/xflaim_OptType.h rename to xflaim/src/java/jni/xflaim_OptType.h diff --git a/xflaim/java/jni/xflaim_Query.h b/xflaim/src/java/jni/xflaim_Query.h similarity index 100% rename from xflaim/java/jni/xflaim_Query.h rename to xflaim/src/java/jni/xflaim_Query.h diff --git a/xflaim/java/jni/xflaim_QueryOperators.h b/xflaim/src/java/jni/xflaim_QueryOperators.h similarity index 100% rename from xflaim/java/jni/xflaim_QueryOperators.h rename to xflaim/src/java/jni/xflaim_QueryOperators.h diff --git a/xflaim/java/jni/xflaim_RCODE.h b/xflaim/src/java/jni/xflaim_RCODE.h similarity index 100% rename from xflaim/java/jni/xflaim_RCODE.h rename to xflaim/src/java/jni/xflaim_RCODE.h diff --git a/xflaim/java/jni/xflaim_RTransStats.h b/xflaim/src/java/jni/xflaim_RTransStats.h similarity index 100% rename from xflaim/java/jni/xflaim_RTransStats.h rename to xflaim/src/java/jni/xflaim_RTransStats.h diff --git a/xflaim/java/jni/xflaim_RebuildStatus.h b/xflaim/src/java/jni/xflaim_RebuildStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_RebuildStatus.h rename to xflaim/src/java/jni/xflaim_RebuildStatus.h diff --git a/xflaim/java/jni/xflaim_ReserveID.h b/xflaim/src/java/jni/xflaim_ReserveID.h similarity index 100% rename from xflaim/java/jni/xflaim_ReserveID.h rename to xflaim/src/java/jni/xflaim_ReserveID.h diff --git a/xflaim/java/jni/xflaim_RestoreAction.h b/xflaim/src/java/jni/xflaim_RestoreAction.h similarity index 100% rename from xflaim/java/jni/xflaim_RestoreAction.h rename to xflaim/src/java/jni/xflaim_RestoreAction.h diff --git a/xflaim/java/jni/xflaim_RestoreClient.h b/xflaim/src/java/jni/xflaim_RestoreClient.h similarity index 100% rename from xflaim/java/jni/xflaim_RestoreClient.h rename to xflaim/src/java/jni/xflaim_RestoreClient.h diff --git a/xflaim/java/jni/xflaim_RestoreStatus.h b/xflaim/src/java/jni/xflaim_RestoreStatus.h similarity index 100% rename from xflaim/java/jni/xflaim_RestoreStatus.h rename to xflaim/src/java/jni/xflaim_RestoreStatus.h diff --git a/xflaim/java/jni/xflaim_ResultSetCounts.h b/xflaim/src/java/jni/xflaim_ResultSetCounts.h similarity index 100% rename from xflaim/java/jni/xflaim_ResultSetCounts.h rename to xflaim/src/java/jni/xflaim_ResultSetCounts.h diff --git a/xflaim/java/jni/xflaim_SearchFlags.h b/xflaim/src/java/jni/xflaim_SearchFlags.h similarity index 100% rename from xflaim/java/jni/xflaim_SearchFlags.h rename to xflaim/src/java/jni/xflaim_SearchFlags.h diff --git a/xflaim/java/jni/xflaim_SlabUsage.h b/xflaim/src/java/jni/xflaim_SlabUsage.h similarity index 100% rename from xflaim/java/jni/xflaim_SlabUsage.h rename to xflaim/src/java/jni/xflaim_SlabUsage.h diff --git a/xflaim/java/jni/xflaim_Stats.h b/xflaim/src/java/jni/xflaim_Stats.h similarity index 100% rename from xflaim/java/jni/xflaim_Stats.h rename to xflaim/src/java/jni/xflaim_Stats.h diff --git a/xflaim/java/jni/xflaim_TransactionFlags.h b/xflaim/src/java/jni/xflaim_TransactionFlags.h similarity index 100% rename from xflaim/java/jni/xflaim_TransactionFlags.h rename to xflaim/src/java/jni/xflaim_TransactionFlags.h diff --git a/xflaim/java/jni/xflaim_TransactionType.h b/xflaim/src/java/jni/xflaim_TransactionType.h similarity index 100% rename from xflaim/java/jni/xflaim_TransactionType.h rename to xflaim/src/java/jni/xflaim_TransactionType.h diff --git a/xflaim/java/jni/xflaim_UTransStats.h b/xflaim/src/java/jni/xflaim_UTransStats.h similarity index 100% rename from xflaim/java/jni/xflaim_UTransStats.h rename to xflaim/src/java/jni/xflaim_UTransStats.h diff --git a/xflaim/java/jni/xflaim_XFlaimException.h b/xflaim/src/java/jni/xflaim_XFlaimException.h similarity index 100% rename from xflaim/java/jni/xflaim_XFlaimException.h rename to xflaim/src/java/jni/xflaim_XFlaimException.h diff --git a/xflaim/java/jni/xflaim_XPathAxis.h b/xflaim/src/java/jni/xflaim_XPathAxis.h similarity index 100% rename from xflaim/java/jni/xflaim_XPathAxis.h rename to xflaim/src/java/jni/xflaim_XPathAxis.h diff --git a/xflaim/java/util/XFlaimTester/XFlaimTester.java b/xflaim/src/java/util/XFlaimTester/XFlaimTester.java similarity index 100% rename from xflaim/java/util/XFlaimTester/XFlaimTester.java rename to xflaim/src/java/util/XFlaimTester/XFlaimTester.java diff --git a/xflaim/java/util/XFlaimTester/run.bat b/xflaim/src/java/util/XFlaimTester/run.bat similarity index 100% rename from xflaim/java/util/XFlaimTester/run.bat rename to xflaim/src/java/util/XFlaimTester/run.bat diff --git a/xflaim/java/util/xedit/Attribute.java b/xflaim/src/java/util/xedit/Attribute.java similarity index 100% rename from xflaim/java/util/xedit/Attribute.java rename to xflaim/src/java/util/xedit/Attribute.java diff --git a/xflaim/java/util/xedit/AttributeSelector.java b/xflaim/src/java/util/xedit/AttributeSelector.java similarity index 100% rename from xflaim/java/util/xedit/AttributeSelector.java rename to xflaim/src/java/util/xedit/AttributeSelector.java diff --git a/xflaim/java/util/xedit/Collection.java b/xflaim/src/java/util/xedit/Collection.java similarity index 100% rename from xflaim/java/util/xedit/Collection.java rename to xflaim/src/java/util/xedit/Collection.java diff --git a/xflaim/java/util/xedit/CollectionSelector.java b/xflaim/src/java/util/xedit/CollectionSelector.java similarity index 100% rename from xflaim/java/util/xedit/CollectionSelector.java rename to xflaim/src/java/util/xedit/CollectionSelector.java diff --git a/xflaim/java/util/xedit/Document.java b/xflaim/src/java/util/xedit/Document.java similarity index 100% rename from xflaim/java/util/xedit/Document.java rename to xflaim/src/java/util/xedit/Document.java diff --git a/xflaim/java/util/xedit/DocumentSelector.java b/xflaim/src/java/util/xedit/DocumentSelector.java similarity index 100% rename from xflaim/java/util/xedit/DocumentSelector.java rename to xflaim/src/java/util/xedit/DocumentSelector.java diff --git a/xflaim/java/util/xedit/EditValueDialog.java b/xflaim/src/java/util/xedit/EditValueDialog.java similarity index 100% rename from xflaim/java/util/xedit/EditValueDialog.java rename to xflaim/src/java/util/xedit/EditValueDialog.java diff --git a/xflaim/java/util/xedit/FileImporter.java b/xflaim/src/java/util/xedit/FileImporter.java similarity index 100% rename from xflaim/java/util/xedit/FileImporter.java rename to xflaim/src/java/util/xedit/FileImporter.java diff --git a/xflaim/java/util/xedit/NodeDialog.java b/xflaim/src/java/util/xedit/NodeDialog.java similarity index 100% rename from xflaim/java/util/xedit/NodeDialog.java rename to xflaim/src/java/util/xedit/NodeDialog.java diff --git a/xflaim/java/util/xedit/NodePanel.java b/xflaim/src/java/util/xedit/NodePanel.java similarity index 100% rename from xflaim/java/util/xedit/NodePanel.java rename to xflaim/src/java/util/xedit/NodePanel.java diff --git a/xflaim/java/util/xedit/NodeTag.java b/xflaim/src/java/util/xedit/NodeTag.java similarity index 100% rename from xflaim/java/util/xedit/NodeTag.java rename to xflaim/src/java/util/xedit/NodeTag.java diff --git a/xflaim/java/util/xedit/NodeType.java b/xflaim/src/java/util/xedit/NodeType.java similarity index 100% rename from xflaim/java/util/xedit/NodeType.java rename to xflaim/src/java/util/xedit/NodeType.java diff --git a/xflaim/java/util/xedit/NodeValue.java b/xflaim/src/java/util/xedit/NodeValue.java similarity index 100% rename from xflaim/java/util/xedit/NodeValue.java rename to xflaim/src/java/util/xedit/NodeValue.java diff --git a/xflaim/java/util/xedit/OpenDocumentSelector.java b/xflaim/src/java/util/xedit/OpenDocumentSelector.java similarity index 100% rename from xflaim/java/util/xedit/OpenDocumentSelector.java rename to xflaim/src/java/util/xedit/OpenDocumentSelector.java diff --git a/xflaim/java/util/xedit/ProgressBox.java b/xflaim/src/java/util/xedit/ProgressBox.java similarity index 100% rename from xflaim/java/util/xedit/ProgressBox.java rename to xflaim/src/java/util/xedit/ProgressBox.java diff --git a/xflaim/java/util/xedit/Status.java b/xflaim/src/java/util/xedit/Status.java similarity index 100% rename from xflaim/java/util/xedit/Status.java rename to xflaim/src/java/util/xedit/Status.java diff --git a/xflaim/java/util/xedit/UITools.java b/xflaim/src/java/util/xedit/UITools.java similarity index 100% rename from xflaim/java/util/xedit/UITools.java rename to xflaim/src/java/util/xedit/UITools.java diff --git a/xflaim/java/util/xedit/XEdit.java b/xflaim/src/java/util/xedit/XEdit.java similarity index 100% rename from xflaim/java/util/xedit/XEdit.java rename to xflaim/src/java/util/xedit/XEdit.java diff --git a/xflaim/java/util/xedit/XFileFilter.java b/xflaim/src/java/util/xedit/XFileFilter.java similarity index 100% rename from xflaim/java/util/xedit/XFileFilter.java rename to xflaim/src/java/util/xedit/XFileFilter.java diff --git a/xflaim/java/xflaim/Backup.java b/xflaim/src/java/xflaim/Backup.java similarity index 100% rename from xflaim/java/xflaim/Backup.java rename to xflaim/src/java/xflaim/Backup.java diff --git a/xflaim/java/xflaim/BackupClient.java b/xflaim/src/java/xflaim/BackupClient.java similarity index 100% rename from xflaim/java/xflaim/BackupClient.java rename to xflaim/src/java/xflaim/BackupClient.java diff --git a/xflaim/java/xflaim/BackupStatus.java b/xflaim/src/java/xflaim/BackupStatus.java similarity index 100% rename from xflaim/java/xflaim/BackupStatus.java rename to xflaim/src/java/xflaim/BackupStatus.java diff --git a/xflaim/java/xflaim/BlockIOStats.java b/xflaim/src/java/xflaim/BlockIOStats.java similarity index 100% rename from xflaim/java/xflaim/BlockIOStats.java rename to xflaim/src/java/xflaim/BlockIOStats.java diff --git a/xflaim/java/xflaim/CHECKINFO.java b/xflaim/src/java/xflaim/CHECKINFO.java similarity index 100% rename from xflaim/java/xflaim/CHECKINFO.java rename to xflaim/src/java/xflaim/CHECKINFO.java diff --git a/xflaim/java/xflaim/CORRUPTINFO.java b/xflaim/src/java/xflaim/CORRUPTINFO.java similarity index 100% rename from xflaim/java/xflaim/CORRUPTINFO.java rename to xflaim/src/java/xflaim/CORRUPTINFO.java diff --git a/xflaim/java/xflaim/CREATEOPTS.java b/xflaim/src/java/xflaim/CREATEOPTS.java similarity index 100% rename from xflaim/java/xflaim/CREATEOPTS.java rename to xflaim/src/java/xflaim/CREATEOPTS.java diff --git a/xflaim/java/xflaim/CacheInfo.java b/xflaim/src/java/xflaim/CacheInfo.java similarity index 100% rename from xflaim/java/xflaim/CacheInfo.java rename to xflaim/src/java/xflaim/CacheInfo.java diff --git a/xflaim/java/xflaim/CacheUsage.java b/xflaim/src/java/xflaim/CacheUsage.java similarity index 100% rename from xflaim/java/xflaim/CacheUsage.java rename to xflaim/src/java/xflaim/CacheUsage.java diff --git a/xflaim/java/xflaim/CheckpointInfo.java b/xflaim/src/java/xflaim/CheckpointInfo.java similarity index 100% rename from xflaim/java/xflaim/CheckpointInfo.java rename to xflaim/src/java/xflaim/CheckpointInfo.java diff --git a/xflaim/java/xflaim/Collections.java b/xflaim/src/java/xflaim/Collections.java similarity index 100% rename from xflaim/java/xflaim/Collections.java rename to xflaim/src/java/xflaim/Collections.java diff --git a/xflaim/java/xflaim/CommitClient.java b/xflaim/src/java/xflaim/CommitClient.java similarity index 100% rename from xflaim/java/xflaim/CommitClient.java rename to xflaim/src/java/xflaim/CommitClient.java diff --git a/xflaim/java/xflaim/CompareRules.java b/xflaim/src/java/xflaim/CompareRules.java similarity index 100% rename from xflaim/java/xflaim/CompareRules.java rename to xflaim/src/java/xflaim/CompareRules.java diff --git a/xflaim/java/xflaim/CountTimeStat.java b/xflaim/src/java/xflaim/CountTimeStat.java similarity index 100% rename from xflaim/java/xflaim/CountTimeStat.java rename to xflaim/src/java/xflaim/CountTimeStat.java diff --git a/xflaim/java/xflaim/DOMNode.java b/xflaim/src/java/xflaim/DOMNode.java similarity index 100% rename from xflaim/java/xflaim/DOMNode.java rename to xflaim/src/java/xflaim/DOMNode.java diff --git a/xflaim/java/xflaim/DataVector.java b/xflaim/src/java/xflaim/DataVector.java similarity index 100% rename from xflaim/java/xflaim/DataVector.java rename to xflaim/src/java/xflaim/DataVector.java diff --git a/xflaim/java/xflaim/Db.java b/xflaim/src/java/xflaim/Db.java similarity index 100% rename from xflaim/java/xflaim/Db.java rename to xflaim/src/java/xflaim/Db.java diff --git a/xflaim/java/xflaim/DbCheckFlags.java b/xflaim/src/java/xflaim/DbCheckFlags.java similarity index 100% rename from xflaim/java/xflaim/DbCheckFlags.java rename to xflaim/src/java/xflaim/DbCheckFlags.java diff --git a/xflaim/java/xflaim/DbCheckStatus.java b/xflaim/src/java/xflaim/DbCheckStatus.java similarity index 100% rename from xflaim/java/xflaim/DbCheckStatus.java rename to xflaim/src/java/xflaim/DbCheckStatus.java diff --git a/xflaim/java/xflaim/DbCopyStatus.java b/xflaim/src/java/xflaim/DbCopyStatus.java similarity index 100% rename from xflaim/java/xflaim/DbCopyStatus.java rename to xflaim/src/java/xflaim/DbCopyStatus.java diff --git a/xflaim/java/xflaim/DbInfo.java b/xflaim/src/java/xflaim/DbInfo.java similarity index 100% rename from xflaim/java/xflaim/DbInfo.java rename to xflaim/src/java/xflaim/DbInfo.java diff --git a/xflaim/java/xflaim/DbRebuildStatus.java b/xflaim/src/java/xflaim/DbRebuildStatus.java similarity index 100% rename from xflaim/java/xflaim/DbRebuildStatus.java rename to xflaim/src/java/xflaim/DbRebuildStatus.java diff --git a/xflaim/java/xflaim/DbRenameStatus.java b/xflaim/src/java/xflaim/DbRenameStatus.java similarity index 100% rename from xflaim/java/xflaim/DbRenameStatus.java rename to xflaim/src/java/xflaim/DbRenameStatus.java diff --git a/xflaim/java/xflaim/DbStats.java b/xflaim/src/java/xflaim/DbStats.java similarity index 100% rename from xflaim/java/xflaim/DbStats.java rename to xflaim/src/java/xflaim/DbStats.java diff --git a/xflaim/java/xflaim/DbSystem.java b/xflaim/src/java/xflaim/DbSystem.java similarity index 100% rename from xflaim/java/xflaim/DbSystem.java rename to xflaim/src/java/xflaim/DbSystem.java diff --git a/xflaim/java/xflaim/DefaultBackupClient.java b/xflaim/src/java/xflaim/DefaultBackupClient.java similarity index 100% rename from xflaim/java/xflaim/DefaultBackupClient.java rename to xflaim/src/java/xflaim/DefaultBackupClient.java diff --git a/xflaim/java/xflaim/DefaultRestoreClient.java b/xflaim/src/java/xflaim/DefaultRestoreClient.java similarity index 100% rename from xflaim/java/xflaim/DefaultRestoreClient.java rename to xflaim/src/java/xflaim/DefaultRestoreClient.java diff --git a/xflaim/java/xflaim/DeleteStatus.java b/xflaim/src/java/xflaim/DeleteStatus.java similarity index 100% rename from xflaim/java/xflaim/DeleteStatus.java rename to xflaim/src/java/xflaim/DeleteStatus.java diff --git a/xflaim/java/xflaim/DictType.java b/xflaim/src/java/xflaim/DictType.java similarity index 100% rename from xflaim/java/xflaim/DictType.java rename to xflaim/src/java/xflaim/DictType.java diff --git a/xflaim/java/xflaim/DiskIOStat.java b/xflaim/src/java/xflaim/DiskIOStat.java similarity index 100% rename from xflaim/java/xflaim/DiskIOStat.java rename to xflaim/src/java/xflaim/DiskIOStat.java diff --git a/xflaim/java/xflaim/ExportFormatType.java b/xflaim/src/java/xflaim/ExportFormatType.java similarity index 100% rename from xflaim/java/xflaim/ExportFormatType.java rename to xflaim/src/java/xflaim/ExportFormatType.java diff --git a/xflaim/java/xflaim/FlmBackupType.java b/xflaim/src/java/xflaim/FlmBackupType.java similarity index 100% rename from xflaim/java/xflaim/FlmBackupType.java rename to xflaim/src/java/xflaim/FlmBackupType.java diff --git a/xflaim/java/xflaim/FlmDataType.java b/xflaim/src/java/xflaim/FlmDataType.java similarity index 100% rename from xflaim/java/xflaim/FlmDataType.java rename to xflaim/src/java/xflaim/FlmDataType.java diff --git a/xflaim/java/xflaim/FlmDictIndex.java b/xflaim/src/java/xflaim/FlmDictIndex.java similarity index 100% rename from xflaim/java/xflaim/FlmDictIndex.java rename to xflaim/src/java/xflaim/FlmDictIndex.java diff --git a/xflaim/java/xflaim/FlmDomNodeType.java b/xflaim/src/java/xflaim/FlmDomNodeType.java similarity index 100% rename from xflaim/java/xflaim/FlmDomNodeType.java rename to xflaim/src/java/xflaim/FlmDomNodeType.java diff --git a/xflaim/java/xflaim/FlmInsertLoc.java b/xflaim/src/java/xflaim/FlmInsertLoc.java similarity index 100% rename from xflaim/java/xflaim/FlmInsertLoc.java rename to xflaim/src/java/xflaim/FlmInsertLoc.java diff --git a/xflaim/java/xflaim/IStream.java b/xflaim/src/java/xflaim/IStream.java similarity index 100% rename from xflaim/java/xflaim/IStream.java rename to xflaim/src/java/xflaim/IStream.java diff --git a/xflaim/java/xflaim/ImportStats.java b/xflaim/src/java/xflaim/ImportStats.java similarity index 100% rename from xflaim/java/xflaim/ImportStats.java rename to xflaim/src/java/xflaim/ImportStats.java diff --git a/xflaim/java/xflaim/IndexState.java b/xflaim/src/java/xflaim/IndexState.java similarity index 100% rename from xflaim/java/xflaim/IndexState.java rename to xflaim/src/java/xflaim/IndexState.java diff --git a/xflaim/java/xflaim/IndexStatus.java b/xflaim/src/java/xflaim/IndexStatus.java similarity index 100% rename from xflaim/java/xflaim/IndexStatus.java rename to xflaim/src/java/xflaim/IndexStatus.java diff --git a/xflaim/java/xflaim/InsertLoc.java b/xflaim/src/java/xflaim/InsertLoc.java similarity index 100% rename from xflaim/java/xflaim/InsertLoc.java rename to xflaim/src/java/xflaim/InsertLoc.java diff --git a/xflaim/java/xflaim/IxClient.java b/xflaim/src/java/xflaim/IxClient.java similarity index 100% rename from xflaim/java/xflaim/IxClient.java rename to xflaim/src/java/xflaim/IxClient.java diff --git a/xflaim/java/xflaim/IxStatus.java b/xflaim/src/java/xflaim/IxStatus.java similarity index 100% rename from xflaim/java/xflaim/IxStatus.java rename to xflaim/src/java/xflaim/IxStatus.java diff --git a/xflaim/java/xflaim/KeyRetrieveFlags.java b/xflaim/src/java/xflaim/KeyRetrieveFlags.java similarity index 100% rename from xflaim/java/xflaim/KeyRetrieveFlags.java rename to xflaim/src/java/xflaim/KeyRetrieveFlags.java diff --git a/xflaim/java/xflaim/LFileStats.java b/xflaim/src/java/xflaim/LFileStats.java similarity index 100% rename from xflaim/java/xflaim/LFileStats.java rename to xflaim/src/java/xflaim/LFileStats.java diff --git a/xflaim/java/xflaim/LockStats.java b/xflaim/src/java/xflaim/LockStats.java similarity index 100% rename from xflaim/java/xflaim/LockStats.java rename to xflaim/src/java/xflaim/LockStats.java diff --git a/xflaim/java/xflaim/LockType.java b/xflaim/src/java/xflaim/LockType.java similarity index 100% rename from xflaim/java/xflaim/LockType.java rename to xflaim/src/java/xflaim/LockType.java diff --git a/xflaim/java/xflaim/LockUser.java b/xflaim/src/java/xflaim/LockUser.java similarity index 100% rename from xflaim/java/xflaim/LockUser.java rename to xflaim/src/java/xflaim/LockUser.java diff --git a/xflaim/java/xflaim/OStream.java b/xflaim/src/java/xflaim/OStream.java similarity index 100% rename from xflaim/java/xflaim/OStream.java rename to xflaim/src/java/xflaim/OStream.java diff --git a/xflaim/java/xflaim/OptInfo.java b/xflaim/src/java/xflaim/OptInfo.java similarity index 100% rename from xflaim/java/xflaim/OptInfo.java rename to xflaim/src/java/xflaim/OptInfo.java diff --git a/xflaim/java/xflaim/OptType.java b/xflaim/src/java/xflaim/OptType.java similarity index 100% rename from xflaim/java/xflaim/OptType.java rename to xflaim/src/java/xflaim/OptType.java diff --git a/xflaim/java/xflaim/Query.java b/xflaim/src/java/xflaim/Query.java similarity index 100% rename from xflaim/java/xflaim/Query.java rename to xflaim/src/java/xflaim/Query.java diff --git a/xflaim/java/xflaim/QueryOperators.java b/xflaim/src/java/xflaim/QueryOperators.java similarity index 100% rename from xflaim/java/xflaim/QueryOperators.java rename to xflaim/src/java/xflaim/QueryOperators.java diff --git a/xflaim/java/xflaim/RCODE.java b/xflaim/src/java/xflaim/RCODE.java similarity index 100% rename from xflaim/java/xflaim/RCODE.java rename to xflaim/src/java/xflaim/RCODE.java diff --git a/xflaim/java/xflaim/RTransStats.java b/xflaim/src/java/xflaim/RTransStats.java similarity index 100% rename from xflaim/java/xflaim/RTransStats.java rename to xflaim/src/java/xflaim/RTransStats.java diff --git a/xflaim/java/xflaim/RebuildStatus.java b/xflaim/src/java/xflaim/RebuildStatus.java similarity index 100% rename from xflaim/java/xflaim/RebuildStatus.java rename to xflaim/src/java/xflaim/RebuildStatus.java diff --git a/xflaim/java/xflaim/ReserveID.java b/xflaim/src/java/xflaim/ReserveID.java similarity index 100% rename from xflaim/java/xflaim/ReserveID.java rename to xflaim/src/java/xflaim/ReserveID.java diff --git a/xflaim/java/xflaim/RestoreAction.java b/xflaim/src/java/xflaim/RestoreAction.java similarity index 100% rename from xflaim/java/xflaim/RestoreAction.java rename to xflaim/src/java/xflaim/RestoreAction.java diff --git a/xflaim/java/xflaim/RestoreClient.java b/xflaim/src/java/xflaim/RestoreClient.java similarity index 100% rename from xflaim/java/xflaim/RestoreClient.java rename to xflaim/src/java/xflaim/RestoreClient.java diff --git a/xflaim/java/xflaim/RestoreStatus.java b/xflaim/src/java/xflaim/RestoreStatus.java similarity index 100% rename from xflaim/java/xflaim/RestoreStatus.java rename to xflaim/src/java/xflaim/RestoreStatus.java diff --git a/xflaim/java/xflaim/ResultSetCounts.java b/xflaim/src/java/xflaim/ResultSetCounts.java similarity index 100% rename from xflaim/java/xflaim/ResultSetCounts.java rename to xflaim/src/java/xflaim/ResultSetCounts.java diff --git a/xflaim/java/xflaim/SearchFlags.java b/xflaim/src/java/xflaim/SearchFlags.java similarity index 100% rename from xflaim/java/xflaim/SearchFlags.java rename to xflaim/src/java/xflaim/SearchFlags.java diff --git a/xflaim/java/xflaim/SlabUsage.java b/xflaim/src/java/xflaim/SlabUsage.java similarity index 100% rename from xflaim/java/xflaim/SlabUsage.java rename to xflaim/src/java/xflaim/SlabUsage.java diff --git a/xflaim/java/xflaim/Stats.java b/xflaim/src/java/xflaim/Stats.java similarity index 100% rename from xflaim/java/xflaim/Stats.java rename to xflaim/src/java/xflaim/Stats.java diff --git a/xflaim/java/xflaim/TransactionFlags.java b/xflaim/src/java/xflaim/TransactionFlags.java similarity index 100% rename from xflaim/java/xflaim/TransactionFlags.java rename to xflaim/src/java/xflaim/TransactionFlags.java diff --git a/xflaim/java/xflaim/TransactionType.java b/xflaim/src/java/xflaim/TransactionType.java similarity index 100% rename from xflaim/java/xflaim/TransactionType.java rename to xflaim/src/java/xflaim/TransactionType.java diff --git a/xflaim/java/xflaim/UTransStats.java b/xflaim/src/java/xflaim/UTransStats.java similarity index 100% rename from xflaim/java/xflaim/UTransStats.java rename to xflaim/src/java/xflaim/UTransStats.java diff --git a/xflaim/java/xflaim/XFlaimException.java b/xflaim/src/java/xflaim/XFlaimException.java similarity index 100% rename from xflaim/java/xflaim/XFlaimException.java rename to xflaim/src/java/xflaim/XFlaimException.java diff --git a/xflaim/java/xflaim/XPathAxis.java b/xflaim/src/java/xflaim/XPathAxis.java similarity index 100% rename from xflaim/java/xflaim/XPathAxis.java rename to xflaim/src/java/xflaim/XPathAxis.java diff --git a/xflaim/src/xflaim.h b/xflaim/src/xflaim.h index a019ed0..8c78de1 100644 --- a/xflaim/src/xflaim.h +++ b/xflaim/src/xflaim.h @@ -26,7 +26,7 @@ #ifndef XFLAIM_H #define XFLAIM_H - #include "xflaimtk.h" + #include #ifdef FLM_PACK_STRUCTS #pragma pack(push, 1) diff --git a/xflaim/src/xflaimtk.h b/xflaim/src/xflaimtk.h deleted file mode 100644 index 4bdc457..0000000 --- a/xflaim/src/xflaimtk.h +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// Desc: Placeholder for FLAIM's cross-platform toolkit public definitions -// and interfaces -// Tabs: 3 -// -// Copyright (c) 2006-2007 Novell, Inc. All Rights Reserved. -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; version 2.1 -// of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Library Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, contact Novell, Inc. -// -// To contact Novell about this file by physical or electronic mail, -// you may find current contact information at www.novell.com. -// -// $Id$ -//------------------------------------------------------------------------------ - -#include "ftk.h" diff --git a/xflaim/util/Makefile.am b/xflaim/util/Makefile.am new file mode 100644 index 0000000..c3b58e5 --- /dev/null +++ b/xflaim/util/Makefile.am @@ -0,0 +1,208 @@ +EXTRA_DIST = dbdiff.cpp dbdiff.h domedit.cpp diffbackups.cpp xmlfiles + +XFLAIM_INCLUDE=-I$(top_srcdir)/src +XFLAIM_LDADD=../src/libxflaim.la + +## Utility Programs + +bin_PROGRAMS = xflmcheckdb xflmrebuild xflmview xflmdbshell + +xflmcheckdb_SOURCES = checkdb.cpp +xflmcheckdb_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +xflmcheckdb_LDADD = libutil.la $(XFLAIM_LDADD) + +xflmrebuild_SOURCES = rebuild.cpp +xflmrebuild_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +xflmrebuild_LDADD = libutil.la $(XFLAIM_LDADD) + +xflmview_SOURCES = \ + viewblk.cpp \ + view.cpp \ + viewdisp.cpp \ + viewedit.cpp \ + viewhdr.cpp \ + view.h \ + viewlfil.cpp \ + viewmenu.cpp \ + viewsrch.cpp +xflmview_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +xflmview_LDADD = libutil.la $(XFLAIM_LDADD) + +xflmdbshell_SOURCES = \ + domedit.h \ + fdomedt.cpp \ + fshell.cpp \ + fshell.h \ + xshell.cpp +xflmdbshell_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +xflmdbshell_LDADD = libutil.la $(XFLAIM_LDADD) + +## Utility Convenience Library + +noinst_LTLIBRARIES = libutil.la + +libutil_la_SOURCES = \ + flm_dlst.cpp \ + flm_dlst.h \ + flm_lutl.cpp \ + flm_lutl.h \ + sharutil.cpp \ + sharutil.h +libutil_la_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) + +## Check Programs + +check_PROGRAMS = \ + ut_basictest \ + ut_binarytest \ + ut_colldeftest \ + ut_dictchangetest \ + ut_dictdeftest \ + ut_dirtyexittest \ + ut_dirtyexittest2 \ + ut_domnodetest \ + ut_enctest \ + ut_importtest \ + ut_indexdeftest \ + ut_indextest \ + ut_indextest2 \ + ut_indextest3 \ + ut_metaphonetest \ + ut_namespacetest \ + ut_regressiontest \ + ut_rfltest \ + ut_sortkeytest \ + ut_sortkeytest2 \ + ut_xpathtest \ + ut_xpathtest2 + +check_DATA = copy-xml-files.stamp +check_HEADERS = flmunittest.h + +ut_basictest_SOURCES = flmunittest.cpp basictestsrv.cpp +ut_basictest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_basictest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_binarytest_SOURCES = flmunittest.cpp binarytest.cpp +ut_binarytest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_binarytest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_colldeftest_SOURCES = flmunittest.cpp colldeftestsrv.cpp +ut_colldeftest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_colldeftest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_dictchangetest_SOURCES = flmunittest.cpp dictchangetest.cpp +ut_dictchangetest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_dictchangetest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_dictdeftest_SOURCES = flmunittest.cpp dictdeftestsrv.cpp +ut_dictdeftest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_dictdeftest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_dirtyexittest_SOURCES = flmunittest.cpp dirtyexittest1srv.cpp +ut_dirtyexittest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_dirtyexittest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_dirtyexittest2_SOURCES = flmunittest.cpp dirtyexittest2srv.cpp +ut_dirtyexittest2_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_dirtyexittest2_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_domnodetest_SOURCES = flmunittest.cpp domnodetestsrv.cpp +ut_domnodetest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_domnodetest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_enctest_SOURCES = flmunittest.cpp enctestsrv.cpp +ut_enctest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_enctest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_importtest_SOURCES = flmunittest.cpp importtestsrv.cpp +ut_importtest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_importtest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_indexdeftest_SOURCES = flmunittest.cpp indexdeftestsrv.cpp +ut_indexdeftest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_indexdeftest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_indextest_SOURCES = flmunittest.cpp indextest1srv.cpp +ut_indextest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_indextest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_indextest2_SOURCES = flmunittest.cpp indextest2srv.cpp +ut_indextest2_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_indextest2_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_indextest3_SOURCES = flmunittest.cpp indextest3.cpp +ut_indextest3_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_indextest3_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_metaphonetest_SOURCES = flmunittest.cpp metaphonetestsrv.cpp +ut_metaphonetest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_metaphonetest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_namespacetest_SOURCES = flmunittest.cpp namespacetestsrv.cpp +ut_namespacetest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_namespacetest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_regressiontest_SOURCES = flmunittest.cpp regressiontest.cpp +ut_regressiontest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_regressiontest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_rfltest_SOURCES = flmunittest.cpp rfltestsrv.cpp +ut_rfltest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_rfltest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_sortkeytest_SOURCES = flmunittest.cpp sortkeytest.cpp +ut_sortkeytest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_sortkeytest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_sortkeytest2_SOURCES = flmunittest.cpp sortkeytest2.cpp +ut_sortkeytest2_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_sortkeytest2_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_xpathtest_SOURCES = flmunittest.cpp xpathtest1srv.cpp +ut_xpathtest_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_xpathtest_LDADD = libutil.la $(XFLAIM_LDADD) + +ut_xpathtest2_SOURCES = flmunittest.cpp xpathtest2srv.cpp +ut_xpathtest2_CPPFLAGS = $(XFLAIM_INCLUDE) $(FTK_INCLUDE) +ut_xpathtest2_LDADD = libutil.la $(XFLAIM_LDADD) + +## Unit Tests + +TESTS = \ + ut_basictest \ + ut_binarytest \ + ut_colldeftest \ + ut_dictchangetest \ + ut_dictdeftest \ + ut_dirtyexittest \ + ut_dirtyexittest2 \ + ut_domnodetest \ + ut_enctest \ + ut_importtest \ + ut_indexdeftest \ + ut_indextest \ + ut_indextest2 \ + ut_indextest3 \ + ut_metaphonetest \ + ut_namespacetest \ + ut_regressiontest \ + ut_rfltest \ + ut_sortkeytest \ + ut_sortkeytest2 \ + ut_xpathtest \ + ut_xpathtest2 + +## Miscellaneous rules required by Check Programs + +copy-xml-files.stamp: + cp $(srcdir)/xmlfiles/*.xml . + echo Timestamp > $@ + +clean-local: + -rm -rf ix2.* + -rm -rf bld.* + -rm -rf tst.bak + -rm -f *.xml + -rm -f copy-xml-files.stamp +