forked from 15-466/15-466-f20-base2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jamfile
123 lines (109 loc) · 3.64 KB
/
Jamfile
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
#---- setup ----
#This portion of the Jamfile sets up compiler and linker flags per-OS.
#You shouldn't need to change it.
if $(OS) = NT { #Windows
NEST_LIBS = ..\\nest-libs\\windows ;
C++FLAGS = /nologo /Z7 /c /EHsc /W3 /WX /MD
/I"$(NEST_LIBS)/SDL2/include"
/I"$(NEST_LIBS)/glm/include"
/I"$(NEST_LIBS)/libpng/include"
#disable a few warnings:
/wd4146 #-1U is still unsigned
/wd4297 #unforunately SDLmain is nothrow
;
LINKFLAGS = /nologo /SUBSYSTEM:CONSOLE /DEBUG:FASTLINK
/LIBPATH:"$(NEST_LIBS)/SDL2/lib"
/LIBPATH:"$(NEST_LIBS)/libpng/lib"
/LIBPATH:"$(NEST_LIBS)/zlib/lib"
;
LINKLIBS =
SDL2main.lib SDL2.lib OpenGL32.lib
libpng.lib zlib.lib
;
File SDL2.dll : $(NEST_LIBS)\\SDL2\\dist\\SDL2.dll ;
File README-SDL.txt : $(NEST_LIBS)\\SDL2\\dist\\README-SDL.txt ;
MakeLocate SDL2.dll : dist ;
MakeLocate README-SDL.txt : dist ;
} else if $(OS) = MACOSX { #MacOS
NEST_LIBS = ../nest-libs/macos ;
C++ = clang++ ;
C++FLAGS =
-std=c++17 -g -Wall -Werror
`'$(NEST_LIBS)/SDL2/bin/sdl2-config' --prefix='$(NEST_LIBS)/SDL2' --cflags` #SDL2
-I$(NEST_LIBS)/glm/include #glm
-I$(NEST_LIBS)/libpng/include
;
LINK = clang++ ;
LINKFLAGS = -std=c++17 -g -Wall -Werror ;
LINKLIBS =
`'$(NEST_LIBS)/SDL2/bin/sdl2-config' --prefix='$(NEST_LIBS)/SDL2' --static-libs` -framework OpenGL #SDL2
-L$(NEST_LIBS)/libpng/lib -lpng #libpng
-L$(NEST_LIBS)/zlib/lib -lz
;
File README-SDL.txt : $(NEST_LIBS)/SDL2/dist/README-SDL.txt ;
MakeLocate README-SDL.txt : dist ;
} else if $(OS) = LINUX { #Linux
NEST_LIBS = ../nest-libs/linux ;
C++ = g++ -no-pie ;
C++FLAGS =
-std=c++17 -g -Wall -Werror
`'$(NEST_LIBS)/SDL2/bin/sdl2-config' --prefix='$(NEST_LIBS)/SDL2' --cflags` #SDL2
-I$(NEST_LIBS)/glm/include #glm
-I$(NEST_LIBS)/libpng/include #libpng
;
LINK = g++ -no-pie ;
LINKFLAGS = -std=c++17 -g -Wall -Werror ;
LINKLIBS =
`'$(NEST_LIBS)/SDL2/bin/sdl2-config' --prefix='$(NEST_LIBS)/SDL2' --static-libs` -lGL #SDL2
-L$(NEST_LIBS)/libpng/lib -lpng #libpng
-L$(NEST_LIBS)/zlib/lib -lz #zlib
;
#`PATH=$(KIT_LIBS)/SDL2/bin:$PATH sdl2-config --static-libs` -lGL #SDL2 (old way that allows system libs to also work)
File README-SDL.txt : $(NEST_LIBS)/SDL2/dist/README-SDL.txt ;
MakeLocate README-SDL.txt : dist ;
}
#---- build ----
#This is the part of the file that tells Jam how to build your project.
#Store the names of various .cpp files to build into variables:
GAME_NAMES =
PlayMode
main
LitColorTextureProgram
#ColorTextureProgram #not used right now, but you might want it
;
COMMON_NAMES =
data_path
PathFont
PathFont-font
DrawLines
ColorProgram
Scene
Mesh
load_save_png
gl_compile_program
Mode
GL
Load
;
SHOW_MESHES_NAMES =
show-meshes
ShowMeshesProgram
ShowMeshesMode
;
SHOW_SCENE_NAMES =
show-scene
ShowSceneProgram
ShowSceneMode
;
LOCATE_TARGET = objs ; #put objects in 'objs' directory
Objects
$(GAME_NAMES:S=.cpp)
$(COMMON_NAMES:S=.cpp)
$(SHOW_MESHES_NAMES:S=.cpp)
$(SHOW_SCENE_NAMES:S=.cpp)
;
LOCATE_TARGET = dist ; #put main in 'dist' directory
MainFromObjects game : $(GAME_NAMES:S=$(SUFOBJ)) $(COMMON_NAMES:S=$(SUFOBJ)) ;
LOCATE_TARGET = scenes ; #put show-meshes and show-scene utilities in the 'scenes' directory:
MainFromObjects show-meshes : $(SHOW_MESHES_NAMES:S=$(SUFOBJ)) $(COMMON_NAMES:S=$(SUFOBJ)) ;
MainFromObjects show-scene : $(SHOW_SCENE_NAMES:S=$(SUFOBJ)) $(COMMON_NAMES:S=$(SUFOBJ)) ;