Skip to content

Commit 907e53c

Browse files
committed
1.0b3 initial github commit
1 parent a404599 commit 907e53c

File tree

686 files changed

+422772
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

686 files changed

+422772
-0
lines changed

CMakeLists.txt

Lines changed: 274 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,274 @@
1+
if(WIN32)
2+
cmake_minimum_required(VERSION 3.1.0) # assembler stuff
3+
else()
4+
cmake_minimum_required(VERSION 2.8.8)
5+
endif()
6+
7+
if(POLICY CMP0043)
8+
cmake_policy(SET CMP0043 OLD) # debian wheezy still uses 2.8.9
9+
endif()
10+
if(POLICY CMP0042)
11+
cmake_policy(SET CMP0042 OLD)
12+
endif()
13+
14+
# For checks in subdirectories
15+
set(InMV TRUE)
16+
17+
set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE TYPE INTERNAL FORCE)
18+
19+
# Project name & version
20+
set(ProjectName "JK2MV" CACHE STRING "Project Name")
21+
project(${ProjectName})
22+
23+
set(MV_MAJOR_VERSION 1)
24+
set(MV_MINOR_VERSION 0)
25+
set(MV_EXT_VERSION "b3")
26+
set(MV_ECMP_VERSION 3) # increasing number to detect new version without parsing stuff like 1.0b1
27+
set(MV_VERSION "${MV_MAJOR_VERSION}.${MV_MINOR_VERSION}${MV_EXT_VERSION}")
28+
29+
# Languages
30+
if(WIN32)
31+
enable_language(C CXX ASM_MASM)
32+
else()
33+
enable_language(C CXX)
34+
endif()
35+
36+
# Customizable options
37+
option(BuildPortableVersion "Build portable version (does not read or write files from your user/home directory" OFF)
38+
option(BuildMVMP "Whether to create projects for the client (jk2mvmp & jk2mvmenu)" ON)
39+
option(BuildMVDED "Whether to create projects for the dedicated server (jk2mvded)" ON)
40+
41+
if(WIN32 OR APPLE)
42+
option(BuildPack "Whether to create the image / installer" OFF)
43+
endif()
44+
45+
if(WIN32)
46+
set(UseInternalPNG ON)
47+
elseif(APPLE)
48+
option(UseInternalPNG "Whether to use the included libpng instead of a locally installed one" ON)
49+
else()
50+
option(UseInternalPNG "Whether to use the included libpng instead of a locally installed one" OFF)
51+
endif()
52+
53+
if(WIN32)
54+
set(UseInternalJPEG ON)
55+
elseif(APPLE)
56+
option(UseInternalJPEG "Whether to use the included libjpeg instead of a locally installed one" ON)
57+
else()
58+
option(UseInternalJPEG "Whether to use the included libjpeg instead of a locally installed one" OFF)
59+
endif()
60+
61+
if(WIN32)
62+
set(UseInternalZLIB ON)
63+
else()
64+
option(UseInternalZLIB "Whether to use the included zlib instead of a locally installed one" OFF)
65+
endif()
66+
67+
if(WIN32)
68+
set(UseInternalCURL ON)
69+
else()
70+
option(UseInternalCURL "Whether to use the included libcurl instead of a locally installed one" OFF)
71+
endif()
72+
73+
# Paths
74+
set(SRCDir "${CMAKE_SOURCE_DIR}/src")
75+
set(LIBDir "${CMAKE_SOURCE_DIR}/libs")
76+
set(RESDir "${CMAKE_SOURCE_DIR}/res")
77+
78+
# Custom CMake Modules
79+
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/tools")
80+
list(INSERT CMAKE_MODULE_PATH 0 "${RESDir}")
81+
82+
# Architecture
83+
set(CMAKE_OSX_ARCHITECTURES "i386" "x86_64") # always building both on osx
84+
85+
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
86+
set(ARCH_BITS 64)
87+
if(WIN32)
88+
set(Architecture "x64")
89+
set(WIN64 TRUE)
90+
elseif(APPLE)
91+
set(Architecture "universal")
92+
else()
93+
set(Architecture "amd64")
94+
endif()
95+
96+
if(NOT APPLE)
97+
set(GlobalDefines ${GlobalDefines} "_M_X64")
98+
endif()
99+
else()
100+
set(ARCH_BITS 32)
101+
if(WIN32)
102+
set(Architecture "x86")
103+
set(WIN64 FALSE)
104+
elseif(APPLE)
105+
set(Architecture "universal")
106+
else()
107+
set(Architecture "i386")
108+
endif()
109+
110+
if(NOT APPLE)
111+
set(GlobalDefines ${GlobalDefines} "_M_IX86")
112+
endif()
113+
endif()
114+
115+
message(STATUS "Architecture is ${Architecture}")
116+
117+
# Binary names
118+
if(NOT APPLE)
119+
set(MVMP "jk2mvmp_${Architecture}")
120+
set(MVMENU "jk2mvmenu_${Architecture}")
121+
set(MVDED "jk2mvded_${Architecture}")
122+
else()
123+
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/out/install")
124+
125+
set(MVMP "jk2mvmp")
126+
set(MVMENU "jk2mvmenu")
127+
set(MVDED "jk2mvded")
128+
endif()
129+
130+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
131+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
132+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out)
133+
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/out)
134+
135+
# Compiler defines / settings
136+
set(GlobalDefines ${GlobalDefines} "JKA_DYNAMIC_GLOW")
137+
set(GlobalDefines ${GlobalDefines} "BOTLIB")
138+
set(GlobalDefines ${GlobalDefines} "_JK2")
139+
140+
if(NOT MSVC)
141+
# CMake already defines _DEBUG for MSVC.
142+
set(DebugDefines ${DebugDefines} "_DEBUG")
143+
endif()
144+
set(DebugDefines ${DebugDefines} "DEBUG")
145+
146+
set(ReleaseDefines "FINAL_BUILD" "NDEBUG")
147+
148+
if(WIN32)
149+
if(MSVC)
150+
set(GlobalDefines ${GlobalDefines} "_CRT_SECURE_NO_WARNINGS")
151+
152+
# Multithreaded
153+
set(CMAKE_CXX_FLAGS_RELEASE "/MT" CACHE TYPE INTERNAL FORCE)
154+
set(CMAKE_C_FLAGS_RELEASE "/MT" CACHE TYPE INTERNAL FORCE)
155+
156+
# Platform
157+
set(GlobalDefines ${GlobalDefines} "UNICODE" "_UNICODE")
158+
159+
# Optimization
160+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MP") # multiprocessor compilation
161+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP")
162+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /O2 /Oi /Ot /Ob2 /fp:fast") # maximize speed
163+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Ot /Ob2 /fp:fast")
164+
165+
if(WIN64)
166+
set(GlobalDefines ${GlobalDefines} "WIN64")
167+
else()
168+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE2")
169+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
170+
171+
set(CMAKE_ASM_MASM_FLAGS "${CMAKE_ASM_MASM_FLAGS} /safeseh") # safe exception handler
172+
endif()
173+
endif()
174+
else()
175+
if(APPLE)
176+
set(GlobalDefines ${GlobalDefines} "MACOS_X")
177+
endif()
178+
179+
# Additional flags for debug configuration
180+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb")
181+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb")
182+
183+
# ouned: need sse optimizations in debug configuration, too because of the inline assembler which is sse code
184+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2")
185+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
186+
187+
# Optimization
188+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -ffast-math")
189+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -ffast-math")
190+
191+
if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
192+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mfpmath=sse -fexpensive-optimizations")
193+
194+
# Link only libs actually needed
195+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wl,--as-needed,-s")
196+
197+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
198+
elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
199+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto")
200+
201+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-comment -Wno-reorder -Wunused-value -Wswitch")
202+
endif()
203+
204+
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
205+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mfpmath=sse -fexpensive-optimizations")
206+
207+
# Link only libs actually needed
208+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,--as-needed,-s")
209+
210+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
211+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden")
212+
213+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings")
214+
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
215+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
216+
217+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-comment -Wno-deprecated-writable-strings -Wno-reorder -Wunused-value -Wswitch")
218+
endif()
219+
endif()
220+
221+
if(NOT CMAKE_BUILD_TYPE)
222+
message(STATUS "No build type selected, default to Release")
223+
set(CMAKE_BUILD_TYPE "Release")
224+
endif()
225+
226+
if(UseInternalPNG)
227+
set(GlobalDefines ${GlobalDefines} "INTERNAL_PNG")
228+
endif()
229+
230+
if(UseInternalJPEG)
231+
set(GlobalDefines ${GlobalDefines} "INTERNAL_JPEG")
232+
endif()
233+
234+
if(UseInternalZLIB)
235+
set(GlobalDefines ${GlobalDefines} "INTERNAL_ZLIB")
236+
endif()
237+
238+
if(UseInternalCURL)
239+
set(GlobalDefines ${GlobalDefines} "INTERNAL_CURL")
240+
endif()
241+
242+
if(BuildPortableVersion)
243+
set(GlobalDefines ${GlobalDefines} "PORTABLE")
244+
endif()
245+
246+
# package
247+
set(CPACK_PACKAGE_NAME ${ProjectName})
248+
set(CPACK_PACKAGE_VENDOR "jk2mv.org")
249+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "JK2 MultiVersion")
250+
set(CPACK_PACKAGE_VERSION "${MV_VERSION}")
251+
set(CPACK_PACKAGE_VERSION_MAJOR "${MV_MAJOR_VERSION}")
252+
set(CPACK_PACKAGE_VERSION_MINOR "${MV_MINOR_VERSION}")
253+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
254+
255+
if(BuildPack)
256+
if(WIN32)
257+
set(CPACK_GENERATOR "NSIS")
258+
set(CPACK_NSIS_URL_INFO_ABOUT "http://jk2mv.org")
259+
260+
configure_file(
261+
${RESDir}/NSIS.definitions.nsh.in
262+
${CMAKE_CURRENT_BINARY_DIR}/res/NSIS.definitions.nsh
263+
)
264+
string(REGEX REPLACE "/" "\\\\\\\\" CPACK_NSIS_INCLFILE "${CMAKE_CURRENT_BINARY_DIR}/res/NSIS.definitions.nsh")
265+
266+
include(CPack)
267+
elseif(APPLE)
268+
# TODO
269+
set(CPACK_GENERATOR "Bundle")
270+
set(CPACK_BUNDLE_NAME ${ProjectName})
271+
endif()
272+
endif()
273+
274+
add_subdirectory(${SRCDir})

assets/gfx/menus/srv_102.jpg

19.2 KB
Loading

assets/gfx/menus/srv_103.jpg

25.8 KB
Loading

assets/gfx/menus/srv_104.jpg

18.8 KB
Loading

assets/shaders/sabers.dynGlow

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Red saber
2+
gfx/effects/sabers/red_glow:gfx/effects/sabers/red_glow2
3+
//gfx/effects/sabers/red_line:gfx/effects/sabers/red_line
4+
5+
// Orange saber
6+
gfx/effects/sabers/orange_glow:gfx/effects/sabers/orange_glow2
7+
//gfx/effects/sabers/orange_line:gfx/effects/sabers/orange_line
8+
9+
// Yellow saber
10+
gfx/effects/sabers/yellow_glow:gfx/effects/sabers/yellow_glow2
11+
//gfx/effects/sabers/yellow_line:gfx/effects/sabers/yellow_line
12+
13+
// Green saber
14+
gfx/effects/sabers/green_glow:gfx/effects/sabers/green_glow2
15+
//gfx/effects/sabers/green_line:gfx/effects/sabers/green_line
16+
17+
// Blue saber
18+
gfx/effects/sabers/blue_glow:gfx/effects/sabers/blue_glow2
19+
//gfx/effects/sabers/blue_line:gfx/effects/sabers/blue_line
20+
21+
// Purple saber
22+
gfx/effects/sabers/purple_glow:gfx/effects/sabers/purple_glow2
23+
//gfx/effects/sabers/purple_line:gfx/effects/sabers/purple_line
24+
25+
// Blur
26+
gfx/effects/sabers/saberBlur:gfx/effects/sabers/blurglow

0 commit comments

Comments
 (0)