Commits

Kirill Simonov committed 81d55ba

Add the basic autoconf infrastructure.

Comments (0)

Files changed (14)

+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.
+## Run `./bootstrap` to generate the "Makefile.in" files in this directory and
+## the "$SUBDIR" subdirectories.
+
+SUBDIRS = include src . tests
+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.
+#!/bin/sh
+
+exec autoreconf -fvi
+# 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

include/Makefile.am

+nobase_include_HEADERS = yaml/yaml.h yaml/yaml_version.h yaml/yaml_error.h

include/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;
-
-typedef enum {
-    YAML_UTF8_ENCODING,
-    YAML_UTF16LE_ENCODING,
-    YAML_UTF16BE_ENCODING
-} yaml_encoding_t;
-
-typedef enum {
-    YAML_PLAIN_SCALAR_STYLE,
-    YAML_SINGLE_QUOTED_SCALAR_STYLE,
-    YAML_DOUBLE_QUOTED_SCALAR_STYLE,
-    YAML_LITERAL_SCALAR_STYLE,
-    YAML_FOLDED_SCALAR_STYLE
-} yaml_scalar_style_t;
-
-typedef enum {
-    YAML_BLOCK_SEQUENCE_STYLE,
-    YAML_FLOW_SEQUENCE_STYLE
-} yaml_sequence_style_t;
-
-typedef enum {
-    YAML_BLOCK_MAPPING_STYLE,
-    YAML_FLOW_MAPPING_STYLE
-} yaml_mapping_style_t;
-
-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,
-    YAML_SCALAR_TOKEN
-} yaml_token_type_t;
-
-typedef enum {
-    YAML_STREAM_START_EVENT,
-    YAML_STREAM_END_EVENT,
-    YAML_DOCUMENT_START_EVENT,
-    YAML_DOCUMENT_END_EVENT,
-    YAML_ALIAS_EVENT,
-    YAML_SEQUENCE_START_EVENT,
-    YAML_SEQUENCE_END_EVENT,
-    YAML_MAPPING_START_EVENT,
-    YAML_MAPPING_END_EVENT,
-    YAML_SCALAR_EVENT
-} yaml_event_type_t;
-
-typedef struct {
-    char *value;
-    size_t length;
-} yaml_string_t;
-
-typedef struct {
-    size_t index;
-    size_t line;
-    size_t column;
-} yaml_mark_t;
-
-typedef struct {
-    yaml_error_type_t type;
-    char *context;
-    yaml_mark_t context_mark;
-    char *problem;
-    yaml_mark_t problem_mark;
-} yaml_error_t;
-
-typedef struct {
-    yaml_token_type_t type;
-    union {
-        yaml_encoding_t encoding;
-        yaml_string_t anchor;
-        yaml_string_t tag;
-        struct {
-            yaml_string_t value;
-            yaml_scalar_style_t style;
-        } scalar;
-        struct {
-            int major;
-            int minor;
-        } version;
-        struct {
-          yaml_string_t handle;
-          yaml_string_t prefix;
-        } tag_pair;
-    } data;
-    yaml_mark_t start_mark;
-    yaml_mark_t end_mark;
-} yaml_token_t;
-
-typedef struct {
-    yaml_event_type_t type;
-    union {
-        struct {
-            yaml_encoding_t encoding;
-        } stream_start;
-        struct {
-            struct {
-                int major;
-                int minor;
-            } version;
-            struct {
-                yaml_string_t handle;
-                yaml_string_t prefix;
-            } **tag_pairs;
-            int implicit;
-        } document_start;
-        struct {
-            int implicit;
-        } document_end;
-        struct {
-            yaml_string_t anchor;
-        } alias;
-        struct {
-            yaml_string_t anchor;
-            yaml_string_t tag;
-            int plain_implicit;
-            int quoted_implicit;
-            yaml_scalar_style_t style;
-        } scalar;
-        struct {
-            yaml_string_t anchor;
-            yaml_string_t tag;
-            int implicit;
-            yaml_sequence_style_t style;
-        } sequence_start;
-        struct {
-            yaml_string_t anchor;
-            yaml_string_t tag;
-            int implicit;
-            yaml_mapping_style_t style;
-        } mapping_start;
-    } data;
-    yaml_mark_t start_mark;
-    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 */
-

include/yaml/yaml.h

+
+#ifndef YAML_H
+#define YAML_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#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,
+    YAML_LITERAL_SCALAR_STYLE,
+    YAML_FOLDED_SCALAR_STYLE
+} 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;
+
+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,
+    YAML_SCALAR_TOKEN
+} yaml_token_type_t;
+
+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_event_type_t;
+
+typedef struct {
+    size_t offset;
+    size_t index;
+    size_t line;
+    size_t column;
+} yaml_mark_t;
+
+typedef struct {
+    yaml_error_type_t type;
+    char *context;
+    yaml_mark_t context_mark;
+    char *problem;
+    yaml_mark_t problem_mark;
+} yaml_error_t;
+
+typedef struct {
+    yaml_token_type_t type;
+    union {
+        yaml_encoding_t encoding;
+        char *anchor;
+        char *tag;
+        struct {
+            char *value;
+            size_t length;
+            yaml_scalar_style_t style;
+        } scalar;
+        struct {
+            int major;
+            int minor;
+        } version;
+        struct {
+          char *handle;
+          char *prefix;
+        } tag_pair;
+    } data;
+    yaml_mark_t start_mark;
+    yaml_mark_t end_mark;
+} yaml_token_t;
+
+typedef struct {
+    yaml_event_type_t type;
+    union {
+        struct {
+            yaml_encoding_t encoding;
+        } stream_start;
+        struct {
+            struct {
+                int major;
+                int minor;
+            } version;
+            struct {
+                char *handle;
+                char *prefix;
+            } **tag_pairs;
+            int implicit;
+        } document_start;
+        struct {
+            int implicit;
+        } document_end;
+        struct {
+            char *anchor;
+        } alias;
+        struct {
+            char *anchor;
+            char *tag;
+            char *value;
+            size_t length;
+            int plain_implicit;
+            int quoted_implicit;
+            yaml_scalar_style_t style;
+        } scalar;
+        struct {
+            char *anchor;
+            char *tag;
+            int implicit;
+            yaml_sequence_style_t style;
+        } sequence_start;
+        struct {
+            char *anchor;
+            char *tag;
+            int implicit;
+            yaml_mapping_style_t style;
+        } mapping_start;
+    } data;
+    yaml_mark_t start_mark;
+    yaml_mark_t end_mark;
+} yaml_event_t;
+
+/*
+typedef struct {
+} yaml_parser_t;
+
+typedef struct {
+} yaml_emitter_t;
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* #ifndef YAML_H */
+

include/yaml/yaml_error.h

+#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 */

include/yaml/yaml_version.h

+#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 */
+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)
+
+#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);
+}
+

tests/Makefile.am

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

tests/test-version.c

+#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;
+}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.