-
Notifications
You must be signed in to change notification settings - Fork 10
/
Makefile
173 lines (131 loc) · 4.63 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# should be run from the directory of grapic
GRAPIC_HOME = .
apps_linux = "${MAKECMDGOALS}"
ifeq ($(OS),Windows_NT)
OS = windows
PREMAKE5 = $(GRAPIC_HOME)/script/premake5.exe
else
UNAME_S = $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
OS = macosx
OSGMAKE = ${OS}-gmake
PREMAKE5 = $(GRAPIC_HOME)/script/premake5.macosx
Filename="${Filename##*/}"
apps_linux = $(shell ls build/${OSGMAKE}/*.make 2>/dev/null | cut -d '/' -f 3 | cut -d . -f 1 ) # ls build/macosx/*.make | cut -d '/' -f 3 | cut -d . -f 1 OR basename
else
OS = linux
OSGMAKE = ${OS}-gmake
PREMAKE5 = $(GRAPIC_HOME)/script/premake5.linux
apps_linux = $(shell ls build/${OSGMAKE}/*.make 2>/dev/null | cut -d '/' -f 3 | cut -d . -f 1 ) # basename --suffix=.make build/linux/*.make )
endif
endif
#$(info $(apps_linux))
#ifeq ($(wildcard build/*),) # if the premake was never runned, apps_linux contains "*" => remove it
ifeq ($(apps_linux),*) # if the premake was never runned, apps_linux contains "*" => remove it
apps_linux = ""
endif
# TO DEBUG apps_linux
#$(info (DEBUG) apps_linux=$(apps_linux))
all: build/${OSGMAKE} remove_quarantine
cd build/${OSGMAKE} ; make
dir:
mkdir -p bin
remove_quarantine:
ifeq ($(UNAME_S),Darwin)
xattr -rd com.apple.quarantine ./*
endif
clean: build/${OSGMAKE}
rm -rf bin/*.exe ; cd build/${OSGMAKE} ; make clean
doc-clean:
rm -rf doc/html doc/xml
premake-clean: doc-clean
rm -rf build ; rm -rf bin/* ; rm -rf obj ; chmod 755 script/premake*
build/${OSGMAKE}: premake5.lua premake
doc-gen: $(GRAPIC_HOME)/doc $(GRAPIC_HOME)/doc/images $(GRAPIC_HOME)/src FORCE
cd doc ; doxygen
dos2unix:
dos2unix -q script/*.sh doc/VERSION ; chmod 755 script/*.sh
version: FORCE
sh $(GRAPIC_HOME)/script/inc_version.sh
web: doc-gen web-force
web-force:
@echo "============================== WEB ================================="
@echo "Continue? [y/N]"
@( read -p "\n" sure && \
case "$$sure" in [yY]) \
rsync -ravuz --delete $(GRAPIC_HOME)/doc/ ameyer@connect.liris.cnrs.fr:/home-membres/ameyer/grapic/;; \
*) echo "stop";; \
esac )
premake-all: premake-wincb20 premake-linux premake-macosx premake-winvs2019
premake-exec:
chmod 755 script/premake*
premake-wincb20: remove_quarantine
@echo "premake CB20 OS=$(OS)"
cp extern/mingw-cb20/bin/*.dll bin
$(PREMAKE5) --os=windows codeblocks
$(PREMAKE5) --os=windows gmake
premake-winvs2019: remove_quarantine
@echo "premake vs2019 OS=$(OS)"
cp extern/visual2019/bin/*.dll bin
$(PREMAKE5) --os=windows vs2019
premake-linux: premake-exec remove_quarantine
@echo "premake linux OS=$(OS)"
$(PREMAKE5) --os=linux gmake
$(PREMAKE5) --os=linux codeblocks
premake-macosx: premake-exec
@echo "premake macosx OS=$(OS)"
$(PREMAKE5) --os=macosx gmake
$(PREMAKE5) --os=macosx xcode4
ifeq ($(OS),Windows_NT)
premake: remove_quarantine premake-cb20 dir
@echo "premake Win OS=$(OS)"
else ifeq ($(OS),linux)
premake: remove_quarantine premake-linux dir
@echo "premake linux OS=$(OS)"
else ifeq ($(OS),macosx)
premake: remove_quarantine premake-macosx dir
@echo "premake macosx OS=$(OS)"
else
@echo "ERROR: Your OS is not detected in the makefile"
endif
premake-beta: remove_quarantine
rm -rf build ; chmod 755 script/premake*
@echo "OS=$(OS)"
ifeq ($(OS),Windows_NT)
$(PREMAKE5) --target=beta --os=windows codeblocks
else ifeq ($(OS),linux)
$(PREMAKE5) --target=beta --os=linux gmake
$(PREMAKE5) --target=beta --os=linux codeblocks
else ifeq ($(OS),macosx)
$(PREMAKE5) --target=beta --os=macosx gmake
$(PREMAKE5) --target=beta --os=macosx xcode4
else
@echo "ERROR: Your OS is not detected in the makefile"
endif
lifami: remove_quarantine
rm -rf build ; chmod 755 script/premake*
@echo "OS=$(OS)"
ifeq ($(OS),Windows_NT)
$(PREMAKE5) --os=windows --file=premake5.lua --lifami codeblocks
else ifeq ($(OS),linux)
$(PREMAKE5) --os=linux --file=premake5.lua --lifami gmake
$(PREMAKE5) --os=linux --file=premake5.lua --lifami codeblocks
else ifeq ($(OS),macosx)
$(PREMAKE5) --os=macosx --file=premake5.lua --lifami gmake
$(PREMAKE5) --os=macosx --file=premake5.lua --lifami xcode4
endif
define \n
endef
run: all
@$(foreach dir,$(shell ls bin/*.exe),echo $(dir);)
$(foreach x,$(shell ls bin/*.exe),$(x)${\n})
list:
@echo "apps_linux=$(apps_linux)"
EMCC = emcc -std=c++1z -Wimplicit-const-int-float-conversion -Isrc --preload-file data/ttf -s USE_SDL=2 -s FULL_ES2=1 -s USE_SDL_TTF=2 -s USE_SDL_IMAGE=2 -s SDL2_IMAGE_FORMATS="['png']"
emcc:
echo "run: source /mnt/d/alex/CORRECTIONS/emsdk/emsdk_env.sh"
${EMCC} src/Grapic.cpp apps/start/main_start.cpp -o bin/Start.html
${apps_linux}: %: remove_quarantine
@echo "Build app:\n app_linux=${apps_linux}\n OS=$(OS)"
cd build/${OSGMAKE} ; make -f $@.make
FORCE: