Add the basic autoconf infrastructure.

This commit is contained in:
Kirill Simonov 2006-05-20 22:43:15 +00:00
parent 9e05b78ca5
commit cec6fc98eb
13 changed files with 267 additions and 39 deletions

19
LICENSE Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 2006 Kirill Simonov
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

4
Makefile.am Normal file
View File

@ -0,0 +1,4 @@
## Run `./bootstrap` to generate the "Makefile.in" files in this directory and
## the "$SUBDIR" subdirectories.
SUBDIRS = include src . tests

22
README Normal file
View File

@ -0,0 +1,22 @@
libyaml - A C library for parsing and emitting YAML.
The project is in an early stage of development and not usable for end users.
To build and install the library, run:
$ ./bootstrap
$ ./configure
$ make
$ make check
# make install
For more information, check the libyaml homepage:
'http://pyyaml.org/wiki/LibYAML'.
Post your questions and opinions to the YAML-Core mailing list:
'http://lists.sourceforge.net/lists/listinfo/yaml-core'.
Submit bug reports and feature requests to the libyaml bug tracker:
'http://pyyaml.org/newticket?component=libyaml'.
libyaml is written by Kirill Simonov <xi@resolvent.net>. It is released
under the MIT license. See the file LICENSE for more details.

3
bootstrap Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
exec autoreconf -fvi

70
configure.ac Normal file
View File

@ -0,0 +1,70 @@
# Run `./bootstrap` to generate the "configure" script.
# Define the package version numbers and the bug reporting link.
m4_define([YAML_MAJOR], 0)
m4_define([YAML_MINOR], 0)
m4_define([YAML_PATCH], 1)
m4_define([YAML_BUGS], [http://pyyaml.org/newticket?component=libyaml])
# Define the libtool version numbers; check the Autobook, Section 11.4.
# Bump the libtool version numbers using the following algorithm:
# if (the current interface has not been changed):
# YAML_REVISION += 1
# else:
# YAML_REVISION = 0
# YAML_CURRENT += 1
# if (this release is backward compatible with the previous release):
# YAML_AGE += 1
# else:
# YAML_AGE = 0
m4_define([YAML_RELEASE], 0)
m4_define([YAML_CURRENT], 0)
m4_define([YAML_REVISION], 0)
m4_define([YAML_AGE], 0)
# Initialize autoconf & automake.
AC_PREREQ(2.59)
AC_INIT([yaml], [YAML_MAJOR.YAML_MINOR.YAML_PATCH], [YAML_BUGS])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([1.9 foreign])
# Define macro variables for the package version numbers.
AC_DEFINE(YAML_VERSION_MAJOR, YAML_MAJOR, [Define the major version number.])
AC_DEFINE(YAML_VERSION_MINOR, YAML_MINOR, [Define the minor version number.])
AC_DEFINE(YAML_VERSION_PATCH, YAML_PATCH, [Define the patch version number.])
AC_DEFINE(YAML_VERSION_STRING, "YAML_MAJOR.YAML_MINOR.YAML_PATCH", [Define the version string.])
# Define substitutions for the libtool version numbers.
YAML_LT_RELEASE=YAML_RELEASE
YAML_LT_CURRENT=YAML_CURRENT
YAML_LT_REVISION=YAML_REVISION
YAML_LT_AGE=YAML_AGE
AC_SUBST(YAML_LT_RELEASE)
AC_SUBST(YAML_LT_CURRENT)
AC_SUBST(YAML_LT_REVISION)
AC_SUBST(YAML_LT_AGE)
# Note: in order to update checks, run `autoscan` and look through "configure.scan".
# Checks for programs.
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
# Define Makefiles.
AC_CONFIG_FILES([include/Makefile src/Makefile Makefile tests/Makefile])
# Generate the "configure" script.
AC_OUTPUT

1
include/Makefile.am Normal file
View File

@ -0,0 +1 @@
nobase_include_HEADERS = yaml/yaml.h yaml/yaml_version.h yaml/yaml_error.h

View File

@ -1,25 +1,25 @@
#ifndef _YAML_H
#define _YAML_H
#ifndef YAML_H
#define YAML_H
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
YAML_READER_ERROR,
YAML_SCANNER_ERROR,
YAML_PARSER_ERROR,
YAML_EMITTER_ERROR
} yaml_error_type_t;
#include <stdlib.h>
#include "yaml_version.h"
#include "yaml_error.h"
typedef enum {
YAML_DETECT_ENCODING,
YAML_UTF8_ENCODING,
YAML_UTF16LE_ENCODING,
YAML_UTF16BE_ENCODING
} yaml_encoding_t;
typedef enum {
YAML_ANY_SCALAR_STYLE,
YAML_PLAIN_SCALAR_STYLE,
YAML_SINGLE_QUOTED_SCALAR_STYLE,
YAML_DOUBLE_QUOTED_SCALAR_STYLE,
@ -28,11 +28,13 @@ typedef enum {
} yaml_scalar_style_t;
typedef enum {
YAML_ANY_SEQUENCE_STYLE,
YAML_BLOCK_SEQUENCE_STYLE,
YAML_FLOW_SEQUENCE_STYLE
} yaml_sequence_style_t;
typedef enum {
YAML_ANY_MAPPING_STYLE,
YAML_BLOCK_MAPPING_STYLE,
YAML_FLOW_MAPPING_STYLE
} yaml_mapping_style_t;
@ -40,21 +42,26 @@ typedef enum {
typedef enum {
YAML_STREAM_START_TOKEN,
YAML_STREAM_END_TOKEN,
YAML_VERSION_DIRECTIVE_TOKEN,
YAML_TAG_DIRECTIVE_TOKEN,
YAML_DOCUMENT_START_TOKEN,
YAML_DOCUMENT_END_TOKEN,
YAML_BLOCK_SEQUENCE_START_TOKEN,
YAML_BLOCK_MAPPING_START_TOKEN,
YAML_BLOCK_END_TOKEN,
YAML_FLOW_SEQUENCE_START_TOKEN,
YAML_FLOW_SEQUENCE_END_TOKEN,
YAML_FLOW_MAPPING_START_TOKEN,
YAML_FLOW_MAPPING_END_TOKEN,
YAML_BLOCK_ENTRY_TOKEN,
YAML_FLOW_ENTRY_TOKEN,
YAML_KEY_TOKEN,
YAML_VALUE_TOKEN,
YAML_ALIAS_TOKEN,
YAML_ANCHOR_TOKEN,
YAML_TAG_TOKEN,
@ -64,22 +71,22 @@ typedef enum {
typedef enum {
YAML_STREAM_START_EVENT,
YAML_STREAM_END_EVENT,
YAML_DOCUMENT_START_EVENT,
YAML_DOCUMENT_END_EVENT,
YAML_ALIAS_EVENT,
YAML_SCALAR_EVENT,
YAML_SEQUENCE_START_EVENT,
YAML_SEQUENCE_END_EVENT,
YAML_MAPPING_START_EVENT,
YAML_MAPPING_END_EVENT,
YAML_SCALAR_EVENT
YAML_MAPPING_END_EVENT
} yaml_event_type_t;
typedef struct {
char *value;
size_t length;
} yaml_string_t;
typedef struct {
size_t offset;
size_t index;
size_t line;
size_t column;
@ -97,10 +104,11 @@ typedef struct {
yaml_token_type_t type;
union {
yaml_encoding_t encoding;
yaml_string_t anchor;
yaml_string_t tag;
char *anchor;
char *tag;
struct {
yaml_string_t value;
char *value;
size_t length;
yaml_scalar_style_t style;
} scalar;
struct {
@ -108,8 +116,8 @@ typedef struct {
int minor;
} version;
struct {
yaml_string_t handle;
yaml_string_t prefix;
char *handle;
char *prefix;
} tag_pair;
} data;
yaml_mark_t start_mark;
@ -128,8 +136,8 @@ typedef struct {
int minor;
} version;
struct {
yaml_string_t handle;
yaml_string_t prefix;
char *handle;
char *prefix;
} **tag_pairs;
int implicit;
} document_start;
@ -137,24 +145,26 @@ typedef struct {
int implicit;
} document_end;
struct {
yaml_string_t anchor;
char *anchor;
} alias;
struct {
yaml_string_t anchor;
yaml_string_t tag;
char *anchor;
char *tag;
char *value;
size_t length;
int plain_implicit;
int quoted_implicit;
yaml_scalar_style_t style;
} scalar;
struct {
yaml_string_t anchor;
yaml_string_t tag;
char *anchor;
char *tag;
int implicit;
yaml_sequence_style_t style;
} sequence_start;
struct {
yaml_string_t anchor;
yaml_string_t tag;
char *anchor;
char *tag;
int implicit;
yaml_mapping_style_t style;
} mapping_start;
@ -163,24 +173,17 @@ typedef struct {
yaml_mark_t end_mark;
} yaml_event_t;
typedef struct {
} yaml_scanner_t;
/*
typedef struct {
} yaml_parser_t;
typedef struct {
} yaml_composer_t;
typedef struct {
} yaml_emitter_t;
typedef struct {
} yaml_serializer_t;
*/
#ifdef __cplusplus
}
#endif
#endif /* #ifndef _YAML_H */
#endif /* #ifndef YAML_H */

25
include/yaml/yaml_error.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef YAML_ERROR_H
#define YAML_ERROR_H
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
YAML_NO_ERROR,
YAML_MEMORY_ERROR,
YAML_READER_ERROR,
YAML_SCANNER_ERROR,
YAML_PARSER_ERROR,
YAML_WRITER_ERROR,
YAML_EMITTER_ERROR
} yaml_error_type_t;
#ifdef __cplusplus
}
#endif
#endif /* #ifndef YAML_ERROR_H */

View File

@ -0,0 +1,21 @@
#ifndef YAML_VERSION_H
#define YAML_VERSION_H
#ifdef __cplusplus
extern "C" {
#endif
const char *
yaml_get_version_string(void);
void
yaml_get_version(int *major, int *minor, int *patch);
int
yaml_check_version(int major, int minor, int patch);
#ifdef __cplusplus
}
#endif
#endif /* #ifndef YAML_VERSION_H */

4
src/Makefile.am Normal file
View File

@ -0,0 +1,4 @@
AM_CPPFLAGS = -I$(top_srcdir)/include
lib_LTLIBRARIES = libyaml.la
libyaml_la_SOURCES = version.c
libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE)

29
src/version.c Normal file
View File

@ -0,0 +1,29 @@
#if HAVE_CONFIG_H
#include <config.h>
#endif
#include <yaml/yaml.h>
const char *
yaml_get_version_string(void)
{
return YAML_VERSION_STRING;
}
void
yaml_get_version(int *major, int *minor, int *patch)
{
*major = YAML_VERSION_MAJOR;
*minor = YAML_VERSION_MINOR;
*patch = YAML_VERSION_PATCH;
}
int
yaml_check_version(int major, int minor, int patch)
{
return (major == YAML_VERSION_MAJOR
&& minor == YAML_VERSION_MINOR
&& patch >= YAML_VERSION_PATCH);
}

4
tests/Makefile.am Normal file
View File

@ -0,0 +1,4 @@
AM_CPPFLAGS = -I$(top_srcdir)/include
LDADD = $(top_srcdir)/src/libyaml.la
TESTS = test-version
check_PROGRAMS = test-version

23
tests/test-version.c Normal file
View File

@ -0,0 +1,23 @@
#include <yaml/yaml.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
int
main(void)
{
int major, minor, patch;
char buf[64];
yaml_get_version(&major, &minor, &patch);
sprintf(buf, "%d.%d.%d", major, minor, patch);
assert(strcmp(buf, yaml_get_version_string()) == 0);
assert(yaml_check_version(major+1, minor, patch) == 0);
assert(yaml_check_version(major, minor+1, patch) == 0);
assert(yaml_check_version(major, minor, patch+1) == 1);
assert(yaml_check_version(major, minor, patch) == 1);
assert(yaml_check_version(major, minor, patch-1) == 0);
return 0;
}