|
From: | RMWChaos |
Subject: | Re: [ft-devel] Freetype 2.4.10 MSVC++ / Cygwin Compile fails |
Date: | Wed, 19 Sep 2012 11:07:02 -0500 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 |
On 2012-09-19 10:30, suzuki toshiya wrote:[...snip...] Ahh, I see. I will try. I may be able to save you the trouble of testing further with cygwin bash / MSVC unless you truly want to see how it works. In that case, I can provide you with a test batch file that will automatically setup your environment for MSVC 2008 or 2010, download, and compile a number of libraries including ICONV, ICU, BOOST, ZLIB, PNG, POSTGRESQL, TIFF, LIBPROJ, GEOTIFF, LIBXML2, PIXMAN, CAIRO, SIGC++, SQLITE, EXPAT, JPEG, and JPEG-Turbo (all Mapnik dependencies). Probably can do a whole lot more that were pyspatialite dependencies as well, but there's a lot of crossover here. Note - with ICU, I don't use the custom ./runConfigureICU file, but the standard ./configure, which TMK is genuine autoconf. I could be wrong; it's happened once or twice. ;-)Using autoconf for Cygwin/MSVC is pretty common in my (albeit limited) experience. You can refer to various libs to see this for yourself. An example is lib ICU, which has a "CYGWIN/MSVC" option in its configure file.I don't think ICU is good example, but anyway I will try some libraries using genuine autoconf only. To reiterate, I'm *NOT* running make in bash, but at the Windows CMD shell prompt, which is not the same as what you were indicating with "configure && make && make install". That may be where the miscommunication is coming from here.Oh! Thank you very much for clarification, yes, I had overlooked that "make" was executed out of bash. I've never tried such. As for saving you the trouble of testing altogether, as I further read and better understood the INSTALL.GNU and CUSTOMIZE docs and did a little further testing, I saw why "make setup ..." was auto-detecting as unix every time. If I remove cygwin from my path statement first, it then defaults to the dos/windows setup, which is an improvement. Unfortunately, something else is now failing... process_begin: CreateProcess(NULL, type builds\newline, ...) failed. make (e=2): The system cannot find the file specified. make: *** [dos_setup] Error 2 So now I need to figure out why that is. It might have to do with the code to replace unix-style forward slashes with dos/windows-style backslashes. I'll look into this further then see how the compile goes once it's actually detecting a Win OS rather than unix. Additionally, I noted that freetype/builds/detect.mk is using a very klugy workaround for echoing newlines to the console. Instead of using this ... @type builds$(SEP)newline With an empty newline file, it's much easier just to use this... @echo: Same result, no fuss, no muss. Batch file magic. ;-) Regards, -RMWChaos -RMWChaos On 2012-09-18 12:01, suzuki toshiya wrote:Today I don't have my machine with MSVC in my hand... I think "make setup visualc" is not designed for the combination of Cygwin bash/make + MSVC. It would be suitable for MinGW make + MSVC. The binaries you want to build are those running on Windows platform WITHOUT cygwin? Or, those running DEPENDING cygwin? Cygwin is designed to pretend as if it were Unix platform, so configure will be (mis)guided as if it finds the platform as Unix.bash ./configure %FLAGS% make make install For most packages, this is working well; however, I'm really strugglingWithout giving concrete example, I could not comment about whether this (configure && make && make install) is right direction, because, I'm not sure which binary (with cygwin? without cygwin?) you want. What kind of packages you could get expected result? Regards, mpsuzuki RMWChaos wrote:*ENVIRONMENT:* MS Windows 7 x64 MSVC 2008 / SDK 7.0 -or- 2010 / SDK 7.1 Cygwin bash GNU make 3.8.1 *PREAMBLE:* Ultimately, this might turn out to be one build 'bug' and one build feature 'enhancement / change request', and perhaps I should submit this as two separate issues; however, they both relate to the same problem: I can't get Freetype2 to compile in Windows 7 x64 using Cygwin / GNU Make / MSVC 2008 or 2010. I'll wait to see what some initial responses are before deciding how to proceed. I'm attempting to develop an automated build process for a Windows application that requires the Freetype2 lib. The automated build allows for the selection of x86 / x64, MSVC 2008 / 2010, static / shared libs, and other options. To accommodate these options and simplify the build process, I want to build all libs using the following steps, where all the chosen build options are stored in var FLAGS... bash ./configure %FLAGS% make make install For most packages, this is working well; however, I'm really struggling with Freetype2. As noted in the two problem descriptions below, these steps aren't working because the Freetype2 configure and makefiles appear to be using absolute paths rather than relative paths (if I can modify this one thing, I can get my preferred method above to work). Alternatively, running 'make setup visualc' is defaulting to unix rather than win32/visualc, and thus fails when it can't find a 'visualc' target in the unix makefile. Am I doing something wrong here by running "make setup visualc" from the Freetype source directory, or has this something to do with having a Win x64 OS or using Cygwin bash? I'm unable to use the MSVC/SDK command line "vcbuild" tool with the freetype.sln/vcproj files in this case due to the need to allow for the numerous possible build combinations. So the solution to either of the following problems below will likely resolve the issue for me. Preferably, I'd like to get a solution to problem #2 and change the Freetype2 configure and makefiles to use relative- rather than absolute paths during the build process. Perhaps someone can explain to me the choice to use absolute- over relative paths? *PROBLEM #1:* Running "make setup visualc", setup still detects as unix-based OS and CC compiler rather than Win32 and CL compiler - although, configure reports ' checking for cc...no' and 'checking for cl ... cl.exe' - and eventually fails with the message "make: *** No rule to make target `visualc'. Stop.". Is this because I've got a Win64 OS and am using Cygwin bash? The unix build process doesn't have a visualc build process - duh, it's unix, not Windows - and the detect process is seeing my system as unix rather than win32 even when I pass the visualc option to make setup. So I'm stumped here. How do I force the make setup process to detect as win32 rather than unix? I suspect I need to follow the CUSTOMIZE instructions, but I would think that the setup detect process would see my system as windows rather than unix. *PROBLEM #2:* The configure process for Freetype2 is using absolute paths rather than relative paths. This is a problem as ./configure is run in Cygwin bash, where paths are in the format "/cygdrive/c/..." but GNU Make is run in a Win CMD shell, where paths are in the format "C:\...". Ultimately, when GNU make is called, after ./configure completes, it fails immediately because it sees the absolute path '/cygdrive/c/.../freetype/src/base/ftsystem.c' as a switch (the initial forward slash) rather than as a path, which would fail anyway under Windows CMD shell. If instead there was a relative path 'src/base/ftsystem.c', things should work properly. Even running GNU make under Cygwin, it still fails seeing the path as a switch because it's not wrapped in quotes. Need an "easy" way to convert configure to utilize relative paths so that it assumes it's running in the source base directory 'freetype' and everything else is accessed via './src/base', etc. I've passed the CFG="--srcdir=." option to make setup as well as "--srcdir=." to ./configure, but that didn't appear to work. I've also manually changed 'abs_curr_dir' var in configure to '.' and './' but neither of those worked either. Thanks and regards, -RMWChaos ------------------------------------------------------------------------ _______________________________________________ Freetype-devel mailing list address@hidden https://lists.nongnu.org/mailman/listinfo/freetype-devel |
[Prev in Thread] | Current Thread | [Next in Thread] |