blob: 2004fe0c9bbb7fa8d3024104e93d0e0cf1d0f0f3 [file] [log] [blame]
Emeric Vigier2f625822012-08-06 11:09:52 -04001# Copyright (C) 2002 Open Source Telecom Corporation.
2#
3# This file is free software; as a special exception the author gives
4# unlimited permission to copy and/or distribute it, with or without
5# modifications, as long as this notice is preserved.
6#
7# This program is distributed in the hope that it will be useful, but
8# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
9# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
11# A makefile to do a mingw32 cross compile build of dll's.
12
13HAVE = -I$(prefix)/include/libxml
14VPATH = ../w32:../src:../demo:../tests
15OPATH = ../w32
16ARCH = i586-mingw32msvc-
17prefix = /usr/i586-mingw32msvc
18
19CXX = $(ARCH)c++
20AS = $(ARCH)as
21DLLTOOL = $(ARCH)dlltool
22DLLWRAP = $(ARCH)dllwrap
23WINDRES = $(ARCH)windres
24STRIP = $(ARCH)strip
25exeext = .exe
26dllext = .dll
27
28CPPFLAGS = -I. -I../include $(HAVE) -DHAVE_CONFIG_H -D_GNU_SOURCE
29CXXFLAGS = -include ../w32/cc++/config.h -g -O2 -mthreads
30LDFLAGS = -L$(prefix)/dll -lccgnu2 -lccext2 -lws2_32
31CCGNU2_LDFLAGS = -L$(prefix)/dll -lws2_32
32CCEXT2_LDFLAGS = -L. -L$(prefix)/dll -lccgnu2 -lxml2 -liberty -lws2_32
33#LDEXEC = -L$(OPATH) -lccgnu2 $(LDFLAGS)
34
35CCGNU2_DLL_NAME = ccgnu2.dll
36CCEXT2_DLL_NAME = ccext2.dll
37
38CCGNU2_DLL_LIB = libccgnu2.a
39CCEXT2_DLL_LIB = libccext2.a
40
41CCGNU2_DLL_DEF = ccgnu2.def
42CCEXT2_DLL_DEF = ccext2.def
43
44PROGS = hello.exe test.exe tcp.exe tcpthread.exe tcpservice.exe \
45 urlfetch.exe xmlfetch.exe SampleSocketPort.exe crc32.exe shadigest.exe
46# pio.exe requires some iostream related headers missing in MinGW
47# cmdlineopt will not compile on non-posix systems!
48
49#SERIAL_PROG: serial.exe
50#serial.exe: serialmain.o serialecho.o
51# $(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -L. -lccgnu2 $(LDFLAGS) -o $@
52# serial uses "/dev/modem"
53
54TESTS = bug1.exe bug2.exe thread1.exe thread2.exe tcpstr1.exe url1.exe
55
56all: $(CCGNU2_DLL_NAME) $(CCEXT2_DLL_NAME) $(PROGS) $(SERIAL_PROG) $(TESTS)
57
58SHDRS = thread.h socket.h exception.h cmdoptns.h digest.h export.h file.h \
59 groups.h misc.h numbers.h persist.h slog.h url.h urlstring.h xml.h \
60 serial.h strchar.h
61
62HDRS = cc++/config.h $(addprefix ../include/cc++/, $(SHDRS))
63
64CCGNU2_OBJS = thread.o mutex.o semaphore.o threadkey.o \
65 friends.o event.o slog.o dir.o file.o inaddr.o \
66 peer.o port.o socket.o simplesocket.o network.o \
67 serial.o mempager.o keydata.o dso.o exception.o \
68 process.o urlstring.o
69
70CCEXT2_OBJS = buffer.o fifo.o pipe.o numbers.o \
71 cmdoptns.o url.o xml.o persist.o engine.o digest.o sha.o \
72 date.o groups.o md5.o unix.o ftp.o
73# pios.o pio_globals.o
74
75CCGNU2_DLLWRAP_FLAGS = --export-all --output-def $(CCGNU2_DLL_DEF) \
76 --implib $(CCGNU2_DLL_LIB) --driver-name $(CXX)
77
78CCEXT2_DLLWRAP_FLAGS = --export-all --output-def $(CCEXT2_DLL_DEF) \
79 --implib $(CCEXT2_DLL_LIB) --driver-name $(CXX)
80
81$(CCGNU2_DLL_NAME) $(CCGNU2_DLL_DEF) $(CCGNU2_DLL_LIB): $(addprefix $(OPATH)/, $(CCGNU2_OBJS))
82 $(DLLWRAP) $(CCGNU2_DLLWRAP_FLAGS) -o $(CCGNU2_DLL_NAME) \
83 $(CCGNU2_OBJS) libgnu2.o $(CCGNU2_LDFLAGS)
84
85$(CCEXT2_DLL_NAME) $(CCEXT2_DLL_DEF) $(CCEXT2_DLL_LIB): $(addprefix $(OPATH)/, $(CCEXT2_OBJS)) libgnu2.o
86 $(DLLWRAP) $(CCEXT2_DLLWRAP_FLAGS) -o $(CCEXT2_DLL_NAME) \
87 $(CCEXT2_OBJS) libgnu2.o $(CCEXT2_LDFLAGS)
88
89#libgnu2.o: ccgnu2.rc
90# $(WINDRES) -o libgnu2.o ccgnu2.rc
91
92$(OPATH)/%.o: %.cpp
93 $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $(OPATH)/$(basename $@).o $<
94
95%.exe: %.cpp
96 $(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -L. -lccgnu2 $(LDFLAGS) -o $@
97
98clean:
99 -rm -f $(CCGNU2_OBJS) $(CCEXT2_OBJS) \
100 $(CCGNU2_DLL_NAME) $(CCEXT2_DLL_NAME) \
101 $(CCGNU2_DLL_LIB) $(CCEXT2_DLL_LIB) \
102 $(CCGNU2_DLL_DEF) $(CCEXT2_DLL_DEF) \
103 $(PROGS)
104
105install:
106 -mkdir $(prefix)/include/cc++
107 -mkdir $(prefix)/dll
108 cp -af $(HDRS) $(prefix)/include/cc++
109 cp -af $(CCGNU2_DLL_LIB) $(CCGNU2_DLL_NAME) $(CCEXT2_DLL_LIB) $(CCEXT2_DLL_NAME) $(prefix)/dll
110 cp -af $(CCGNU2_DLL_LIB) $(prefix)/lib/libccgnu2dll.a
111 cp -af $(CCEXT2_DLL_LIB) $(prefix)/lib/libccext2dll.a
112 $(STRIP) $(prefix)/dll/$(CCGNU2_DLL_NAME) $(prefix)/dll/$(CCEXT2_DLL_NAME)
113 ar -rs $(prefix)/lib/$(CCGNU2_DLL_LIB) $(CCGNU2_OBJS)
114 ar -rs $(prefix)/lib/$(CCEXT2_DLL_LIB) $(CCEXT2_OBJS)