Emeric Vigier | 2f62582 | 2012-08-06 11:09:52 -0400 | [diff] [blame] | 1 | # 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 | |
| 13 | HAVE = -I$(prefix)/include/libxml |
| 14 | VPATH = ../w32:../src:../demo:../tests |
| 15 | OPATH = ../w32 |
| 16 | ARCH = i586-mingw32msvc- |
| 17 | prefix = /usr/i586-mingw32msvc |
| 18 | |
| 19 | CXX = $(ARCH)c++ |
| 20 | AS = $(ARCH)as |
| 21 | DLLTOOL = $(ARCH)dlltool |
| 22 | DLLWRAP = $(ARCH)dllwrap |
| 23 | WINDRES = $(ARCH)windres |
| 24 | STRIP = $(ARCH)strip |
| 25 | exeext = .exe |
| 26 | dllext = .dll |
| 27 | |
| 28 | CPPFLAGS = -I. -I../include $(HAVE) -DHAVE_CONFIG_H -D_GNU_SOURCE |
| 29 | CXXFLAGS = -include ../w32/cc++/config.h -g -O2 -mthreads |
| 30 | LDFLAGS = -L$(prefix)/dll -lccgnu2 -lccext2 -lws2_32 |
| 31 | CCGNU2_LDFLAGS = -L$(prefix)/dll -lws2_32 |
| 32 | CCEXT2_LDFLAGS = -L. -L$(prefix)/dll -lccgnu2 -lxml2 -liberty -lws2_32 |
| 33 | #LDEXEC = -L$(OPATH) -lccgnu2 $(LDFLAGS) |
| 34 | |
| 35 | CCGNU2_DLL_NAME = ccgnu2.dll |
| 36 | CCEXT2_DLL_NAME = ccext2.dll |
| 37 | |
| 38 | CCGNU2_DLL_LIB = libccgnu2.a |
| 39 | CCEXT2_DLL_LIB = libccext2.a |
| 40 | |
| 41 | CCGNU2_DLL_DEF = ccgnu2.def |
| 42 | CCEXT2_DLL_DEF = ccext2.def |
| 43 | |
| 44 | PROGS = 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 | |
| 54 | TESTS = bug1.exe bug2.exe thread1.exe thread2.exe tcpstr1.exe url1.exe |
| 55 | |
| 56 | all: $(CCGNU2_DLL_NAME) $(CCEXT2_DLL_NAME) $(PROGS) $(SERIAL_PROG) $(TESTS) |
| 57 | |
| 58 | SHDRS = 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 | |
| 62 | HDRS = cc++/config.h $(addprefix ../include/cc++/, $(SHDRS)) |
| 63 | |
| 64 | CCGNU2_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 | |
| 70 | CCEXT2_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 | |
| 75 | CCGNU2_DLLWRAP_FLAGS = --export-all --output-def $(CCGNU2_DLL_DEF) \ |
| 76 | --implib $(CCGNU2_DLL_LIB) --driver-name $(CXX) |
| 77 | |
| 78 | CCEXT2_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 | |
| 98 | clean: |
| 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 | |
| 105 | install: |
| 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) |