| 1 |
# dll.mk - auxilary Makefile to easy build dll's for mingw32 target
|
| 2 |
# ver. 0.6 of 1999-03-25
|
| 3 |
#
|
| 4 |
# Homepage of this makefile - http://www.is.lg.ua/~paul/devel/
|
| 5 |
# Homepage of original mingw32 project -
|
| 6 |
# http://www.fu.is.saga-u.ac.jp/~colin/gcc.html
|
| 7 |
#
|
| 8 |
# How to use:
|
| 9 |
# This makefile can:
|
| 10 |
# 1. Create automatical .def file from list of objects
|
| 11 |
# 2. Create .dll from objects and .def file, either automatical, or your
|
| 12 |
# hand-written (maybe) file, which must have same basename as dll
|
| 13 |
# WARNING! There MUST be object, which name match dll's name. Make sux.
|
| 14 |
# 3. Create import library from .def (as for .dll, only its name required,
|
| 15 |
# not dll itself)
|
| 16 |
# By convention implibs for dll have .dll.a suffix, e.g. libstuff.dll.a
|
| 17 |
# Why not just libstuff.a? 'Cos that's name for static lib, ok?
|
| 18 |
# Process divided into 3 phases because:
|
| 19 |
# 1. Pre-existent .def possible
|
| 20 |
# 2. Generating implib is enough time-consuming
|
| 21 |
#
|
| 22 |
# Variables:
|
| 23 |
# DLL_LDLIBS - libs for linking dll
|
| 24 |
# DLL_LDFLAGS - flags for linking dll
|
| 25 |
#
|
| 26 |
# By using $(DLL_SUFFIX) instead of 'dll', e.g. stuff.$(DLL_SUFFIX)
|
| 27 |
# you may help porting makefiles to other platforms
|
| 28 |
#
|
| 29 |
# Put this file in your make's include path (e.g. main include dir, for
|
| 30 |
# more information see include section in make doc). Put in the beginning
|
| 31 |
# of your own Makefile line "include dll.mk". Specify dependences, e.g.:
|
| 32 |
#
|
| 33 |
# Do all stuff in one step
|
| 34 |
# libstuff.dll.a: $(OBJECTS) stuff.def
|
| 35 |
# stuff.def: $(OBJECTS)
|
| 36 |
#
|
| 37 |
# Steps separated, pre-provided .def, link with user32
|
| 38 |
#
|
| 39 |
# DLL_LDLIBS=-luser32
|
| 40 |
# stuff.dll: $(OBJECTS)
|
| 41 |
# libstuff.dll.a: $(OBJECTS)
|
| 42 |
|
| 43 |
|
| 44 |
DLLWRAP=dllwrap
|
| 45 |
DLLTOOL=dlltool
|
| 46 |
|
| 47 |
DLL_SUFFIX=dll
|
| 48 |
|
| 49 |
.SUFFIXES: .o .$(DLL_SUFFIX)
|
| 50 |
|
| 51 |
_%.def: %.o
|
| 52 |
$(DLLTOOL) --export-all --output-def $@ $^
|
| 53 |
|
| 54 |
%.$(DLL_SUFFIX): %.o
|
| 55 |
$(DLLWRAP) --dllname $(notdir $@) --driver-name $(CC) --def $*.def -o $@ $(filter %.o,$^) $(DLL_LDFLAGS) $(DLL_LDLIBS)
|
| 56 |
|
| 57 |
lib%.$(DLL_SUFFIX).a:%.def
|
| 58 |
$(DLLTOOL) --dllname $(notdir $*.dll) --def $< --output-lib $@
|
| 59 |
|
| 60 |
# End
|