This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[CT-NG:patch 12/19] Add mingw target libraries


Add several development libraries to the build of the mingw cross-compiler
to be used on target

Libraries:
PDCurses (port of the ncurses library)
GnuRX (the regex library)
DirectX
OpenGL

Signed-off-by: Bart vdr. Meulen <bartvdrmeulen@gmail.com>
---
 config/libc/mingw.in                                    |   72 +++++++++++
 patches/PDCurses/3.4/mingw32_cross_compile.patch        |   87 +++++++++++++
 patches/mingw-libgnurx/2.5.1/build-static-library.patch |  103 ++++++++++++++++
 scripts/build/libc/mingw.sh                             |   87 +++++++++++++
 4 files changed, 347 insertions(+), 2 deletions(-)

Index: crosstool-ng/config/libc/mingw.in
===================================================================
--- crosstool-ng.orig/config/libc/mingw.in
+++ crosstool-ng/config/libc/mingw.in
@@ -33,3 +33,75 @@ config MINGWRT_VERSION
     help
 	Enter the version number of the mingw runtime files to use
 
+config MINGW_DIRECTX
+	bool
+	prompt "Include DirectX development files"
+	default n
+
+config MINGW_OPENGL
+	bool
+	prompt "Include OpenGL development files"
+	default n
+
+config MINGW_PDCURSES
+	bool
+	prompt "Include PDCurses (NCurses library) development files"
+	default n
+
+choice
+	bool
+	prompt "PDCurses library version"
+
+config MINGW_PDCURSES_V_3_4
+    bool
+    prompt "3.4"
+
+# CT_INSERT_VERSION_ABOVE
+# Don't remove above line!
+
+config MINGW_PDCURSES_V_select
+    bool
+    prompt "Other version"
+
+endchoice
+
+config MINGW_PDCURSES_VERSION
+	string
+	prompt "PDCurses library version" if MINGW_PDCURSES_V_select
+	default "3.4" if MINGW_PDCURSES_V_3_4
+# CT_INSERT_VERSION_STRING_ABOVE
+# Don't remove above line!
+    help
+	Enter the version number of the PDCurses library to use
+
+config MINGW_GNURX
+	bool
+	prompt "Include GnuRX (regex library) development files"
+	default n
+
+choice
+	bool
+	prompt "GnuRX library version"
+
+config MINGW_GNURX_V_2_5_1
+    bool
+    prompt "2.5.1"
+
+# CT_INSERT_VERSION_ABOVE
+# Don't remove above line!
+
+config MINGW_GNURX_V_select
+    bool
+    prompt "Other version"
+
+endchoice
+
+config MINGW_GNURX_VERSION
+	string
+	prompt "GnuRX library version" if MINGW_GNURX_V_select
+	default "2.5.1" if MINGW_GNURX_V_2_5_1
+# CT_INSERT_VERSION_STRING_ABOVE
+# Don't remove above line!
+    help
+	Enter the version number of the Regex library to use
+
Index: crosstool-ng/scripts/build/libc/mingw.sh
===================================================================
--- crosstool-ng.orig/scripts/build/libc/mingw.sh
+++ crosstool-ng/scripts/build/libc/mingw.sh
@@ -1,11 +1,40 @@
 do_libc_get() {
     CT_GetFile "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src" \
         http://downloads.sourceforge.net/sourceforge/mingw
+
+    if [ -n "${CT_MINGW_DIRECTX}" ]; then
+        CT_GetFile "directx-devel" \
+            http://www.libsdl.org/extras/win32/common
+    fi
+
+    if [ -n "${CT_MINGW_OPENGL}" ]; then
+        CT_GetFile "opengl-devel" \
+            http://www.libsdl.org/extras/win32/common
+    fi
+
+    if [ -n "${CT_MINGW_PDCURSES}" ]; then
+        CT_GetFile "PDCurses-${CT_MINGW_PDCURSES_VERSION}" \
+            http://downloads.sourceforge.net/sourceforge/pdcurses
+    fi
+
+    if [ -n "${CT_MINGW_GNURX}" ]; then
+        CT_GetFile "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src" \
+            http://downloads.sourceforge.net/sourceforge/mingw
+    fi
 }
 
 do_libc_extract() {
-
     CT_Extract "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src"
+
+    if [ -n "${CT_MINGW_PDCURSES}" ]; then
+        CT_Extract "PDCurses-${CT_MINGW_PDCURSES_VERSION}"
+        CT_Patch "PDCurses-${CT_MINGW_PDCURSES_VERSION}"
+    fi
+
+    if [ -n "${CT_MINGW_GNURX}" ]; then
+        CT_Extract "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src"
+        CT_Patch "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}"
+    fi
 }
 
 do_libc_check_config() {
@@ -70,6 +99,60 @@ do_libc() {
 }
 
 do_libc_finish() {
- :
+    CT_DoStep INFO "Installing MinGW Development libraries"
+
+    CT_Pushd "${CT_SYSROOT_DIR}"
+    if [ -n "${CT_MINGW_DIRECTX}" ]; then
+	CT_DoLog EXTRA "Installing DirectX development package"
+        CT_Extract nochdir "directx-devel"
+    fi
+    if [ -n "${CT_MINGW_OPENGL}" ]; then
+	CT_DoLog EXTRA "Installing OpenGL development package"
+        CT_Extract nochdir "opengl-devel"
+    fi
+    CT_Popd
+
+    if [ -n "${CT_MINGW_PDCURSES}" ]; then
+        CT_DoLog EXTRA "Building PDCurses development files"
+        mkdir -p "${CT_BUILD_DIR}/pdcurses"
+        cd "${CT_BUILD_DIR}/pdcurses"
+
+        make -f ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/win32/mingwin32.mak libs \
+	    PDCURSES_SRCDIR=${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION} \
+            CROSS_COMPILE=${CT_TARGET}-
+
+        CT_DoLog EXTRA "Installing PDCurses development files"
+		 chmod a+r ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h
+        cp ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h \
+            ${CT_SYSROOT_DIR}/include
+        cp ${CT_BUILD_DIR}/pdcurses/pdcurses.a \
+            ${CT_SYSROOT_DIR}/lib/libpdcurses.a
+        cp ${CT_BUILD_DIR}/pdcurses/pdcurses.a \
+            ${CT_SYSROOT_DIR}/lib/libncurses.a
+    fi
+
+    if [ -n "${CT_MINGW_GNURX}" ]; then
+        CT_DoLog EXTRA "Configuring GnuRX development files"
+
+        mkdir -p "${CT_BUILD_DIR}/gnurx"
+        cd "${CT_BUILD_DIR}/gnurx"
+
+        CFLAGS="${CT_CFLAGS_FOR_TARGET}"                \
+        CT_DoExecLog ALL                                \
+        "${CT_SRC_DIR}/mingw-libgnurx-${CT_MINGW_GNURX_VERSION}/configure" \
+            --build=${CT_BUILD}           \
+            --host=${CT_TARGET}           \
+            --prefix=${CT_SYSROOT_DIR}    \
+            --enable-shared               \
+            --enable-static
+
+        CT_DoLog EXTRA "Building GnuRX development files"
+        CT_DoExecLog ALL make ${PARALLELMFLAGS}
+
+        CT_DoLog EXTRA "Installing GnuRX development files"
+        CT_DoExecLog ALL make install-dev
+    fi
+
+    CT_EndStep
 }
 
Index: crosstool-ng/patches/PDCurses/3.4/mingw32_cross_compile.patch
===================================================================
--- /dev/null
+++ crosstool-ng/patches/PDCurses/3.4/mingw32_cross_compile.patch
@@ -0,0 +1,87 @@
+--- PDCurses-3.4.orig/win32/mingwin32.mak	2009-11-02 13:50:11.000000000 +0100
++++ PDCurses-3.4/win32/mingwin32.mak	2009-11-02 13:53:43.000000000 +0100
+@@ -18,7 +18,7 @@
+
+ PDCURSES_WIN_H	= $(osdir)/pdcwin.h
+
+-CC		= gcc
++CC		= ${CROSS_COMPILE}gcc
+
+ ifeq ($(DEBUG),Y)
+ 	CFLAGS  = -g -Wall -DPDCDEBUG
+@@ -30,8 +30,8 @@
+
+ CFLAGS += -I$(PDCURSES_SRCDIR)
+
+-BASEDEF		= $(PDCURSES_SRCDIR)\exp-base.def
+-WIDEDEF		= $(PDCURSES_SRCDIR)\exp-wide.def
++BASEDEF		= $(PDCURSES_SRCDIR)/exp-base.def
++WIDEDEF		= $(PDCURSES_SRCDIR)/exp-wide.def
+
+ DEFDEPS		= $(BASEDEF)
+
+@@ -46,17 +46,17 @@
+
+ DEFFILE		= pdcurses.def
+
+-LINK		= gcc
++LINK		= ${CROSS_COMPILE}gcc
+
+ ifeq ($(DLL),Y)
+ 	CFLAGS += -DPDC_DLL_BUILD
+-	LIBEXE = gcc $(DEFFILE)
++	LIBEXE = ${CROSS_COMPILE}gcc $(DEFFILE)
+ 	LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
+ 	LIBCURSES = pdcurses.dll
+ 	LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
+ 	CLEAN = $(LIBCURSES) *.a $(DEFFILE)
+ else
+-	LIBEXE = ar
++	LIBEXE = ${CROSS_COMPILE}ar
+ 	LIBFLAGS = rcv
+ 	LIBCURSES = pdcurses.a
+ 	LIBDEPS = $(LIBOBJS) $(PDCOBJS)
+@@ -70,24 +70,24 @@
+ libs:	$(LIBCURSES)
+
+ clean:
+-	-del *.o
+-	-del *.exe
+-	-del $(CLEAN)
++	-rm *.o
++	-rm *.exe
++	-rm $(CLEAN)
+
+ demos:	$(DEMOS)
+-	strip *.exe
++	${CROSS_COMPILE}strip *.exe
+
+ $(DEFFILE): $(DEFDEPS)
+ 	echo LIBRARY pdcurses > $@
+ 	echo EXPORTS >> $@
+-	type $(BASEDEF) >> $@
++	cat $(BASEDEF) >> $@
+ ifeq ($(WIDE),Y)
+-	type $(WIDEDEF) >> $@
++	cat $(WIDEDEF) >> $@
+ endif
+
+ $(LIBCURSES) : $(LIBDEPS)
+ 	$(LIBEXE) $(LIBFLAGS) $@ $?
+-	-copy pdcurses.a panel.a
++	-cp pdcurses.a panel.a
+
+ $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
+ $(PDCOBJS) : $(PDCURSES_WIN_H)
+--- PDCurses-3.4.orig/curses.h	2009-11-03 14:12:18.000000000 +0100
++++ PDCurses-3.4./curses.h	2009-11-03 14:14:09.000000000 +0100
+@@ -82,7 +82,9 @@
+  *
+  */
+
++#ifndef __bool_true_false_are_defined
+ typedef unsigned char bool;    /* PDCurses Boolean type */
++#endif
+
+ #ifdef CHTYPE_LONG
+ # if _LP64
Index: crosstool-ng/patches/mingw-libgnurx/2.5.1/build-static-library.patch
===================================================================
--- /dev/null
+++ crosstool-ng/patches/mingw-libgnurx/2.5.1/build-static-library.patch
@@ -0,0 +1,103 @@
+--- mingw-libgnurx-2.5.1.orig/configure	2009-11-03 08:19:15.000000000 +0100
++++ mingw-libgnurx-2.5.1/configure	2009-11-03 08:31:37.000000000 +0100
+@@ -273,7 +273,7 @@
+ PACKAGE_STRING='MinGW libgnurx 2.5.1'
+ PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435'
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CC_QUALIFIED DLLVERSION ZIPCMD ZIPEXT MSVCLIB ac_ct_MSVCLIB GNURX_LIB install_dev LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CC_QUALIFIED AR DLLVERSION ZIPCMD ZIPEXT MSVCLIB ac_ct_MSVCLIB GNURX_LIB install_dev LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -2190,21 +2190,54 @@
+
+ fi
+ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+-  ac_ext=c
++
++for ac_prog in ar; do
++set dummy ${ac_tool_prefix}$ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AR+set}" = set; then
++  echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++  if test -n "$AR"; then
++  ac_cv_prog_AR="$AR" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++  for ac_exec_ext in '' $ac_executable_extensions; do
++  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
++    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++done
++
++  test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
++fi
++fi
++AR=$ac_cv_prog_AR
++if test -n "$AR"; then
++  echo "$as_me:$LINENO: result: $AR" >&5
++echo "${ECHO_T}$AR" >&6
++else
++  echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++done
++
++ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+- popCFLAGS=$CFLAGS
+- echo 'int main(void){return 0;}' > conftest.$ac_ext
+- echo "$as_me:$LINENO: checking whether $CC accepts the -mthreads option" >&5
++popCFLAGS=$CFLAGS
++echo 'int main(void){return 0;}' > conftest.$ac_ext
++echo "$as_me:$LINENO: checking whether $CC accepts the -mthreads option" >&5
+ echo $ECHO_N "checking whether $CC accepts the -mthreads option... $ECHO_C" >&6
+    CFLAGS="$popCFLAGS $CC_QUALIFIED -mthreads"
+    if (eval $ac_compile) 2>&5; then
+@@ -3038,6 +3069,7 @@
+ s,@EXEEXT@,$EXEEXT,;t t
+ s,@OBJEXT@,$OBJEXT,;t t
+ s,@CC_QUALIFIED@,$CC_QUALIFIED,;t t
++s,@AR@,$AR,;t t
+ s,@DLLVERSION@,$DLLVERSION,;t t
+ s,@ZIPCMD@,$ZIPCMD,;t t
+ s,@ZIPEXT@,$ZIPEXT,;t t
+--- mingw-libgnurx-2.5.1.orig/Makefile.in	2009-11-03 08:17:49.000000000 +0100
++++ mingw-libgnurx-2.5.1/Makefile.in	2009-11-03 08:57:37.000000000 +0100
+@@ -39,6 +39,7 @@
+ mandir = @mandir@
+
+ CC = @CC_QUALIFIED@
++AR = @AR@
+ CFLAGS = @CFLAGS@ -I ${srcdir}
+ LDFLAGS = @LDFLAGS@
+
+@@ -67,8 +68,8 @@
+ libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS)
+ 	$(CC) $(CFLAGS) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
+
+-libregex.a: libgnurx.dll.a
+-	cp -p libgnurx.dll.a $@
++libregex.a: $(OBJECTS)
++	$(AR) cru $@ $(OBJECTS)
+
+ gnurx.lib: libgnurx-$(DLLVERSION).dll

-- 


--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]