-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
132 lines (124 loc) · 3.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
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
DEBUG=0
ifeq ($(OS),Windows_NT)
PLATFORM=windows
else
architecture=$(shell uname -m)
os=$(shell uname -s)
ifeq ($(os),Linux)
PLATFORM=linux
else ifeq ($(os),SunOS)
PLATFORM=sunos
else ifeq ($(os),FreeBSD)
PLATFORM=bsd
else ifeq ($(os),DragonFly)
PLATFORM=bsd
else ifeq ($(os),NetBSD)
PLATFORM=bsd
else ifeq ($(os),Darwin)
PLATFORM=macos
else ifeq ($(os),Haiku)
PLATFORM=haiku
endif
endif
ifeq ($(PLATFORM),emscripten)
CC=emcc
CXX=em++
endif
CXXFLAGS=-std=c++11 -Wall -O2
LDFLAGS=-O2
SOURCES=Application.cpp
ifeq ($(PLATFORM),windows)
LDFLAGS+=-u WinMain
SOURCES+=ApplicationWindows.cpp
else ifeq ($(PLATFORM),linux)
LDFLAGS+=-lX11
SOURCES+=ApplicationX11.cpp
else ifeq ($(PLATFORM),sunos)
LDFLAGS+=-lX11
SOURCES+=ApplicationX11.cpp
else ifeq ($(PLATFORM),bsd)
CXXFLAGS+=-I/usr/local/include
LDFLAGS+=-lX11 -L/usr/local/lib
SOURCES+=ApplicationX11.cpp
else ifeq ($(PLATFORM),macos)
LDFLAGS+=-framework Cocoa
SOURCES+=ApplicationMacOS.mm
else ifeq ($(PLATFORM),haiku)
LDFLAGS+=-lbe
SOURCES+=ApplicationHaiku.cpp
else ifeq ($(PLATFORM),ios)
CFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=8.0
CXXFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=8.0
LDFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=8.0 \
-framework CoreGraphics -framework Foundation -framework UIKit
SOURCES+=ApplicationIOS.mm
else ifeq ($(PLATFORM),tvos)
CFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk appletvos --show-sdk-path) -mtvos-version-min=9.0
CXXFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk appletvos --show-sdk-path) -mtvos-version-min=9.0
LDFLAGS+=-arch arm64 -isysroot $(shell xcrun --sdk appletvos --show-sdk-path) -mtvos-version-min=9.0 \
-framework CoreGraphics -framework Foundation -framework UIKit
SOURCES+=ApplicationTVOS.mm
else ifeq ($(PLATFORM),emscripten)
LDFLAGS+=--embed-file Resources -s TOTAL_MEMORY=134217728
endif
BASE_NAMES=$(basename $(SOURCES))
OBJECTS=$(BASE_NAMES:=.o)
DEPENDENCIES=$(OBJECTS:.o=.d)
ifeq ($(PLATFORM),emscripten)
EXECUTABLE=EmptyWindow.js
else
EXECUTABLE=EmptyWindow
endif
.PHONY: all
ifeq ($(DEBUG),1)
all: CXXFLAGS+=-DDEBUG -g
endif
all: bundle
.PHONY: bundle
bundle: $(EXECUTABLE)
ifeq ($(PLATFORM),macos)
bundle:
mkdir -p $(EXECUTABLE).app
mkdir -p $(EXECUTABLE).app/Contents
sed -e s/'$$(DEVELOPMENT_LANGUAGE)'/en/ \
-e s/'$$(EXECUTABLE_NAME)'/EmptyWindow/ \
-e s/'$$(PRODUCT_BUNDLE_IDENTIFIER)'/lv.elviss.softwarerenderer/ \
-e s/'$$(PRODUCT_NAME)'/EmptyWindow/ \
-e s/'$$(MACOSX_DEPLOYMENT_TARGET)'/10.8/ \
macos/Info.plist > $(EXECUTABLE).app/Contents/Info.plist
mkdir -p $(EXECUTABLE).app/Contents/MacOS
cp -f $(EXECUTABLE) $(EXECUTABLE).app/Contents/MacOS
mkdir -p $(EXECUTABLE).app/Contents/Resources
cp -f Resources/* $(EXECUTABLE).app/Contents/Resources/
else ifeq ($(PLATFORM),ios)
mkdir -p $(EXECUTABLE).app
sed -e s/'$$(EXECUTABLE_NAME)'/EmptyWindow/ \
-e s/'$$(PRODUCT_BUNDLE_IDENTIFIER)'/lv.elviss.softwarerenderer/ \
-e s/'$$(PRODUCT_NAME)'/EmptyWindow/ \
ios/Info.plist > $(EXECUTABLE).app/Info.plist
cp -f $(EXECUTABLE) $(EXECUTABLE).app
cp -f Resources/* $(EXECUTABLE).app
else ifeq ($(PLATFORM),tvos)
mkdir -p $(EXECUTABLE).app
sed -e s/'$$(EXECUTABLE_NAME)'/EmptyWindow/ \
-e s/'$$(PRODUCT_BUNDLE_IDENTIFIER)'/lv.elviss.softwarerenderer/ \
-e s/'$$(PRODUCT_NAME)'/EmptyWindow/ \
tvos/Info.plist > $(EXECUTABLE).app/Info.plist
cp -f $(EXECUTABLE) $(EXECUTABLE).app
cp -f Resources/* $(EXECUTABLE).app
endif
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $@
-include $(DEPENDENCIES)
%.o: %.cpp
$(CXX) -c $(CXXFLAGS) -MMD -MP $< -o $@
%.o: %.mm
$(CXX) -c -fno-objc-arc $(CXXFLAGS) -MMD -MP $< -o $@
.PHONY: clean
clean:
ifeq ($(PLATFORM),windows)
-del /f /q "$(EXECUTABLE).exe" "*.o" "*.d" "*.js.mem" "*.js" "*.hpp.gch"
else
$(RM) $(EXECUTABLE) *.o *.d *.js.mem *.js *.hpp.gch $(EXECUTABLE).exe assetcatalog_generated_info.plist assetcatalog_dependencies
$(RM) -r $(EXECUTABLE).app
endif