migrate to autotools
Change-Id: Icb1a0a2e39f291ceac5c868d76445799d0ce31f1
This commit is contained in:
parent
f23abd74cf
commit
681f119da5
|
@ -1,3 +1,33 @@
|
||||||
*.o
|
*.o
|
||||||
|
*.lo
|
||||||
|
*.a
|
||||||
|
.deps
|
||||||
*.d
|
*.d
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
|
||||||
|
# configure
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.guess
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
compile
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
stamp-h1
|
||||||
|
libtool
|
||||||
|
ltmain.sh
|
||||||
|
m4/*.m4
|
||||||
|
|
||||||
|
# git-version-gen magic
|
||||||
|
.tarball-version
|
||||||
|
.version
|
||||||
|
|
||||||
|
ttcn3/*.cc
|
||||||
|
ttcn3/*.hh
|
||||||
|
|
||||||
daemon/osmo-uecups-daemon
|
daemon/osmo-uecups-daemon
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
|
||||||
|
|
||||||
|
## FIXME: automake >= 1.13 or autoconf >= 2.70 provide better suited AC_CONFIG_MACRO_DIRS for configure.ac
|
||||||
|
## remove line below when OE toolchain is updated to version which include those
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
SUBDIRS = \
|
||||||
|
daemon \
|
||||||
|
doc \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
BUILT_SOURCES = $(top_srcdir)/.version
|
||||||
|
EXTRA_DIST = git-version-gen .version
|
||||||
|
|
||||||
|
@RELMAKE@
|
||||||
|
|
||||||
|
$(top_srcdir)/.version:
|
||||||
|
echo $(VERSION) > $@-t && mv $@-t $@
|
||||||
|
dist-hook:
|
||||||
|
echo $(VERSION) > $(distdir)/.tarball-version
|
|
@ -0,0 +1,124 @@
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
AC_INIT([osmo-uecups],[m4_esyscmd(./git-version-gen .tarball-version)],[osmocom-net-gprs@lists.osmocom.org])
|
||||||
|
|
||||||
|
dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
|
||||||
|
AC_CONFIG_AUX_DIR([.])
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([dist-bzip2])
|
||||||
|
|
||||||
|
dnl kernel style compile messages
|
||||||
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
|
dnl include release helper
|
||||||
|
RELMAKE='-include osmo-release.mk'
|
||||||
|
AC_SUBST([RELMAKE])
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_MAKE_SET
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
LT_INIT
|
||||||
|
|
||||||
|
dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
|
||||||
|
AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
|
||||||
|
if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
|
||||||
|
AC_MSG_WARN([You need to install pkg-config])
|
||||||
|
fi
|
||||||
|
PKG_PROG_PKG_CONFIG([0.20])
|
||||||
|
|
||||||
|
dnl check for AX_CHECK_COMPILE_FLAG
|
||||||
|
m4_ifdef([AX_CHECK_COMPILE_FLAG], [], [
|
||||||
|
AC_MSG_ERROR([Please install autoconf-archive; re-run 'autoreconf -fi' for it to take effect.])
|
||||||
|
])
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.1.0)
|
||||||
|
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.1.0)
|
||||||
|
PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 0.7.0)
|
||||||
|
PKG_CHECK_MODULES(LIBJANSSON, jansson)
|
||||||
|
PKG_CHECK_MODULES(LIBNLROUTE3, libnl-route-3.0)
|
||||||
|
|
||||||
|
AC_HEADER_STDC
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(sanitize,
|
||||||
|
[AS_HELP_STRING(
|
||||||
|
[--enable-sanitize],
|
||||||
|
[Compile with address sanitizer enabled],
|
||||||
|
)],
|
||||||
|
[sanitize=$enableval], [sanitize="no"])
|
||||||
|
if test x"$sanitize" = x"yes"
|
||||||
|
then
|
||||||
|
CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined"
|
||||||
|
CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(werror,
|
||||||
|
[AS_HELP_STRING(
|
||||||
|
[--enable-werror],
|
||||||
|
[Turn all compiler warnings into errors, with exceptions:
|
||||||
|
a) deprecation (allow upstream to mark deprecation without breaking builds);
|
||||||
|
b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds)
|
||||||
|
]
|
||||||
|
)],
|
||||||
|
[werror=$enableval], [werror="no"])
|
||||||
|
if test x"$werror" = x"yes"
|
||||||
|
then
|
||||||
|
WERROR_FLAGS="-Werror"
|
||||||
|
WERROR_FLAGS+=" -Wno-error=deprecated -Wno-error=deprecated-declarations"
|
||||||
|
WERROR_FLAGS+=" -Wno-error=cpp" # "#warning"
|
||||||
|
CFLAGS="$CFLAGS $WERROR_FLAGS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $WERROR_FLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The following test is taken from WebKit's webkit.m4
|
||||||
|
saved_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS -fvisibility=hidden "
|
||||||
|
AC_MSG_CHECKING([if ${CC} supports -fvisibility=hidden])
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
|
||||||
|
[ AC_MSG_RESULT([yes])
|
||||||
|
SYMBOL_VISIBILITY="-fvisibility=hidden"],
|
||||||
|
AC_MSG_RESULT([no]))
|
||||||
|
CFLAGS="$saved_CFLAGS"
|
||||||
|
AC_SUBST(SYMBOL_VISIBILITY)
|
||||||
|
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Werror=implicit], [CFLAGS="$CFLAGS -Werror=implicit"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Werror=maybe-uninitialized], [CFLAGS="$CFLAGS -Werror=maybe-uninitialized"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Werror=memset-transposed-args], [CFLAGS="$CFLAGS -Werror=memset-transposed-args"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Wnull-dereference], [CFLAGS="$CFLAGS -Wnull-dereference"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Werror=sizeof-array-argument], [CFLAGS="$CFLAGS -Werror=sizeof-array-argument"])
|
||||||
|
AX_CHECK_COMPILE_FLAG([-Werror=sizeof-pointer-memaccess], [CFLAGS="$CFLAGS -Werror=sizeof-pointer-memaccess"])
|
||||||
|
|
||||||
|
# Coverage build taken from WebKit's configure.in
|
||||||
|
AC_MSG_CHECKING([whether to enable code coverage support])
|
||||||
|
AC_ARG_ENABLE(coverage,
|
||||||
|
AC_HELP_STRING([--enable-coverage],
|
||||||
|
[enable code coverage support [default=no]]),
|
||||||
|
[],[enable_coverage="no"])
|
||||||
|
AC_MSG_RESULT([$enable_coverage])
|
||||||
|
if test "$enable_coverage" = "yes"; then
|
||||||
|
COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs"
|
||||||
|
COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
|
||||||
|
AC_SUBST([COVERAGE_CFLAGS])
|
||||||
|
AC_SUBST([COVERAGE_LDFLAGS])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(profile,
|
||||||
|
[AS_HELP_STRING([--enable-profile], [Compile with profiling support enabled], )],
|
||||||
|
[profile=$enableval], [profile="no"])
|
||||||
|
if test x"$profile" = x"yes"
|
||||||
|
then
|
||||||
|
CFLAGS="$CFLAGS -pg"
|
||||||
|
CPPFLAGS="$CPPFLAGS -pg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AC_MSG_RESULT([CFLAGS="$CFLAGS"])
|
||||||
|
AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
|
||||||
|
|
||||||
|
AC_OUTPUT(
|
||||||
|
Makefile
|
||||||
|
daemon/Makefile
|
||||||
|
doc/Makefile
|
||||||
|
doc/examples/Makefile
|
||||||
|
)
|
|
@ -33,8 +33,15 @@ echo " =============================== osmo-uecups =============================
|
||||||
echo
|
echo
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
cd daemon
|
cd "$base"
|
||||||
make
|
autoreconf --install --force
|
||||||
|
./configure --enable-sanitize --enable-external-tests --enable-werror $CONFIG
|
||||||
osmo-clean-workspace.sh
|
$MAKE $PARALLEL_MAKE
|
||||||
|
LD_LIBRARY_PATH="$inst/lib" $MAKE check \
|
||||||
|
|| cat-testlogs.sh
|
||||||
|
LD_LIBRARY_PATH="$inst/lib" \
|
||||||
|
DISTCHECK_CONFIGURE_FLAGS="--enable-vty-tests --enable-external-tests --enable-werror $CONFIG" \
|
||||||
|
$MAKE distcheck \
|
||||||
|
|| cat-testlogs.sh
|
||||||
|
|
||||||
|
$MAKE maintainer-clean
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
LIBS=-lpthread -lsctp $(shell pkg-config --libs libosmocore libosmovty libosmo-netif jansson libnl-route-3.0)
|
|
||||||
INC=$(shell pkg-config --cflags libosmocore libosmovty libosmo-netif jansson libnl-route-3.0)
|
|
||||||
VER=$(shell git describe --tags)
|
|
||||||
CFLAGS=-Wall -g -DPACKAGE_VERSION='"$(VER)"' $(INC)
|
|
||||||
|
|
||||||
all: osmo-uecups-daemon
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
$(CC) $(CFLAGS) -o $@ -c $^
|
|
||||||
|
|
||||||
osmo-uecups-daemon: utility.o netdev.o netns.o tun_device.o \
|
|
||||||
gtp_endpoint.o gtp_tunnel.o daemon_vty.o main.o
|
|
||||||
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm -f *.o osmo-uecups-daemon
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
AM_CPPFLAGS = \
|
||||||
|
$(all_includes) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
AM_CFLAGS = \
|
||||||
|
-Wall \
|
||||||
|
$(LIBOSMOCORE_CFLAGS) \
|
||||||
|
$(LIBOSMOVTY_CFLAGS) \
|
||||||
|
$(LIBOSMONETIF_CFLAGS) \
|
||||||
|
$(LIBJANSSON_CFLAGS) \
|
||||||
|
$(LIBNLROUTE3_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
LDADD = \
|
||||||
|
-lpthread \
|
||||||
|
-lsctp \
|
||||||
|
$(LIBOSMOCORE_LIBS) \
|
||||||
|
$(LIBOSMOVTY_LIBS) \
|
||||||
|
$(LIBOSMONETIF_LIBS) \
|
||||||
|
$(LIBJANSSON_LIBS) \
|
||||||
|
$(LIBNLROUTE3_LIBS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
AM_LDFLAGS = \
|
||||||
|
$(COVERAGE_LDFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
gtp.h \
|
||||||
|
netns.h \
|
||||||
|
internal.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
bin_PROGRAMS = \
|
||||||
|
osmo-uecups-daemon \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
osmo_uecups_daemon_SOURCES = \
|
||||||
|
utility.c \
|
||||||
|
netdev.c \
|
||||||
|
netns.c \
|
||||||
|
tun_device.c \
|
||||||
|
gtp_endpoint.c \
|
||||||
|
gtp_tunnel.c \
|
||||||
|
daemon_vty.c \
|
||||||
|
main.c \
|
||||||
|
$(NULL)
|
|
@ -0,0 +1,3 @@
|
||||||
|
SUBDIRS = \
|
||||||
|
examples \
|
||||||
|
$(NULL)
|
|
@ -0,0 +1,30 @@
|
||||||
|
OSMOCONF_FILES = \
|
||||||
|
osmo-uecups-daemon.cfg
|
||||||
|
|
||||||
|
osmoconfdir = $(sysconfdir)/osmocom
|
||||||
|
osmoconf_DATA = $(OSMOCONF_FILES)
|
||||||
|
|
||||||
|
EXTRA_DIST = $(OSMOCONF_FILES)
|
||||||
|
|
||||||
|
CFG_FILES = find $(srcdir) -name '*.cfg*' | sed -e 's,^$(srcdir),,'
|
||||||
|
|
||||||
|
dist-hook:
|
||||||
|
for f in $$($(CFG_FILES)); do \
|
||||||
|
j="$(distdir)/$$f" && \
|
||||||
|
mkdir -p "$$(dirname $$j)" && \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$f $$j; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install-data-hook:
|
||||||
|
for f in $$($(CFG_FILES)); do \
|
||||||
|
j="$(DESTDIR)$(docdir)/examples/$$f" && \
|
||||||
|
mkdir -p "$$(dirname $$j)" && \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$f $$j; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-hook:
|
||||||
|
@$(PRE_UNINSTALL)
|
||||||
|
for f in $$($(CFG_FILES)); do \
|
||||||
|
j="$(DESTDIR)$(docdir)/examples/$$f" && \
|
||||||
|
$(RM) $$j; \
|
||||||
|
done
|
|
@ -0,0 +1,151 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Print a version string.
|
||||||
|
scriptversion=2010-01-28.01
|
||||||
|
|
||||||
|
# Copyright (C) 2007-2010 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
|
||||||
|
# It may be run two ways:
|
||||||
|
# - from a git repository in which the "git describe" command below
|
||||||
|
# produces useful output (thus requiring at least one signed tag)
|
||||||
|
# - from a non-git-repo directory containing a .tarball-version file, which
|
||||||
|
# presumes this script is invoked like "./git-version-gen .tarball-version".
|
||||||
|
|
||||||
|
# In order to use intra-version strings in your project, you will need two
|
||||||
|
# separate generated version string files:
|
||||||
|
#
|
||||||
|
# .tarball-version - present only in a distribution tarball, and not in
|
||||||
|
# a checked-out repository. Created with contents that were learned at
|
||||||
|
# the last time autoconf was run, and used by git-version-gen. Must not
|
||||||
|
# be present in either $(srcdir) or $(builddir) for git-version-gen to
|
||||||
|
# give accurate answers during normal development with a checked out tree,
|
||||||
|
# but must be present in a tarball when there is no version control system.
|
||||||
|
# Therefore, it cannot be used in any dependencies. GNUmakefile has
|
||||||
|
# hooks to force a reconfigure at distribution time to get the value
|
||||||
|
# correct, without penalizing normal development with extra reconfigures.
|
||||||
|
#
|
||||||
|
# .version - present in a checked-out repository and in a distribution
|
||||||
|
# tarball. Usable in dependencies, particularly for files that don't
|
||||||
|
# want to depend on config.h but do want to track version changes.
|
||||||
|
# Delete this file prior to any autoconf run where you want to rebuild
|
||||||
|
# files to pick up a version string change; and leave it stale to
|
||||||
|
# minimize rebuild time after unrelated changes to configure sources.
|
||||||
|
#
|
||||||
|
# It is probably wise to add these two files to .gitignore, so that you
|
||||||
|
# don't accidentally commit either generated file.
|
||||||
|
#
|
||||||
|
# Use the following line in your configure.ac, so that $(VERSION) will
|
||||||
|
# automatically be up-to-date each time configure is run (and note that
|
||||||
|
# since configure.ac no longer includes a version string, Makefile rules
|
||||||
|
# should not depend on configure.ac for version updates).
|
||||||
|
#
|
||||||
|
# AC_INIT([GNU project],
|
||||||
|
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
|
||||||
|
# [bug-project@example])
|
||||||
|
#
|
||||||
|
# Then use the following lines in your Makefile.am, so that .version
|
||||||
|
# will be present for dependencies, and so that .tarball-version will
|
||||||
|
# exist in distribution tarballs.
|
||||||
|
#
|
||||||
|
# BUILT_SOURCES = $(top_srcdir)/.version
|
||||||
|
# $(top_srcdir)/.version:
|
||||||
|
# echo $(VERSION) > $@-t && mv $@-t $@
|
||||||
|
# dist-hook:
|
||||||
|
# echo $(VERSION) > $(distdir)/.tarball-version
|
||||||
|
|
||||||
|
case $# in
|
||||||
|
1) ;;
|
||||||
|
*) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
tarball_version_file=$1
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# First see if there is a tarball-only version file.
|
||||||
|
# then try "git describe", then default.
|
||||||
|
if test -f $tarball_version_file
|
||||||
|
then
|
||||||
|
v=`cat $tarball_version_file` || exit 1
|
||||||
|
case $v in
|
||||||
|
*$nl*) v= ;; # reject multi-line output
|
||||||
|
[0-9]*) ;;
|
||||||
|
*) v= ;;
|
||||||
|
esac
|
||||||
|
test -z "$v" \
|
||||||
|
&& echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$v"
|
||||||
|
then
|
||||||
|
: # use $v
|
||||||
|
elif
|
||||||
|
v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|
||||||
|
|| git describe --abbrev=4 HEAD 2>/dev/null` \
|
||||||
|
&& case $v in
|
||||||
|
[0-9]*) ;;
|
||||||
|
v[0-9]*) ;;
|
||||||
|
*) (exit 1) ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
# Is this a new git that lists number of commits since the last
|
||||||
|
# tag or the previous older version that did not?
|
||||||
|
# Newer: v6.10-77-g0f8faeb
|
||||||
|
# Older: v6.10-g0f8faeb
|
||||||
|
case $v in
|
||||||
|
*-*-*) : git describe is okay three part flavor ;;
|
||||||
|
*-*)
|
||||||
|
: git describe is older two part flavor
|
||||||
|
# Recreate the number of commits and rewrite such that the
|
||||||
|
# result is the same as if we were using the newer version
|
||||||
|
# of git describe.
|
||||||
|
vtag=`echo "$v" | sed 's/-.*//'`
|
||||||
|
numcommits=`git rev-list "$vtag"..HEAD | wc -l`
|
||||||
|
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Change the first '-' to a '.', so version-comparing tools work properly.
|
||||||
|
# Remove the "g" in git describe's output string, to save a byte.
|
||||||
|
v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
|
||||||
|
else
|
||||||
|
v=UNKNOWN
|
||||||
|
fi
|
||||||
|
|
||||||
|
v=`echo "$v" |sed 's/^v//'`
|
||||||
|
|
||||||
|
# Don't declare a version "dirty" merely because a time stamp has changed.
|
||||||
|
git status > /dev/null 2>&1
|
||||||
|
|
||||||
|
dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
|
||||||
|
case "$dirty" in
|
||||||
|
'') ;;
|
||||||
|
*) # Append the suffix only if there isn't one already.
|
||||||
|
case $v in
|
||||||
|
*-dirty) ;;
|
||||||
|
*) v="$v-dirty" ;;
|
||||||
|
esac ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
|
||||||
|
echo "$v" | tr -d '\012'
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
Loading…
Reference in New Issue