kernel/mingw: add target libraries
authorBart vdr Meulen <bartvdrmeulen@gmail.com>
Sun Jul 11 21:36:55 2010 +0200 (2010-07-11)
changeset 2018860de6018501
parent 2017 f637b6c2162b
child 2019 235d1aa16e00
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>
config/libc/mingw.in.2
patches/PDCurses/3.4/mingw32_cross_compile.patch
patches/mingw-libgnurx/2.5.1/build-static-library.patch
scripts/build/libc/mingw.sh
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/config/libc/mingw.in.2	Sun Jul 11 21:36:55 2010 +0200
     1.3 @@ -0,0 +1,76 @@
     1.4 +# Part-2 of mingw C library options: development libraries
     1.5 +
     1.6 +config MINGW_DIRECTX
     1.7 +    bool
     1.8 +    prompt "Include DirectX development files"
     1.9 +    default n
    1.10 +
    1.11 +config MINGW_OPENGL
    1.12 +    bool
    1.13 +    prompt "Include OpenGL development files"
    1.14 +    default n
    1.15 +
    1.16 +config MINGW_PDCURSES
    1.17 +    bool
    1.18 +    prompt "Include PDCurses (NCurses library) development files"
    1.19 +    default n
    1.20 +
    1.21 +choice
    1.22 +    bool
    1.23 +    prompt "PDCurses library version"
    1.24 +    depends on MINGW_PDCURSES
    1.25 +
    1.26 +config MINGW_PDCURSES_V_3_4
    1.27 +    bool
    1.28 +    prompt "3.4"
    1.29 +
    1.30 +# CT_INSERT_VERSION_ABOVE
    1.31 +# Don't remove above line!
    1.32 +
    1.33 +config MINGW_PDCURSES_V_select
    1.34 +    bool
    1.35 +    prompt "Other version"
    1.36 +
    1.37 +endchoice
    1.38 +
    1.39 +config MINGW_PDCURSES_VERSION
    1.40 +    string
    1.41 +    prompt "PDCurses library version" if MINGW_PDCURSES_V_select
    1.42 +    default "3.4" if MINGW_PDCURSES_V_3_4
    1.43 +# CT_INSERT_VERSION_STRING_ABOVE
    1.44 +# Don't remove above line!
    1.45 +    help
    1.46 +      Enter the version number of the PDCurses library to use
    1.47 +
    1.48 +config MINGW_GNURX
    1.49 +    bool
    1.50 +    prompt "Include GnuRX (regex library) development files"
    1.51 +    default n
    1.52 +
    1.53 +choice
    1.54 +    bool
    1.55 +    prompt "GnuRX library version"
    1.56 +    depends on MINGW_GNURX
    1.57 +
    1.58 +config MINGW_GNURX_V_2_5_1
    1.59 +    bool
    1.60 +    prompt "2.5.1"
    1.61 +
    1.62 +# CT_INSERT_VERSION_ABOVE
    1.63 +# Don't remove above line!
    1.64 +
    1.65 +config MINGW_GNURX_V_select
    1.66 +    bool
    1.67 +    prompt "Other version"
    1.68 +
    1.69 +endchoice
    1.70 +
    1.71 +config MINGW_GNURX_VERSION
    1.72 +    string
    1.73 +    prompt "GnuRX library version" if MINGW_GNURX_V_select
    1.74 +    default "2.5.1" if MINGW_GNURX_V_2_5_1
    1.75 +# CT_INSERT_VERSION_STRING_ABOVE
    1.76 +# Don't remove above line!
    1.77 +    help
    1.78 +      Enter the version number of the Regex library to use
    1.79 +
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/patches/PDCurses/3.4/mingw32_cross_compile.patch	Sun Jul 11 21:36:55 2010 +0200
     2.3 @@ -0,0 +1,87 @@
     2.4 +--- PDCurses-3.4.orig/win32/mingwin32.mak	2009-11-02 13:50:11.000000000 +0100
     2.5 ++++ PDCurses-3.4/win32/mingwin32.mak	2009-11-02 13:53:43.000000000 +0100
     2.6 +@@ -18,7 +18,7 @@
     2.7 +
     2.8 + PDCURSES_WIN_H	= $(osdir)/pdcwin.h
     2.9 +
    2.10 +-CC		= gcc
    2.11 ++CC		= $(CROSS_COMPILE)gcc
    2.12 +
    2.13 + ifeq ($(DEBUG),Y)
    2.14 + 	CFLAGS  = -g -Wall -DPDCDEBUG
    2.15 +@@ -30,8 +30,8 @@
    2.16 +
    2.17 + CFLAGS += -I$(PDCURSES_SRCDIR)
    2.18 +
    2.19 +-BASEDEF		= $(PDCURSES_SRCDIR)\exp-base.def
    2.20 +-WIDEDEF		= $(PDCURSES_SRCDIR)\exp-wide.def
    2.21 ++BASEDEF		= $(PDCURSES_SRCDIR)/exp-base.def
    2.22 ++WIDEDEF		= $(PDCURSES_SRCDIR)/exp-wide.def
    2.23 +
    2.24 + DEFDEPS		= $(BASEDEF)
    2.25 +
    2.26 +@@ -46,17 +46,17 @@
    2.27 +
    2.28 + DEFFILE		= pdcurses.def
    2.29 +
    2.30 +-LINK		= gcc
    2.31 ++LINK		= $(CROSS_COMPILE)gcc
    2.32 +
    2.33 + ifeq ($(DLL),Y)
    2.34 + 	CFLAGS += -DPDC_DLL_BUILD
    2.35 +-	LIBEXE = gcc $(DEFFILE)
    2.36 ++	LIBEXE = $(CROSS_COMPILE)gcc $(DEFFILE)
    2.37 + 	LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o
    2.38 + 	LIBCURSES = pdcurses.dll
    2.39 + 	LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE)
    2.40 + 	CLEAN = $(LIBCURSES) *.a $(DEFFILE)
    2.41 + else
    2.42 +-	LIBEXE = ar
    2.43 ++	LIBEXE = $(CROSS_COMPILE)ar
    2.44 + 	LIBFLAGS = rcv
    2.45 + 	LIBCURSES = pdcurses.a
    2.46 + 	LIBDEPS = $(LIBOBJS) $(PDCOBJS)
    2.47 +@@ -70,24 +70,24 @@
    2.48 + libs:	$(LIBCURSES)
    2.49 +
    2.50 + clean:
    2.51 +-	-del *.o
    2.52 +-	-del *.exe
    2.53 +-	-del $(CLEAN)
    2.54 ++	-rm *.o
    2.55 ++	-rm *.exe
    2.56 ++	-rm $(CLEAN)
    2.57 +
    2.58 + demos:	$(DEMOS)
    2.59 +-	strip *.exe
    2.60 ++	$(CROSS_COMPILE)strip *.exe
    2.61 +
    2.62 + $(DEFFILE): $(DEFDEPS)
    2.63 + 	echo LIBRARY pdcurses > $@
    2.64 + 	echo EXPORTS >> $@
    2.65 +-	type $(BASEDEF) >> $@
    2.66 ++	cat $(BASEDEF) >> $@
    2.67 + ifeq ($(WIDE),Y)
    2.68 +-	type $(WIDEDEF) >> $@
    2.69 ++	cat $(WIDEDEF) >> $@
    2.70 + endif
    2.71 +
    2.72 + $(LIBCURSES) : $(LIBDEPS)
    2.73 + 	$(LIBEXE) $(LIBFLAGS) $@ $?
    2.74 +-	-copy pdcurses.a panel.a
    2.75 ++	-cp pdcurses.a panel.a
    2.76 +
    2.77 + $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
    2.78 + $(PDCOBJS) : $(PDCURSES_WIN_H)
    2.79 +--- PDCurses-3.4.orig/curses.h	2009-11-03 14:12:18.000000000 +0100
    2.80 ++++ PDCurses-3.4./curses.h	2009-11-03 14:14:09.000000000 +0100
    2.81 +@@ -82,7 +82,9 @@
    2.82 +  *
    2.83 +  */
    2.84 +
    2.85 ++#ifndef __bool_true_false_are_defined
    2.86 + typedef unsigned char bool;    /* PDCurses Boolean type */
    2.87 ++#endif
    2.88 +
    2.89 + #ifdef CHTYPE_LONG
    2.90 + # if _LP64
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/patches/mingw-libgnurx/2.5.1/build-static-library.patch	Sun Jul 11 21:36:55 2010 +0200
     3.3 @@ -0,0 +1,103 @@
     3.4 +--- mingw-libgnurx-2.5.1.orig/configure	2009-11-03 08:19:15.000000000 +0100
     3.5 ++++ mingw-libgnurx-2.5.1/configure	2009-11-03 08:31:37.000000000 +0100
     3.6 +@@ -273,7 +273,7 @@
     3.7 + PACKAGE_STRING='MinGW libgnurx 2.5.1'
     3.8 + PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=2435&atid=102435'
     3.9 +
    3.10 +-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'
    3.11 ++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'
    3.12 + ac_subst_files=''
    3.13 +
    3.14 + # Initialize some variables set by options.
    3.15 +@@ -2190,21 +2190,54 @@
    3.16 +
    3.17 + fi
    3.18 + rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
    3.19 +-ac_ext=c
    3.20 +-ac_cpp='$CPP $CPPFLAGS'
    3.21 +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    3.22 +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    3.23 +-ac_compiler_gnu=$ac_cv_c_compiler_gnu
    3.24 +
    3.25 +-  ac_ext=c
    3.26 ++
    3.27 ++for ac_prog in ar; do
    3.28 ++set dummy ${ac_tool_prefix}$ac_prog; ac_word=$2
    3.29 ++echo "$as_me:$LINENO: checking for $ac_word" >&5
    3.30 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
    3.31 ++if test "${ac_cv_prog_AR+set}" = set; then
    3.32 ++  echo $ECHO_N "(cached) $ECHO_C" >&6
    3.33 ++else
    3.34 ++  if test -n "$AR"; then
    3.35 ++  ac_cv_prog_AR="$AR" # Let the user override the test.
    3.36 ++else
    3.37 ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
    3.38 ++for as_dir in $PATH
    3.39 ++do
    3.40 ++  IFS=$as_save_IFS
    3.41 ++  test -z "$as_dir" && as_dir=.
    3.42 ++  for ac_exec_ext in '' $ac_executable_extensions; do
    3.43 ++  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
    3.44 ++    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
    3.45 ++    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
    3.46 ++    break 2
    3.47 ++  fi
    3.48 ++done
    3.49 ++done
    3.50 ++
    3.51 ++  test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
    3.52 ++fi
    3.53 ++fi
    3.54 ++AR=$ac_cv_prog_AR
    3.55 ++if test -n "$AR"; then
    3.56 ++  echo "$as_me:$LINENO: result: $AR" >&5
    3.57 ++echo "${ECHO_T}$AR" >&6
    3.58 ++else
    3.59 ++  echo "$as_me:$LINENO: result: no" >&5
    3.60 ++echo "${ECHO_T}no" >&6
    3.61 ++fi
    3.62 ++done
    3.63 ++
    3.64 ++ac_ext=c
    3.65 + ac_cpp='$CPP $CPPFLAGS'
    3.66 + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
    3.67 + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
    3.68 + ac_compiler_gnu=$ac_cv_c_compiler_gnu
    3.69 +
    3.70 +- popCFLAGS=$CFLAGS
    3.71 +- echo 'int main(void){return 0;}' > conftest.$ac_ext
    3.72 +- echo "$as_me:$LINENO: checking whether $CC accepts the -mthreads option" >&5
    3.73 ++popCFLAGS=$CFLAGS
    3.74 ++echo 'int main(void){return 0;}' > conftest.$ac_ext
    3.75 ++echo "$as_me:$LINENO: checking whether $CC accepts the -mthreads option" >&5
    3.76 + echo $ECHO_N "checking whether $CC accepts the -mthreads option... $ECHO_C" >&6
    3.77 +    CFLAGS="$popCFLAGS $CC_QUALIFIED -mthreads"
    3.78 +    if (eval $ac_compile) 2>&5; then
    3.79 +@@ -3038,6 +3069,7 @@
    3.80 + s,@EXEEXT@,$EXEEXT,;t t
    3.81 + s,@OBJEXT@,$OBJEXT,;t t
    3.82 + s,@CC_QUALIFIED@,$CC_QUALIFIED,;t t
    3.83 ++s,@AR@,$AR,;t t
    3.84 + s,@DLLVERSION@,$DLLVERSION,;t t
    3.85 + s,@ZIPCMD@,$ZIPCMD,;t t
    3.86 + s,@ZIPEXT@,$ZIPEXT,;t t
    3.87 +--- mingw-libgnurx-2.5.1.orig/Makefile.in	2009-11-03 08:17:49.000000000 +0100
    3.88 ++++ mingw-libgnurx-2.5.1/Makefile.in	2009-11-03 08:57:37.000000000 +0100
    3.89 +@@ -39,6 +39,7 @@
    3.90 + mandir = @mandir@
    3.91 +
    3.92 + CC = @CC_QUALIFIED@
    3.93 ++AR = @AR@
    3.94 + CFLAGS = @CFLAGS@ -I ${srcdir}
    3.95 + LDFLAGS = @LDFLAGS@
    3.96 +
    3.97 +@@ -67,8 +68,8 @@
    3.98 + libgnurx-$(DLLVERSION).dll libgnurx.dll.a: $(OBJECTS)
    3.99 + 	$(CC) $(CFLAGS) -shared -o libgnurx-$(DLLVERSION).dll $(LDFLAGS) $(OBJECTS)
   3.100 +
   3.101 +-libregex.a: libgnurx.dll.a
   3.102 +-	cp -p libgnurx.dll.a $@
   3.103 ++libregex.a: $(OBJECTS)
   3.104 ++	$(AR) cru $@ $(OBJECTS)
   3.105 +
   3.106 + gnurx.lib: libgnurx-$(DLLVERSION).dll
     4.1 --- a/scripts/build/libc/mingw.sh	Sun Jul 11 21:36:20 2010 +0200
     4.2 +++ b/scripts/build/libc/mingw.sh	Sun Jul 11 21:36:55 2010 +0200
     4.3 @@ -1,10 +1,36 @@
     4.4  do_libc_get() {
     4.5      CT_GetFile "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src" \
     4.6          http://downloads.sourceforge.net/sourceforge/mingw
     4.7 +
     4.8 +    if [ -n "${CT_MINGW_DIRECTX}" ]; then
     4.9 +        CT_GetFile "directx-devel" \
    4.10 +            http://www.libsdl.org/extras/win32/common
    4.11 +    fi
    4.12 +    if [ -n "${CT_MINGW_OPENGL}" ]; then
    4.13 +        CT_GetFile "opengl-devel" \
    4.14 +            http://www.libsdl.org/extras/win32/common
    4.15 +    fi
    4.16 +    if [ -n "${CT_MINGW_PDCURSES}" ]; then
    4.17 +        CT_GetFile "PDCurses-${CT_MINGW_PDCURSES_VERSION}" \
    4.18 +            http://downloads.sourceforge.net/sourceforge/pdcurses
    4.19 +    fi
    4.20 +    if [ -n "${CT_MINGW_GNURX}" ]; then
    4.21 +        CT_GetFile "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src" \
    4.22 +            http://downloads.sourceforge.net/sourceforge/mingw
    4.23 +    fi
    4.24  }
    4.25  
    4.26  do_libc_extract() {
    4.27      CT_Extract "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src"
    4.28 +
    4.29 +    if [ -n "${CT_MINGW_PDCURSES}" ]; then
    4.30 +        CT_Extract "PDCurses-${CT_MINGW_PDCURSES_VERSION}"
    4.31 +        CT_Patch "PDCurses" "${CT_MINGW_PDCURSES_VERSION}"
    4.32 +    fi
    4.33 +    if [ -n "${CT_MINGW_GNURX}" ]; then
    4.34 +        CT_Extract "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src"
    4.35 +        CT_Patch "mingw-libgnurx" "${CT_MINGW_GNURX_VERSION}"
    4.36 +    fi
    4.37  }
    4.38  
    4.39  do_libc_check_config() {
    4.40 @@ -69,6 +95,58 @@
    4.41  }
    4.42  
    4.43  do_libc_finish() {
    4.44 - :
    4.45 +    CT_DoStep INFO "Installing MinGW Development libraries"
    4.46 +
    4.47 +    CT_Pushd "${CT_SYSROOT_DIR}"
    4.48 +    if [ -n "${CT_MINGW_DIRECTX}" ]; then
    4.49 +        CT_DoLog EXTRA "Installing DirectX development package"
    4.50 +        CT_Extract nochdir "directx-devel"
    4.51 +    fi
    4.52 +    if [ -n "${CT_MINGW_OPENGL}" ]; then
    4.53 +        CT_DoLog EXTRA "Installing OpenGL development package"
    4.54 +        CT_Extract nochdir "opengl-devel"
    4.55 +    fi
    4.56 +    CT_Popd
    4.57 +
    4.58 +    if [ -n "${CT_MINGW_PDCURSES}" ]; then
    4.59 +        CT_DoLog EXTRA "Building PDCurses development files"
    4.60 +        mkdir -p "${CT_BUILD_DIR}/build-pdcurses"
    4.61 +        cd "${CT_BUILD_DIR}/build-pdcurses"
    4.62 +
    4.63 +        make -f ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/win32/mingwin32.mak libs \
    4.64 +            PDCURSES_SRCDIR=${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION} \
    4.65 +            CROSS_COMPILE=${CT_TARGET}-
    4.66 +
    4.67 +        CT_DoLog EXTRA "Installing PDCurses development files"
    4.68 +        chmod a+r ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h
    4.69 +        cp ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h \
    4.70 +           ${CT_SYSROOT_DIR}/include
    4.71 +        cp pdcurses.a ${CT_SYSROOT_DIR}/lib/libpdcurses.a
    4.72 +        cp pdcurses.a ${CT_SYSROOT_DIR}/lib/libncurses.a
    4.73 +    fi
    4.74 +
    4.75 +    if [ -n "${CT_MINGW_GNURX}" ]; then
    4.76 +        CT_DoLog EXTRA "Configuring GnuRX development files"
    4.77 +
    4.78 +        mkdir -p "${CT_BUILD_DIR}/build-gnurx"
    4.79 +        cd "${CT_BUILD_DIR}/build-gnurx"
    4.80 +
    4.81 +        CFLAGS="${CT_CFLAGS_FOR_TARGET}"                \
    4.82 +        CT_DoExecLog ALL                                \
    4.83 +        "${CT_SRC_DIR}/mingw-libgnurx-${CT_MINGW_GNURX_VERSION}/configure" \
    4.84 +            --build=${CT_BUILD}           \
    4.85 +            --host=${CT_TARGET}           \
    4.86 +            --prefix=${CT_SYSROOT_DIR}    \
    4.87 +            --enable-shared               \
    4.88 +            --enable-static
    4.89 +
    4.90 +        CT_DoLog EXTRA "Building GnuRX development files"
    4.91 +        CT_DoExecLog ALL make ${PARALLELMFLAGS}
    4.92 +
    4.93 +        CT_DoLog EXTRA "Installing GnuRX development files"
    4.94 +        CT_DoExecLog ALL make install-dev
    4.95 +    fi
    4.96 +
    4.97 +    CT_EndStep
    4.98  }
    4.99