From d54963f0e38c03dc8cc40154ee6260dc15fc3c23 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Sun, 11 Jul 2010 21:36:55 +0200 Subject: 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 [yann.morin.1998@anciens.enib.fr: don't show DX and RX versions if disabled] Signed-off-by: "Yann E. MORIN" 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 } -- cgit v0.10.2-6-g49f6