cmake_minimum_required(VERSION 2.6) project(jamp) set(cpu ${CMAKE_SYSTEM_PROCESSOR}) if (cpu MATCHES "i.86") set(cpu "x86") elseif(cpu STREQUAL "x86_64") set(cpu "amd64") endif() # until amd64 works... if (cpu MATCHES "amd64") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") set(cpu, "x86") endif() if(CMAKE_COMPILER_IS_GNUC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -O2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unknown-pragmas -Wno-write-strings -Wno-missing-braces") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g") endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -O2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wno-write-strings -Wno-missing-braces") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") endif() if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pragmas -fpermissive") endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses-equality") endif() # avoid -rdynamic or loaded libraries will stomp over cvars set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") add_definitions( -D_M_IX86=1 ) # tested to mean little endian... add_definitions( -D_IMMERSION_DISABLE ) add_definitions( -DNDEBUG ) add_definitions( -DFINAL_BUILD ) add_definitions( -D_JK2 ) add_definitions( -D_JK2MP ) find_package (SDL REQUIRED) include_directories(${SDL_INCLUDE_DIR}) find_package(OpenGL REQUIRED) include_directories(${OPENGL_INCLUDE_DIR}) find_package(OpenAL REQUIRED) include_directories(${OPENAL_INCLUDE_DIR}) set(src_main_rmg RMG/RM_Area.cpp RMG/RM_Instance.cpp RMG/RM_InstanceFile.cpp RMG/RM_Instance_BSP.cpp RMG/RM_Instance_Group.cpp RMG/RM_Instance_Random.cpp RMG/RM_Instance_Void.cpp RMG/RM_Manager.cpp RMG/RM_Mission.cpp RMG/RM_Objective.cpp RMG/RM_Path.cpp RMG/RM_Terrain.cpp ) set(src_main_client client/FXExport.cpp client/FxPrimitives.cpp client/FxScheduler.cpp client/FxSystem.cpp client/FxTemplate.cpp client/FxUtil.cpp client/cl_cgame.cpp client/cl_cin.cpp client/cl_console.cpp client/cl_input.cpp client/cl_keys.cpp client/cl_main.cpp client/cl_net_chan.cpp client/cl_parse.cpp client/cl_scrn.cpp client/cl_ui.cpp client/snd_ambient.cpp client/snd_dma.cpp client/snd_mem.cpp client/snd_mix.cpp client/snd_mp3.cpp client/snd_music.cpp ) set(src_main_ghoul2 ghoul2/G2_API.cpp ghoul2/G2_bolts.cpp ghoul2/G2_bones.cpp ghoul2/G2_misc.cpp ghoul2/G2_surfaces.cpp ) set(src_main_icarus icarus/BlockStream.cpp icarus/GameInterface.cpp icarus/Instance.cpp icarus/Interface.cpp icarus/Memory.cpp icarus/Q3_Interface.cpp icarus/Q3_Registers.cpp icarus/Sequence.cpp icarus/Sequencer.cpp icarus/TaskManager.cpp ) set(src_main_jpeg jpeg-6/jcapimin.cpp jpeg-6/jccoefct.cpp jpeg-6/jccolor.cpp jpeg-6/jcdctmgr.cpp jpeg-6/jchuff.cpp jpeg-6/jcinit.cpp jpeg-6/jcmainct.cpp jpeg-6/jcmarker.cpp jpeg-6/jcmaster.cpp jpeg-6/jcomapi.cpp jpeg-6/jcparam.cpp jpeg-6/jcphuff.cpp jpeg-6/jcprepct.cpp jpeg-6/jcsample.cpp jpeg-6/jctrans.cpp jpeg-6/jdapimin.cpp jpeg-6/jdapistd.cpp jpeg-6/jdatadst.cpp jpeg-6/jdatasrc.cpp jpeg-6/jdcoefct.cpp jpeg-6/jdcolor.cpp jpeg-6/jddctmgr.cpp jpeg-6/jdhuff.cpp jpeg-6/jdinput.cpp jpeg-6/jdmainct.cpp jpeg-6/jdmarker.cpp jpeg-6/jdmaster.cpp jpeg-6/jdpostct.cpp jpeg-6/jdsample.cpp jpeg-6/jdtrans.cpp jpeg-6/jerror.cpp jpeg-6/jfdctflt.cpp jpeg-6/jidctflt.cpp jpeg-6/jmemmgr.cpp jpeg-6/jmemnobs.cpp jpeg-6/jutils.cpp ) set(src_main_mp3code mp3code/cdct.c mp3code/csbt.c mp3code/csbtb.c mp3code/csbtL3.c mp3code/cup.c mp3code/cupini.c mp3code/cupL1.c mp3code/cupl3.c mp3code/cwin.c mp3code/cwinb.c mp3code/cwinm.c mp3code/hwin.c mp3code/l3dq.c mp3code/l3init.c mp3code/mdct.c mp3code/mhead.c mp3code/msis.c mp3code/towave.c mp3code/uph.c mp3code/upsf.c mp3code/wavep.c ) set(src_main_png png/png.cpp ) set(src_qcommon_common qcommon/CNetProfile.cpp qcommon/GenericParser2.cpp qcommon/RoffSystem.cpp qcommon/cm_draw.cpp qcommon/cm_load.cpp qcommon/cm_patch.cpp qcommon/cm_polylib.cpp qcommon/cm_randomterrain.cpp qcommon/cm_shader.cpp qcommon/cm_terrain.cpp qcommon/cm_test.cpp qcommon/cm_trace.cpp qcommon/cmd_common.cpp qcommon/cmd_pc.cpp qcommon/common.cpp qcommon/cvar.cpp qcommon/exe_headers.cpp qcommon/files_common.cpp qcommon/files_pc.cpp qcommon/hstring.cpp qcommon/huffman.cpp qcommon/md4.cpp qcommon/msg.cpp qcommon/net_chan.cpp qcommon/q_math.cpp qcommon/q_shared.cpp qcommon/stringed_ingame.cpp qcommon/stringed_interface.cpp qcommon/unzip.cpp qcommon/vm.cpp qcommon/vm_interpreted.cpp qcommon/vm_x86.cpp qcommon/z_memman_pc.cpp ) set(src_main_qcommon ${src_qcommon_common} qcommon/cm_terrainmap.cpp ) set(src_renderer_common renderer/matcomp.c renderer/tr_backend.cpp renderer/tr_ghoul2.cpp renderer/tr_image.cpp renderer/tr_init.cpp renderer/tr_main.cpp renderer/tr_mesh.cpp renderer/tr_model.cpp renderer/tr_shader.cpp ) set(src_main_renderer ${src_renderer_common} renderer/tr_WorldEffects.cpp renderer/tr_animation.cpp renderer/tr_arioche.cpp renderer/tr_bsp.cpp renderer/tr_cmds.cpp renderer/tr_curve.cpp renderer/tr_font.cpp renderer/tr_light.cpp renderer/tr_marks.cpp renderer/tr_noise.cpp renderer/tr_quicksprite.cpp renderer/tr_scene.cpp renderer/tr_shade.cpp renderer/tr_shade_calc.cpp renderer/tr_shadows.cpp renderer/tr_sky.cpp renderer/tr_surface.cpp renderer/tr_surfacesprites.cpp renderer/tr_terrain.cpp renderer/tr_world.cpp ) set(src_main_server server/NPCNav/gameCallbacks.cpp server/NPCNav/navigator.cpp server/sv_bot.cpp server/sv_ccmds.cpp server/sv_client.cpp server/sv_game.cpp server/sv_init.cpp server/sv_main.cpp server/sv_net_chan.cpp server/sv_snapshot.cpp server/sv_world.cpp ) set(src_main_win32 win32/win_gamma.cpp win32/win_glimp.cpp win32/win_input.cpp win32/win_main.cpp win32/win_net.cpp win32/win_qgl.cpp win32/win_shared.cpp win32/win_snd.cpp win32/win_syscon.cpp win32/win_wndproc.cpp ) set(src_main_zlib zlib32/deflate.cpp zlib32/inflate.cpp zlib32/zipcommon.cpp ) ENABLE_LANGUAGE(ASM_NASM) set(src_unix_common unix/linux_common.c unix/unix_main.cpp unix/unix_net.cpp unix/unix_shared.cpp unix/ftol.nasm unix/snapvector.nasm ) set(src_main_unix ${src_unix_common} unix/unix_glimp_common.cpp null/null_snddma.cpp ) set(src_sdl sdl/sdl_gamma.cpp sdl/sdl_glimp.cpp sdl/sdl_input.cpp ) set(src_botlib botlib/be_aas_bspq3.cpp botlib/be_aas_cluster.cpp botlib/be_aas_debug.cpp botlib/be_aas_entity.cpp botlib/be_aas_file.cpp botlib/be_aas_main.cpp botlib/be_aas_move.cpp botlib/be_aas_optimize.cpp botlib/be_aas_reach.cpp botlib/be_aas_route.cpp botlib/be_aas_routealt.cpp botlib/be_aas_sample.cpp botlib/be_ai_char.cpp botlib/be_ai_chat.cpp botlib/be_ai_gen.cpp botlib/be_ai_goal.cpp botlib/be_ai_move.cpp botlib/be_ai_weap.cpp botlib/be_ai_weight.cpp botlib/be_ea.cpp botlib/be_interface.cpp botlib/l_crc.cpp botlib/l_libvar.cpp botlib/l_log.cpp botlib/l_memory.cpp botlib/l_precomp.cpp botlib/l_script.cpp botlib/l_struct.cpp ) set(src_jk2mp ${src_main_rmg} ${src_main_client} ${src_main_ghoul2} ${src_main_icarus} ${src_main_jpeg} ${src_main_mp3code} ${src_main_png} ${src_main_qcommon} ${src_main_renderer} ${src_main_server} ${src_main_zlib} ${src_botlib} ${src_main_unix} ${src_sdl} ) add_executable(jamp ${src_jk2mp} ) set_target_properties(jamp PROPERTIES COMPILE_DEFINITIONS "_JK2EXE;_FF_DISABLE;BOTLIB") target_link_libraries(jamp m pthread ${SDL_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENAL_LIBRARY} ) if (CMAKE_SYSTEM_NAME MATCHES "Linux") target_link_libraries(jamp dl) endif() set(src_ded_null null/null_client.cpp null/null_glimp.cpp null/null_input.cpp null/null_renderer.cpp null/null_snddma.cpp ) set(src_jk2mp_ded ${src_main_rmg} ${src_main_ghoul2} ${src_main_icarus} ${src_qcommon_common} ${src_renderer_common} ${src_main_server} ${src_main_zlib} ${src_botlib} ${src_unix_common} ${src_ded_null} ) add_executable(jampded ${src_jk2mp_ded} ) set_target_properties(jampded PROPERTIES COMPILE_DEFINITIONS "_JK2EXE;_FF_DISABLE;BOTLIB;DEDICATED") target_link_libraries(jampded m pthread ) if (CMAKE_SYSTEM_NAME MATCHES "Linux") target_link_libraries(jampded dl) endif() set(src_ui_game game/bg_lib.c game/bg_misc.c game/bg_saga.c game/bg_vehicleLoad.c game/bg_weapons.c game/q_math.c game/q_shared.c ) set(src_ui_ui ui/ui_atoms.c ui/ui_force.c ui/ui_gameinfo.c ui/ui_main.c ui/ui_saber.c ui/ui_shared.c ui/ui_syscalls.c ) add_library(ui${cpu} SHARED ${src_ui_game} ${src_ui_ui} ) set_target_properties(ui${cpu} PROPERTIES PREFIX "") set_target_properties(ui${cpu} PROPERTIES COMPILE_DEFINITIONS "_USRDL;UI_EXPORTS;MISSIONPACK") set(src_cgame_cgame cgame/cg_consolecmds.c cgame/cg_draw.c cgame/cg_drawtools.c cgame/cg_effects.c cgame/cg_ents.c cgame/cg_event.c cgame/cg_info.c cgame/cg_light.c cgame/cg_localents.c cgame/cg_main.c cgame/cg_marks.c cgame/cg_newDraw.c cgame/cg_players.c cgame/cg_playerstate.c cgame/cg_predict.c cgame/cg_saga.c cgame/cg_scoreboard.c cgame/cg_servercmds.c cgame/cg_snapshot.c cgame/cg_strap.c cgame/cg_syscalls.c cgame/cg_turret.c cgame/cg_view.c cgame/cg_weaponinit.c cgame/cg_weapons.c cgame/fx_blaster.c cgame/fx_bowcaster.c cgame/fx_bryarpistol.c cgame/fx_demp2.c cgame/fx_disruptor.c cgame/fx_flechette.c cgame/fx_force.c cgame/fx_heavyrepeater.c cgame/fx_rocketlauncher.c ) set(src_cgame_game game/AnimalNPC.c game/bg_g2_utils.c game/bg_lib.c game/bg_misc.c game/bg_panimate.c game/bg_pmove.c game/bg_saber.c game/bg_saberLoad.c game/bg_saga.c game/bg_slidemove.c game/bg_vehicleLoad.c game/bg_weapons.c game/FighterNPC.c game/q_math.c game/q_shared.c game/SpeederNPC.c game/WalkerNPC.c ) set(src_cgame_ui ui/ui_shared.c ) add_library(cgame${cpu} SHARED ${src_cgame_cgame} ${src_cgame_game} ${src_cgame_ui} ) set_target_properties(cgame${cpu} PROPERTIES PREFIX "") set_target_properties(cgame${cpu} PROPERTIES COMPILE_DEFINITIONS "CGAME;MISSIONPACK") set(src_game_game game/AnimalNPC.c game/FighterNPC.c game/NPC.c game/NPC_AI_Atst.c game/NPC_AI_Default.c game/NPC_AI_Droid.c game/NPC_AI_GalakMech.c game/NPC_AI_Grenadier.c game/NPC_AI_Howler.c game/NPC_AI_ImperialProbe.c game/NPC_AI_Interrogator.c game/NPC_AI_Jedi.c game/NPC_AI_Mark1.c game/NPC_AI_Mark2.c game/NPC_AI_MineMonster.c game/NPC_AI_Rancor.c game/NPC_AI_Remote.c game/NPC_AI_Seeker.c game/NPC_AI_Sentry.c game/NPC_AI_Sniper.c game/NPC_AI_Stormtrooper.c game/NPC_AI_Utils.c game/NPC_AI_Wampa.c game/NPC_behavior.c game/NPC_combat.c game/NPC_goal.c game/NPC_misc.c game/NPC_move.c game/NPC_reactions.c game/NPC_senses.c game/NPC_sounds.c game/NPC_spawn.c game/NPC_stats.c game/NPC_utils.c game/SpeederNPC.c game/WalkerNPC.c game/ai_main.c game/ai_util.c game/ai_wpnav.c game/bg_g2_utils.c game/bg_lib.c game/bg_misc.c game/bg_panimate.c game/bg_pmove.c game/bg_saber.c game/bg_saberLoad.c game/bg_saga.c game/bg_slidemove.c game/bg_vehicleLoad.c game/bg_weapons.c game/g_ICARUScb.c game/g_active.c game/g_arenas.c game/g_bot.c game/g_client.c game/g_cmds.c game/g_combat.c game/g_exphysics.c game/g_items.c game/g_log.c game/g_main.c game/g_mem.c game/g_misc.c game/g_missile.c game/g_mover.c game/g_nav.c game/g_navnew.c game/g_object.c game/g_saga.c game/g_session.c game/g_spawn.c game/g_strap.c game/g_svcmds.c game/g_syscalls.c game/g_target.c game/g_team.c game/g_timer.c game/g_trigger.c game/g_turret.c game/g_turret_G2.c game/g_utils.c game/g_vehicleTurret.c game/g_vehicles.c game/g_weapon.c game/q_math.c game/q_shared.c game/tri_coll_test.c game/w_force.c game/w_saber.c ) add_library(jampgame${cpu} SHARED ${src_game_game} ) set_target_properties(jampgame${cpu} PROPERTIES PREFIX "") set_target_properties(jampgame${cpu} PROPERTIES COMPILE_DEFINITIONS "QAGAME;MISSIONPACK")