@@ -174,6 +174,19 @@ IF(JPEG_FOUND)
174
174
ELSE ()
175
175
MESSAGE (WARNING "libjpeg library NOT available. Who cares?" )
176
176
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_JPEG)
177
+ SET (JPEG_LIBRARIES)
178
+ ENDIF ()
179
+
180
+ SET (FTE_DEP_DBUS true CACHE BOOL "Link against libdbus." )
181
+ IF (FTE_DEP_DBUS)
182
+ FIND_PACKAGE (DBus1)
183
+ ENDIF ()
184
+ IF (DBUS1_FOUND)
185
+ INCLUDE_DIRECTORIES ( ${DBus1_INCLUDE_DIRS} )
186
+ SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;HAVE_DBUS)
187
+ SET (FTE_LIBS ${FTE_LIBS} ${DBus1_LIBRARIES} )
188
+ ELSE ()
189
+ MESSAGE (WARNING "libdbus-1 library NOT available. Who cares?" )
177
190
ENDIF ()
178
191
179
192
SET (FTE_DEP_PNG true CACHE BOOL "Link against libpng." )
@@ -187,6 +200,7 @@ IF(PNG_FOUND)
187
200
ELSE ()
188
201
MESSAGE (WARNING "libpng library NOT available. Good luck with screenshots." )
189
202
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_PNG)
203
+ SET (PNG_LIBRARIES)
190
204
ENDIF ()
191
205
192
206
SET (FTE_DEP_FREETYPE true CACHE BOOL "Link against libfreetype." )
@@ -221,7 +235,7 @@ ELSE()
221
235
ENDIF ()
222
236
223
237
SET (FTE_DEP_VORBISFILE true CACHE BOOL "Link against libvorbisfile." )
224
- IF (FTE_DEP_VROBISFILE )
238
+ IF (FTE_DEP_VORBISFILE )
225
239
FIND_LIBRARY (VORBISFILE_LIBRARY NAMES vorbisfile)
226
240
ENDIF ()
227
241
IF (NOT VORBISFILE_LIBRARY)
@@ -230,18 +244,30 @@ IF(NOT VORBISFILE_LIBRARY)
230
244
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_OGG)
231
245
ENDIF ()
232
246
247
+ IF (CMAKE_BUILD_TYPE MATCHES "Debug" )
248
+ SET (FTE_WERROR true CACHE BOOL "Warnings as errors." )
249
+ ELSE ()
250
+ SET (FTE_WERROR false CACHE BOOL "Warnings as errors." )
251
+ ENDIF ()
252
+ IF (FTE_WERROR)
253
+ SET (FTE_WERROR_ARG "-Werror" )
254
+ ELSE ()
255
+ SET (FTE_WERROR_ARG "" )
256
+ ENDIF ()
257
+
233
258
IF (CMAKE_C_COMPILER_ID MATCHES "Clang" )
234
259
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign" )
235
260
236
261
IF (CMAKE_BUILD_TYPE MATCHES "Debug" )
237
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp" )
262
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall ${FTE_WERROR_ARG} -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp" )
238
263
ELSE ()
239
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3" )
264
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 ${FTE_WERROR_ARG} " )
240
265
ENDIF ()
241
266
endif ()
242
267
IF (CMAKE_C_COMPILER_ID MATCHES "GNU" )
243
268
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-prototypes" ) #
244
269
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wold-style-definition" ) #k&r c is weird and can't cope with 64bit types.
270
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-parameter-type" ) #k&r c is weird and can't cope with 64bit types.
245
271
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wold-style-declaration" ) #
246
272
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith" ) #void* stuff
247
273
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wvla" ) #msvc doesn't support vla
@@ -254,9 +280,9 @@ IF(CMAKE_C_COMPILER_ID MATCHES "GNU")
254
280
#might as well do this, public builds use the regular Makefile.
255
281
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native" )
256
282
IF (CMAKE_BUILD_TYPE MATCHES "Debug" )
257
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp" )
283
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall ${FTE_WERROR_} -Wno-pointer-sign -Wno-unknown-pragmas -Wno-format-zero-length -Wno-strict-aliasing -Wno-error=cpp" )
258
284
ELSE ()
259
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3" )
285
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 ${FTE_WERROR_} " )
260
286
ENDIF ()
261
287
IF (NOT FTE_USE_SDL)
262
288
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--warn-common" )
@@ -266,8 +292,8 @@ ENDIF()
266
292
IF (CMAKE_BUILD_TYPE MATCHES "Debug" )
267
293
IF (NOT ${WIN32} )
268
294
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong" )
295
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu89" )
269
296
ENDIF ()
270
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu89" )
271
297
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_DEBUG" )
272
298
ENDIF ()
273
299
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64" )
@@ -289,6 +315,32 @@ FUNCTION(EMBED_PLUGIN_META PLUGNAME PLUGTITLE PLUGDESC)
289
315
VERBATIM )
290
316
ENDFUNCTION ()
291
317
318
+ SET (FTE_DEP_GNUTLS true CACHE BOOL "Link against gnutls" )
319
+ IF (FTE_DEP_GNUTLS)
320
+ FIND_PACKAGE (GnuTLS)
321
+ IF (NOT GNUTLS_FOUND)
322
+ MESSAGE (WARNING "gnutls library NOT available. HTTPS/DTLS will not be available." )
323
+ SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_GNUTLS)
324
+ ELSE ()
325
+ IF (WIN32 )
326
+ SET (GNUTLS_STATIC true CACHE BOOL "Link gnutls statically." ) #usually as an .so though. :/
327
+ ELSE ()
328
+ SET (GNUTLS_STATIC false CACHE BOOL "Link gnutls statically." ) #usually as an .so though. :/
329
+ ENDIF ()
330
+ IF (GNUTLS_STATIC)
331
+ SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;GNUTLS_STATIC)
332
+ SET (FTE_LIBS ${FTE_LIBS} ${GNUTLS_LIBRARY} )
333
+ SET (FTESV_LIBS ${FTESV_LIBS} ${GNUTLS_LIBRARY} )
334
+ ENDIF ()
335
+ ENDIF ()
336
+ ENDIF ()
337
+ IF (WIN32 )
338
+ SET (FTE_DEP_WINSSPI true CACHE BOOL "Link against winsspi(schannel)" )
339
+ IF (NOT FTE_DEP_WINSSPI)
340
+ SET (FTE_DEFINES ${FTE_DEFINES} ;NO_WINSSPI)
341
+ ENDIF ()
342
+ ENDIF ()
343
+
292
344
IF (${ANDROID} )
293
345
# FIND_PACKAGE(Freetype REQUIRED)
294
346
@@ -315,6 +367,7 @@ ELSEIF(WIN32 AND NOT FTE_USE_SDL)
315
367
engine/client/winquake.rc
316
368
engine/common/sys_win_threads.c
317
369
engine/common/net_ssl_winsspi.c
370
+ engine/common/net_ssl_gnutls.c
318
371
engine/common/fs_win32.c
319
372
engine/client/cd_win.c
320
373
engine/client/in_win.c
@@ -345,25 +398,13 @@ ELSEIF(WIN32 AND NOT FTE_USE_SDL)
345
398
engine/client/winquake.rc
346
399
engine/common/sys_win_threads.c
347
400
engine/common/net_ssl_winsspi.c
401
+ engine/common/net_ssl_gnutls.c
348
402
engine/common/fs_win32.c
349
403
engine/server/sv_sys_win.c
350
404
)
351
405
ELSEIF (UNIX AND NOT FTE_USE_SDL) #linux(ish)
352
406
#openbsd will have issues with snd_linux.c
353
407
354
- FIND_PACKAGE (GnuTLS)
355
- IF (NOT GNUTLS_FOUND)
356
- MESSAGE (WARNING "gnutls library NOT available. HTTPS/DTLS will not be available." )
357
- SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_GNUTLS)
358
- ELSE ()
359
- SET (GNUTLS_STATIC false CACHE BOOL "Link gnutls statically." ) #usually as an .so though. :/
360
- IF (GNUTLS_STATIC)
361
- SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;GNUTLS_STATIC)
362
- SET (FTE_LIBS ${FTE_LIBS} ${GNUTLS_LIBRARY} )
363
- SET (FTESV_LIBS ${FTESV_LIBS} ${GNUTLS_LIBRARY} )
364
- ENDIF ()
365
- ENDIF ()
366
-
367
408
#linux-only packages
368
409
FIND_PACKAGE (ALSA)
369
410
IF (ALSA_FOUND)
@@ -382,6 +423,10 @@ ELSEIF(UNIX AND NOT FTE_USE_SDL) #linux(ish)
382
423
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_X11_RANDR)
383
424
MESSAGE (WARNING "Xrandr library NOT available." )
384
425
ENDIF ()
426
+ IF (NOT X11_Xscreensaver_FOUND)
427
+ SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_X11_XSS)
428
+ MESSAGE (WARNING "Xss library NOT available." )
429
+ ENDIF ()
385
430
ELSE ()
386
431
MESSAGE (WARNING "x11 library NOT available." )
387
432
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} ;NO_X11)
@@ -450,7 +495,7 @@ ELSEIF(UNIX AND NOT FTE_USE_SDL) #linux(ish)
450
495
ENDIF ()
451
496
ENDIF ()
452
497
453
- SET (FTESV_DEFINES MULTITHREAD)
498
+ SET (FTESV_DEFINES ${FTESV_DEFINES} ; MULTITHREAD)
454
499
SET (FTESV_ARCH_FILES ${FTESV_ARCH_FILES}
455
500
engine/server/sv_sys_unix.c
456
501
engine/common/sys_linux_threads.c
@@ -481,7 +526,7 @@ ELSEIF(1) #SDL
481
526
engine/gl/gl_vidsdl.c
482
527
)
483
528
484
- SET (FTESV_DEFINES FTE_SDL )
529
+ SET (FTESV_DEFINES ${FTESV_DEFINES} ;MULTITHREAD )
485
530
SET (FTESV_LIBS ${FTESV_LIBS} ${SYS_LIBS} ${CMAKE_DL_LIBS} ${SDL2_LIBRARIES} )
486
531
487
532
IF (WIN32 )
@@ -505,6 +550,7 @@ ELSEIF(1) #SDL
505
550
engine/common/sys_linux_threads.c
506
551
engine/server/sv_sys_unix.c
507
552
)
553
+ SET (FTESV_LIBS ${FTESV_LIBS} pthread)
508
554
ENDIF ()
509
555
ELSE ()
510
556
# engine/common/sys_linux_threads.c
@@ -862,7 +908,7 @@ SET(FTE_Q3_FILES
862
908
)
863
909
864
910
#For annoying compressed gltf2 files.
865
- SET (FTE_DEP_DRACO false CACHE BOOL "Link against libdraco." )
911
+ SET (FTE_DEP_DRACO false CACHE BOOL "Link against libdraco (apache2) ." )
866
912
IF (FTE_DEP_DRACO)
867
913
FIND_LIBRARY (
868
914
DRACO_LIBRARY
@@ -1052,8 +1098,8 @@ ELSE()
1052
1098
imgtool.c
1053
1099
iqm/iqm.h
1054
1100
)
1055
- SET_TARGET_PROPERTIES (iqmtool PROPERTIES COMPILE_DEFINITIONS "IQMTOOL;${DRACO_CFLAGS} ;${FTE_REVISON} " )
1056
- TARGET_LINK_LIBRARIES (iqmtool ${CMAKE_DL_LIBS} ${DRACO_LIBRARY} )
1101
+ SET_TARGET_PROPERTIES (iqmtool PROPERTIES COMPILE_DEFINITIONS "IQMTOOL;${DRACO_CFLAGS} ;${FTE_LIB_DEFINES} ; ${ FTE_REVISON} " )
1102
+ TARGET_LINK_LIBRARIES (iqmtool ${CMAKE_DL_LIBS} ${DRACO_LIBRARY} ${JPEG_LIBRARIES} ${PNG_LIBRARIES} )
1057
1103
SET (INSTALLTARGS ${INSTALLTARGS} iqmtool)
1058
1104
ENDIF ()
1059
1105
@@ -1151,6 +1197,7 @@ ELSE()
1151
1197
engine/qclib/qcc_pr_lex.c
1152
1198
engine/qclib/qccmain.c
1153
1199
engine/qclib/qcd_main.c
1200
+ engine/qclib/decomp.c
1154
1201
engine/qclib/packager.c
1155
1202
)
1156
1203
SET_TARGET_PROPERTIES (fteqcc PROPERTIES COMPILE_DEFINITIONS "${FTE_LIB_DEFINES} ;${FTE_REVISON} " )
@@ -1260,6 +1307,8 @@ SET(FTE_PLUG_OPENSSL false CACHE BOOL "Compile OpenSSL.")
1260
1307
IF (FTE_PLUG_OPENSSL)
1261
1308
#the openssl license is incompatible with the GPL, so while we have code to use it distributing the binaries built with it is not a (legal) option.
1262
1309
#note that openssl 3.0.0 upwards are apache-2 licensed, which IS gpl-3 compatible (though not gpl-2). debian has not caught up with that yet, however.
1310
+ #Crosscompile linux->win64: sudo ln -s ${pwd}/engine/libs-x86_64-w64-mingw32/openssl-openssl-3.0.1/ /usr/x86_64-w64-mingw32/OpenSSL
1311
+ SET (OPENSSL_USE_STATIC_LIBS true CACHE BOOL "Link openssl statically." ) #usually as an .so though. :/)
1263
1312
FIND_PACKAGE (OpenSSL)
1264
1313
IF (OPENSSL_VERSION_MAJOR LESS 3)
1265
1314
SET (FTE_PRIVATE_USE_ONLY false CACHE BOOL "Ignore license violations." )
@@ -1275,11 +1324,15 @@ IF(FTE_PLUG_OPENSSL)
1275
1324
MESSAGE (WARNING "Using openssl. Resulting plugin must be licensed as GPLv3." )
1276
1325
ENDIF ()
1277
1326
SET (FTE_LIB_DEFINES ${FTE_LIB_DEFINES} )
1327
+ if (WIN32 )
1328
+ SET (OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} ws2_32)
1329
+ ENDIF ()
1278
1330
1279
1331
ADD_LIBRARY (plug_openssl MODULE
1280
1332
plugins/plugin.c
1281
1333
plugins/net_ssl_openssl.c
1282
1334
)
1335
+ TARGET_INCLUDE_DIRECTORIES (plug_openssl PRIVATE ${OPENSSL_INCLUDE_DIR} )
1283
1336
SET_TARGET_PROPERTIES (plug_openssl PROPERTIES COMPILE_DEFINITIONS "FTEPLUGIN;${FTE_LIB_DEFINES} " )
1284
1337
TARGET_LINK_LIBRARIES (plug_openssl ${SYS_LIBS} ${OPENSSL_LIBRARIES} )
1285
1338
@@ -1291,7 +1344,7 @@ ENDIF()
1291
1344
#IF(FTE_PLUG_GNUTLS)
1292
1345
# FIND_PACKAGE(GnuTLS)
1293
1346
# IF(NOT GNUTLS_FOUND)
1294
- # MESSAGE(WARNING "openssl library NOT available. you'll have to use some other library.")
1347
+ # MESSAGE(WARNING "gnutls library NOT available. you'll have to use some other library.")
1295
1348
# ELSE()
1296
1349
# SET(FTE_LIB_DEFINES ${FTE_LIB_DEFINES})
1297
1350
#
@@ -1628,7 +1681,8 @@ IF(FTE_MENU_SYS)
1628
1681
DEPENDS fteqcc
1629
1682
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /quakec/menusys/"
1630
1683
COMMAND fteqcc -srcfile "menu.src" -o "${CMAKE_CURRENT_BINARY_DIR} /menu.dat" -DREVISION="${SVNREVISION} " -DDATE="${FTE_DATE} " -DBRANCH="${FTE_BRANCH} "
1631
- BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR} /menu.dat" "${CMAKE_CURRENT_BINARY_DIR} /menu.lno"
1684
+ COMMAND /bin/echo -e "{\\ n package fte_menusys\\ n ver \" ${SVNREVISION} \"\\ n category Plugins\\ n title \" Replacement Menus\"\\ n gamedir \" id1\"\\ n desc \" Modern menus to replace the ancient quake ones\"\\ n}" | zip -j -q -9 -fz- "${CMAKE_CURRENT_BINARY_DIR} /menusys.pk3" - "${CMAKE_CURRENT_BINARY_DIR} /menu.dat"
1685
+ BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR} /menu.dat" "${CMAKE_CURRENT_BINARY_DIR} /menu.lno" "${CMAKE_CURRENT_BINARY_DIR} /menusys.pk3"
1632
1686
SOURCES
1633
1687
quakec/menusys/menu.src
1634
1688
quakec/menusys/fteextensions.qc
@@ -1665,12 +1719,8 @@ IF(FTE_MENU_SYS)
1665
1719
quakec/menusys/menu/quit.qc
1666
1720
)
1667
1721
1668
- ADD_CUSTOM_COMMAND (
1669
- TARGET menusys POST_BUILD
1670
- COMMAND /bin/echo -e "{\\ n package fte_menusys\\ n ver \" ${SVNREVISION} \"\\ n category Plugins\\ n title \" Replacement Menus\"\\ n gamedir \" id1\"\\ n desc \" Modern menus to replace the ancient quake ones\"\\ n}" | zip -q -9 -fz- menusys.pk3 - menu.dat
1671
- VERBATIM )
1672
1722
INSTALL (FILES
1673
- menusys.pk3
1723
+ ${CMAKE_CURRENT_BINARY_DIR} / menusys.pk3
1674
1724
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR} /games/quake/id1/" )
1675
1725
ENDIF ()
1676
1726
@@ -1681,7 +1731,8 @@ IF(FTE_CSADDON)
1681
1731
DEPENDS fteqcc
1682
1732
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /quakec/csaddon/src/"
1683
1733
COMMAND fteqcc -srcfile "csaddon.src" -o "${CMAKE_CURRENT_BINARY_DIR} /csaddon.dat"
1684
- BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR} /csaddon.dat" "${CMAKE_CURRENT_BINARY_DIR} /csaddon.lno"
1734
+ COMMAND /bin/echo -e "{\\ n package fte_csaddon\\ n ver \" ${SVNREVISION} \"\\ n category Plugins\\ n title \" ${PLUGTITLE} \"\\ n gamedir \" id1\"\\ n desc \" ${PLUGDESC} \"\\ n}" | zip -j -q -9 -fz- "${CMAKE_CURRENT_BINARY_DIR} /csaddon.pk3" - "${CMAKE_CURRENT_BINARY_DIR} /csaddon.dat"
1735
+ BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR} /csaddon.dat" "${CMAKE_CURRENT_BINARY_DIR} /csaddon.lno" "${CMAKE_CURRENT_BINARY_DIR} /csaddon.pk3"
1685
1736
SOURCES
1686
1737
quakec/csaddon/src/csaddon.src
1687
1738
@@ -1704,11 +1755,7 @@ IF(FTE_CSADDON)
1704
1755
quakec/csaddon/src/csaddon.qc
1705
1756
)
1706
1757
1707
- ADD_CUSTOM_COMMAND (
1708
- TARGET csaddon POST_BUILD
1709
- COMMAND /bin/echo -e "{\\ n package fte_csaddon\\ n ver \" ${SVNREVISION} \"\\ n category Plugins\\ n title \" ${PLUGTITLE} \"\\ n gamedir \" id1\"\\ n desc \" ${PLUGDESC} \"\\ n}" | zip -q -9 -fz- csaddon.pk3 - csaddon.dat
1710
- VERBATIM )
1711
1758
INSTALL (FILES
1712
- csaddon.pk3
1759
+ ${CMAKE_CURRENT_BINARY_DIR} / csaddon.pk3
1713
1760
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR} /games/quake/id1/" )
1714
1761
ENDIF ()
0 commit comments