#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

INSTALL_TARGETS += errorlist
errorlist_FILES := \
  ErrorListCDefines.h \
  ErrorListCxxDefines.h \
  $(NULL)
errorlist_DEST = $(DIST)/include
errorlist_TARGET := export

include $(topsrcdir)/config/rules.mk

ifdef MOZ_WIDGET_GTK
CXXFLAGS        += $(TK_CFLAGS)
endif

# We generate ErrorListCxxDefines.h from ErrorList.h using regex.  The -n option
# suppresses printing the pattern space, and the p at the end prints it anyway,
# so we don't print lines that don't match the pattern to start with.
ErrorListCxxDefines.h: ErrorList.h Makefile
	echo '// IWYU pragma: private, include "nsError.h"' > $@
	sed -n 's/.*ERROR(\([A-Z_0-9]*\).*/#define \1 nsresult::\1/p' < $< >> $@

ErrorListCDefines.h: ErrorList.h Makefile
		sed 's/.*ERROR(\([A-Z_0-9]*\),\( *\)\(.*\))[^)]*/#define \1 \2((nsresult)(\3))/' < $< > $@

GARBAGE += \
	ErrorListCxxDefines.h \
	ErrorListCDefines.h \
	$(NULL)
