From e979735a195d45c3c1ed8657b0c4bad96aad90cf Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 1 Mar 2005 12:21:34 -0500 Subject: [PATCH] ENH: Framework for java dependency scanner. Right now it does nothing but always reports success. This is enough to get the Java test to pass with the new generator because the old implementation did not do dependencies anyway. --- Source/CMakeLists.txt | 2 + Source/cmDependsJava.cxx | 59 ++++++++++++++++++++++++ Source/cmDependsJava.h | 54 ++++++++++++++++++++++ Source/cmLocalUnixMakefileGenerator2.cxx | 10 ++++ 4 files changed, 125 insertions(+) create mode 100644 Source/cmDependsJava.cxx create mode 100644 Source/cmDependsJava.h diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 6ded4e85a..73c42e295 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -17,6 +17,8 @@ SET(SRCS cmDependsFortranLexer.cxx cmDependsFortranParser.cxx cmDependsFortranParser.h + cmDependsJava.cxx + cmDependsJava.h cmDependsJavaLexer.cxx cmDependsJavaParser.cxx cmDependsJavaParserHelper.cxx diff --git a/Source/cmDependsJava.cxx b/Source/cmDependsJava.cxx new file mode 100644 index 000000000..ebd1d83d2 --- /dev/null +++ b/Source/cmDependsJava.cxx @@ -0,0 +1,59 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "cmDependsJava.h" + +#include "cmDependsJavaParserHelper.h" +#include "cmSystemTools.h" + +//---------------------------------------------------------------------------- +cmDependsJava::cmDependsJava(const char* dir, const char* targetFile): + cmDepends(dir, targetFile), + m_SourceFile() +{ +} + +//---------------------------------------------------------------------------- +cmDependsJava::cmDependsJava(const char* dir, const char* targetFile, + const char* sourceFile): + cmDepends(dir, targetFile), + m_SourceFile(sourceFile) +{ +} + +//---------------------------------------------------------------------------- +cmDependsJava::~cmDependsJava() +{ +} + +//---------------------------------------------------------------------------- +bool cmDependsJava::WriteDependencies(std::ostream& os) +{ + // Make sure this is a scanning instance. + if(m_SourceFile == "") + { + cmSystemTools::Error("Cannot scan dependencies without an source file."); + return false; + } + + return true; +} + +//---------------------------------------------------------------------------- +bool cmDependsJava::CheckDependencies(std::istream&) +{ + return true; +} diff --git a/Source/cmDependsJava.h b/Source/cmDependsJava.h new file mode 100644 index 000000000..4904fe1e3 --- /dev/null +++ b/Source/cmDependsJava.h @@ -0,0 +1,54 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmDependsJava_h +#define cmDependsJava_h + +#include "cmDepends.h" + +/** \class cmDependsJava + * \brief Dependency scanner for Java class files. + */ +class cmDependsJava: public cmDepends +{ +public: + /** Checking instances need to know the build directory name and the + relative path from the build directory to the target file. */ + cmDependsJava(const char* dir, const char* targetFile); + + /** Scanning need to know the build directory name, the relative + path from the build directory to the target file and the source + file to scan. */ + cmDependsJava(const char* dir, const char* targetFile, + const char* sourceFile); + + /** Virtual destructor to cleanup subclasses properly. */ + virtual ~cmDependsJava(); + +protected: + // Implement writing/checking methods required by superclass. + virtual bool WriteDependencies(std::ostream& os); + virtual bool CheckDependencies(std::istream& is); + + // The source file from which to start scanning. + std::string m_SourceFile; + +private: + cmDependsJava(cmDependsJava const&); // Purposely not implemented. + void operator=(cmDependsJava const&); // Purposely not implemented. +}; + +#endif diff --git a/Source/cmLocalUnixMakefileGenerator2.cxx b/Source/cmLocalUnixMakefileGenerator2.cxx index 851504dcb..47a7d992b 100644 --- a/Source/cmLocalUnixMakefileGenerator2.cxx +++ b/Source/cmLocalUnixMakefileGenerator2.cxx @@ -28,6 +28,7 @@ #include "cmDependsC.h" #ifdef CMAKE_BUILD_WITH_CMAKE # include "cmDependsFortran.h" +# include "cmDependsJava.h" #endif #include // auto_ptr @@ -3135,6 +3136,10 @@ cmLocalUnixMakefileGenerator2::GetDependsChecker(const std::string& lang, { return new cmDependsFortran(dir, objFile); } + else if(lang == "Java") + { + return new cmDependsJava(dir, objFile); + } #endif return 0; } @@ -3219,6 +3224,11 @@ cmLocalUnixMakefileGenerator2 cmDependsFortran scanner(".", objFile, srcFile, includes); return scanner.Write(); } + else if(lang == "Java") + { + cmDependsJava scanner(".", objFile, srcFile); + return scanner.Write(); + } #endif return false; }