I am unsucessful trying to compile freetype with MinGW/MSYS
Here's what I do:
From cmd.exe I switch in to MSYS:
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5>bash
And then call the configure script
bash-3.1$ ./configure
FreeType build system -- automatic system detection
The following settings are used:
platform unix
compiler cc
configuration directory ./builds/unix
configuration rules ./builds/unix/unix.mk
If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.
Otherwise, simply type `make' again to build the library,
or `make refdoc' to build the API reference (the latter needs python).
cd builds/unix; ./configure
checking build system type... i686-pc-mingw32
[------ Deleted some 121 lines because they seem irrelevant for the problem ------]
config.status: creating ftconfig.h
make: Nothing to be done for `unix'.
After configuring freetype, I want to use make to compile the sources:
bash-3.1$ make
/bin/sh: cygpath: command not found
config.mk:36: /builds/freetype.mk: No such file or directory
config.mk:57: /builds/unix/install.mk: No such file or directory
builds/toplevel.mk:158: /builds/modules.mk: No such file or directory
make: *** No rule to make target `/builds/modules.mk'. Stop.
The problem seems to be cygpath, which is strange, because I haven't installed cygwin.
Since the compile instructions mandate gnu make, I verified this:
bash-3.1$ make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-msys
What do I do wrong?
Edit: There is also Makefile.mingw in the directory. Trying to start the compile process with make -f Makefile.mingw doesn't finish either, returning the message ¨make: *** No rule to make target 'MFSED', needed by 'all'. Stop..
Update Ok, I have done some detective investigations into the matter, and it seems that the problem is precisly because I haven't installed CygWin. I have this assumption because cygpath is a CygWin utility (See here) that converts unix-paths to windows-paths and vice versa.
Now, a ¨find . -type f -exec grep -l cygpath {} \; finds several locations where cygpath is used:
and I think I'd have to change something in one or more of these locations to fix the build. Right? I am still hoping that someone with more knowledge about the entire ./configure-build process can give me a hint on the issue.
Update II: From rubenvb's answer, I figured I could try ./configure --build=i686-pc-mingw32 and then remove the line reading
TOP_DIR := $(shell cd $(TOP_DIR); cygpath -m `pwd`)
in builds/unix/unix-def.mk and then change the line reading
RCTOOL_COMPILE = RCTOOL
to
RCTOOL_COMPILE = $(RCTOOL)
in ./builds/freetype.mk and also copying http://gnuwin32.sourceforge.net/rctool.sh.txt to c:\mingw\bin (since there were strange errors because of the missing rctool.sh) and then start the compile process with make.
Now, the compilation of the source files seemed to (at least partially) complete at last, although I have gotten many warnings like
./src/base/ftcalc.c:75:3: warning: 'FT_RoundFix' redeclared without dllimport attribute: previous dllimport ignored
But the linker is unable to link the *.o files because there are many undefined references like
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5/src/base/ftinit.c:89: undefined reference to `_imp__FT_Add_Module'
I guess the compile-warnings are not unrelated to the linker errors.
So, what now?
In general, compiling unix/linux software on Windows can go two ways:
Use the existing configure scripts from MSYS or Cygwin.
Use a supplied mingw makefile from cmd.exe (the windows shell).
You tried the first (but I think not hard enough), and did the second one wrong:
Try passing --host=i686-pc-mingw32 to configure. The script is telling you it detects a unix build, which is horribly wrong and as you can see, does not work.
You can also use mingw32-make directly from cmd.exe to use the makefile.mingw you have found. It should work fine.
Try to locate a README or INSTALL file in the main source directory. It should tell you what to do and probably has a windows specific section.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With