westes / flex

The Fast Lexical Analyzer - scanner generator for lexing in C and C++
Other
3.54k stars 529 forks source link

Noob question: Where's the makefile? #642

Closed Khalinda closed 4 months ago

Khalinda commented 4 months ago

Sorry, I don't use Linux much. Actually, I'm trying to build flex from an MSYS2 window on Windows 11. I follow the build instructions, and make complains "make: *** No targets specified and no makefile found. Stop." I see makefile.am, makefile.in etc., but no plain makefile. I ran "./configure" but it didn't do anything that I could tell.

Mightyjo commented 4 months ago

You need to run autogen.sh before configure. Full details are in INSTALL.md.

You should have good luck with MSYS and the required packages listed in the install doc. Let us know if not, please.

Khalinda commented 4 months ago

Thanks Mightyjo. I am working with the release archive, "Flex.2.6.4.tar.gz". It doesn't seem to have any file called INSTALL.md. Comparing the release archive with the GitHub repository, a couple of other files seem to be missing from Flex.2.6.4.tar.gz too. Also, autogen.sh is only mentioned in the section of INSTALL.md that describes building from the repository, not the release archive..

As always building anything Linux related on Windows is unfathomably difficult. After a few hours, trying different msys2 shells and installing a half dozen additional packages, configure is stuck on a missing "sys/wait.h". I'll try again tomorrow.

westes commented 4 months ago

Makefile is created by running the configure script. This is the standard mechanism used by every autoconf-based package.

It sounds like you'd be better served by installing a binary package of flex. Unless you're planning on making changes to flex itself, that is usually the case.

Khalinda commented 4 months ago

Thanks westes. I need a "Unicode" (UTF-16) version of flex. Unfortunately, ASCII has limited utility on Windows.

Khalinda commented 4 months ago

Configure is reporting:

checking for regex.h... yes
checking for strings.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking for sys/wait.h... no
configure: error: required header not found on your system

Unfortunately, there are several "sys" directories within msys2. I have verified that wherever there is a stat.h, there is also a wait.h, but still configure complains that it can't find wait.h.