aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile77
1 files changed, 77 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f98579a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,77 @@
1#
2# dlfcn-win32 Makefile
3#
4include config.mak
5
6ifeq ($(BUILD_SHARED),yes)
7 TARGETS+=libdl.dll
8 SHFLAGS+=-Wl,--out-implib,libdl.dll.a
9 INSTALL+=shared-install
10endif
11ifeq ($(BUILD_STATIC),yes)
12 TARGETS+=libdl.a
13 INSTALL+=static-install
14endif
15ifeq ($(BUILD_MSVC),yes)
16 SHFLAGS+=-Wl,--output-def,libdl.def
17 LIBCMD=lib
18 INSTALL+=lib-install
19else
20 LIBCMD=echo ignoring lib
21endif
22ifeq ($(DO_STRIP),yes)
23 STRIP=strip
24else
25 STRIP=echo ignoring strip
26endif
27
28all: $(TARGETS)
29
30dlfcn.o:
31 $(CC) -o dlfcn.o -c dlfcn.c -O3 -fomit-frame-pointer
32
33libdl.a: dlfcn.o
34 ar cru libdl.a dlfcn.o
35 ranlib libdl.a
36
37libdl.dll: dlfcn.o
38 $(CC) $(SHFLAGS) -shared -o libdl.dll dlfcn.o
39 $(LIBCMD) /machine:i386 /def:libdl.def
40
41shared-install:
42 mkdir -p $(DESTDIR)$(PREFIX)/bin
43 cp libdl.dll $(DESTDIR)$(PREFIX)/bin
44 $(STRIP) $(DESTDIR)$(PREFIX)/bin/libdl.dll
45 mkdir -p $(DESTDIR)$(PREFIX)/lib
46 cp libdl.dll.a $(DESTDIR)$(PREFIX)/lib
47 mkdir -p $(DESTDIR)$(PREFIX)/include
48 cp dlfcn.h $(DESTDIR)$(PREFIX)/include
49
50static-install:
51 mkdir -p $(DESTDIR)$(PREFIX)/lib
52 cp libdl.a $(DESTDIR)$(PREFIX)/lib
53 mkdir -p $(DESTDIR)$(PREFIX)/include
54 cp dlfcn.h $(DESTDIR)$(PREFIX)/include
55
56lib-install:
57 mkdir -p $(DESTDIR)$(PREFIX)/lib
58 cp libdl.lib $(DESTDIR)$(PREFIX)/lib
59
60install: $(INSTALL)
61
62test.exe:
63 $(CC) -o test.exe test.c -L. -ldl
64
65testdll.dll:
66 $(CC) -shared -o testdll.dll testdll.c
67
68test: $(TARGETS) test.exe testdll.dll
69 test.exe
70
71clean::
72 rm -f dlfcn.o libdl.dll libdl.a libdl.def libdl.dll.a libdl.lib libdl.exp test.exe testdll.dll
73
74distclean: clean
75 rm -f config.mak
76
77.PHONY: clean distclean install test