Files
glib/gthread/Makefile.am
Colin Walters 5195ddefba Use -fvisibility=hidden by default on Unix
Now that we have all symbols annotated as GLIB_PUBLIC, we can switch
the build to default to hiding symbols.  The major advantage of this
is that it's much harder to accidentally leak symbols.

This patch only adds it to CFLAGS for the sublibraries; we don't want
to affect things like gio/fam, nor the executables.

However, this patch only changes Unix - on Windows, we keep the
.symbols file because we still ultimately need a .def file in order to
generate a .dll.

To unify both Unix and Windows again, we need to do what cairo does
and parse the headers at build time.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 14:32:57 -05:00

102 lines
3.0 KiB
Makefile

## Process this file with automake to produce Makefile.in
include $(top_srcdir)/Makefile.decl
AM_CPPFLAGS = \
$(glib_INCLUDES) \
-DG_LOG_DOMAIN=\"GThread\" \
-D_GTHREAD_API=G_PUBLIC_API \
-D_G_API=_GTHREAD_API \
@GTHREAD_COMPILE_IMPL_DEFINES@ \
@GLIB_DEBUG_FLAGS@
gthread.def: gthread.symbols $(top_builddir)/glib/glibconfig.h $(top_srcdir)/glib/process-symbol-file.sh Makefile
$(AM_V_GEN) env GLIB_DEBUG_FLAGS="$(GLIB_DEBUG_FLAGS)" $(top_srcdir)/glib/process-symbol-file.sh $< $@
EXTRA_DIST += \
makefile.msc.in \
gthread.symbols \
gthread.rc.in
BUILT_EXTRA_DIST = \
makefile.msc \
gthread.rc
libglib = $(top_builddir)/glib/libglib-2.0.la
top_builddir_full=`cd \$(top_builddir); pwd`
lib_LTLIBRARIES = libgthread-2.0.la
if OS_WIN32_AND_DLL_COMPILATION
gthread_def = gthread.def
export_symbols = -export-symbols $(gthread_def)
if MS_LIB_AVAILABLE
noinst_DATA = gthread-2.0.lib
install_ms_lib_cmd = $(INSTALL) gthread-2.0.lib $(DESTDIR)$(libdir)
uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gthread-2.0.lib
endif
endif
install-ms-lib:
$(install_ms_lib_cmd)
uninstall-ms-lib:
$(uninstall_ms_lib_cmd)
if PLATFORM_WIN32
no_undefined = -no-undefined
endif
if OS_WIN32_AND_DLL_COMPILATION
install-def-file:
$(INSTALL) $(srcdir)/gthread.def $(DESTDIR)$(libdir)/gthread-2.0.def
uninstall-def-file:
-rm $(DESTDIR)$(libdir)/gthread-2.0.def
else
install-def-file:
uninstall-def-file:
endif
if OS_WIN32_AND_DLL_COMPILATION
gthread_win32_res = gthread-win32-res.o
gthread_win32_res_ldflag = -Wl,$(gthread_win32_res)
endif
libgthread_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
libgthread_2_0_la_SOURCES = gthread-impl.c
libgthread_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
$(gthread_win32_res_ldflag) \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-export-dynamic $(no_undefined) $(export_symbols)
libgthread_2_0_la_LIBADD = $(G_THREAD_LIBS_EXTRA) $(G_THREAD_LIBS_FOR_GTHREAD) $(libglib)
libgthread_2_0_la_DEPENDENCIES = $(gthread_win32_res) $(gthread_def)
gthread-win32-res.o: gthread.rc
$(AM_V_GEN) $(WINDRES) gthread.rc $@
gthread-2.0.lib: libgthread-2.0.la gthread.def
lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgthread-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(srcdir)/gthread.def -out:$@
dist-hook: $(BUILT_EXTRA_DIST)
files='$(BUILT_EXTRA_DIST)'; \
for f in $$files; do \
if test -f $$f; then d=.; else d=$(srcdir); fi; \
cp $$d/$$f $(distdir) || exit 1; done
install-data-local: install-ms-lib install-def-file
uninstall-local: uninstall-ms-lib uninstall-def-file
if HAVE_GLIB_RUNTIME_LIBDIR
install-data-hook:
mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
rm -f $(DESTDIR)$(libdir)/libgthread-2.0.so
ln -s $(GLIB_RUNTIME_LIBDIR)/libgthread-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgthread-2.0.so
endif