-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathMakefile
79 lines (61 loc) · 1.97 KB
/
Makefile
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
BINDIR = bin
OBJDIR = obj
TARGETNAME = git-svn-auth-manager
TARGET = $(BINDIR)/$(TARGETNAME)
# Creates a bundled binary and links SQLCipher statically into it
#
# See http://github.com/mrts/mono-static-linking for explanations
# and Mac build instructions.
# C# application
CSHARPC = dmcs
CSHARPEXECUTABLE = $(OBJDIR)/GitSvnAuthManager.exe
CSHARPREFERENCES = /r:System.dll /r:System.Data.dll /r:System.Configuration.dll
CSHARPFLAGS = /nologo /warn:4 /optimize+ /codepage:utf8 /t:exe \
/define:WITH_STATICALLY_LINKED_SQLCIPHER_SQLITE
CHARPSRC = $(wildcard src/*.cs)
# mkbundle
CC = cc
CFLAGS = -Wall -s -O2 -Wl,-O1
GENERATEDSRC = $(OBJDIR)/hello-gen.c
BUNDLEOBJS = $(OBJDIR)/hello-bundles.o
# SQLCipher C library
SQLCIPHERDIR = sqlcipher
SQLCIPHERLIB = $(SQLCIPHERDIR)/.libs/libsqlite3.a
SQLCIPHERCONFIGFLAGS = --enable-tempstore=yes \
CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_ENABLE_COLUMN_METADATA" \
LDFLAGS="-lcrypto"
# targets
all: $(TARGET)
$(TARGET): $(GENERATEDSRC) $(SQLCIPHERLIB) | $(BINDIR)
$(CC) -o $(TARGET) $(CFLAGS) $(GENERATEDSRC) \
-rdynamic \
-Wl,-whole-archive \
$(SQLCIPHERLIB) \
-Wl,-no-whole-archive \
$(BUNDLEOBJS) \
`pkg-config --cflags --libs mono-2` \
`pkg-config --libs openssl`
$(GENERATEDSRC): $(CSHARPEXECUTABLE)
mkbundle -c -o $(GENERATEDSRC) -oo $(BUNDLEOBJS) $(CSHARPEXECUTABLE)
$(SQLCIPHERLIB): $(SQLCIPHERDIR)/Makefile
cd $(SQLCIPHERDIR); \
make -j 4
$(SQLCIPHERDIR)/Makefile: $(SQLCIPHERDIR)/configure
cd $(SQLCIPHERDIR); \
./configure $(SQLCIPHERCONFIGFLAGS)
$(CSHARPEXECUTABLE): $(CHARPSRC) | $(OBJDIR)
$(CSHARPC) "/out:$(CSHARPEXECUTABLE)" \
$(CSHARPREFERENCES) $(CSHARPFLAGS) $(CHARPSRC)
install: $(TARGET)
install -m 711 -D $(TARGET) ~/bin/$(TARGETNAME)
install_config: install
install -m 600 -D config-just-enough ~/.config/$(TARGETNAME)/config
$(OBJDIR):
mkdir -p $(OBJDIR)
$(BINDIR):
mkdir -p $(BINDIR)
clean:
rm -rf $(OBJDIR) $(BINDIR)
mrproper: clean
rm -f ~/.config/$(TARGETNAME)/userinfo.db
cd $(SQLCIPHERDIR); git clean -fdx