Hi,
the below patch simplifies building a w32api package (Hi Jon!) for
Cygwin. I added a --enable-cygwin option to the mingw-w64-headers
and mingw-w64-crt configure.ac file and tweaked the Makefile.am
files accordingly.
The result is as desired for a Cygwin w32api package:
- In mingw-w64-headers/configure.ac --enable-cygwin implies --disable-crt,
so only the desired header files are installed.
- In mingw-w64-headers/Makefile.am the installation path for the headers is
set to $(prefix)/include/w32api.
- In mingw-w64-crt/configure.ac --enable-cygwin implies --disable-startup,
so the startup files won't be installed. The installation path for the
32 bit libs is set to $(prefix)/lib/w32api, the installation path for
the 64 bit libs to $(prefix)/lib64/w32api.
- In mingw-w64-crt/Makefile.am the Mingw-specific libs won't be installed
and the installation path for the libsrc source files is set to
$(prefix)/include/w32api.
Additionally I set AC_PREREQ to 2.68, rather than 2.69. 2.69 is not
really required, and it disallows to autoconf on Fedora 17.
Jon_Y, with this patch, you can build the entire w32api package in a
single run:
configure --host=x86_64-w64-mingw32 --prefix=/usr --enable-cygwin
I hope the patch is basically ok.
Thanks,
Corinna
mingw-w64-headers:
* configure.ac: Lower autoconf prereq to 2.68.
Add --enable-cygwin option.
* Makefile.am (baseheaddir): Conditionalize on HAVE_CYGWIN.
* Makefile.in: Regenerate.
* configure: Regenerate.
* aclocal.m4: Regenerate.
mingw-w64-crt:
* configure.ac: Lower autoconf prereq to 2.68.
Add --enable-cygwin option.
(LIB64SUFFIXDIR, LIB32SUFFIXDIR): Conditionalize on enable_cygwin.
* Makefile.am: Drop libraries depending on HAVE_CYGWIN.
(libsrcdir): Conditionalize on HAVE_CYGWIN.
* Makefile.in: Regenerate.
* configure: Regenerate.
* aclocal.m4: Regenerate.
Index: configure.ac
===================================================================
--- configure.ac (revision 5336)
+++ configure.ac (working copy)
@@ -1,7 +1,7 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
-AC_PREREQ([2.69])
+AC_PREREQ([2.68])
AC_INIT([mingw-w64-headers],[3.0b],[[email protected]])
AC_CONFIG_SRCDIR([crt/_mingw.h.in])
AC_CONFIG_AUX_DIR([build-aux])
@@ -45,6 +45,20 @@
done
#FIXME: Add in base directx
+AC_MSG_CHECKING([whether to build a w32api package for Cygwin])
+AC_ARG_ENABLE([cygwin],
+ [AS_HELP_STRING([--enable-cygwin],
+ [Enable building a w32api package for Cygwin (implies --disable-crt)])],
+ [],
+ [AS_VAR_SET([enable_cygwin],[yes])])
+AC_MSG_RESULT([$enable_cygwin])
+AS_CASE([$enable_cygwin],
+ [no],[],
+ [yes],[AS_VAR_SET([HAVE_CYGWIN])
+ AS_VAR_SET([enable_crt],[no])],
+ [AC_MSG_ERROR([invalid argument. Must be either yes or no.])])
+AM_CONDITIONAL([HAVE_CYGWIN], [AS_VAR_TEST_SET([HAVE_CYGWIN])])
+
AC_MSG_CHECKING([for c-runtime headers])
AC_ARG_ENABLE([crt],
[AS_HELP_STRING([--disable-crt],
Index: Makefile.am
===================================================================
--- Makefile.am (revision 5336)
+++ Makefile.am (working copy)
@@ -1,5 +1,9 @@
+if HAVE_CYGWIN
+baseheaddir = $(includedir)/w32api
+else
baseheaddir = $(includedir)
+endif
sysheaddir = $(baseheaddir)/sys
secheaddir = $(baseheaddir)/sec_api
secsysheaddir = $(baseheaddir)/sec_api/sys
Index: configure.ac
===================================================================
--- configure.ac (revision 5336)
+++ configure.ac (working copy)
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
# Use AM_MAINTANER_MODE somewhere in this file once reconfigurations settle
down.
-AC_PREREQ([2.69])
+AC_PREREQ([2.68])
AC_INIT([mingw-w64-runtime],[3.0b],[[email protected]])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([ChangeLog])
@@ -45,6 +45,20 @@
dnl ---
AM_PROG_CC_C_O
+AC_MSG_CHECKING([whether to build a w32api package for Cygwin])
+AC_ARG_ENABLE([cygwin],
+ [AS_HELP_STRING([--enable-cygwin],
+ [Enable building a w32api package for Cygwin (implies
--disable-startup)])],
+ [],
+ [AS_VAR_SET([enable_cygwin],[yes])])
+AC_MSG_RESULT([$enable_cygwin])
+AS_CASE([$enable_cygwin],
+ [no],[],
+ [yes],[AS_VAR_SET([HAVE_CYGWIN])
+ AS_VAR_SET([enable_startup],[no])],
+ [AC_MSG_ERROR([invalid argument. Must be either yes or no.])])
+AM_CONDITIONAL([HAVE_CYGWIN], [AS_VAR_TEST_SET([HAVE_CYGWIN])])
+
AC_MSG_CHECKING([whether to build the crt startup])
AC_ARG_ENABLE([startup],
[AS_HELP_STRING([--disable-startup],
@@ -116,17 +130,23 @@
AS_IF([AS_VAR_TEST_SET([LIB32]) || AS_VAR_TEST_SET([LIB64])],
[AC_MSG_WARN([Building the runtime to use libce with lib32 or lib64 is
unsupported.])])])
-AS_CASE([$host_cpu],
- [x86_64],[
- AC_SUBST([LIB64SUFFIXDIR],[lib])
- AC_SUBST([LIB32SUFFIXDIR],[lib32])],
- [i*86],[
- AC_SUBST([LIB64SUFFIXDIR],[lib64])
- AC_SUBST([LIB32SUFFIXDIR],[lib])],
- [*],[
- AC_SUBST([LIB64SUFFIXDIR],[lib64])
- AC_SUBST([LIB32SUFFIXDIR],[lib32])]
- )
+AS_CASE([$enable_cygwin],
+ [yes],[
+ AC_SUBST([LIB64SUFFIXDIR],[lib64/w32api])
+ AC_SUBST([LIB32SUFFIXDIR],[lib/w32api])
+ ],
+ [*],[AS_CASE([$host_cpu],
+ [x86_64],[
+ AC_SUBST([LIB64SUFFIXDIR],[lib])
+ AC_SUBST([LIB32SUFFIXDIR],[lib32])],
+ [i*86],[
+ AC_SUBST([LIB64SUFFIXDIR],[lib64])
+ AC_SUBST([LIB32SUFFIXDIR],[lib])],
+ [*],[
+ AC_SUBST([LIB64SUFFIXDIR],[lib64])
+ AC_SUBST([LIB32SUFFIXDIR],[lib32])]
+ )]
+)
# Checks for features.
Index: Makefile.am
===================================================================
--- Makefile.am (revision 5336)
+++ Makefile.am (working copy)
@@ -310,22 +310,26 @@
dxerr.c \
test.c
-lib32_LIBRARIES = lib32/libm.a
+lib32_LIBRARIES = lib32/libshell32.a
+lib32_libshell32_a_SOURCES = $(src_libshell32)
+lib32_libshell32_a_AR = $(DTLIB32) && $(AR) $(ARFLAGS)
+lib32_libshell32_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+
+if ! HAVE_CYGWIN
+lib32_LIBRARIES += lib32/libm.a
nodist_lib32_libm_a_SOURCES = $(src_libm)
lib32_libm_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+endif
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/libgmon.a
lib32_libgmon_a_SOURCES = profile/mcount.c \
profile/profil.h profile/profil.c \
profile/gmon.h profile/gmon.c \
profile/mcountFunc.S
lib32_libgmon_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+endif
-lib32_LIBRARIES += lib32/libshell32.a
-lib32_libshell32_a_SOURCES = $(src_libshell32)
-lib32_libshell32_a_AR = $(DTLIB32) && $(AR) $(ARFLAGS)
-lib32_libshell32_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
-
lib32_LIBRARIES += lib32/libdinput.a
lib32_libdinput_a_SOURCES = $(src_libdinput)
lib32_libdinput_a_AR = $(DTLIB32) && $(AR) $(ARFLAGS)
@@ -373,22 +377,30 @@
lib32_libportabledeviceguids_a_SOURCES = $(src_libportabledeviceguids)
lib32_libportabledeviceguids_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/liblargeint.a
lib32_liblargeint_a_SOURCES = $(src_liblargeint)
lib32_liblargeint_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+endif
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/libmingw32.a
lib32_libmingw32_a_CPPFLAGS=$(CPPFLAGS32) -D_SYSCRT=1 -DCRTDLL=1
$(extra_include) $(AM_CPPFLAGS)
lib32_libmingw32_a_SOURCES = $(src_libmingw32)
+endif
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/libmingwex.a
lib32_libmingwex_a_CPPFLAGS=$(CPPFLAGS32) $(extra_include) $(AM_CPPFLAGS)
lib32_libmingwex_a_SOURCES = $(src_libmingwex) $(src_libmingwex32)
+endif
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/libmoldname.a
lib32_libmoldname_a_CPPFLAGS=$(CPPFLAGS32) $(extra_include) $(AM_CPPFLAGS)
lib32_libmoldname_a_SOURCES = $(src_libmoldname)
lib32_libmoldname_a_AR = $(DTDEF32) $(top_srcdir)/lib32/moldname-msvcrt.def -U
--dllname msvcrt.dll && $(AR) $(ARFLAGS)
+endif
lib32_LIBRARIES += lib32/libscrnsave.a
lib32_libscrnsave_a_SOURCES = $(src_libscrnsave)
@@ -403,9 +415,11 @@
lib32_libstrmiids_a_SOURCES = $(src_libstrmiids)
lib32_libstrmiids_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+if ! HAVE_CYGWIN
lib32_LIBRARIES += lib32/libmingwthrd.a
lib32_libmingwthrd_a_SOURCES = $(src_libmingwthrd)
lib32_libmingwthrd_a_CPPFLAGS=$(CPPFLAGS32) $(sysincludes)
+endif
lib32_LIBRARIES += lib32/libuuid.a
lib32_libuuid_a_SOURCES = $(src_libuuid)
@@ -603,15 +617,17 @@
lib64/%.o: crt/%.c
$(COMPILE) $(CPPFLAGS64) -c $< -o $@
-lib64_LIBRARIES = lib64/libm.a
-nodist_lib64_libm_a_SOURCES = $(src_libm)
-lib64_libm_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
-
-lib64_LIBRARIES += lib64/libshell32.a
+lib64_LIBRARIES = lib64/libshell32.a
lib64_libshell32_a_SOURCES = $(src_libshell32)
lib64_libshell32_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
lib64_libshell32_a_AR = $(DTLIB64) && $(AR) $(ARFLAGS)
+if ! HAVE_CYGWIN
+lib64_LIBRARIES += lib64/libm.a
+nodist_lib64_libm_a_SOURCES = $(src_libm)
+lib64_libm_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+endif
+
lib64_LIBRARIES += lib64/libdinput.a
lib64_libdinput_a_SOURCES = $(src_libdinput)
lib64_libdinput_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
@@ -650,12 +666,14 @@
lib64_libportabledeviceguids_a_SOURCES = $(src_libportabledeviceguids)
lib64_libportabledeviceguids_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/libgmon.a
lib64_libgmon_a_SOURCES = profile/mcount.c \
profile/profil.h profile/profil.c \
profile/gmon.h profile/gmon.c \
profile/mcountFunc.S
lib64_libgmon_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+endif
lib64_LIBRARIES += lib64/libksuser.a
lib64_libksuser_a_SOURCES = $(src_libksuser)
@@ -666,9 +684,11 @@
lib64_libksguid_a_SOURCES = $(src_libksguid)
lib64_libksguid_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/liblargeint.a
lib64_liblargeint_a_SOURCES = $(src_liblargeint)
lib64_liblargeint_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+endif
lib64_LIBRARIES += lib64/libscrnsave.a
lib64_libscrnsave_a_SOURCES = $(src_libscrnsave)
@@ -683,22 +703,30 @@
lib64_libstrmiids_a_SOURCES = $(src_libstrmiids)
lib64_libstrmiids_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/libmingw32.a
lib64_libmingw32_a_CPPFLAGS=$(CPPFLAGS64) -D_SYSCRT=1 -DCRTDLL=1
$(extra_include) $(AM_CPPFLAGS)
lib64_libmingw32_a_SOURCES = $(src_libmingw32)
+endif
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/libmingwex.a
lib64_libmingwex_a_CPPFLAGS=$(CPPFLAGS64) $(extra_include) $(AM_CPPFLAGS)
lib64_libmingwex_a_SOURCES = $(src_libmingwex) $(src_libmingwex64)
+endif
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/libmoldname.a
lib64_libmoldname_a_CPPFLAGS=$(CPPFLAGS64) $(extra_include) $(AM_CPPFLAGS)
lib64_libmoldname_a_SOURCES = $(src_libmoldname)
lib64_libmoldname_a_AR = $(DTDEF64) $(top_srcdir)/lib64/moldname-msvcrt.def -U
--dllname msvcrt.dll && $(AR) $(ARFLAGS)
+endif
+if ! HAVE_CYGWIN
lib64_LIBRARIES += lib64/libmingwthrd.a
lib64_libmingwthrd_a_SOURCES = $(src_libmingwthrd)
lib64_libmingwthrd_a_CPPFLAGS=$(CPPFLAGS64) $(sysincludes)
+endif
lib64_LIBRARIES += lib64/libuuid.a
lib64_libuuid_a_SOURCES = $(src_libuuid)
@@ -1036,7 +1064,11 @@
# Don't compile these, but install as is:
#
-libsrcdir=$(prefix)/libsrc
+if HAVE_CYGWIN
+libsrcdir=$(prefix)/include/w32api
+else
+libsrcdir=$(prefix)/lib
+endif
libsrc_DATA = \
libsrc/agtctl_i.c libsrc/agtsvr_i.c libsrc/cdoex_i.c
libsrc/cdoexm_i.c \
libsrc/cdosys_i.c libsrc/emostore_i.c libsrc/iisext_i.c
libsrc/mtsadmin_i.c \
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public