summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2010-07-11 19:36:55 (GMT)
committerBart vdr Meulen <bartvdrmeulen@gmail.com>2010-07-11 19:36:55 (GMT)
commitd54963f0e38c03dc8cc40154ee6260dc15fc3c23 (patch)
treefb13c3a03a30c94460a5ef1bd087a0f8e3d3f813
parentb81d232a9bae21ef1bc896f106a926b66dcae869 (diff)
kernel/mingw: add 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> [yann.morin.1998@anciens.enib.fr: don't show DX and RX versions if disabled] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-rw-r--r--config/libc/mingw.in.276
-rw-r--r--patches/PDCurses/3.4/mingw32_cross_compile.patch87
-rw-r--r--patches/mingw-libgnurx/2.5.1/build-static-library.patch103
-rw-r--r--scripts/build/libc/mingw.sh80
4 files changed, 345 insertions, 1 deletions
diff --git a/config/libc/mingw.in.2 b/config/libc/mingw.in.2
new file mode 100644
index 0000000..5f5def2
--- /dev/null
+++ b/config/libc/mingw.in.2
@@ -0,0 +1,76 @@
+# Part-2 of mingw C library options: development libraries
+
+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"
+ depends on MINGW_PDCURSES
+
+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"
+ depends on MINGW_GNURX
+
+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
+
diff --git a/patches/PDCurses/3.4/mingw32_cross_compile.patch b/patches/PDCurses/3.4/mingw32_cross_compile.patch
new file mode 100644
index 0000000..060ff9a
--- /dev/null
+++ b/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
diff --git a/patches/mingw-libgnurx/2.5.1/build-static-library.patch b/patches/mingw-libgnurx/2.5.1/build-static-library.patch
new file mode 100644
index 0000000..ee7ab16
--- /dev/null
+++ b/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
diff --git a/scripts/build/libc/mingw.sh b/scripts/build/libc/mingw.sh
index 28d74d6..b35ddb9 100644
--- a/scripts/build/libc/mingw.sh
+++ b/scripts/build/libc/mingw.sh
@@ -1,10 +1,36 @@
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() {
@@ -69,6 +95,58 @@ 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}/build-pdcurses"
+ cd "${CT_BUILD_DIR}/build-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 pdcurses.a ${CT_SYSROOT_DIR}/lib/libpdcurses.a
+ cp 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}/build-gnurx"
+ cd "${CT_BUILD_DIR}/build-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
}