10bbfda8aSnia#
20bbfda8aSnia# Setup flex to build lexer
30bbfda8aSnia#
40bbfda8aSnia# We don't really support any lex(1) other than flex.  It's possible some
50bbfda8aSnia# minor editing of lex.l could get you through that...
60bbfda8aSnia#
70bbfda8aSnia# If you DO have flex, we go ahead and use it to build the lexer.  If you
80bbfda8aSnia# don't, we check to see if there's a prebuilt one in the tree; one will
90bbfda8aSnia# be shipped with tarballs for releases etc (but you'll still build your
100bbfda8aSnia# own if you have flex).  If neither of those hit, not much we can do but
110bbfda8aSnia# bomb...
120bbfda8aSnia
130bbfda8aSnia# Override for forcing use of pregen'd source files
140bbfda8aSniaif(NOT FORCE_PREGEN_FILES)
150bbfda8aSnia	find_package(FLEX)
160bbfda8aSniaendif()
170bbfda8aSnia
180bbfda8aSnia
190bbfda8aSniaif(FLEX_FOUND)
200bbfda8aSnia	FLEX_TARGET(ctwm_lexer lex.l ${CMAKE_CURRENT_BINARY_DIR}/lex.c)
210bbfda8aSniaelse()
220bbfda8aSnia	# See if we have a pre-built lex.c
230bbfda8aSnia	find_file(LEX_C lex.c
240bbfda8aSnia		PATHS ${GENSRCDIR}
250bbfda8aSnia		NO_DEFAULT_PATH)
260bbfda8aSnia	if(LEX_C)
270bbfda8aSnia		# Make the build process just copy it in
280bbfda8aSnia		message(STATUS "No flex found, using prebuilt lex.c")
290bbfda8aSnia		add_custom_command(OUTPUT lex.c
300bbfda8aSnia			DEPENDS ${LEX_C}
310bbfda8aSnia			COMMAND cp ${LEX_C} .
320bbfda8aSnia			COMMENT "Copying in prebuilt lex.c"
330bbfda8aSnia		)
340bbfda8aSnia	else()
350bbfda8aSnia		# No flex, no pre-built lex.c
360bbfda8aSnia		message(FATAL_ERROR "Can't find flex, and no prebuilt files "
370bbfda8aSnia			"available.")
380bbfda8aSnia	endif(LEX_C)
390bbfda8aSniaendif(FLEX_FOUND)
40