Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief Commons for build tools
0003  *
0004  * @file buildtools.h
0005  */
0006 /* -----------------------------------------------------------------------------
0007  * Enduro/X Middleware Platform for Distributed Transaction Processing
0008  * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0009  * Copyright (C) 2017-2018, Mavimax, Ltd. All Rights Reserved.
0010  * This software is released under one of the following licenses:
0011  * AGPL or Mavimax's license for commercial use.
0012  * -----------------------------------------------------------------------------
0013  * AGPL license:
0014  * 
0015  * This program is free software; you can redistribute it and/or modify it under
0016  * the terms of the GNU Affero General Public License, version 3 as published
0017  * by the Free Software Foundation;
0018  *
0019  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0020  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0021  * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0022  * for more details.
0023  *
0024  * You should have received a copy of the GNU Affero General Public License along 
0025  * with this program; if not, write to the Free Software Foundation, Inc., 
0026  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0027  *
0028  * -----------------------------------------------------------------------------
0029  * A commercial use license is available from Mavimax, Ltd
0030  * contact@mavimax.com
0031  * -----------------------------------------------------------------------------
0032  */
0033 #ifndef BUILDTOOLS_H_
0034 #define BUILDTOOLS_H_
0035 /*------------------------------Includes--------------------------------------*/
0036 #include <utlist.h>
0037 /*------------------------------Externs---------------------------------------*/
0038 /*------------------------------Macros----------------------------------------*/
0039 
0040 #define NDRX_RMNAME_MAX         128
0041 
0042 #define COMPILE_SRV             1       /**< Building the server process    */
0043 #define COMPILE_CLT             2       /**< Building client process        */
0044 #define COMPILE_TMS             3       /**< Building transaction manager   */
0045 /*------------------------------Enums-----------------------------------------*/
0046 /*------------------------------Typedefs--------------------------------------*/
0047 /**
0048  * List of Function and Service names 
0049  */
0050 typedef struct bs_svcnm_lst bs_svcnm_lst_t;
0051 struct bs_svcnm_lst
0052 {
0053     char svcnm[XATMI_SERVICE_NAME_LENGTH+1];    /**< service name       */
0054     char funcnm[128+1]; /**< function name                              */
0055     int funcreg;        /**< register function with out the name        */
0056     EX_hash_handle hh; /**< makes this structure hashable               */
0057 };
0058 
0059 /**
0060  * Resource manager definition from $NDRX_HOME/udataobj/RM
0061  */
0062 typedef struct ndrx_rm_def ndrx_rm_def_t;
0063 struct ndrx_rm_def
0064 {
0065     char rmname[NDRX_RMNAME_MAX+1];
0066     char structname[NDRX_RMNAME_MAX+1];
0067     char libnames[NDRX_BPATH_MAX+1];
0068     
0069     EX_hash_handle hh; /**< makes this structure hashable               */
0070 };
0071 /*------------------------------Globals---------------------------------------*/
0072 /*------------------------------Statics---------------------------------------*/
0073 /*------------------------------Prototypes------------------------------------*/
0074 extern int ndrx_buildsrv_generate_code(FILE **f, char *cfile, int thread_option, 
0075                                        bs_svcnm_lst_t *p_svcnm_lst, 
0076                                        bs_svcnm_lst_t *p_funcnm_lst,
0077                                        ndrx_rm_def_t *p_rmdef, int nomain);
0078 
0079 extern int ndrx_buildclt_generate_code(FILE **f, char *cfile, ndrx_rm_def_t *p_rmdef);
0080 
0081 extern int ndrx_compile_c(int buildmode, int verbose, char *cfile, char *ofile, 
0082         char *firstfiles, char *lastfiles, ndrx_rm_def_t *p_rmdef);
0083 
0084 extern int ndrx_get_rm_name(char *rm_name, ndrx_rm_def_t *p_rmdef);
0085 
0086 #endif /* BUILDTOOS_H_ */
0087 
0088 /* vim: set ts=4 sw=4 et smartindent: */