Generate event-config.h with a single sed script

This approach should make the creation of the file more atomic, to
fix a bug reported by Dinh.

This patch has one change from Zack's original version: it avoids
$<, since Dave Hart tells me he thinks that's not so portable.

(commit message by nickm)
This commit is contained in:
Zack Weinberg 2012-04-27 09:32:51 -04:00 committed by Nick Mathewson
parent e02222741e
commit 5859c235de
2 changed files with 29 additions and 20 deletions

View File

@ -103,6 +103,7 @@ EXTRA_DIST = \
autogen.sh \ autogen.sh \
event_rpcgen.py \ event_rpcgen.py \
libevent.pc.in \ libevent.pc.in \
make-event-config.sed \
whatsnew-2.0.txt \ whatsnew-2.0.txt \
whatsnew-2.1.txt \ whatsnew-2.1.txt \
$(PLATFORM_DEPENDENT_SRC) $(PLATFORM_DEPENDENT_SRC)
@ -163,27 +164,12 @@ if SIGNAL_SUPPORT
SYS_SRC += signal.c SYS_SRC += signal.c
endif endif
BUILT_SOURCES = ./include/event2/event-config.h BUILT_SOURCES = include/event2/event-config.h
./include/event2/event-config.h: config.h Makefile.am include/event2/event-config.h: config.h make-event-config.sed
$(MKDIR_P) ./include/event2 || true test -d include/event2 || $(MKDIR_P) include/event2
echo '/* event2/event-config.h' > $@ $(SED) -f $(srcdir)/make-event-config.sed < config.h > $@T
echo ' *' >> $@ mv -f $@T $@
echo ' * This file was generated by autoconf when libevent was built, and post-' >> $@
echo ' * processed by Libevent so that its macros would have a uniform prefix.' >> $@
echo ' *' >> $@
echo ' * DO NOT EDIT THIS FILE.' >> $@
echo ' *' >> $@
echo ' * Do not rely on macros in this file existing in later versions.'>> $@
echo ' */' >> $@
echo '#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_' >> $@
echo '#define EVENT2_EVENT_CONFIG_H_INCLUDED_' >> $@
sed -e 's/#define /#define EVENT__/' \
-e 's/#undef /#undef EVENT__/' \
-e 's/# define /# define EVENT__/' \
-e 's/#ifndef /#ifndef EVENT__/' < config.h >> $@
echo "#endif" >> $@
CORE_SRC = \ CORE_SRC = \
buffer.c \ buffer.c \

23
make-event-config.sed Normal file
View File

@ -0,0 +1,23 @@
# Sed script to postprocess config.h into event-config.h.
1i\
/* event2/event-config.h\
*\
* This file was generated by autoconf when libevent was built, and post-\
* processed by Libevent so that its macros would have a uniform prefix.\
*\
* DO NOT EDIT THIS FILE.\
*\
* Do not rely on macros in this file existing in later versions.\
*/\
\
#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_\
#define EVENT2_EVENT_CONFIG_H_INCLUDED_\
$a\
\
#endif /* event2/event-config.h */
s/#\( *\)define /#\1define EVENT__/
s/#\( *\)undef /#\1undef EVENT__/
s/#\( *\)if\(n*\)def /#\1if\2def EVENT__/