2004-09-06 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / metadata / Makefile.am
index a6a16293ce63d9b6888026a645d6d49e8589affa..9f2044f78e2471f7802496db025c84abbd56b233 100644 (file)
@@ -8,6 +8,7 @@ confdir = `cygpath -m "${sysconfdir}"`
 # The mingw math.h has "extern inline" functions that dont appear in libs, so
 # optimisation is required to actually inline them
 AM_CFLAGS = -O
+PLATFORM_LIB = ../os/libmonoos.la
 else
 assembliesdir = $(libdir)
 confdir = $(sysconfdir)
@@ -15,7 +16,11 @@ endif
 
 bin_PROGRAMS = pedump
 
-noinst_LTLIBRARIES = libmetadata.la libmonoruntime.la
+#
+# libtool is not capable of creating static/shared versions of the same
+# convenience lib, so we have to do it ourselves
+#
+noinst_LTLIBRARIES = libmetadata.la libmonoruntime.la libmetadata-static.la libmonoruntime-static.la
 
 
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CFLAGS) $(GLIB_CFLAGS) $(GMODULE_CFLAGS) $(ICU_CFLAGS) \
@@ -23,17 +28,26 @@ INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CFLAGS) $(GLIB_CFLAGS) $
 
 if WITH_BUNDLE
 bundle_srcs = mono-bundle.s mono-bundle.h
-mono-bundle.s mono-bundle.h: $(BUNDLE_FILE) $(srcdir)/make-bundle.pl
+bundle_obj = mono-bundle.o
+#BUILT_SOURCES = $(bundle_srcs)
+
+$(bundle_obj): $(bundle_srcs)
+$(bundle_srcs): mono-bundle.stamp
+       @if test -f $@; then :; else rm -f mono-bundle.stamp; $(MAKE) mono-bundle.stamp; fi
+mono-bundle.stamp: $(BUNDLE_FILE) $(srcdir)/make-bundle.pl
+       echo stamp > $@t
        perl $(srcdir)/make-bundle.pl $(BUNDLE_FILE) mono-bundle.h mono-bundle.s
-else
-bundle_srcs =
-endif
+       mv $@t $@
 
-if PLATFORM_WIN32
-libmonoruntime_la_LIBADD = ../os/libmonoos.la
-libmetadata_la_LIBADD = ../os/libmonoos.la
 endif
 
+CLEANFILES = mono-bundle.stamp
+
+libmetadata_la_LIBADD = $(bundle_obj) $(PLATFORM_LIB)
+
+libmonoruntime_static_la_LIBADD = $(libmonoruntime_la_LIBADD)
+libmetadata_static_la_LIBADD = $(libmetadata_la_LIBADD)
+
 libmonoruntime_la_SOURCES = \
        reflection.c    \
        object.c        \
@@ -108,10 +122,16 @@ libmetadata_la_SOURCES = \
        rawbuffer.h     \
        loader.c        \
        class.c         \
+       class-internals.h               \
        mempool.c       \
-       $(bundle_srcs)  \
        debug-helpers.c
 
+libmetadata_static_la_SOURCES = $(libmetadata_la_SOURCES)
+libmonoruntime_static_la_SOURCES = $(libmonoruntime_la_SOURCES)
+
+libmetadata_static_la_LDFLAGS = -static
+libmonoruntime_static_la_LDFLAGS = -static
+
 libmetadataincludedir = $(includedir)/mono/metadata
 libmonoruntimeincludedir = $(includedir)/mono/metadata
 
@@ -148,7 +168,5 @@ pedump_SOURCES =            \
 pedump_LDADD = libmetadata.la ../io-layer/libwapi.la ../utils/libmonoutils.la \
        $(LIBGC_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) -lm
 
-BUILT_SOURCES = $(bundle_srcs) libmetadata.la
-
 EXTRA_DIST = make-bundle.pl sample-bundle