1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski#ifndef _VERINFO_HRC 25*b1cdbd2cSJim Jagielski#define _VERINFO_HRC 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski// include --------------------------------------------------------------- 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski#ifndef WIN32 30*b1cdbd2cSJim Jagielski#include <ver.h> 31*b1cdbd2cSJim Jagielski#else 32*b1cdbd2cSJim Jagielski#include <winver.h> 33*b1cdbd2cSJim Jagielski#endif 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski// general preprocessor string management -------------------------------- 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski#ifndef PPSX 38*b1cdbd2cSJim Jagielski#define PPSX(s) #s 39*b1cdbd2cSJim Jagielski#endif 40*b1cdbd2cSJim Jagielski#ifndef PPS 41*b1cdbd2cSJim Jagielski#define PPS(s) PPSX(s) 42*b1cdbd2cSJim Jagielski#endif 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski#ifndef PPCX 45*b1cdbd2cSJim Jagielski#define PPCX(s1, s2) s1##s2 46*b1cdbd2cSJim Jagielski#endif 47*b1cdbd2cSJim Jagielski#ifndef PPCAT 48*b1cdbd2cSJim Jagielski#define PPCAT(s1, s2) PPCX(s1, s2) 49*b1cdbd2cSJim Jagielski#endif 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski// define order of date parts -------------------------------------------- 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski#if defined(LG_D) 54*b1cdbd2cSJim Jagielski #define VER_DMY 55*b1cdbd2cSJim Jagielski#else 56*b1cdbd2cSJim Jagielski #define VER_YMD 57*b1cdbd2cSJim Jagielski#endif 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski// set VERVARIANT to 0 if not defined ------------------------------------ 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski#if !defined(VERVARIANT) 62*b1cdbd2cSJim Jagielski #define VERVARIANT 0 63*b1cdbd2cSJim Jagielski#endif 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski// define pre release state ---------------------------------------------- 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski#ifdef VER_CONCEPT 68*b1cdbd2cSJim Jagielski #define VER_PREL 1 69*b1cdbd2cSJim Jagielski #define VER_COUNT (0+VER_CONCEPT) 70*b1cdbd2cSJim Jagielski #define VER1 Concept (Level VER_CONCEPT) 71*b1cdbd2cSJim Jagielski#endif 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski#ifdef VER_ALPHA 74*b1cdbd2cSJim Jagielski #define VER_PREL 1 75*b1cdbd2cSJim Jagielski #define VER_COUNT (100+VER_ALPHA) 76*b1cdbd2cSJim Jagielski #define VER1 Alpha (Level VER_ALPHA) 77*b1cdbd2cSJim Jagielski#endif 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski#ifdef VER_BETA 80*b1cdbd2cSJim Jagielski #define VER_PREL 1 81*b1cdbd2cSJim Jagielski #define VER_COUNT (200+VER_BETA) 82*b1cdbd2cSJim Jagielski #define VER1 Beta (Level VER_BETA) 83*b1cdbd2cSJim Jagielski#endif 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski#ifdef VER_GAMMA 86*b1cdbd2cSJim Jagielski #define VER_PREL 1 87*b1cdbd2cSJim Jagielski #define VER_COUNT (300+VER_GAMMA) 88*b1cdbd2cSJim Jagielski #define VER1 Gamma (Level VER_GAMMA) 89*b1cdbd2cSJim Jagielski#endif 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski#ifdef VER_FINAL 92*b1cdbd2cSJim Jagielski #define VER_COUNT (500+VER_FINAL) 93*b1cdbd2cSJim Jagielski #if VER_FINAL==0 94*b1cdbd2cSJim Jagielski #undef VER1 95*b1cdbd2cSJim Jagielski #elif VER_FINAL==1 96*b1cdbd2cSJim Jagielski #define VER1 1 97*b1cdbd2cSJim Jagielski #elif VER_FINAL==2 98*b1cdbd2cSJim Jagielski #define VER1 2 99*b1cdbd2cSJim Jagielski #elif VER_FINAL==3 100*b1cdbd2cSJim Jagielski #define VER1 3 101*b1cdbd2cSJim Jagielski #elif VER_FINAL==4 102*b1cdbd2cSJim Jagielski #define VER1 4 103*b1cdbd2cSJim Jagielski #elif VER_FINAL==5 104*b1cdbd2cSJim Jagielski #define VER1 5 105*b1cdbd2cSJim Jagielski #elif VER_FINAL==6 106*b1cdbd2cSJim Jagielski #define VER1 6 107*b1cdbd2cSJim Jagielski #elif VER_FINAL==7 108*b1cdbd2cSJim Jagielski #define VER1 7 109*b1cdbd2cSJim Jagielski #elif VER_FINAL==8 110*b1cdbd2cSJim Jagielski #define VER1 8 111*b1cdbd2cSJim Jagielski #elif VER_FINAL==9 112*b1cdbd2cSJim Jagielski #define VER1 9 113*b1cdbd2cSJim Jagielski #elif VER_FINAL==10 114*b1cdbd2cSJim Jagielski #define VER1 a 115*b1cdbd2cSJim Jagielski #elif VER_FINAL==11 116*b1cdbd2cSJim Jagielski #define VER1 b 117*b1cdbd2cSJim Jagielski #elif VER_FINAL==12 118*b1cdbd2cSJim Jagielski #define VER1 c 119*b1cdbd2cSJim Jagielski #endif 120*b1cdbd2cSJim Jagielski#endif 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski#ifdef SUBVERSION 123*b1cdbd2cSJim Jagielski#if SUBVERSION < 10 124*b1cdbd2cSJim Jagielski #define VER4 PPCAT(0, SUBVERSION) 125*b1cdbd2cSJim Jagielski#else 126*b1cdbd2cSJim Jagielski #define VER4 SUBVERSION 127*b1cdbd2cSJim Jagielski#endif 128*b1cdbd2cSJim Jagielski#else 129*b1cdbd2cSJim Jagielski #define VER4 0.0 130*b1cdbd2cSJim Jagielski#endif 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski#ifndef VER1 133*b1cdbd2cSJim Jagielski#if VERVARIANT > 0 134*b1cdbd2cSJim Jagielski #define VER_LEVEL VERSION.VER4.VERVARIANT 135*b1cdbd2cSJim Jagielski#else 136*b1cdbd2cSJim Jagielski #define VER_LEVEL VERSION.VER4 137*b1cdbd2cSJim Jagielski#endif 138*b1cdbd2cSJim Jagielski#else 139*b1cdbd2cSJim Jagielski #define VERC1(a, b, c) a.b##c 140*b1cdbd2cSJim Jagielski #define VERC2(a, b, c) VERC1(a, b, c) 141*b1cdbd2cSJim Jagielski #define VER_LEVEL VERC2(VERSION, VER4, VER1) 142*b1cdbd2cSJim Jagielski#endif 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski#if !defined(VER_DMY) && VER_DAY < 10 145*b1cdbd2cSJim Jagielski #define VER5 PPCAT(0, VER_DAY) 146*b1cdbd2cSJim Jagielski#else 147*b1cdbd2cSJim Jagielski #define VER5 VER_DAY 148*b1cdbd2cSJim Jagielski#endif 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski// define month strings -------------------------------------------------- 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski#if VER_MONTH==1 153*b1cdbd2cSJim Jagielski #define VER2 Jan 154*b1cdbd2cSJim Jagielski#elif VER_MONTH==2 155*b1cdbd2cSJim Jagielski #define VER2 Feb 156*b1cdbd2cSJim Jagielski#elif VER_MONTH==3 157*b1cdbd2cSJim Jagielski #ifdef LG_D 158*b1cdbd2cSJim Jagielski #define VER2 M\344r 159*b1cdbd2cSJim Jagielski #else 160*b1cdbd2cSJim Jagielski #define VER2 Mar 161*b1cdbd2cSJim Jagielski #endif 162*b1cdbd2cSJim Jagielski#elif VER_MONTH==4 163*b1cdbd2cSJim Jagielski #define VER2 Apr 164*b1cdbd2cSJim Jagielski#elif VER_MONTH==5 165*b1cdbd2cSJim Jagielski #ifdef LG_D 166*b1cdbd2cSJim Jagielski #define VER2 Mai 167*b1cdbd2cSJim Jagielski #else 168*b1cdbd2cSJim Jagielski #define VER2 May 169*b1cdbd2cSJim Jagielski #endif 170*b1cdbd2cSJim Jagielski#elif VER_MONTH==6 171*b1cdbd2cSJim Jagielski #define VER2 Jun 172*b1cdbd2cSJim Jagielski#elif VER_MONTH==7 173*b1cdbd2cSJim Jagielski #define VER2 Jul 174*b1cdbd2cSJim Jagielski#elif VER_MONTH==8 175*b1cdbd2cSJim Jagielski #define VER2 Aug 176*b1cdbd2cSJim Jagielski#elif VER_MONTH==9 177*b1cdbd2cSJim Jagielski #define VER2 Sep 178*b1cdbd2cSJim Jagielski#elif VER_MONTH==10 179*b1cdbd2cSJim Jagielski #ifdef LG_D 180*b1cdbd2cSJim Jagielski #define VER2 Okt 181*b1cdbd2cSJim Jagielski #else 182*b1cdbd2cSJim Jagielski #define VER2 Oct 183*b1cdbd2cSJim Jagielski #endif 184*b1cdbd2cSJim Jagielski#elif VER_MONTH==11 185*b1cdbd2cSJim Jagielski #define VER2 Nov 186*b1cdbd2cSJim Jagielski#elif VER_MONTH==12 187*b1cdbd2cSJim Jagielski #ifdef LG_D 188*b1cdbd2cSJim Jagielski #define VER2 Dez 189*b1cdbd2cSJim Jagielski #else 190*b1cdbd2cSJim Jagielski #define VER2 Dec 191*b1cdbd2cSJim Jagielski #endif 192*b1cdbd2cSJim Jagielski#endif 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski#ifdef LG_D 195*b1cdbd2cSJim Jagielski #define VERC3(a, b, c) a.b.c 196*b1cdbd2cSJim Jagielski#else 197*b1cdbd2cSJim Jagielski #define VERC3(a, b, c) c-b-a 198*b1cdbd2cSJim Jagielski#endif 199*b1cdbd2cSJim Jagielski#define VERC4(a, b, c) VERC3(a, b, c) 200*b1cdbd2cSJim Jagielski#define VER_DATE VERC4(VER5, VER2, VER_YEAR) 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski#if PPCAT(1, VER_FIRSTYEAR)==PPCAT(1, VER_YEAR) 203*b1cdbd2cSJim Jagielski #define VER_YEARRANGE VER_FIRSTYEAR 204*b1cdbd2cSJim Jagielski#else 205*b1cdbd2cSJim Jagielski #define VER_YEARRANGE VER_FIRSTYEAR-VER_YEAR 206*b1cdbd2cSJim Jagielski#endif 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski#if VER_FIRSTYEAR > 100 209*b1cdbd2cSJim Jagielski#define VERC5(a) Copyright \251 a by 210*b1cdbd2cSJim Jagielski#define VERC6(a) VERC5(a) 211*b1cdbd2cSJim Jagielski#else 212*b1cdbd2cSJim Jagielski#define VERC5(a) Copyright \251 20##a by 213*b1cdbd2cSJim Jagielski#define VERC6(a) VERC5(a) 214*b1cdbd2cSJim Jagielski#endif 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski#define S_CRIGHT PPS(VERC6(VER_YEARRANGE)) 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski#ifdef LG_D 219*b1cdbd2cSJim Jagielski#define S_VERSION PPS(Version VER_LEVEL vom VER_DATE) 220*b1cdbd2cSJim Jagielski#else 221*b1cdbd2cSJim Jagielski#define S_VERSION PPS(Version VER_LEVEL of VER_DATE) 222*b1cdbd2cSJim Jagielski#endif 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski#endif // _VERINFO_HRC 225*b1cdbd2cSJim Jagielski 226