cmake_minimum_required(VERSION 3.20) project(flex VERSION 2.6.4 LANGUAGES C) set(S "${CMAKE_CURRENT_SOURCE_DIR}/src") # ── flex executable ────────────────────────────────────────── add_executable(flex ${S}/buf.c ${S}/ccl.c ${S}/dfa.c ${S}/ecs.c ${S}/filter.c ${S}/gen.c ${S}/main.c ${S}/misc.c ${S}/nfa.c ${S}/options.c ${S}/parse.c # pre-generated from parse.y ${S}/regex.c ${S}/scan.c # pre-generated from scan.l ${S}/scanflags.c ${S}/scanopt.c ${S}/skel.c ${S}/sym.c ${S}/tables.c ${S}/tables_shared.c ${S}/tblcmp.c ${S}/yylex.c ) target_include_directories(flex PRIVATE ${S} ${CMAKE_CURRENT_BINARY_DIR}) target_compile_definitions(flex PRIVATE HAVE_CONFIG_H) target_link_libraries(flex PRIVATE m) # ── libfl (scanner runtime library) ───────────────────────── add_library(fl STATIC ${S}/libmain.c ${S}/libyywrap.c) target_include_directories(fl PRIVATE ${S}) # ── install ────────────────────────────────────────────────── install(TARGETS flex RUNTIME DESTINATION bin) install(TARGETS fl ARCHIVE DESTINATION lib) install(FILES ${S}/FlexLexer.h DESTINATION include)