-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathJamrules.include
More file actions
178 lines (153 loc) · 4.37 KB
/
Copy pathJamrules.include
File metadata and controls
178 lines (153 loc) · 4.37 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
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
173
174
175
176
177
#-------- Path Settings ---------
if $(OS) = NT {
SEP = \\ ;
} else {
SEP = / ;
}
HDRS = . kit ;
#------------------------
#Rules to support building objects into 'objs/' directory and executables into 'dist/' directory.
rule MySubDir $(1) {
SubDir $(1) ;
if $(LOCATE_TARGET) = . {
LOCATE_TARGET = objs ;
} else {
LOCATE_TARGET = objs$(SEP)$(SUBDIR) ;
}
}
rule MyObjects {
for FILE in $(1:S=$(SUFOBJ)) {
Depends $(FILE:D=$(LOCATE_TARGET):S=$(SUFOBJ)) : $(FILE:G=$(SOURCE_GRIST)) ;
}
Objects $(1) ;
}
rule MyMainFromObjects $(1) : $(2) {
local LOCATE_TARGET = dist ;
MainFromObjects $(1) : $(2) ;
}
#-------- Per-OS Compiler Settings ----------
if $(OS) = NT {
C++FLAGS = /nologo /std:c++17 /c /EHsc /W3 /WX /MD /I"kit-libs-win/out/include" /I"kit-libs-win/out/include/SDL2" /I"kit-libs-win/out/libpng"
#disable a few warnings:
/wd4146 #-1U is still unsigned
/wd4297 #unforunately SDLmain is nothrow
/wd4267 #I like converting size_t to int32_t too darn much
/wd4244 #Also __int64 to uint32_t
#for modern glm:
/DGLM_ENABLE_EXPERIMENTAL
#math defines from cmath, not from SDL:
/D_USE_MATH_DEFINES /DHAVE_M_PI
/DWIN32_LEAN_AND_MEAN
;
if $(KIT_RAW_SDL_EVENTS) {
C++FLAGS += /DKIT_RAW_SDL_EVENTS ;
}
LINKFLAGS = /nologo /SUBSYSTEM:CONSOLE
/LIBPATH:"kit-libs-win/out/lib"
/LIBPATH:"kit-libs-win/out/libpng"
/LIBPATH:"kit-libs-win/out/zlib"
;
LINKLIBS = SDL2main.lib SDL2.lib OpenGL32.lib libpng.lib zlib.lib ;
if $(KIT_USE_JPEG) {
C++FLAGS += /I"kit-libs-win/out/libjpeg" ;
LINKFLAGS += /LIBPATH:"kit-libs-win/out/libjpeg" ;
LINKLIBS += jpeg-static.lib ;
}
File dist$(SEP)SDL2.dll : kit-libs-win$(SEP)out$(SEP)dist$(SEP)SDL2.dll ;
File dist$(SEP)README-SDL.txt : kit-libs-win$(SEP)out$(SEP)dist$(SEP)README-SDL.txt ;
#Below is from http://maillist.perforce.com/pipermail/jamming/2000-October/001065.html
# Resource : builds a resource file
#
rule Resource
{
SEARCH on $(>) = $(SEARCH_SOURCE) ;
MakeLocate $(<) : $(LOCATE_TARGET) ;
DEPENDS $(<) : $(>) ;
Clean clean : $(<) ;
RCFLAGS on $(<) = $(RCFLAGS) /d$(RCDEFINES) ;
}
actions Resource
{
RC $(RCFLAGS) /Fo$(<) $(>)
}
#
# LinkResource : Links the resource file into an executable
#
rule LinkResource
{
local t r ;
if $(<:S)
{
t = $(<) ;
} else {
t = $(<:S=$(SUFEXE)) ;
}
r = $(>:S=.res) ;
DEPENDS $(t) : $(r) ;
NEEDLIBS on $(t) += $(r) ;
}
#end resource stuff
#- - - - - - - - - - - - - - - -
} else if $(OS) = MACOSX {
KIT_LIBS = ../nest-libs/macos ;
CC = clang ;
C++ = clang++ ;
C++FLAGS =
-std=c++17 -g -Wall -Werror
-I$(KIT_LIBS)/libpng/include #libpng
-DGLM_ENABLE_EXPERIMENTAL
-I$(KIT_LIBS)/glm/include #glm
`PATH=$(KIT_LIBS)/SDL2/bin:$PATH sdl2-config --cflags` #SDL2
;
if $(KIT_RAW_SDL_EVENTS) {
C++FLAGS += -DKIT_RAW_SDL_EVENTS ;
}
LINK = clang++ ;
LINKFLAGS = -std=c++17 -g -Wall -Werror ;
LINKLIBS =
-L$(KIT_LIBS)/libpng/lib -lpng #libpng
-L$(KIT_LIBS)/zlib/lib -lz #zlib
`PATH=$(KIT_LIBS)/SDL2/bin:$PATH sdl2-config --static-libs` -framework OpenGL #SDL2
;
#Apparently no longer needed: (though mm gets compiled by Cc not C++)
##based on https://swarm.workshop.perforce.com/view/guest/perforce_software/jam/src/Jamfile.html
#rule UserObject {
# switch $(>) {
# case *.mm : ObjC++ $(<) : $(>) ;
# case * : ECHO "unknown suffix on " $(>) ;
# }
#}
#rule ObjC++ {
# DEPENDS $(<) : $(>) ;
# Clean clean : $(<) ;
#}
#actions ObjC++ {
# $(C++) $(C++FLAGS) -c -o$(<) $(>)
#}
#- - - - - - - - - - - - - - - -
} else if $(OS) = LINUX {
KIT_LIBS = kit-libs-linux ;
CC = gcc ;
C++ = g++ ;
C++FLAGS =
-std=c++17 -g -Wall -Werror
-Wno-dangling-reference
-I$(KIT_LIBS)/libpng/include #libpng
-DGLM_ENABLE_EXPERIMENTAL
-I$(KIT_LIBS)/glm/include #glm
`PATH=$(KIT_LIBS)/SDL2/bin:$PATH sdl2-config --cflags` #SDL2
;
if $(KIT_RAW_SDL_EVENTS) {
C++FLAGS += -DKIT_RAW_SDL_EVENTS ;
}
LINK = g++ ;
LINKFLAGS = -std=c++17 -g -Wall -Werror ;
LINKLIBS =
-L$(KIT_LIBS)/libpng/lib -lpng #libpng
-L$(KIT_LIBS)/zlib/lib -lz #zlib
`PATH=$(KIT_LIBS)/SDL2/bin:$PATH sdl2-config --static-libs` -lGL #SDL2
;
if $(KIT_USE_JPEG) {
LINKLIBS += -ljpeg ;
}
}