From 6cb83f8af0f1552897c5edee1bcc4e629b308953 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 28 Jul 2006 12:29:10 +0000 Subject: [PATCH] Add makefiles for building on win32 git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@646 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 9 ++ geany_private.rc | 32 ++++ makefile.win32 | 47 ++++++ scintilla/makefile.win32 | 84 ++++++++++ src/makefile.win32 | 84 ++++++++++ tagmanager/makefile.win32 | 47 ++++++ win32-config.h | 322 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 625 insertions(+) create mode 100644 geany_private.rc create mode 100644 makefile.win32 create mode 100644 scintilla/makefile.win32 create mode 100644 src/makefile.win32 create mode 100644 tagmanager/makefile.win32 create mode 100644 win32-config.h diff --git a/ChangeLog b/ChangeLog index 860b82bb..06466756 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-07-28 Nick Treleaven + + * src/sciwrappers.h: Set PLAT_GTK before including ScintillaWidget.h. + * src/Makefile.am, geany_windres.rc.in: Correct a typo. + * scintilla/makefile.win32, src/makefile.win32, makefile.win32, + tagmanager/makefile.win32, win32-config.h, geany_private.rc: + Add makefiles for building on win32. + + 2006-07-27 Enrico Tröger * src/sciwrappers.c, src/callbacks.c, src/utils.c, src/dialogs.c, diff --git a/geany_private.rc b/geany_private.rc new file mode 100644 index 00000000..711bf8d6 --- /dev/null +++ b/geany_private.rc @@ -0,0 +1,32 @@ + +#include // include for version info constants + + +A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "../pixmaps/geany.ico" + +1 VERSIONINFO +FILEVERSION 0,7,9,0 +PRODUCTVERSION 0,7,9,0 +FILETYPE VFT_APP +{ + BLOCK "StringFileInfo" + { + BLOCK "040704E4" + { + VALUE "CompanyName", "" + VALUE "FileVersion", "0.8svn" + VALUE "FileDescription", "Small and lightweight IDE (built using mingw gcc)" + VALUE "InternalName", "geany" + VALUE "LegalCopyright", "Copyright 2005-2006 by Enrico Troeger" + VALUE "LegalTrademarks", "" + VALUE "OriginalFilename", "geany" + VALUE "ProductName", "geany" + VALUE "ProductVersion", "0.8svn" + } + } + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0407, 1252 + } +} + diff --git a/makefile.win32 b/makefile.win32 new file mode 100644 index 00000000..713b53b5 --- /dev/null +++ b/makefile.win32 @@ -0,0 +1,47 @@ +# Running make creates config.h then calls the sub makefiles. +# +# Other targets are: +# deps: delete the dependencies so they are regenerated on next make +# clean: clean all generated files +# +# localwin32.mk is an optional file to override make variables. +# Use localwin32.mk instead of editing variables as it is included in sub +# makefiles. +# localwin32.mk to set PREFIX instead of the default C:\libs +# For MSYS use localwin32.mk to set CP and RM. +# By default this will work in a Windows command prompt. + +WINDRES = windres.exe +CC = gcc +CXX = g++ +CP = copy +RM = del +-include localwin32.mk + +# Note: && is needed after cd because each line is executed in a different +# shell. (cd .. is just for clarity). +all: check-tools config.h + cd tagmanager && make -f makefile.win32 && cd .. + cd scintilla && make -f makefile.win32 && cd .. + cd src && make -f makefile.win32 && cd .. + +# first check the required tools are installed +check-tools: + $(WINDRES) --version + $(CC) --version + $(CXX) --version + +config.h: win32-config.h + $(CP) $< $@ + +deps: + $(RM) tagmanager\deps.mak scintilla\deps.mak src\deps.mak + +# used by src/makefile.win32 to avoid del ../file which is an error +clean-local: + $(RM) geany_private.res geany.exe + +clean: + cd tagmanager && make -f makefile.win32 clean && cd .. + cd scintilla && make -f makefile.win32 clean && cd .. + cd src && make -f makefile.win32 clean && cd .. diff --git a/scintilla/makefile.win32 b/scintilla/makefile.win32 new file mode 100644 index 00000000..a716d216 --- /dev/null +++ b/scintilla/makefile.win32 @@ -0,0 +1,84 @@ +# Make file for Scintilla on Linux or compatible OS +# Copyright 1998-2001 by Neil Hodgson +# The License.txt file describes the conditions under which this software may be distributed. +# This makefile assumes GCC 3.1 is used and changes will be needed to use other compilers. +# GNU make does not like \r\n line endings so should be saved to CVS in binary form. +# Builds for GTK+ 2 if available else GTK+ 1. +# To force GTK+ 2 build, define GTK2 on the make command line. +# To force GTK+ 1 build, define GTK1 on the make command line. + +.SUFFIXES: .cxx .c .o .h .a +CC = g++ +CCOMP = gcc +AR = ar +RANLIB = ranlib +PREFIX = C:\libs +RM = del +-include ../localwin32.mk + + +COMPLIB=scintilla.a + +GTK_INCLUDES= \ + -I$(PREFIX)/include/gtk-2.0 \ + -I$(PREFIX)/lib/gtk-2.0/include \ + -I$(PREFIX)/include/atk-1.0 \ + -I$(PREFIX)/include/pango-1.0 \ + -I$(PREFIX)/include/cairo \ + -I$(PREFIX)/include/glib-2.0 \ + -I$(PREFIX)/lib/glib-2.0/include \ + -I$(PREFIX)/include/gettext \ + -I$(PREFIX)/include + + +vpath %.h . include +vpath %.cxx . + +INCLUDEDIRS=-I include -I . $(GTK_INCLUDES) +CXXBASEFLAGS=-Wall -Wno-missing-braces -Wno-char-subscripts -DGTK -DGTK2 -DSCI_LEXER $(INCLUDEDIRS) -mms-bitfields + +ifdef NOTHREADS +THREADFLAGS=-DG_THREADS_IMPL_NONE +else +THREADFLAGS= +endif + +ifdef DEBUG +CXXFLAGS=-DDEBUG -g $(CXXBASEFLAGS) $(THREADFLAGS) +else +CXXFLAGS=-DNDEBUG -Os $(CXXBASEFLAGS) $(THREADFLAGS) +endif + +CONFIGFLAGS=$(GTK_INCLUDES) +MARSHALLER=scintilla-marshal.o + +.cxx.o: + $(CC) $(CXXFLAGS) -c $< +.c.o: + $(CCOMP) $(CXXFLAGS) -w -c $< + +#++Autogenerated -- run src/LexGen.py to regenerate +#**LEXOBJS=\\\n\(\*.o \) +LEXOBJS=\ +LexBash.o LexAsm.o LexCSS.o LexConf.o LexCPP.o LexCrontab.o LexHTML.o LexOthers.o LexPascal.o \ +LexPerl.o LexPython.o LexSQL.o LexCaml.o LexOMS.o LexTCL.o LexRuby.o +#--Autogenerated -- end of automatically generated section + +all: $(COMPLIB) + +clean: + $(RM) deps.mak *.o $(COMPLIB) + +$(COMPLIB): DocumentAccessor.o WindowAccessor.o KeyWords.o StyleContext.o Document.o CallTip.o \ + ScintillaBase.o ContractionState.o Editor.o ExternalLexer.o PropSet.o PlatGTK.o \ + KeyMap.o LineMarker.o ScintillaGTK.o CellBuffer.o ViewStyle.o \ + RESearch.o Style.o Indicator.o AutoComplete.o UniConversion.o CharClassify.o XPM.o \ + $(MARSHALLER) $(LEXOBJS) + $(AR) rc $@ $^ + $(RANLIB) $@ + +deps.mak: + $(CC) -MM $(CXXFLAGS) *.cxx >deps.mak + +# Generate header dependencies with "make deps.mak" +include deps.mak diff --git a/src/makefile.win32 b/src/makefile.win32 new file mode 100644 index 00000000..9f73f237 --- /dev/null +++ b/src/makefile.win32 @@ -0,0 +1,84 @@ +# per hand geschrieben, nicht hauen! +# Note: PACKAGE_DATA_DIR and PACKAGE_LOCALE_DIR are no longer used on Windows. + +DEFINES = -DPACKAGE_DATA_DIR=\"data\" \ + -DHAVE_CONFIG_H \ + -DPACKAGE_LOCALE_DIR=\"data\" \ + -DENABLE_NLS + +.SUFFIXES: .c .o .h .a +WINDRES = windres.exe +CC = gcc +CXX = g++ +RES = ../geany_private.res +TARGET = ../geany.exe +EXECDIR = c:\distrib +PREFIX = C:\libs +RM = del +-include ../localwin32.mk + +GTK_INCLUDES= \ + -I$(PREFIX)/include/gtk-2.0 \ + -I$(PREFIX)/lib/gtk-2.0/include \ + -I$(PREFIX)/include/atk-1.0 \ + -I$(PREFIX)/include/pango-1.0 \ + -I$(PREFIX)/include/cairo \ + -I$(PREFIX)/include/glib-2.0 \ + -I$(PREFIX)/lib/glib-2.0/include \ + -I$(PREFIX)/include/gettext \ + -I$(PREFIX)/include + +INCLUDEDIRS= -I.. \ + -I../scintilla/include \ + -I../tagmanager/include \ + $(GTK_INCLUDES) + +ALL_GTK_LIBS= \ + -L"$(PREFIX)/lib" \ + -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 \ + -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl -liconv + # these things are for GTK >= 2.8 + # (should be same as with MSYS: pkg-config --libs gtk+-2.0 gthread-2.0) + #"$(PREFIX)/lib/libcairo.dll.a" \ + #"$(PREFIX)/lib/asprintf.lib" \ + #"$(PREFIX)/lib/charset.lib" \ + +CCFLAGS=-Wall -O2 -g -mms-bitfields $(DEFINES) $(INCLUDEDIRS) + +OBJS = treeviews.o templates.o encodings.o about.o prefs.o win32.o build.o msgwindow.o dialogs.o \ + filetypes.o interface.o main.o support.o callbacks.o utils.o \ + highlighting.o sci_cb.o document.o sciwrappers.o keyfile.o keybindings.o search.o notebook.o + +.c.o: + $(CC) $(CCFLAGS) -c $< + +# all: binclean $(TARGET) #exec +all: $(TARGET) + +$(RES): ../geany_private.rc ../pixmaps/geany.ico + $(WINDRES) -i $< --input-format=rc -o $@ -O coff + +# this calls parent clean-local target because del ../file won't work +clean: + $(RM) deps.mak *.o + cd .. && make -f makefile.win32 clean-local && cd src + +exec: + $(EXECDIR)\geany.exe + +binclean: + $(RM) $(TARGET) + +$(TARGET): $(OBJS) $(RES) ../scintilla/scintilla.a ../tagmanager/tagmanager.a + $(CXX) $(OBJS) $(RES) -o $(TARGET) \ + ../scintilla/scintilla.a ../tagmanager/tagmanager.a $(ALL_GTK_LIBS) \ + -mwindows -limm32 -lshell32 -lole32 -luuid -lcomdlg32 -lcomctl32 -liberty + +deps.mak: + $(CC) -MM $(CCFLAGS) *.c >deps.mak + +# Generate header dependencies with "make deps.mak" +include deps.mak + +..\localwin32.mk: + echo # Set local variables here >$@ diff --git a/tagmanager/makefile.win32 b/tagmanager/makefile.win32 new file mode 100644 index 00000000..a50a3ecc --- /dev/null +++ b/tagmanager/makefile.win32 @@ -0,0 +1,47 @@ + +.SUFFIXES: .cxx .c .o .h .a +CC = gcc +AR = ar +RANLIB = ranlib +PREFIX = C:\libs +RM = del +-include ../localwin32.mk + +COMPLIB=tagmanager.a + +GTK_INCLUDES= \ + -I$(PREFIX)/include/gtk-2.0 \ + -I$(PREFIX)/lib/gtk-2.0/include \ + -I$(PREFIX)/include/atk-1.0 \ + -I$(PREFIX)/include/pango-1.0 \ + -I$(PREFIX)/include/cairo \ + -I$(PREFIX)/include/glib-2.0 \ + -I$(PREFIX)/lib/glib-2.0/include \ + -I$(PREFIX)/include/gettext \ + -I$(PREFIX)/include + +INCLUDEDIRS=-I include $(GTK_INCLUDES) + +CCFLAGS=-g -Wall -DPACKAGE=\"geany\" -DG_OS_WIN32 -Wno-missing-braces -Wno-char-subscripts $(INCLUDEDIRS) -mms-bitfields + +.c.o: + $(CC) $(CCFLAGS) -w -c $< + +all: $(COMPLIB) + +clean: + $(RM) deps.mak *.o $(COMPLIB) + +$(COMPLIB): args.o c.o d.o make.o conf.o pascal.o perl.o php.o \ +python.o regex.o sh.o ctags.o entry.o get.o keyword.o options.o parse.o \ +read.o sort.o strlist.o latex.o docbook.o tcl.o ruby.o asm.o sql.o css.o vstring.o tm_workspace.o tm_work_object.o \ +tm_source_file.o tm_project.o tm_tag.o tm_symbol.o tm_file_entry.o \ +tm_tagmanager.o + $(AR) rc $@ $^ + $(RANLIB) $@ + +deps.mak: + $(CC) -MM $(CCFLAGS) *.c >deps.mak + +# Generate header dependencies with "make deps.mak" +include deps.mak diff --git a/win32-config.h b/win32-config.h new file mode 100644 index 00000000..88adc1b8 --- /dev/null +++ b/win32-config.h @@ -0,0 +1,322 @@ +/* config.h. Generated by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to 1 if the `closedir' function returns void instead of `int'. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* always defined to indicate that i18n is enabled */ +#define ENABLE_NLS 1 + +/* Gettext package. */ +#define GETTEXT_PACKAGE "geany" + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#define HAVE_BIND_TEXTDOMAIN_CODESET 1 + +/* Define to 1 if you have the `btowc' function. */ +/* #undef HAVE_BTOWC */ + +/* Define to 1 if you have the `dcgettext' function. */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +/* #undef HAVE_DECL_GETENV */ + +/* Define that you found /dev/random */ +//#define HAVE_DEVRANDOM 1 + +/* Define that you found /dev/urandom */ +//#define HAVE_DEVURANDOM 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define to 1 if you have the header file. */ +//#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fgetpos' function. */ +#define HAVE_FGETPOS 1 + +/* Define if you want to detect a running instance */ +//#define HAVE_FIFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FNMATCH_H 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `gethostname' function. */ +//#define HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_GLOB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define if your file defines LC_MESSAGES. */ +#define HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBINTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if `lstat' has the bug that it succeeds when given the + zero-length file name argument. */ +/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +/* #undef HAVE_MBSRTOWCS */ + +/* Define to 1 if declares mbstate_t. */ +#define HAVE_MBSTATE_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have a working `mmap' system call. */ +//#define HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +//#define HAVE_MUNMAP 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC 1 + +/* Define to 1 if you have the `realpath' function. */ +#define HAVE_REALPATH 1 + +/* Define to 1 if you have the `regcomp' function. */ +#define HAVE_REGCOMP 1 + +/* Define to 1 if you have the `setenv' function. */ +#define HAVE_SETENV 1 + +/* Define to 1 if `stat' has the bug that it succeeds when given the + zero-length file name argument. */ +/* #undef HAVE_STAT_EMPTY_STRING_BUG */ + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strspn' function. */ +#define HAVE_STRSPN 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define if you want VTE support */ +//#define HAVE_VTE 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCTYPE_H */ + +/* Define to 1 if you have the `wmempcpy' function. */ +/* #undef HAVE_WMEMPCPY */ + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + +/* Name of package */ +#define PACKAGE "geany" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if the `S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Version number of package */ +#define VERSION "0.8" + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to rpl_fnmatch if the replacement function should be used. */ +/* #undef fnmatch */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to a type if does not define. */ +/* #undef mbstate_t */ + +/* Define to `long' if does not define. */ +/* #undef off_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ + +#define REVISION "SVN"