This repository has been archived by the owner on Sep 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
98 lines (88 loc) · 3.33 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
VERSION = 1.0.0
ROOT_DIR = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
ifeq ($(OS),Windows_NT)
STATICLIB = .lib
DYNLIB = .dll
GOROOT ?= C:/Go
GOCC ?= $(GOROOT)bin\go
SEP = \\
RM = del /Q /F /S
RRM = rmdir /S /Q
MV = rename
CMDSEP = &
ROOT_DIR_CLEAN = $(subst /,\,$(ROOT_DIR))
LIB_PREFIX =
else
STATICLIB = .a
DYNLIB = .so
GOROOT ?= /usr/local/go
GOCC ?= $(GOROOT)/bin/go
SEP = /
RM = rm -f
RRM = rm -f -r
MV = mv -f
ROOT_DIR_CLEAN = $(ROOT_DIR)
LIB_PREFIX = lib
endif
SDKGOPATH = go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)kuzzleio$(PATHSEP)sdk-go
CGOPATH = cgo$(PATHSEP)kuzzle
PATHSEP = $(strip $(SEP))
ROOTOUTDIR = $(ROOT_DIR)build
GOFLAGS ?= -buildmode=c-archive
GOFLAGSSHARED = -buildmode=c-shared
GOSRC = .$(PATHSEP)cgo$(PATHSEP)kuzzle$(PATHSEP)
GOTARGET = $(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk$(STATICLIB)
GOTARGETSO = $(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk$(DYNLIB)
all: c
core:
ifneq ($(OS),Windows_NT)
ifeq ($(wildcard $(GOCC)),)
$(error "Unable to find go compiler")
endif
endif
cd $(SDKGOPATH) && go get .$(PATHSEP)...
$(GOCC) build -o $(GOTARGET) $(GOFLAGS) $(GOSRC)
$(GOCC) build -o $(GOTARGETSO) $(GOFLAGSSHARED) $(GOSRC)
ifeq ($(OS),Windows_NT)
$(MV) $(subst /,\,$(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk.h) kuzzle.h
else
$(MV) $(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk.h $(ROOTOUTDIR)$(PATHSEP)kuzzle.h
endif
makedir:
ifeq ($(OS),Windows_NT)
@if not exist $(subst /,\,$(ROOTOUTDIR)) mkdir $(subst /,\,$(ROOTOUTDIR))
else
mkdir -p $(ROOTOUTDIR)
endif
c: export GOPATH = $(ROOT_DIR)go
c: makedir core
cd $(ROOTOUTDIR) && mv $(GOTARGET) $(GOTARGET).$(VERSION) && mv $(GOTARGETSO) $(GOTARGETSO).$(VERSION)
cd $(ROOTOUTDIR) && ln -sr $(LIB_PREFIX)kuzzlesdk$(STATICLIB).$(VERSION) $(LIB_PREFIX)kuzzlesdk$(STATICLIB)
cd $(ROOTOUTDIR) && ln -sr $(LIB_PREFIX)kuzzlesdk$(DYNLIB).$(VERSION) $(LIB_PREFIX)kuzzlesdk$(DYNLIB)
package: $(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk$(STATICLIB).$(VERSION) $(ROOTOUTDIR)$(PATHSEP)$(LIB_PREFIX)kuzzlesdk$(DYNLIB).$(VERSION)
mkdir $(ROOTOUTDIR)$(PATHSEP)lib
mkdir $(ROOTOUTDIR)$(PATHSEP)include
cp -fr $(ROOT_DIR)$(PATHSEP)include$(PATHSEP)*.h $(ROOTOUTDIR)$(PATHSEP)include
cp $(ROOTOUTDIR)$(PATHSEP)*.so $(ROOTOUTDIR)$(PATHSEP)lib
cp $(ROOTOUTDIR)$(PATHSEP)*.a $(ROOTOUTDIR)$(PATHSEP)lib
mkdir deploy && cd $(ROOTOUTDIR) && tar cfz ..$(PATHSEP)deploy$(PATHSEP)kuzzlesdk-c-$(ARCH)-$(VERSION).tar.gz lib include
clean:
ifeq ($(OS),Windows_NT)
if exist build $(RRM) build
$(RRM) $(ROOT_DIR)$(PATHSEP)deploy
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)pkg
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)bin
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)gorilla
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)satori
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)stretchr
else
$(RRM) build
$(RRM) $(ROOT_DIR)$(PATHSEP)deploy
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)pkg
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)bin
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)gorilla
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)satori
$(RRM) $(ROOT_DIR)$(PATHSEP)go$(PATHSEP)src$(PATHSEP)github.com$(PATHSEP)stretchr
endif
.PHONY: all c core clean
.DEFAULT_GOAL := all