From patchwork Tue Jan 3 22:25:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [esnacc-dev,RFC,1/5] snacc: Change c and c++ api X-Patchwork-Submitter: Aaron Conole X-Patchwork-Id: 1 X-Patchwork-Delegate: aconole@bytheb.org Message-Id: <1483482316-10045-2-git-send-email-aconole@bytheb.org> To: dev@lists.esnacc.org Date: Tue, 3 Jan 2017 17:25:12 -0500 From: Aaron Conole List-Id: eSNACC Development discussion This is an API breaking change which moves snacc.h into the c-lib and cxx-lib include directories. A future follow up will adjust the code generators to point to the include paths. Signed-off-by: Aaron Conole --- Makefile.am | 2 +- c-lib/.gitignore | 2 + c-lib/automake.mk | 14 +++- cxx-lib/.gitignore | 2 + cxx-lib/automake.mk | 14 +++- debian/libesnacc-dev.install | 2 - policy.h | 27 ------- redhat/esnacc.spec.in | 2 - snacc.h | 168 -------------------------------------- snacc.h.in | 189 +++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 217 insertions(+), 205 deletions(-) delete mode 100644 policy.h delete mode 100644 snacc.h create mode 100644 snacc.h.in diff --git a/Makefile.am b/Makefile.am index 60853fc..f5875fc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -61,7 +61,7 @@ MAN_FRAGMENTS = MAN_ROOTS = noinst_DATA = noinst_HEADERS = -nobase_include_HEADERS = snacc.h policy.h +nobase_include_HEADERS = lib_LTLIBRARIES = noinst_man_MANS = noinst_PROGRAMS = diff --git a/c-lib/.gitignore b/c-lib/.gitignore index b1af50e..1231747 100644 --- a/c-lib/.gitignore +++ b/c-lib/.gitignore @@ -2,3 +2,5 @@ .libs .deps libesnacc.pc +inc/snacc.h +inc/snacc.h.in diff --git a/c-lib/automake.mk b/c-lib/automake.mk index 4393e9f..677d231 100644 --- a/c-lib/automake.mk +++ b/c-lib/automake.mk @@ -1,6 +1,10 @@ lib_LTLIBRARIES += c-lib/libcasn1.la +BUILT_SOURCES += c-lib/inc/snacc.h + c_lib_libcasn1_la_SOURCES = \ + c-lib/inc/snacc.h \ + c-lib/inc/snacc.h.in \ c-lib/src/asn1init.c \ c-lib/src/asn-octs.c \ c-lib/src/mem.c \ @@ -71,6 +75,7 @@ nobase_include_HEADERS += c-lib/inc/asn-any.h \ c-lib/inc/min-buf.h \ c-lib/inc/nibble-alloc.h \ c-lib/inc/print.h \ + c-lib/inc/snacc.h \ c-lib/inc/sbuf.h \ c-lib/inc/snaccCder.h \ c-lib/inc/str-stk.h \ @@ -85,7 +90,6 @@ nobase_include_HEADERS += c-lib/inc/asn-any.h \ c-lib/inc/tbl-util.h c_lib_libcasn1_la_CFLAGS = \ - -I$(top_srcdir) \ -I$(top_srcdir)/c-lib \ -I$(top_srcdir)/c-lib/src \ -I$(top_srcdir)/c-lib/inc @@ -96,7 +100,11 @@ c_lib_libcasn1_la_LDFLAGS = \ $(all_lib_LDFLAGS) EXTRA_DIST += \ - c-lib/libesnacc.pc.in + c-lib/libesnacc.pc.in \ + c-lib/inc/snacc.h.in pkgconfig_DATA += c-lib/libesnacc.pc -DISTCLEANFILES += c-lib/libesnacc.pc +DISTCLEANFILES += c-lib/libesnacc.pc c-lib/inc/snacc.h + +c-lib/inc/snacc.h.in: snacc.h.in + cp $< $@ diff --git a/cxx-lib/.gitignore b/cxx-lib/.gitignore index f841655..82f7b10 100644 --- a/cxx-lib/.gitignore +++ b/cxx-lib/.gitignore @@ -2,3 +2,5 @@ .libs .deps libesnaccxx.pc +inc/snacc.h +inc/snacc.h.in diff --git a/cxx-lib/automake.mk b/cxx-lib/automake.mk index 249f2dc..4495a77 100644 --- a/cxx-lib/automake.mk +++ b/cxx-lib/automake.mk @@ -1,5 +1,7 @@ lib_LTLIBRARIES += cxx-lib/libcxxasn1.la +BUILT_SOURCES += cxx-lib/inc/snacc.h + nobase_include_HEADERS += cxx-lib/inc/asn-buf.h \ cxx-lib/inc/asn-chartraits.h \ cxx-lib/inc/asn-config.h \ @@ -10,11 +12,14 @@ nobase_include_HEADERS += cxx-lib/inc/asn-buf.h \ cxx-lib/inc/asn-usefultypes.h \ cxx-lib/inc/init.h \ cxx-lib/inc/meta.h \ + cxx-lib/inc/snacc.h \ cxx-lib/inc/snaccdll.h \ cxx-lib/inc/snaccexcept.h \ cxx-lib/inc/tcl-if.h cxx_lib_libcxxasn1_la_SOURCES = \ + cxx-lib/inc/snacc.h \ + cxx-lib/inc/snacc.h.in \ cxx-lib/src/asn-null.cpp \ cxx-lib/src/asn-oid.cpp \ cxx-lib/src/asn-RelativeOid.cpp \ @@ -80,7 +85,12 @@ cxx_lib_libcxxasn1_la_LDFLAGS = \ $(cxx_lib_libcxxasn1_la_WIN32_LDFLAGS) EXTRA_DIST += \ - cxx-lib/libesnaccxx.pc.in + cxx-lib/libesnaccxx.pc.in \ + cxx-lib/inc/snacc.h.in pkgconfig_DATA += cxx-lib/libesnaccxx.pc -DISTCLEANFILES += cxx-lib/libesnaccxx.pc +DISTCLEANFILES += cxx-lib/libesnaccxx.pc cxx-lib/inc/snacc.h + +cxx-lib/inc/snacc.h.in: snacc.h.in + cp $< $@ + diff --git a/debian/libesnacc-dev.install b/debian/libesnacc-dev.install index 046154d..b4a6dfb 100644 --- a/debian/libesnacc-dev.install +++ b/debian/libesnacc-dev.install @@ -1,7 +1,5 @@ debian/tmp/usr/include/c-lib/inc debian/tmp/usr/include/cxx-lib/inc -debian/tmp/usr/include/snacc.h -debian/tmp/usr/include/policy.h debian/tmp/usr/lib/libcasn1.a debian/tmp/usr/lib/libcasn1.la debian/tmp/usr/lib/libcxxasn1.a diff --git a/policy.h b/policy.h deleted file mode 100644 index a92e019..0000000 --- a/policy.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * file: policy.h - * - */ - -/* - * enable the snacc compiler's Tcl interface generating code? - * set it to 0 or 1. - */ -#ifndef NO_TCL -#define NO_TCL 0 -#endif - -/* - * enable code for meta code generation? - * the Tcl code needs it. - */ -#ifndef NO_META -#define NO_META NO_TCL -#endif - -/* - * enable code for CORBA IDL generation? - */ -#ifndef IDL -#define IDL 1 -#endif diff --git a/redhat/esnacc.spec.in b/redhat/esnacc.spec.in index 290a21c..245d3f8 100644 --- a/redhat/esnacc.spec.in +++ b/redhat/esnacc.spec.in @@ -79,8 +79,6 @@ make DESTDIR=%{buildroot} install %files devel %_includedir/c-lib/inc %_includedir/cxx-lib/inc -%_includedir/snacc.h -%_includedir/policy.h %_libdir/lib*.a %_libdir/lib*.la %{_libdir}/pkgconfig/libesnacc.pc diff --git a/snacc.h b/snacc.h deleted file mode 100644 index d324a08..0000000 --- a/snacc.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * file: snacc.h - * - * INSERT_VDA_COMMENTS - * - * $Header: /baseline/SNACC/snacc.h,v 1.13 2004/03/22 20:04:00 gronej Exp $ - * $Log: snacc.h,v $ - * Revision 1.13 2004/03/22 20:04:00 gronej - * took IBM references out of the code (to the best of our knowledge, we don't use any of it anymore) - * - * Revision 1.12 2003/12/17 19:05:02 gronej - * SNACC baseline merged with PER v1_7 tag - * - * Revision 1.11.2.1 2003/11/05 14:58:53 gronej - * working PER code merged with esnacc_1_6 - * - * Revision 1.11 2003/02/21 12:13:16 leonberp - * cleaned up project settings for 1.5 release - * - * Revision 1.10 2002/12/16 17:23:11 mcphersc - * DISABLED TCL - * - * Revision 1.9 2002/12/13 17:43:43 mcphersc - * Modified the defines for META and TCL for use with the configure script - * - * Revision 1.8 2002/12/13 17:31:56 mcphersc - * Modified TCL/META defines - * - * Revision 1.7 2002/12/10 14:21:19 mcphersc - * *** empty log message *** - * - * Revision 1.6 2002/12/10 13:41:10 mcphersc - * Added undefine of TCL for compiler code only. - * - * Revision 1.5 2002/09/04 18:33:43 vracarl - * got rid of c++ comments - * - * Revision 1.4 2002/05/10 16:25:43 leonberp - * latest changes for release 2.2 - * - * Revision 1.3 2002/01/10 20:04:41 sfl - * Updates to Unix ./configure script so that config.h is named - * config_Used.h (similar to config_win32.h for windows). This allows the - * run-time libs and includes to use a unique include, but still be - * dynamically built for the individual platform. - * - * Revision 1.2 2000/10/24 14:54:37 rwc - * Updated to remove high-level warnings (level 4 on MSVC++) for an easier build. - * SOME warnings persist due to difficulty in modifying the SNACC compiler to - * properly build clean source; also some files are built by Lex/Yacc. - * - * Revision 1.1.1.1 2000/08/21 20:35:45 leonberp - * First CVS Version of SNACC. - * - * Revision 1.7 1997/04/07 13:13:18 wan - * Made more C++ readable (credits to Steve Walker) - * - * Revision 1.6 1997/02/28 13:39:35 wan - * Modifications collected for new version 1.3: Bug fixes, tk4.2. - * - * Revision 1.5 1997/02/15 20:38:48 rj - * In member functions, return *this after calling abort() for stupid compilers that don't seem to know about volatile abort() (they would otherwise abort with an error). - * - * Revision 1.4 1995/07/24 15:06:52 rj - * configure checks for mem* functions. define replacements using b* functions, if necessary. - * - */ - -#ifndef _SNACC_H_ -#define _SNACC_H_ - -#define GLASS 1 -#define KHO 1 - -#define memzero(p, len) memset(p, 0, len) - -#ifdef __cplusplus - -#ifdef VOLATILE_RETRUN -# define RETURN_THIS_FOR_COMPILERS_WITHOUT_VOLATILE_FUNCTIONS return *this; -#else -# define RETURN_THIS_FOR_COMPILERS_WITHOUT_VOLATILE_FUNCTIONS -#endif - -#else /* !__cplusplus */ - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -#endif /* __cplusplus */ - -/* - * Inspired by gdb 4.0, for better or worse... - * (grabbed from Barry Brachman - MS) - * - * These macros munge C routine declarations such - * that they work for ANSI or non-ANSI C compilers - */ -#ifndef __USE_NON_ANSI_C__ - -#define PROTO( X) X -#define PARAMS( arglist, args) (args) -#define NOPARAMS() (void) -#define _AND_ , -#define DOTS , ... - -#else /* __USE_ANSI_C__ */ - -#define PROTO( X) () -#define PARAMS( arglist, args) arglist args; -#define NOPARAMS() () -#define _AND_ ; -#define DOTS -#define void char - -#endif /* __USE_ANSI_C__ */ - -#include "policy.h" - -#if COMPILER - // If we have TCL on this system then add TCL to the compiler - #if defined (HAVE_TCLNOT) - #define TCL HAVE_TCL - #define META 1 - #endif -#elif defined (ENABLE_TCL) && defined (HAVE_TCL) - #define TCL 1; - #define META 1; -#endif - -#ifdef ENABLE_META -#ifndef META - #define META 1 -#endif -#endif - -#define COMMA , - -#define if_IBM_ENC( code) - - -#ifdef META -#define if_META( code) code -#else -#define if_META( code) -#endif - -#if defined(TCL) && defined (META) -#define if_TCL( code) code -#else -#define if_TCL( code) -#endif - -#if __GNUC__ -#define ESNACC_UNUSED __attribute__((__unused__)) -#else -#define ESNACC_UNUSED -#endif - -#ifdef WIN32 -#define inline __inline -#endif - -#endif /* _SNACC_H_ */ diff --git a/snacc.h.in b/snacc.h.in new file mode 100644 index 0000000..fd68178 --- /dev/null +++ b/snacc.h.in @@ -0,0 +1,189 @@ +/* + * file: snacc.h + * + * INSERT_VDA_COMMENTS + * + * $Header: /baseline/SNACC/snacc.h,v 1.13 2004/03/22 20:04:00 gronej Exp $ + * $Log: snacc.h,v $ + * Revision 1.13 2004/03/22 20:04:00 gronej + * took IBM references out of the code (to the best of our knowledge, we don't use any of it anymore) + * + * Revision 1.12 2003/12/17 19:05:02 gronej + * SNACC baseline merged with PER v1_7 tag + * + * Revision 1.11.2.1 2003/11/05 14:58:53 gronej + * working PER code merged with esnacc_1_6 + * + * Revision 1.11 2003/02/21 12:13:16 leonberp + * cleaned up project settings for 1.5 release + * + * Revision 1.10 2002/12/16 17:23:11 mcphersc + * DISABLED TCL + * + * Revision 1.9 2002/12/13 17:43:43 mcphersc + * Modified the defines for META and TCL for use with the configure script + * + * Revision 1.8 2002/12/13 17:31:56 mcphersc + * Modified TCL/META defines + * + * Revision 1.7 2002/12/10 14:21:19 mcphersc + * *** empty log message *** + * + * Revision 1.6 2002/12/10 13:41:10 mcphersc + * Added undefine of TCL for compiler code only. + * + * Revision 1.5 2002/09/04 18:33:43 vracarl + * got rid of c++ comments + * + * Revision 1.4 2002/05/10 16:25:43 leonberp + * latest changes for release 2.2 + * + * Revision 1.3 2002/01/10 20:04:41 sfl + * Updates to Unix ./configure script so that config.h is named + * config_Used.h (similar to config_win32.h for windows). This allows the + * run-time libs and includes to use a unique include, but still be + * dynamically built for the individual platform. + * + * Revision 1.2 2000/10/24 14:54:37 rwc + * Updated to remove high-level warnings (level 4 on MSVC++) for an easier build. + * SOME warnings persist due to difficulty in modifying the SNACC compiler to + * properly build clean source; also some files are built by Lex/Yacc. + * + * Revision 1.1.1.1 2000/08/21 20:35:45 leonberp + * First CVS Version of SNACC. + * + * Revision 1.7 1997/04/07 13:13:18 wan + * Made more C++ readable (credits to Steve Walker) + * + * Revision 1.6 1997/02/28 13:39:35 wan + * Modifications collected for new version 1.3: Bug fixes, tk4.2. + * + * Revision 1.5 1997/02/15 20:38:48 rj + * In member functions, return *this after calling abort() for stupid compilers that don't seem to know about volatile abort() (they would otherwise abort with an error). + * + * Revision 1.4 1995/07/24 15:06:52 rj + * configure checks for mem* functions. define replacements using b* functions, if necessary. + * + */ + +#ifndef _SNACC_H_ +#define _SNACC_H_ + +#define GLASS 1 +#define KHO 1 + +#define memzero(p, len) memset(p, 0, len) + +#ifdef __cplusplus + +#ifdef VOLATILE_RETRUN +# define RETURN_THIS_FOR_COMPILERS_WITHOUT_VOLATILE_FUNCTIONS return *this; +#else +# define RETURN_THIS_FOR_COMPILERS_WITHOUT_VOLATILE_FUNCTIONS +#endif + +#else /* !__cplusplus */ + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#endif /* __cplusplus */ + +/* + * Inspired by gdb 4.0, for better or worse... + * (grabbed from Barry Brachman - MS) + * + * These macros munge C routine declarations such + * that they work for ANSI or non-ANSI C compilers + */ +#ifndef __USE_NON_ANSI_C__ + +#define PROTO( X) X +#define PARAMS( arglist, args) (args) +#define NOPARAMS() (void) +#define _AND_ , +#define DOTS , ... + +#else /* __USE_ANSI_C__ */ + +#define PROTO( X) () +#define PARAMS( arglist, args) arglist args; +#define NOPARAMS() () +#define _AND_ ; +#define DOTS +#define void char + +#endif /* __USE_ANSI_C__ */ + +/* + * enable the snacc compiler's Tcl interface generating code? + * set it to 0 or 1. + */ +#ifndef NO_TCL +#define NO_TCL 0 +#endif + +/* + * enable code for meta code generation? + * the Tcl code needs it. + */ +#ifndef NO_META +#define NO_META NO_TCL +#endif + +/* + * enable code for CORBA IDL generation? + */ +#ifndef IDL +#define IDL 1 +#endif + +#if COMPILER + // If we have TCL on this system then add TCL to the compiler + #if defined (HAVE_TCLNOT) + #define TCL HAVE_TCL + #define META 1 + #endif +#elif defined (ENABLE_TCL) && defined (HAVE_TCL) + #define TCL 1; + #define META 1; +#endif + +#ifdef ENABLE_META +#ifndef META + #define META 1 +#endif +#endif + +#define COMMA , + +#define if_IBM_ENC( code) + + +#ifdef META +#define if_META( code) code +#else +#define if_META( code) +#endif + +#if defined(TCL) && defined (META) +#define if_TCL( code) code +#else +#define if_TCL( code) +#endif + +#if __GNUC__ +#define ESNACC_UNUSED __attribute__((__unused__)) +#else +#define ESNACC_UNUSED +#endif + +#ifdef WIN32 +#define inline __inline +#endif + +#endif /* _SNACC_H_ */