summaryrefslogtreecommitdiff
blob: 8c409569238dd3e3a8945ab6ccad53aa19bcb7ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
http://sourceforge.net/tracker/?func=detail&atid=102435&aid=3441135&group_id=2435
https://bugs.gentoo.org/395893

????-??-??  Keith Marshall  <keithmarshall@...>

	Support pragmatic identification for w32api source directory.

	* aclocal.m4 (MINGW_AC_W32API_SRCDIR): New macro; implement it.
	* configure.in (W32API_INCLUDE): Assign using MINGW_AC_W32API_SRCDIR.
	* Makefile.in (W32API_INCLUDE): Prefix -I flag to AC_SUBST value.
	* mingwex/Makefile.in (W32API_INCLUDE): Likewise.
	* profile/Makefile.in (W32API_INCLUDE): Likewise.

diff -r 62c176864807 Makefile.in
--- a/Makefile.in	Mon Nov 28 11:32:25 2011 +0000
+++ b/Makefile.in	Mon Nov 28 21:18:55 2011 +0000
@@ -166,9 +166,9 @@ THREAD_DLL_NAME = $(THREAD_DLL)$(THREAD_
 # Various libraries.
 LIBM_A=@LIBM_A@
 
-W32API_INCLUDE = @W32API_INCLUDE@
-INCLUDES = -I$(srcdir)/include \
-  -I$(srcdir)/../include \
+W32API_INCLUDE = -I @W32API_INCLUDE@
+INCLUDES = -I $(srcdir)/include \
+  -I $(srcdir)/../include \
   -nostdinc \
   -iwithprefixbefore include
 ALL_CFLAGS = $(CFLAGS) $(INCLUDES) $(W32API_INCLUDE)
diff -r 62c176864807 aclocal.m4
--- a/aclocal.m4	Mon Nov 28 11:32:25 2011 +0000
+++ b/aclocal.m4	Mon Nov 28 21:18:55 2011 +0000
@@ -15,7 +15,65 @@ AC_DEFUN([MINGW_AC_CONFIG_SRCDIR],
  AC_MSG_CHECKING([package version])
  PACKAGE_VERSION=`awk '$[2] == "'"$1"'" { print $[3] }' ${srcdir}/$2`
  AC_MSG_RESULT([$PACKAGE_VERSION])dnl
-]) #MINGW_AC_CONFIG_SRCDIR
+])# MINGW_AC_CONFIG_SRCDIR
+
+# MINGW_AC_W32API_SRCDIR
+# ----------------------
+# Attempt to identify the location of the w32api sources.
+# Accept an explicit location specified by to user, as argument
+# to --with-w32api-srcdir; if unspecified, fall back to standard
+# location relative to ${srcdir}.  Identification requires that
+# include/windows.h is present within the nominated directory.
+# This is naive, but AC_CHECK_HEADER cannot be used because
+# the system's w32api headers will interfere.
+#
+AC_DEFUN([MINGW_AC_W32API_SRCDIR],
+[AC_ARG_WITH([w32api-srcdir],
+ [AS_HELP_STRING([--with-w32api-srcdir=DIR],
+  [locate w32api sources in DIR [SRCDIR/../w32api]])
+ ],[],[with_w32api_srcdir=NONE])
+ AS_IF([test "x${with_w32api_srcdir}" = xNONE],
+ [AC_MSG_CHECKING([include path for w32api headers])
+  for with_w32api_srcdir in ${srcdir}/../w32api*; do
+    test -f "${with_w32api_srcdir}/include/windows.h" && break
+    with_w32api_srcdir=NONE
+  done
+  AS_IF([test "x${with_w32api_srcdir}" = xNONE],
+  [AC_MSG_RESULT([none found])
+   AC_MSG_RESULT
+   AC_MSG_WARN([source directory containing include/windows.h not found])
+   AC_MSG_WARN([ensure w32api sources are installed at \${top_srcdir}/../w32api*])
+   AC_MSG_WARN([or use --with-w32api-srcdir=DIR to specify an alternative])
+  ],
+  [case "${with_w32api_srcdir}" in
+     "${srcdir}/"*) with_w32api_srcdir="`echo "${with_w32api_srcdir}"dnl
+       | sed s,"^${srcdir}/",'${top_srcdir}/',`" ;;
+   esac
+   AC_MSG_RESULT([${with_w32api_srcdir}/include])
+  ])
+ ],
+ [AC_MSG_CHECKING([for windows.h in ${with_w32api_srcdir}/include])
+  AS_IF([test -f "${with_w32api_srcdir}/include/windows.h"],
+  [AC_MSG_RESULT([yes])
+   case "${with_w32api_srcdir}" in /*) ;;
+     *) with_w32api_srcdir='${top_builddir}/'"${with_w32api_srcdir}" ;;
+   esac
+  ],
+  [AC_MSG_RESULT([no])
+   AC_MSG_RESULT
+   AC_MSG_WARN([the nominated directory, ${with_w32api_srcdir}])
+   AC_MSG_WARN([does not appear to contain valid w32api source code])
+   AC_MSG_WARN([(file '${with_w32api_srcdir}/include/windows.h' is not present)])
+   with_w32api_srcdir=NONE
+  ])
+ ])
+ AS_IF([test "x${with_w32api_srcdir}" = xNONE],
+ [AC_MSG_WARN([please correct this omission and run configure again])
+  AC_MSG_RESULT
+  AC_MSG_ERROR([unable to continue until this issue is resolved])
+ ])
+ W32API_INCLUDE="${with_w32api_srcdir}/include"
+])# MINGW_AC_W32API_SRCDIR
 
 # The following is copied from `no-executables.m4', in the top
 # `src/config' directory.
diff -r 62c176864807 configure.in
--- a/configure.in	Mon Nov 28 11:32:25 2011 +0000
+++ b/configure.in	Mon Nov 28 21:18:55 2011 +0000
@@ -44,7 +44,7 @@ AC_CHECK_TOOL([WINDRES], [windres], [win
 
 AC_SUBST([NO_CYGWIN])
 AC_SUBST([HEADER_SUBDIR])
-AC_SUBST([W32API_INCLUDE], ['-I ${top_srcdir}/../w32api/include'])
+AC_SUBST([W32API_INCLUDE], [MINGW_AC_W32API_SRCDIR])
 
 # The following are used by the GCC profiling hooks...
 #
diff -r 62c176864807 mingwex/Makefile.in
--- a/mingwex/Makefile.in	Mon Nov 28 11:32:25 2011 +0000
+++ b/mingwex/Makefile.in	Mon Nov 28 21:18:55 2011 +0000
@@ -126,10 +126,9 @@ ifdef NO_CYGWIN
 override CC := ${NO_CYGWIN} $(firstword $(filter-out ${NO_CYGWIN},${CC}))
 endif
 
-W32API_INCLUDE = @W32API_INCLUDE@
-INCLUDES = -I${srcdir} -I${top_srcdir} -I${top_srcdir}/include \
-  -nostdinc \
-  -iwithprefixbefore include
+W32API_INCLUDE = -I @W32API_INCLUDE@
+INCLUDES = -I ${srcdir} -I ${top_srcdir} -I ${top_srcdir}/include \
+  -nostdinc -isystem @W32API_INCLUDE@ -iwithprefixbefore include
 ALL_CFLAGS = $(CFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(INCLUDES) $(W32API_INCLUDE)
 ALL_CXXFLAGS = $(CXXFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(INCLUDES) -nostdinc++ $(W32API_INCLUDE)
 
diff -r 62c176864807 profile/Makefile.in
--- a/profile/Makefile.in	Mon Nov 28 11:32:25 2011 +0000
+++ b/profile/Makefile.in	Mon Nov 28 21:18:55 2011 +0000
@@ -65,10 +65,9 @@ THREAD_DLL = @THREAD_DLL@
 THREAD_DLL_VERSION = 10
 THREAD_DLL_NAME = $(THREAD_DLL)$(THREAD_DLL_VERSION).dll
 
-W32API_INCLUDE = @W32API_INCLUDE@
-INCLUDES = -I${srcdir} -I${top_srcdir}/include \
-  -nostdinc \
-  -iwithprefixbefore include
+W32API_INCLUDE = -I @W32API_INCLUDE@
+INCLUDES = -I ${srcdir} -I ${top_srcdir}/include \
+  -nostdinc -iwithprefixbefore include
 ALL_CFLAGS = $(CFLAGS) $(INCLUDES) $(W32API_INCLUDE)
 ALL_CXXFLAGS = $(CXXFLAGS) $(INCLUDES) -nostdinc++ $(W32API_INCLUDE)