mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
d6f6134103
2000-03-26 Tor Lillqvist <tml@iki.fi> * README.win32: Tell about using the mingw-based gcc, which is much easier than modifying the cygwin gcc to product mingw code for the msvcrt runtime. * makefile.cygwin.in (WIN32APIHEADERS): Kludge to make it work with a "pure" mingw gcc, too.
234 lines
7.0 KiB
Plaintext
234 lines
7.0 KiB
Plaintext
## Makefile for building the GLib, gmodule and gthread DLLs with
|
|
## gcc on cygwin or mingw32.
|
|
## Use: make -f makefile.cygwin install
|
|
|
|
# Change this to wherever you want to install the DLLs. This directory
|
|
# should be in your PATH.
|
|
BIN = /bin
|
|
|
|
# This is the location of pthreads for Win32,
|
|
# see http://sourceware.cygnus.com/pthreads-win32/
|
|
# We want the 1999-05-30 snapshot.
|
|
PTHREADS = ../pthreads-snap-1999-05-30
|
|
PTHREAD_LIB = -L$(PTHREADS) -lpthread32
|
|
PTHREAD_INC = -I $(PTHREADS)
|
|
|
|
OPTIMIZE = -g -O
|
|
|
|
################################################################
|
|
|
|
# Nothing much configurable below
|
|
|
|
CC = gcc -mno-cygwin -mpentium -fnative-struct
|
|
|
|
DLLTOOL = dlltool
|
|
INSTALL = install
|
|
|
|
GLIB_VER = @GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@
|
|
|
|
CFLAGS = $(OPTIMIZE) -I. -DHAVE_CONFIG_H
|
|
|
|
# Kludge to get the path to the win32 headers. Should work for both
|
|
# gcc running on cygwin, and bare mingw gcc, even if the make is
|
|
# running on cygwin (whew).
|
|
WIN32APIHEADERS = $(shell echo "\#include <winver.h>" | $(CC) -M -E - | tail -1 | sed -e 's![\\/]winver.h!!' | tr -d '\015')
|
|
|
|
all : \
|
|
config.h \
|
|
glibconfig.h \
|
|
glib-$(GLIB_VER).dll \
|
|
gmodule/gmoduleconf.h \
|
|
gmodule-$(GLIB_VER).dll \
|
|
gthread-$(GLIB_VER).dll \
|
|
testglib.exe \
|
|
testgmodule.exe \
|
|
testgdate.exe \
|
|
testgdateparser.exe
|
|
|
|
install : all
|
|
$(INSTALL) glib-$(GLIB_VER).dll $(BIN)
|
|
$(INSTALL) gmodule-$(GLIB_VER).dll $(BIN)
|
|
$(INSTALL) gthread-$(GLIB_VER).dll $(BIN)
|
|
|
|
glib_OBJECTS = \
|
|
garray.o \
|
|
gcache.o \
|
|
gcompletion.o \
|
|
gdataset.o \
|
|
gdate.o \
|
|
gerror.o \
|
|
ghook.o \
|
|
ghash.o \
|
|
giochannel.o \
|
|
giowin32.o \
|
|
glist.o \
|
|
gmain.o \
|
|
gmem.o \
|
|
gmessages.o \
|
|
gnode.o \
|
|
gprimes.o \
|
|
gqueue.o \
|
|
grand.o \
|
|
gslist.o \
|
|
gthread.o \
|
|
gtimer.o \
|
|
gtree.o \
|
|
grel.o \
|
|
gstring.o \
|
|
gstrfuncs.o \
|
|
gscanner.o \
|
|
gutils.o \
|
|
gwin32.o \
|
|
glib-win32res.o
|
|
|
|
glibconfig.h: glibconfig.h.win32
|
|
cp glibconfig.h.win32 glibconfig.h
|
|
|
|
config.h: config.h.win32
|
|
cp config.h.win32 config.h
|
|
|
|
################ 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-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
|
|
|
|
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
|
|
|
|
################ gthread
|
|
|
|
gthread_OBJECTS = \
|
|
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)
|
|
|
|
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)
|
|
|
|
testglib.o : testglib.c
|
|
$(CC) -c $(CFLAGS) testglib.c
|
|
|
|
testgdate.exe : glib-$(GLIB_VER).dll testgdate.o
|
|
$(CC) $(CFLAGS) -o testgdate.exe testgdate.o -L. -lglib-$(GLIB_VER) $(LDFLAGS)
|
|
|
|
testgdate.o : testgdate.c
|
|
$(CC) -c $(CFLAGS) testgdate.c
|
|
|
|
testgdateparser.exe : glib-$(GLIB_VER).dll testgdateparser.o
|
|
$(CC) $(CFLAGS) -o testgdateparser.exe testgdateparser.o -L. -lglib-$(GLIB_VER) $(LDFLAGS)
|
|
|
|
testgdateparser.o : testgdateparser.c
|
|
$(CC) -c $(CFLAGS) testgdateparser.c
|
|
|
|
testgmodule.exe : glib-$(GLIB_VER).dll gmodule-$(GLIB_VER).dll testgmodule.o libgplugin_a.dll libgplugin_b.dll
|
|
# Wow, do we really have to do it like this to get some symbols
|
|
# exported from a .exe? Apparently yes. Does the __declspec(dllexport)
|
|
# actually do anything in egcs-1.1.2?
|
|
$(CC) $(CFLAGS) -Wl,--base-file,testgmodule.base -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) $(LDFLAGS)
|
|
$(DLLTOOL) --base-file testgmodule.base --output-exp testgmodule.exp testgmodule.o
|
|
$(CC) $(CFLAGS) -Wl,--base-file,testgmodule.base,testgmodule.exp -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) $(LDFLAGS)
|
|
$(DLLTOOL) --base-file testgmodule.base --output-exp testgmodule.exp testgmodule.o
|
|
$(CC) $(CFLAGS) -Wl,testgmodule.exp -o testgmodule.exe testgmodule.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER) $(LDFLAGS)
|
|
|
|
testgmodule.o : gmodule/testgmodule.c
|
|
$(CC) $(CFLAGS) -Igmodule -c gmodule/testgmodule.c
|
|
|
|
libgplugin_a.dll : libgplugin_a.o
|
|
./build-dll libgplugin_a - - libgplugin_a.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER)
|
|
|
|
libgplugin_a.o : gmodule/libgplugin_a.c
|
|
$(CC) $(CFLAGS) -Igmodule -c gmodule/libgplugin_a.c
|
|
|
|
libgplugin_b.dll : libgplugin_b.o
|
|
./build-dll libgplugin_b - - libgplugin_b.o -L. -lglib-$(GLIB_VER) -lgmodule-$(GLIB_VER)
|
|
|
|
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 $< >$@
|
|
|