# HG changeset patch # User Hans Petter Jansson # Date 1338825731 -7200 # Node ID 7e5aaa010a0205bd65e10358c0e8c3423b10352f # Parent 1f6e698fb89e049d521c3c4875aff734a9562c69 update package glib diff -r 1f6e698fb89e -r 7e5aaa010a02 index.html --- a/index.html Mon Jun 04 17:59:36 2012 +0200 +++ b/index.html Mon Jun 04 18:02:11 2012 +0200 @@ -1165,7 +1165,7 @@ glib - 2.28.8 + 2.32.2 GLib diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-1-fixes.patch --- a/src/glib-1-fixes.patch Mon Jun 04 17:59:36 2012 +0200 +++ b/src/glib-1-fixes.patch Mon Jun 04 18:02:11 2012 +0200 @@ -3,29 +3,6 @@ Contains ad hoc patches for cross building. -From 4693f62d3f01f7b7d26607e6eed843202cbf90f7 Mon Sep 17 00:00:00 2001 -From: MXE -Date: Thu, 23 Sep 2010 21:36:04 +0200 -Subject: [PATCH 1/5] no gtk doc check - - -diff --git a/configure.ac b/configure.ac -index a821267..2e541d2 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2741,8 +2741,6 @@ dnl ************************** - dnl *** Checks for gtk-doc *** - dnl ************************** - --GTK_DOC_CHECK([1.15]) -- - AC_ARG_ENABLE(man, - [AC_HELP_STRING([--enable-man], - [regenerate man pages from Docbook [default=no]])],enable_man=yes, --- -1.7.1 - - From 46d0d473e6fb32c5204d063cad5f5073d2a139a5 Mon Sep 17 00:00:00 2001 From: MXE Date: Thu, 23 Sep 2010 21:41:51 +0200 @@ -95,57 +72,3 @@ 1.7.1 -From 0e57514812500d5d4dee03e1be8059a25876dd99 Mon Sep 17 00:00:00 2001 -From: MXE -Date: Thu, 23 Sep 2010 21:45:50 +0200 -Subject: [PATCH 4/5] fix dependency libs - - -diff --git a/configure.ac b/configure.ac -index 18c2dea..e472768 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2698,7 +2698,7 @@ case $host in - G_LIBS_EXTRA="-luser32 -lkernel32" - ;; - *-*-mingw*) -- G_LIBS_EXTRA="-lws2_32 -lole32" -+ G_LIBS_EXTRA="-lws2_32 -lole32 -lshlwapi" - ;; - *) - G_LIBS_EXTRA="" -diff --git a/glib-2.0.pc.in b/glib-2.0.pc.in -index 58e1ecf..17b2133 100644 ---- a/glib-2.0.pc.in -+++ b/glib-2.0.pc.in -@@ -11,5 +11,5 @@ Name: GLib - Description: C Utility Library - Version: @VERSION@ - Libs: -L${libdir} -lglib-2.0 @INTLLIBS@ --Libs.private: @ICONV_LIBS@ -+Libs.private: @G_THREAD_LIBS@ @G_LIBS_EXTRA@ @PCRE_LIBS@ @INTLLIBS@ @ICONV_LIBS@ - Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include @GLIB_EXTRA_CFLAGS@ --- -1.7.1 - - -From 87931c81f6401fb0c25064ec0ba2edca9ec53924 Mon Sep 17 00:00:00 2001 -From: MXE -Date: Sat, 25 Sep 2010 00:07:33 +0200 -Subject: [PATCH 5/5] add -ldnsapi to gio-2.0.pc - - -diff --git a/gio-2.0.pc.in b/gio-2.0.pc.in -index 92cda85..7a4e224 100644 ---- a/gio-2.0.pc.in -+++ b/gio-2.0.pc.in -@@ -10,6 +10,6 @@ Name: GIO - Description: glib I/O library - Version: @VERSION@ - Requires: glib-2.0,gobject-2.0,gmodule-no-export-2.0 --Libs: -L${libdir} -lgio-2.0 -+Libs: -L${libdir} -lgio-2.0 -ldnsapi - Libs.private: @ZLIB_LIBS@ @LIBASYNCNS_LIBADD@ - Cflags: --- -1.7.1 diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-2-DllMain.patch --- a/src/glib-2-DllMain.patch Mon Jun 04 17:59:36 2012 +0200 +++ b/src/glib-2-DllMain.patch Mon Jun 04 18:02:11 2012 +0200 @@ -1,3 +1,8 @@ +This file is part of MXE. +See index.html for further information. + +Avoid DllMain symbol conflict when linking statically. + diff -uNr glib-2.28.8-orig/gio/giomodule.c glib/gio/giomodule.c --- glib-2.28.8-orig/gio/giomodule.c 2011-01-05 22:44:06.000000000 +0100 +++ glib/gio/giomodule.c 2011-11-23 21:04:43.867004895 +0100 @@ -22,38 +27,20 @@ #undef GIO_MODULE_DIR /* GIO_MODULE_DIR is used only in code called just once, -diff -uNr glib-2.28.8-orig/glib/gutils.c glib/glib/gutils.c ---- glib-2.28.8-orig/glib/gutils.c 2011-06-06 01:18:49.000000000 +0200 -+++ glib/glib/gutils.c 2011-11-23 21:05:07.822988144 +0100 -@@ -144,10 +144,8 @@ +diff --git a/glib/glib-init.c b/glib/glib-init.c +index f4edd5c..02bf678 100644 +--- a/glib/glib-init.c ++++ b/glib/glib-init.c +@@ -226,9 +226,9 @@ glib_init (void) + HMODULE glib_dll; - static HMODULE glib_dll = NULL; - --#ifdef DLL_EXPORT -- BOOL WINAPI -DllMain (HINSTANCE hinstDLL, +- DWORD fdwReason, +- LPVOID lpvReserved) +glib_DllMain (HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved) ++ DWORD fdwReason, ++ LPVOID lpvReserved) { -@@ -157,8 +155,6 @@ - return TRUE; - } - --#endif -- - gchar * - _glib_get_dll_directory (void) - { -@@ -166,10 +162,8 @@ - gchar *p; - wchar_t wc_fn[MAX_PATH]; - --#ifdef DLL_EXPORT - if (glib_dll == NULL) - return NULL; --#endif - - /* This code is different from that in - * g_win32_get_package_installation_directory_of_module() in that + switch (fdwReason) + { diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-3-optional-inotify.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/glib-3-optional-inotify.patch Mon Jun 04 18:02:11 2012 +0200 @@ -0,0 +1,31 @@ +This file is part of MXE. +See index.html for further information. + +Allow building without inotify support. + +diff --git a/configure.ac b/configure.ac +index 2d7ce80..e126ca8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1700,11 +1700,18 @@ dnl ***************************** + dnl ** Check for inotify (GIO) ** + dnl ***************************** + inotify_support=no +-AC_CHECK_HEADERS([sys/inotify.h], +-[ ++ ++AC_ARG_ENABLE(inotify, ++ AC_HELP_STRING([--disable-inotify], ++ [build without inotify support])) ++ ++if test "x$enable_inotify" != "xno"; then ++ AC_CHECK_HEADERS([sys/inotify.h], ++ [ + inotify_support=yes + AC_CHECK_FUNCS(inotify_init1) +-]) ++ ]) ++fi + + AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"]) + diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-4-alignof-stdc-headers.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/glib-4-alignof-stdc-headers.patch Mon Jun 04 18:02:11 2012 +0200 @@ -0,0 +1,18 @@ +This file is part of MXE. +See index.html for further information. + +Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF. Backported from upstream. + +diff --git a/configure.ac b/configure.ac +index 31f5f0e..f8ff60d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -452,6 +452,8 @@ fi + + AC_MSG_RESULT($enable_iconv_cache) + ++# Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF ++AS_IF([false], [AC_CHECK_HEADER([stdint.h])]) + + dnl + dnl zlib support diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-5-gio-add-dnsapi.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/glib-5-gio-add-dnsapi.patch Mon Jun 04 18:02:11 2012 +0200 @@ -0,0 +1,17 @@ +This file is part of MXE. +See index.html for further information. + +Link with dnsapi. + +diff --git a/gio-2.0.pc.in b/gio-2.0.pc.in +index 9f7123f..b0d5779 100644 +--- a/gio-2.0.pc.in ++++ b/gio-2.0.pc.in +@@ -13,6 +13,6 @@ Description: glib I/O library + Version: @VERSION@ + Requires: glib-2.0 gobject-2.0 + Requires.private: gmodule-no-export-2.0 +-Libs: -L${libdir} -lgio-2.0 ++Libs: -L${libdir} -lgio-2.0 -ldnsapi + Libs.private: @ZLIB_LIBS@ @NETWORK_LIBS@ + Cflags: diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib-6-static-init.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/glib-6-static-init.patch Mon Jun 04 18:02:11 2012 +0200 @@ -0,0 +1,374 @@ +This file is part of MXE. +See index.html for further information. + +Ensure globals are initialized even when DllMain is not being run. + +diff --git a/glib/gmain.c b/glib/gmain.c +index 760f179..878ac14 100644 +--- a/glib/gmain.c ++++ b/glib/gmain.c +@@ -1981,12 +1981,15 @@ g_get_real_time (void) + #ifdef G_OS_WIN32 + static ULONGLONG (*g_GetTickCount64) (void) = NULL; + static guint32 g_win32_tick_epoch = 0; ++static gboolean g_win32_clock_is_initialized; + + G_GNUC_INTERNAL void + g_clock_win32_init (void) + { + HMODULE kernel32; + ++ g_win32_clock_is_initialized = TRUE; ++ + g_GetTickCount64 = NULL; + kernel32 = GetModuleHandle ("KERNEL32.DLL"); + if (kernel32 != NULL) +@@ -2105,6 +2108,9 @@ g_get_monotonic_time (void) + * timeBeginPeriod() to increase it as much as they want + */ + ++ if (!g_win32_clock_is_initialized) ++ g_clock_win32_init (); ++ + if (g_GetTickCount64 != NULL) + { + guint32 ticks_as_32bit; +diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c +index 5a9ac97..e4d1d48 100644 +--- a/glib/gthread-win32.c ++++ b/glib/gthread-win32.c +@@ -117,18 +117,28 @@ typedef struct + void (__stdcall * WakeConditionVariable) (gpointer cond); + } GThreadImplVtable; + ++/* Needed for static builds where DllMain initializer doesn't get called */ ++static gboolean g_threads_is_initialized; ++G_GNUC_INTERNAL void g_thread_win32_init (void); ++ + static GThreadImplVtable g_thread_impl_vtable; + + /* {{{1 GMutex */ + void + g_mutex_init (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeSRWLock (mutex); + } + + void + g_mutex_clear (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteSRWLock != NULL) + g_thread_impl_vtable.DeleteSRWLock (mutex); + } +@@ -136,18 +146,27 @@ g_mutex_clear (GMutex *mutex) + void + g_mutex_lock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockExclusive (mutex); + } + + gboolean + g_mutex_trylock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockExclusive (mutex); + } + + void + g_mutex_unlock (GMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockExclusive (mutex); + } + +@@ -158,6 +177,9 @@ g_rec_mutex_impl_new (void) + { + CRITICAL_SECTION *cs; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + cs = g_slice_new (CRITICAL_SECTION); + InitializeCriticalSection (cs); + +@@ -168,6 +190,10 @@ static void + g_rec_mutex_impl_free (CRITICAL_SECTION *cs) + { + DeleteCriticalSection (cs); ++ ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_slice_free (CRITICAL_SECTION, cs); + } + +@@ -176,6 +202,9 @@ g_rec_mutex_get_impl (GRecMutex *mutex) + { + CRITICAL_SECTION *impl = mutex->p; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if G_UNLIKELY (mutex->p == NULL) + { + impl = g_rec_mutex_impl_new (); +@@ -190,30 +219,45 @@ g_rec_mutex_get_impl (GRecMutex *mutex) + void + g_rec_mutex_init (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + mutex->p = g_rec_mutex_impl_new (); + } + + void + g_rec_mutex_clear (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_rec_mutex_impl_free (mutex->p); + } + + void + g_rec_mutex_lock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + EnterCriticalSection (g_rec_mutex_get_impl (mutex)); + } + + void + g_rec_mutex_unlock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + LeaveCriticalSection (mutex->p); + } + + gboolean + g_rec_mutex_trylock (GRecMutex *mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return TryEnterCriticalSection (g_rec_mutex_get_impl (mutex)); + } + +@@ -222,12 +266,18 @@ g_rec_mutex_trylock (GRecMutex *mutex) + void + g_rw_lock_init (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeSRWLock (lock); + } + + void + g_rw_lock_clear (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteSRWLock != NULL) + g_thread_impl_vtable.DeleteSRWLock (lock); + } +@@ -235,36 +285,54 @@ g_rw_lock_clear (GRWLock *lock) + void + g_rw_lock_writer_lock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockExclusive (lock); + } + + gboolean + g_rw_lock_writer_trylock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockExclusive (lock); + } + + void + g_rw_lock_writer_unlock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockExclusive (lock); + } + + void + g_rw_lock_reader_lock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.AcquireSRWLockShared (lock); + } + + gboolean + g_rw_lock_reader_trylock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + return g_thread_impl_vtable.TryAcquireSRWLockShared (lock); + } + + void + g_rw_lock_reader_unlock (GRWLock *lock) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.ReleaseSRWLockShared (lock); + } + +@@ -272,12 +340,18 @@ g_rw_lock_reader_unlock (GRWLock *lock) + void + g_cond_init (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.InitializeConditionVariable (cond); + } + + void + g_cond_clear (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + if (g_thread_impl_vtable.DeleteConditionVariable) + g_thread_impl_vtable.DeleteConditionVariable (cond); + } +@@ -285,12 +359,18 @@ g_cond_clear (GCond *cond) + void + g_cond_signal (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.WakeConditionVariable (cond); + } + + void + g_cond_broadcast (GCond *cond) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.WakeAllConditionVariable (cond); + } + +@@ -298,6 +378,9 @@ void + g_cond_wait (GCond *cond, + GMutex *entered_mutex) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + g_thread_impl_vtable.SleepConditionVariableSRW (cond, entered_mutex, INFINITE, 0); + } + +@@ -308,6 +391,9 @@ g_cond_wait_until (GCond *cond, + { + gint64 span; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + span = end_time - g_get_monotonic_time (); + + if G_UNLIKELY (span < 0) +@@ -340,6 +426,9 @@ g_private_get_impl (GPrivate *key) + + if G_UNLIKELY (impl == 0) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + EnterCriticalSection (&g_private_lock); + impl = (DWORD) key->p; + if (impl == 0) +@@ -433,6 +522,9 @@ g_system_thread_free (GRealThread *thread) + { + GThreadWin32 *wt = (GThreadWin32 *) thread; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + win32_check_for_error (CloseHandle (wt->handle)); + g_slice_free (GThreadWin32, wt); + } +@@ -440,6 +532,9 @@ g_system_thread_free (GRealThread *thread) + void + g_system_thread_exit (void) + { ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + _endthreadex (0); + } + +@@ -448,6 +543,9 @@ g_thread_win32_proxy (gpointer data) + { + GThreadWin32 *self = data; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + self->proxy (self); + + g_system_thread_exit (); +@@ -465,6 +563,9 @@ g_system_thread_new (GThreadFunc func, + GThreadWin32 *thread; + guint ignore; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + thread = g_slice_new0 (GThreadWin32); + thread->proxy = func; + +@@ -494,6 +595,9 @@ g_system_thread_wait (GRealThread *thread) + { + GThreadWin32 *wt = (GThreadWin32 *) thread; + ++ if (!g_threads_is_initialized) ++ g_thread_win32_init (); ++ + win32_check_for_error (WAIT_FAILED != WaitForSingleObject (wt->handle, INFINITE)); + } + +@@ -985,6 +1089,8 @@ g_thread_lookup_native_funcs (void) + G_GNUC_INTERNAL void + g_thread_win32_init (void) + { ++ g_threads_is_initialized = TRUE; ++ + if (!g_thread_lookup_native_funcs ()) + g_thread_xp_init (); + diff -r 1f6e698fb89e -r 7e5aaa010a02 src/glib.mk --- a/src/glib.mk Mon Jun 04 17:59:36 2012 +0200 +++ b/src/glib.mk Mon Jun 04 18:02:11 2012 +0200 @@ -3,11 +3,11 @@ PKG := glib $(PKG)_IGNORE := -$(PKG)_CHECKSUM := 9b11968fedf4da45bcd10c4a8c50012d41b3af50 +$(PKG)_CHECKSUM := 5898165e58c8f946c2b1fd05b910fe4476b64164 $(PKG)_SUBDIR := glib-$($(PKG)_VERSION) $(PKG)_FILE := glib-$($(PKG)_VERSION).tar.xz $(PKG)_URL := http://ftp.gnome.org/pub/gnome/sources/glib/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE) -$(PKG)_DEPS := gcc gettext pcre libiconv zlib dbus +$(PKG)_DEPS := gcc gettext pcre libiconv zlib libffi dbus define $(PKG)_UPDATE $(WGET) -q -O- 'http://git.gnome.org/browse/glib/refs/tags' | \ @@ -35,6 +35,7 @@ --enable-regex \ --disable-threads \ --disable-selinux \ + --disable-inotify \ --disable-fam \ --disable-xattr \ --disable-dtrace \ @@ -45,9 +46,13 @@ $(SED) -i 's,#define G_ATOMIC.*,,' '$(1).native/config.h' $(MAKE) -C '$(1).native/glib' -j '$(JOBS)' $(MAKE) -C '$(1).native/gthread' -j '$(JOBS)' + $(MAKE) -C '$(1).native/gmodule' -j '$(JOBS)' $(MAKE) -C '$(1).native/gobject' -j '$(JOBS)' lib_LTLIBRARIES= install-exec + $(MAKE) -C '$(1).native/gio/xdgmime' -j '$(JOBS)' $(MAKE) -C '$(1).native/gio' -j '$(JOBS)' glib-compile-schemas + $(MAKE) -C '$(1).native/gio' -j '$(JOBS)' glib-compile-resources $(INSTALL) -m755 '$(1).native/gio/glib-compile-schemas' '$(PREFIX)/$(TARGET)/bin/' + $(INSTALL) -m755 '$(1).native/gio/glib-compile-resources' '$(PREFIX)/$(TARGET)/bin/' # cross build cd '$(1)' && ./configure \ @@ -58,10 +63,12 @@ --with-threads=win32 \ --with-pcre=system \ --with-libiconv=gnu \ + --disable-inotify \ CXX='$(TARGET)-c++' \ PKG_CONFIG='$(PREFIX)/bin/$(TARGET)-pkg-config' \ GLIB_GENMARSHAL='$(PREFIX)/$(TARGET)/bin/glib-genmarshal' \ - GLIB_COMPILE_SCHEMAS='$(PREFIX)/$(TARGET)/bin/glib-compile-schemas' + GLIB_COMPILE_SCHEMAS='$(PREFIX)/$(TARGET)/bin/glib-compile-schemas' \ + GLIB_COMPILE_RESOURCES='$(PREFIX)/$(TARGET)/bin/glib-compile-resources' $(MAKE) -C '$(1)/glib' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= $(MAKE) -C '$(1)/gthread' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=