# # Copyright (c) 2015 Pavlo Lavrenenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # cmake_minimum_required(VERSION 2.8.12) project (SVDLL) set (SVDLL_LIBRARY server) include(CheckIncludeFile) check_include_file("tgmath.h" HAVE_TGMATH_H) if(HAVE_TGMATH_H) add_definitions(-DHAVE_TGMATH_H) endif() add_definitions(-DCLIENT_WEAPONS) if(NOT MSVC) add_compile_options(-fno-exceptions) # GCC/Clang flag add_compile_options(-Wno-invalid-offsetof) # GCC/Clang flag add_compile_options(-fvisibility=hidden) # GCC/Clang flag add_definitions(-D_LINUX) # It seems enough for all non-Win32 systems add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf ) else() add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) endif() set (SVDLL_SOURCES 3wave/flags.cpp 3wave/grapple.cpp 3wave/runes.cpp 3wave/threewave_gamerules.cpp aghl/agarena.cpp aghl/agglobal.cpp aghl/aglms.cpp aghl/agspectator.cpp aghl/agtimer.cpp dmc/quake_gun.cpp dmc/quake_items.cpp dmc/quake_nail.cpp dmc/quake_player.cpp dmc/quake_rocket.cpp dmc/quake_weapons_all.cpp dmc/observer.cpp # agrunt.cpp # airtank.cpp # aflock.cpp animating.cpp animation.cpp # apache.cpp # barnacle.cpp # barney.cpp # bigmomma.cpp # bloater.cpp bmodels.cpp # bullsquid.cpp buttons.cpp cbase.cpp client.cpp combat.cpp # controller.cpp # crossbow.cpp # crowbar.cpp # defaultai.cpp doors.cpp effects.cpp # egon.cpp explode.cpp # flyingmonster.cpp func_break.cpp # func_tank.cpp game.cpp gamerules.cpp # gargantua.cpp # gauss.cpp # genericmonster.cpp # ggrenade.cpp globals.cpp # glock.cpp # gman.cpp h_ai.cpp # h_battery.cpp # h_cine.cpp # h_cycler.cpp h_export.cpp # handgrenade.cpp # hassassin.cpp # headcrab.cpp # healthkit.cpp # hgrunt.cpp # hornet.cpp # hornetgun.cpp # houndeye.cpp # ichthyosaur.cpp # islave.cpp # items.cpp # leech.cpp lights.cpp maprules.cpp # monstermaker.cpp monsters.cpp # monsterstate.cpp # mortar.cpp # mp5.cpp mpstubb.cpp multiplay_gamerules.cpp # nihilanth.cpp # nodes.cpp # osprey.cpp pathcorner.cpp plane.cpp plats.cpp player.cpp # python.cpp # rat.cpp # roach.cpp # rpg.cpp # satchel.cpp schedule.cpp # scientist.cpp # scripted.cpp # shotgun.cpp singleplay_gamerules.cpp skill.cpp sound.cpp # soundent.cpp spectator.cpp # squadmonster.cpp # squeakgrenade.cpp subs.cpp # talkmonster.cpp teamplay_gamerules.cpp # tempmonster.cpp # tentacle.cpp triggers.cpp # tripmine.cpp # turret.cpp util.cpp weapons.cpp world.cpp # xen.cpp # zombie.cpp ../pm_shared/pm_debug.c ../pm_shared/pm_math.c ../pm_shared/pm_shared.c ) include_directories (. wpn_shared ../common ../engine ../pm_shared ../game_shared ../public dmc aghl 3wave .. ) if(MSVC) set(SVDLL_SOURCES ${SVDLL_SOURCES} hl.def) endif() if(USE_VOICEMGR) set(SVDLL_SOURCES ${SVDLL_SOURCES} ../game_shared/voice_gamemgr.cpp) else() add_definitions(-DNO_VOICEGAMEMGR) endif() add_library (${SVDLL_LIBRARY} SHARED ${SVDLL_SOURCES}) set_target_properties (${SVDLL_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE 1) if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") set(SVDLL_NAME "${SERVER_LIBRARY_NAME}") set_target_properties(${SVDLL_LIBRARY} PROPERTIES OUTPUT_NAME ${SVDLL_NAME} PREFIX "") endif() if(MSVC) set_property(TARGET ${SVDLL_LIBRARY} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() install( TARGETS ${SVDLL_LIBRARY} DESTINATION "${GAMEDIR}/${SERVER_INSTALL_DIR}/" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)