-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile.mingw-w64
More file actions
116 lines (104 loc) · 3.84 KB
/
Makefile.mingw-w64
File metadata and controls
116 lines (104 loc) · 3.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
EXESUF = exe
SOSUF = dll
ASUF = a
ASM_CFLAGS = $(CFLAGS) $(INCLUDE)
ifeq ($(WINDIR),)
ifeq ($(windir),)
WDIR=
else
WDIR=$(windir)
endif
else
WDIR=$(WINDIR)
endif
LIB_LDFLAGS = -L$(WDIR)/system32 $(LDFLAGS)
LIB_LIBS = -lkernel32 $(LIBS)
CC = gcc
AR = ar
SPEC_CFLAGS = $(ASM_CFLAGS) -I.
ifdef DEBUG
DEBUG_CFLAGS = $(SPEC_CFLAGS) -O0 -g
else
DEBUG_CFLAGS = $(SPEC_CFLAGS) -O3
endif
LOCAL_CFLAGS = $(DEBUG_CFLAGS) -fno-common -Wall -mms-bitfields -D_WIN32_WINNT=0x600
NTLINK_SHARED = libntlink.$(SOSUF)
NTLINK_STATIC = libntlink.$(ASUF)
NTLINK_IMPORT = libntlink.$(SOSUF).$(ASUF)
JUNC_NAME = junc.$(EXESUF)
TRANSLINK_NAME = translink.$(EXESUF)
NTLINK_FILES = juncpoint.c quasisymlink.c misc.c extra_string.c walk.c
NTLINK_HEADERS = quasisymlink.h juncpoint.h misc.h extra_string.h walk.h
JUNC_FILES = junc.c
TRANSLINK_FILES = translink.c
NTLINK_OBJECT_FILES = $(patsubst %.c,%.o,$(NTLINK_FILES))
JUNC_OBJECT_FILES = $(patsubst %.c,%.o,$(JUNC_FILES))
TRANSLINK_OBJECT_FILES = $(patsubst %.c,%.o,$(TRANSLINK_FILES))
CD=$(shell cd)
ifeq ($(OS),Windows_NT)
ifeq ($(MSYSTEM),MINGW32)
ENV = mingw-msys
else
ENV = mingw-cmd
endif
else
ENV = gnu
endif
all: $(NTLINK_SHARED) $(JUNC_NAME) $(TRANSLINK_NAME)
clean:
ifeq ($(ENV),mingw-cmd)
cmd /c "del *.o *.dll *.a *.exe"
else
rm *.o *.dll *.a *.exe
endif
%.o: %.c
$(CC) $(LOCAL_CFLAGS) -o $@ -c $<
$(NTLINK_IMPORT): $(NTLINK_SHARED)
$(NTLINK_SHARED): $(NTLINK_OBJECT_FILES) $(NTLINK_HEADERS)
ifeq ($(ENV),mingw-cmd)
$(CC) -shared $(NTLINK_OBJECT_FILES) $(LIB_LDFLAGS) -o $(NTLINK_SHARED) -Wl,--out-implib=$(CURDIR)\$(NTLINK_IMPORT) $(LIB_LIBS)
else
$(CC) -shared $(NTLINK_OBJECT_FILES) $(LIB_LDFLAGS) -o $(NTLINK_SHARED) -Wl,--out-implib=$(shell "pwd" "-W")/$(NTLINK_IMPORT) $(LIB_LIBS)
endif
$(NTLINK_STATIC): $(NTLINK_OBJECT_FILES) $(NTLINK_HEADERS)
$(AR) rcs $(NTLINK_STATIC) $(NTLINK_OBJECT_FILES)
$(JUNC_NAME): $(NTLINK_STATIC) $(JUNC_OBJECT_FILES)
ifeq ($(ENV),mingw-cmd)
$(CC) -o $(JUNC_NAME) $(JUNC_OBJECT_FILES) $(LIB_LDFLAGS) $(DIRECT_DLL_LDFLAGS) -L$(CURDIR) -lntlink
else
$(CC) -o $(JUNC_NAME) $(JUNC_OBJECT_FILES) $(LIB_LDFLAGS) $(DIRECT_DLL_LDFLAGS) -L$(shell "pwd" "-W") -lntlink
endif
$(TRANSLINK_NAME): $(NTLINK_STATIC) $(TRANSLINK_OBJECT_FILES)
ifeq ($(ENV),mingw-cmd)
$(CC) -municode -o $(TRANSLINK_NAME) $(TRANSLINK_OBJECT_FILES) $(LIB_LDFLAGS) $(DIRECT_DLL_LDFLAGS) -L$(CURDIR) -lntlink
else
$(CC) -municode -o $(TRANSLINK_NAME) $(TRANSLINK_OBJECT_FILES) $(LIB_LDFLAGS) $(DIRECT_DLL_LDFLAGS) -L$(shell "pwd" "-W") -lntlink
endif
install: $(NTLINK_SHARED) $(NTLINK_IMPORT) $(NTLINK_STATIC) $(JUNC_NAME) $(TRANSLINK_NAME)
ifndef DESTDIR
ifeq ($(ENV),mingw-cmd)
@echo Please use DESTDIR=drive:\installation\directory to specify installation path
else
@echo Please use DESTDIR=/installation/directory to specify installation path
endif
else
ifeq ($(ENV),mingw-cmd)
@echo Installing as $(DESTDIR)\bin\$(NTLINK_SHARED)
cmd /C if NOT EXIST $(DESTDIR)\bin mkdir $(DESTDIR)\bin
cmd /C if NOT EXIST $(DESTDIR)\lib mkdir $(DESTDIR)\lib
cmd /C if NOT EXIST $(DESTDIR)\include\libntlink mkdir $(DESTDIR)\include\libntlink
cmd /C copy /Y $(NTLINK_SHARED) $(DESTDIR)\bin\$(NTLINK_SHARED)
cmd /C copy /Y $(NTLINK_STATIC) $(DESTDIR)\lib\$(NTLINK_STATIC)
cmd /C copy /Y $(NTLINK_IMPORT) $(DESTDIR)\lib\$(NTLINK_IMPORT)
cmd /C for %i in ($(NTLINK_HEADERS)) do copy /Y %i $(DESTDIR)\include\libntlink
else
@echo Installing as $(DESTDIR)/bin/$(NTLINK_SHARED)
mkdir -p $(DESTDIR)/bin
mkdir -p $(DESTDIR)/lib
mkdir -p $(DESTDIR)/include/libntlink
install -D $(NTLINK_SHARED) $(DESTDIR)/bin/$(NTLINK_SHARED)
install -D $(NTLINK_STATIC) $(DESTDIR)/lib/$(NTLINK_STATIC)
install -D $(NTLINK_IMPORT) $(DESTDIR)/lib/$(NTLINK_IMPORT)
install -D $(NTLINK_HEADERS) $(DESTDIR)/include/libntlink
endif
endif