# GObject - GLib Type, Object, Parameter and Signal Library
# Copyright (C) 1997,98,99,2000 Tim Janik and Red Hat, Inc.
#
## Process this file with automake to produce Makefile.in
include $(top_srcdir)/Makefile.decl

SUBDIRS = . tests

BUILT_SOURCES=
CLEANFILES=

if HAVE_THREADS
THREAD_FLAGS=-DG_THREADS_MANDATORY
endif

AM_CPPFLAGS = 					\
	-DG_LOG_DOMAIN=\"GLib-GObject\"		\
	$(gthread_INCLUDES) 			\
	$(GLIB_DEBUG_FLAGS)			\
	$(THREAD_FLAGS)				\
	-DG_DISABLE_DEPRECATED			\
	-DGOBJECT_COMPILATION

gobject.def: gobject.symbols
	$(AM_V_GEN) (echo EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gobject.symbols | $(SED) -e '/^$$/d' -e 's/^/	/' -e 's/G_GNUC_[^ ]*//g' | sort) > gobject.def

if OS_LINUX
if HAVE_GNUC_VISIBILITY
TESTS = abicheck.sh
endif
endif

libglib = $(top_builddir)/glib/libglib-2.0.la $(top_builddir)/gthread/libgthread-2.0.la

# libraries to compile and install
lib_LTLIBRARIES = libgobject-2.0.la

if OS_WIN32_AND_DLL_COMPILATION
if MS_LIB_AVAILABLE
noinst_DATA = gobject-2.0.lib

install_ms_lib_cmd = $(INSTALL) gobject-2.0.lib $(DESTDIR)$(libdir)
uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gobject-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
export_symbols = -export-symbols gobject.def
gobject_def = gobject.def

gobject_win32_res = gobject-win32-res.o
gobject_win32_res_ldflag = -Wl,$(gobject_win32_res)

install-def-file:
	$(INSTALL) gobject.def $(DESTDIR)$(libdir)/gobject-2.0.def

uninstall-def-file:
	-rm $(DESTDIR)$(libdir)/gobject-2.0.def
else
install-def-file:
uninstall-def-file:

export_symbols = $(LIBTOOL_EXPORT_OPTIONS)
endif

# libtool stuff: set version and export symbols for resolving
libgobjectincludedir = $(includedir)/glib-2.0/gobject
libgobject_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
  $(gobject_win32_res_ldflag) \
  -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
  -export-dynamic $(no_undefined) $(export_symbols)

libgobject_2_0_la_CFLAGS = $(LIBFFI_CFLAGS)

libgobject_2_0_la_LIBADD = $(libglib) $(LIBFFI_LIBS)

libgobject_2_0_la_DEPENDENCIES = $(gobject_win32_res) $(gobject_def)

#
# setup source file variables
#
# GObject library header files for public installation
gobject_public_h_sources = \
	glib-types.h		\
	gbinding.h		\
	gboxed.h		\
	gclosure.h		\
	genums.h		\
	gmarshal.h		\
	gobject.h		\
	gparam.h		\
	gparamspecs.h		\
	gsignal.h		\
	gsourceclosure.h	\
	gtype.h			\
	gtypemodule.h		\
	gtypeplugin.h		\
	gvalue.h		\
	gvaluearray.h		\
	gvaluecollector.h	\
	gvaluetypes.h		\
	gobjectnotifyqueue.c

# GObject library header files that don't get installed
gobject_private_h_sources =     \
	gatomicarray.h		\
	gtype-private.h

# GObject library C sources to build the library from
gobject_c_sources = \
	gobject_probes.d	\
	gatomicarray.c		\
	gbinding.c		\
	gboxed.c		\
	gclosure.c		\
	genums.c		\
	gmarshal.c		\
	gobject.c		\
	gobject_trace.h		\
	gparam.c		\
	gparamspecs.c		\
	gsignal.c		\
	gsourceclosure.c	\
	gtype.c			\
	gtypemodule.c		\
	gtypeplugin.c		\
	gvalue.c		\
	gvaluearray.c		\
	gvaluetransform.c	\
	gvaluetypes.c

if ENABLE_DTRACE
gobject_probes.h: gobject_probes.d Makefile
	$(AM_V_GEN) $(DTRACE) -C -h -s $< -o $@.tmp
	@$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < $@.tmp > $@ && rm -f $@.tmp
gobject_probes.o: gobject_probes.d Makefile
	$(AM_V_GEN) $(DTRACE) -G -s $< -o $@
BUILT_SOURCES += gobject_probes.h gobject_probes.o
CLEANFILES += gobject_probes.h
libgobject_2_0_la_LIBADD += gobject_probes.o
endif

if ENABLE_SYSTEMTAP
tapset_in_files = gobject.stp.in
tapsetdir   = @ABS_TAPSET_DIR@
tapset_DATA = $(tapset_in_files:.stp.in=.stp)
EXTRA_DIST += $(tapset_in_files)
endif

# non-header sources (headers should be specified in the above variables)
# that don't serve as direct make target sources, i.e. they don't have
# their own .lo rules and don't get publically installed
gobject_extra_sources = \
	gmarshal.list		\
	gmarshal.strings	\
	gobject.symbols


#
# setup GObject library sources and their dependancies
#
gobject_target_headers = $(gobject_public_h_sources)
gobject_target_sources = $(gobject_c_sources)
EXTRA_HEADERS =
EXTRA_DIST += \
	$(gobject_private_h_sources) 	\
	$(gobject_extra_sources) 	\
	marshal-genstrings.pl

# This is read by gobject-introspection/misc/ and gtk-doc
gobject-public-headers.txt: Makefile
	echo $(gobject_public_h_sources) > $@.tmp && mv $@.tmp $@

CLEANFILES += gobject-public-headers.txt

all-local: gobject-public-headers.txt

#
# rules to generate built sources
#
# setup autogeneration dependancies
gen_sources = xgen-gmh xgen-gmc xgen-gms
CLEANFILES += $(gen_sources)

# normal autogeneration rules
# all autogenerated files need to be generated in the srcdir,
# so old versions get remade and are not confused with newer
# versions in the build dir. thus a development setup requires
# srcdir to be writable, passing --disable-rebuilds to
# ../configure will supress all autogeneration rules.


gmarshal.strings: @REBUILD@ $(srcdir)/gmarshal.list
	$(AM_V_GEN) grep '^[A-Z]' $(srcdir)/gmarshal.list \
	| $(SED) -e 's/^/"g_cclosure_marshal_/' -e 's/:/__/' -e 's/,/_/g' -e 's/$$/",/' > xgen-gms \
	&& cp xgen-gms gmarshal.strings \
	&& rm -f xgen-gms xgen-gms~

glib-genmarshal.o: gmarshal.strings

# target platform:
libgobjectinclude_HEADERS = $(gobject_target_headers)
libgobject_2_0_la_SOURCES = $(gobject_target_sources)

#
# programs to compile and install
#
bin_PROGRAMS = gobject-query glib-genmarshal
bin_SCRIPTS = glib-mkenums
noinst_PROGRAMS = testgobject
# source files
gobject_query_SOURCES = gobject-query.c
glib_genmarshal_SOURCES = glib-genmarshal.c
testgobject_SOURCES = testgobject.c
# link programs against libgobject
progs_LDADD = ./libgobject-2.0.la $(libglib)
glib_genmarshal_LDADD = $(libglib)
gobject_query_LDADD = $(progs_LDADD)
testgobject_LDADD = $(progs_LDADD)

#
# auxillary files
#
EXTRA_DIST += 			\
	makefile.msc.in 	\
	gobject.rc.in		\
	libgobject-gdb.py.in	\
	glib-mkenums.in		\
	abicheck.sh

BUILT_EXTRA_DIST = \
	makefile.msc		\
	gobject.rc

gobject-win32-res.o: gobject.rc
	$(AM_V_GEN) $(WINDRES) gobject.rc $@

gobject-2.0.lib: libgobject-2.0.la gobject.def
	lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgobject-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:gobject.def -out:$@

dist-hook: $(BUILT_EXTRA_DIST) ../build/win32/vs9/gobject.vcproj ../build/win32/vs10/gobject.vcxproj ../build/win32/vs10/gobject.vcxproj.filters
	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

../build/win32/vs9/gobject.vcproj: $(top_srcdir)/build/win32/vs9/gobject.vcprojin
	for F in $(libgobject_2_0_la_SOURCES); do \
		case $$F in \
		*.c) echo '   <File RelativePath="..\..\..\gobject\'$$F'" />' \
		     ;; \
		esac; \
	done >libgobject.sourcefiles
	$(CPP) -P - <$(top_srcdir)/build/win32/vs9/gobject.vcprojin >$@
	rm libgobject.sourcefiles

../build/win32/vs10/gobject.vcxproj: $(top_srcdir)/build/win32/vs10/gobject.vcxprojin
	for F in $(libgobject_2_0_la_SOURCES); do \
		case $$F in \
		*.c) echo '    <ClCompile Include="..\..\..\gobject\'$$F'" />' \
		     ;; \
		esac; \
	done >libgobject.vs10.sourcefiles
	$(CPP) -P - <$(top_srcdir)/build/win32/vs10/gobject.vcxprojin >$@
	rm libgobject.vs10.sourcefiles

../build/win32/vs10/gobject.vcxproj.filters: $(top_srcdir)/build/win32/vs10/gobject.vcxproj.filtersin
	for F in $(libgobject_2_0_la_SOURCES); do \
		case $$F in \
		*.c) echo '    <ClCompile Include="..\..\..\gobject\'$$F'"><Filter>Source Files</Filter></ClCompile>' \
		     ;; \
		esac; \
	done >libgobject.vs10.sourcefiles.filters
	$(CPP) -P - <$(top_srcdir)/build/win32/vs10/gobject.vcxproj.filtersin >$@
	rm libgobject.vs10.sourcefiles.filters

install-data-local: install-ms-lib install-def-file

uninstall-local: uninstall-ms-lib uninstall-def-file uninstall-gdb

distclean-local:
	if test $(srcdir) = .; then :; else \
	    rm -f $(BUILT_EXTRA_DIST); \
	    rm -f libgobject-gdb.py; \
	fi

# install gdb scripts
gdbdir = $(datadir)/glib-2.0/gdb
dist_gdb_SCRIPTS = gobject.py

libgobject-gdb.py: libgobject-gdb.py.in
	$(AM_V_GEN) $(SED) -e "s|\@datadir\@|$(datadir)|" $(srcdir)/libgobject-gdb.py.in > libgobject-gdb.py

uninstall-gdb:
	-rm -r $(DESTDIR)$(datadir)/gdb

install-data-hook: libgobject-gdb.py
	mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)
	$(INSTALL) libgobject-gdb.py $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION)-gdb.py
if HAVE_GLIB_RUNTIME_LIBDIR
	mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
	mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
	mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
	rm -f $(DESTDIR)$(libdir)/libgobject-2.0.so
	ln -s $(GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgobject-2.0.so
endif
