r18957 - gnucash/trunk/src - Add new CPP macros which make it cleaner to have conditional compilation based on compiler/system and options selected during config
Phil Longstaff
plongstaff at code.gnucash.org
Tue Mar 23 14:34:17 EDT 2010
Author: plongstaff
Date: 2010-03-23 14:34:17 -0400 (Tue, 23 Mar 2010)
New Revision: 18957
Trac: http://svn.gnucash.org/trac/changeset/18957
Added:
gnucash/trunk/src/platform.h
Log:
Add new CPP macros which make it cleaner to have conditional compilation based on compiler/system and options selected during config
Examples:
#if COMPILER(MSVC)
#if COMPILER(GCC)
#if ENABLE(NLS)
#if HAVE(PUTENV)
This platform.h file includes config.h, so that doesn't need to be included any more.
PLATFORM(X) is based on the definition of GNC_PLATFORM_X
COMPILER(X) is based on the definition of GNC_COMPILER_X. At this point, only COMPILER(GCC), COMPILER(MSVC), COMPILER(MSVC7) and COMPILER(MINGW) are determined.
HAVE(X) is based on HAVE_X from config.h
ENABLE(X) is based on ENABLE_X from config.h
USE(X) is based on GNC_USE_X from config.h
Having these determinations at a central point makes it easier to add new platforms and easier to conditionally compile based on them.
Added: gnucash/trunk/src/platform.h
===================================================================
--- gnucash/trunk/src/platform.h (rev 0)
+++ gnucash/trunk/src/platform.h 2010-03-23 18:34:17 UTC (rev 18957)
@@ -0,0 +1,69 @@
+/********************************************************************\
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 2 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License*
+ * along with this program; if not, contact: *
+ * *
+ * Free Software Foundation Voice: +1-617-542-5942 *
+ * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
+ * Boston, MA 02110-1301, USA gnu at gnu.org *
+ * *
+\********************************************************************/
+
+#ifndef GNC_PLATFORM_H
+#define GNC_PLATFORM_H
+
+#include "config.h"
+
+/* PLATFORM handles OS, operating environment, graphics API, and CPU */
+#define PLATFORM(GNC_FEATURE) (defined( GNC_PLATFORM_##GNC_FEATURE ) && GNC_PLATFORM_##GNC_FEATURE)
+#define COMPILER(GNC_FEATURE) (defined( GNC_COMPILER_##GNC_FEATURE ) && GNC_COMPILER_##GNC_FEATURE)
+#define HAVE(GNC_FEATURE) (defined( HAVE_##GNC_FEATURE ) && HAVE_##GNC_FEATURE)
+#define USE(GNC_FEATURE) (defined( GNC_USE_##GNC_FEATURE ) && GNC_USE_##GNC_FEATURE)
+#define ENABLE(GNC_FEATURE) (defined( ENABLE_##GNC_FEATURE ) && ENABLE_##GNC_FEATURE)
+
+/* Operating systems - low-level dependencies */
+
+/* Operating environments */
+
+/* Graphics engines */
+
+/* CPU */
+
+/* Compiler */
+
+/* COMPILER(MSVC) */
+#if defined(_MSC_VER)
+#define GNC_COMPILER_MSVC 1
+#if _MSC_VER < 1400
+#define GNC_COMPILER_MSVC7 1
+#endif
+#endif
+
+/* COMPILER(RVCT) */
+#if defined(__CC_ARM) || defined(__ARMCC__)
+#define GNC_COMPILER_RVCT 1
+#endif
+
+/* COMPILER(GCC) */
+/* --gnu option of the RVCT compiler also defines __GNUC__ */
+#if defined(__GNUC__) && !COMPILER(RVCT)
+#define GNC_COMPILER_GCC 1
+#endif
+
+/* COMPILER(MINGW) */
+#if defined(MINGW) || defined(__MINGW32__)
+#define GNC_COMPILER_MINGW 1
+#endif
+
+/* ENABLE macro defaults */
+
+#endif /* GNC_PLATFORM_H */
More information about the gnucash-changes
mailing list