/* * File: version.h * Summary: Contains version information */ #ifndef VERSION_H #define VERSION_H #define CRAWL "Dungeon Crawl Stone Soup" namespace Version { //! The short version string. /*! * This version will generally match the last version tag. For instance, * if the last tag of Crawl before this build was '0.1.2', you'd see * '0.1.2'. This version number does not include some rather important * extra information useful for getting the exact revision (the Git commit * hash and the number of revisions since the tag). For that extra information, * use Version::Long() instead. * * For extracting individual components of the version, you should use the * Major(), Minor(), Revision() and Build() functions. */ std::string Short(); //! The long version string. /*! * This string contains detailed version information about the CrissCross * build in use. The string will always start with the Git tag that this * build descended from. If this build is not an exact match for a given * tag, this string will also include the number of commits since the tag * and the Git commit id (the SHA-1 hash). */ std::string Long(); //! The major version number. /*! * This is the first number to appear in a version tag. For instance, * if the tag is '0.1.2.3', this function would return '0'. */ int Major(); //! The minor version number. /*! * This is the second number to appear in a version tag. For instance, * if the tag is '0.1.2.3', this function would return '1'. */ int Minor(); //! The revision number. /*! * This is the third number to appear in a version tag. For instance, * if the tag is '0.1.2.3', this function would return '2'. */ int Revision(); //! The build number. /*! * This is the fourth number to appear in a version tag. For instance, * if the tag is '0.1.2.3', this function would return '3'. */ int Build(); typedef enum { DEV, /*!< In-development version (does not exactly match a tag). i.e. '0.1.2-3-g3af4131'. */ ALPHA, /*!< An alpha release. i.e. '0.1.2-a3' */ BETA, /*!< A beta release. i.e. '0.1.2-b3' */ RC, /*!< A release candidate. i.e. '0.1.2-rc3' */ FINAL /*!< A final release. i.e. '0.1.2' */ } Class; //! The release class. /*! * Indicates the type of release. For instance, if you have a tag such * as '0.1.2-b1', the class is 'BETA'. Valid suffixes are '-a', '-b', * '-rc'. If the version string does not precisely match a tag, then it * is considered an in-development version. */ Class ReleaseType(); //! The release ID. /*! * If this is a special type of release (alpha, beta, rc), then this * will return the alpha/beta/rc number. Otherwise, this returns 0. */ int ReleaseID(); //! The compiler used. /*! * Names the compiler used to genrate the executable. */ std::string Compiler(); //! The compiling operating system. /*! * Names the operating system that the executable was compiled on. */ std::string BuildOS(); //! The compiling operating system's version. /*! * Specifies the version of the OS that the executable was compiled on. */ std::string BuildOSVersion(); //! The machine type. /*! * Names the machine type (e.g., "i686") the executable was compiled on. */ std::string BuildMachine(); //! The processor type. /*! * Names the processor type the executable was compiled on. */ std::string BuildProcessor(); //! The CFLAGS. /*! * Returns the CFLAGS the executable was compiled with. */ std::string CFLAGS(); //! The LDFLAGS. /*! * Returns the flags the executable was linked with. */ std::string LDFLAGS(); } std::string compilation_info(); #endif