summaryrefslogtreecommitdiffstats
path: root/Source/cmMachO.h
diff options
context:
space:
mode:
authorClinton Stimpson <clinton@elemtech.com>2014-12-19 19:30:22 (GMT)
committerClinton Stimpson <clinton@elemtech.com>2014-12-22 18:32:10 (GMT)
commite42da30782785a02f0fabc385d14ac8f561af602 (patch)
treee7b0c84a14098a50d8af69ac211dda8218f58ec6 /Source/cmMachO.h
parentcd7bde80bf3c3e141a92058ad033833066da509b (diff)
downloadCMake-e42da30782785a02f0fabc385d14ac8f561af602.zip
CMake-e42da30782785a02f0fabc385d14ac8f561af602.tar.gz
CMake-e42da30782785a02f0fabc385d14ac8f561af602.tar.bz2
Mach-O: Add Mach-O parser for OS X and iOS.
This parser also supports fat binaries which archive multiple Mach-O binaries.
Diffstat (limited to 'Source/cmMachO.h')
-rw-r--r--Source/cmMachO.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/cmMachO.h b/Source/cmMachO.h
new file mode 100644
index 0000000..f06f8de
--- /dev/null
+++ b/Source/cmMachO.h
@@ -0,0 +1,51 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#ifndef cmMachO_h
+#define cmMachO_h
+
+#if !defined(CMAKE_USE_MACH_PARSER)
+# error "This file may be included only if CMAKE_USE_MACH_PARSER is enabled."
+#endif
+
+class cmMachOInternal;
+
+/** \class cmMachO
+ * \brief Executable and Link Format (Mach-O) parser.
+ */
+class cmMachO
+{
+public:
+ /** Construct with the name of the Mach-O input file to parse. */
+ cmMachO(const char* fname);
+
+ /** Destruct. */
+ ~cmMachO();
+
+ /** Get the error message if any. */
+ std::string const& GetErrorMessage() const;
+
+ /** Boolean conversion. True if the Mach-O file is valid. */
+ operator bool() const { return this->Valid(); }
+
+ /** Get Install name from binary **/
+ bool GetInstallName(std::string& install_name);
+
+ /** Print human-readable information about the Mach-O file. */
+ void PrintInfo(std::ostream& os) const;
+
+private:
+ friend class cmMachOInternal;
+ bool Valid() const;
+ cmMachOInternal* Internal;
+};
+
+#endif