Added various win32 related *.in files to EXTRA_DIST to let 'make
[platform/upstream/glib.git] / makefile.cygwin.in
index 11435d0..b445286 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile for building the GLib, gmodule and gthread DLLs with
-## egcs on cygwin.
+## gcc on cygwin or mingw32.
 ## Use: make -f makefile.cygwin install
 
 # Change this to wherever you want to install the DLLs. This directory
@@ -21,8 +21,6 @@ OPTIMIZE = -g -O
 
 CC = gcc -mno-cygwin -mpentium -fnative-struct
 
-CP = cp
-LD = ld
 DLLTOOL = dlltool
 INSTALL = install
 
@@ -30,6 +28,9 @@ GLIB_VER = @GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@
 
 CFLAGS = $(OPTIMIZE) -I. -DHAVE_CONFIG_H
 
+# Kludge to get the path to the win32 headers
+WIN32APIHEADERS = $(shell echo "\#include <winver.h>" | $(CC) -M -E - | tail -1 | sed -e 's!/winver.h!!')
+
 all : \
        config.h        \
        glibconfig.h    \
@@ -74,22 +75,63 @@ glib_OBJECTS = \
        gstring.o       \
        gstrfuncs.o     \
        gscanner.o      \
-       gutils.o
-
-glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def
-       ./build-dll glib $(GLIB_VER) glib.def $(glib_OBJECTS) -luser32 -lwsock32
+       gutils.o        \
+       gwin32.o        \
+       glib-win32res.o
 
 glibconfig.h: glibconfig.h.win32
-       $(CP) glibconfig.h.win32 glibconfig.h
+       cp glibconfig.h.win32 glibconfig.h
 
 config.h: config.h.win32
-       $(CP) config.h.win32 config.h
+       cp config.h.win32 config.h
 
-.c.o :
-       $(CC) $(CFLAGS) -c -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib $<
+################ glib
+
+# The *.stamp files aren't distributed. Thus, this takes care of only
+# tml building libraries with nonzero build number.
+
+ifeq ($(wildcard glib-build.stamp),glib-build.stamp)
+# Bump the build number
+glib-build.tmp :
+       bash -c "read number && echo $$[number+1]" <glib-build.stamp >glib-build.tmp
+       cp glib-build.tmp glib-build.stamp
+else
+# Use zero as build number.
+glib-build.tmp :
+       echo 0 >glib-build.tmp
+endif
+
+glib-win32res.o : glib.rc glib-build.tmp
+       m4 -DBUILDNUMBER=`cat glib-build.tmp` <glib.rc >glib-win32res.rc
+       windres --include-dir $(WIN32APIHEADERS) glib-win32res.rc glib-win32res.o
+       rm glib-build.tmp glib-win32res.rc
+
+glib-$(GLIB_VER).dll : $(glib_OBJECTS) glib.def
+       ./build-dll glib $(GLIB_VER) glib.def $(glib_OBJECTS) -luser32 -lwsock32
+
+
+################ gmodule
 
 gmodule_OBJECTS = \
-       gmodule.o
+       gmodule.o       \
+       gmodule-win32res.o
+
+# Unfortunately I couldn't use a pattern rule for this, so copy-paste
+# from above.
+ifeq ($(wildcard glib-build.stamp),glib-build.stamp)
+gmodule-build.tmp :
+       bash -c "read number && echo $$[number+1]" <gmodule-build.stamp >gmodule-build.tmp
+       cp gmodule-build.tmp gmodule-build.stamp
+else
+gmodule-build.tmp :
+       echo 0 >gmodule-build.tmp
+endif
+
+gmodule-win32res.o : gmodule/gmodule.rc gmodule-build.tmp
+       m4 -DBUILDNUMBER=`cat gmodule-build.tmp` <gmodule/gmodule.rc >gmodule-win32res.rc
+       windres --include-dir $(WIN32APIHEADERS) gmodule-win32res.rc gmodule-win32res.o
+       rm gmodule-build.tmp gmodule-win32res.rc
+
 
 gmodule-$(GLIB_VER).dll : $(gmodule_OBJECTS) gmodule/gmodule.def
        ./build-dll gmodule $(GLIB_VER) gmodule/gmodule.def $(gmodule_OBJECTS) -L. -lglib-$(GLIB_VER) -lwsock32
@@ -98,10 +140,29 @@ gmodule.o : gmodule/gmodule.c gmodule/gmodule-win32.c
        $(CC) $(CFLAGS) -Igmodule -c -DG_LOG_DOMAIN=g_log_domain_gmodule gmodule/gmodule.c
 
 gmodule/gmoduleconf.h: gmodule/gmoduleconf.h.win32
-       $(CP) gmodule/gmoduleconf.h.win32 gmodule/gmoduleconf.h
+       cp gmodule/gmoduleconf.h.win32 gmodule/gmoduleconf.h
+
+################ gthread
 
 gthread_OBJECTS = \
-       gthread-impl.o
+       gthread-impl.o  \
+       gthread-win32res.o
+
+# Ditto copy-pasting
+ifeq ($(wildcard glib-build.stamp),glib-build.stamp)
+gthread-build.tmp :
+       bash -c "read number && echo $$[number+1]" <gthread-build.stamp >gthread-build.tmp
+       cp gthread-build.tmp gthread-build.stamp
+else
+gthread-build.tmp :
+       echo 0 >gthread-build.tmp
+endif
+
+gthread-win32res.o : gthread/gthread.rc gthread-build.tmp
+       m4 -DBUILDNUMBER=`cat gthread-build.tmp` <gthread/gthread.rc >gthread-win32res.rc
+       windres --include-dir $(WIN32APIHEADERS) gthread-win32res.rc gthread-win32res.o
+       rm gthread-build.tmp gthread-win32res.rc
+
 
 gthread-$(GLIB_VER).dll : $(gthread_OBJECTS) glib-$(GLIB_VER).dll gthread/gthread.def
        ./build-dll gthread $(GLIB_VER) gthread/gthread.def $(gthread_OBJECTS)  -L. -lglib-$(GLIB_VER) $(PTHREAD_LIB)
@@ -109,6 +170,8 @@ gthread-$(GLIB_VER).dll : $(gthread_OBJECTS) glib-$(GLIB_VER).dll gthread/gthrea
 gthread-impl.o : gthread/gthread-impl.c gthread/gthread-posix.c
        $(CC) $(CFLAGS) $(PTHREAD_INC) -DG_LOG_DOMAIN=\"GThread\" -c gthread/gthread-impl.c
 
+################ test progs
+
 testglib.exe : glib-$(GLIB_VER).dll testglib.o
        $(CC) $(CFLAGS) -o testglib testglib.o -L. -lglib-$(GLIB_VER) $(LDFLAGS)
 
@@ -152,6 +215,17 @@ libgplugin_b.dll : libgplugin_b.o
 libgplugin_b.o : gmodule/libgplugin_b.c
        $(CC) $(CFLAGS) -Igmodule -c gmodule/libgplugin_b.c
 
+################ other stuff
+
 clean:
        -rm config.h glibconfig.h gmodule/gmoduleconf.h
        -rm *.exe *.o *.dll *.a *.base *.exp
+
+.SUFFIXES: .c .o .i
+
+.c.o :
+       $(CC) $(CFLAGS) -c -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib $<
+
+.c.i :
+       $(CC) $(CFLAGS) -E -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib $< >$@
+