cmake_minimum_required(VERSION 3.13)

set(EXECUTABLE_NAME fallout2-re)

project(${EXECUTABLE_NAME})

add_executable(${EXECUTABLE_NAME} WIN32
    "src/game/ability.c"
    "src/game/ability.h"
    "src/game/actions.c"
    "src/game/actions.h"
    "src/game/amutex.c"
    "src/game/amutex.h"
    "src/game/anim.c"
    "src/game/anim.h"
    "src/game/art.c"
    "src/game/art.h"
    "src/game/artload.c"
    "src/game/artload.h"
    "src/game/automap.c"
    "src/game/automap.h"
    "src/game/bmpdlog.c"
    "src/game/bmpdlog.h"
    "src/game/cache.c"
    "src/game/cache.h"
    "src/game/cd.c"
    "src/game/cd.h"
    "src/game/combat_defs.h"
    "src/game/combat.c"
    "src/game/combat.h"
    "src/game/combatai_defs.h"
    "src/game/combatai.c"
    "src/game/combatai.h"
    "src/game/config.c"
    "src/game/config.h"
    "src/game/counter.c"
    "src/game/counter.h"
    "src/game/credits.c"
    "src/game/credits.h"
    "src/game/critter.c"
    "src/game/critter.h"
    "src/game/cycle.c"
    "src/game/cycle.h"
    "src/game/diskspce.c"
    "src/game/diskspce.h"
    "src/game/display.c"
    "src/game/display.h"
    "src/game/editor.c"
    "src/game/editor.h"
    "src/game/elevator.c"
    "src/game/elevator.h"
    "src/game/endgame.c"
    "src/game/endgame.h"
    "src/game/ereg.c"
    "src/game/ereg.h"
    "src/game/fontmgr.c"
    "src/game/fontmgr.h"
    "src/game/game_vars.h"
    "src/game/game.c"
    "src/game/game.h"
    "src/game/gconfig.c"
    "src/game/gconfig.h"
    "src/game/gdebug.c"
    "src/game/gdebug.h"
    "src/game/gdialog.c"
    "src/game/gdialog.h"
    "src/game/gmemory.c"
    "src/game/gmemory.h"
    "src/game/gmouse.c"
    "src/game/gmouse.h"
    "src/game/gmovie.c"
    "src/game/gmovie.h"
    "src/game/graphlib.c"
    "src/game/graphlib.h"
    "src/game/gsound.c"
    "src/game/gsound.h"
    "src/game/gz.c"
    "src/game/gz.h"
    "src/game/heap.c"
    "src/game/heap.h"
    "src/game/intface.c"
    "src/game/intface.h"
    "src/game/inventry.c"
    "src/game/inventry.h"
    "src/game/item.c"
    "src/game/item.h"
    "src/game/light.c"
    "src/game/light.h"
    "src/game/lip_sync.c"
    "src/game/lip_sync.h"
    "src/game/loadsave.c"
    "src/game/loadsave.h"
    "src/game/main.c"
    "src/game/main.h"
    "src/game/mainmenu.c"
    "src/game/mainmenu.h"
    "src/game/map_defs.h"
    "src/game/map.c"
    "src/game/map.h"
    "src/game/message.c"
    "src/game/message.h"
    "src/game/moviefx.c"
    "src/game/moviefx.h"
    "src/game/object_types.h"
    "src/game/object.c"
    "src/game/object.h"
    "src/game/options.c"
    "src/game/options.h"
    "src/game/palette.c"
    "src/game/palette.h"
    "src/game/party.c"
    "src/game/party.h"
    "src/game/perk_defs.h"
    "src/game/perk.c"
    "src/game/perk.h"
    "src/game/pipboy.c"
    "src/game/pipboy.h"
    "src/game/protinst.c"
    "src/game/protinst.h"
    "src/game/proto_types.h"
    "src/game/proto.c"
    "src/game/proto.h"
    "src/game/queue.c"
    "src/game/queue.h"
    "src/game/reaction.c"
    "src/game/reaction.h"
    "src/game/roll.c"
    "src/game/roll.h"
    "src/game/scripts.c"
    "src/game/scripts.h"
    "src/game/select.c"
    "src/game/select.h"
    "src/game/selfrun.c"
    "src/game/selfrun.h"
    "src/game/sfxcache.c"
    "src/game/sfxcache.h"
    "src/game/sfxlist.c"
    "src/game/sfxlist.h"
    "src/game/skill_defs.h"
    "src/game/skill.c"
    "src/game/skill.h"
    "src/game/skilldex.c"
    "src/game/skilldex.h"
    "src/game/stat_defs.h"
    "src/game/stat.c"
    "src/game/stat.h"
    "src/game/strparse.c"
    "src/game/strparse.h"
    "src/game/textobj.c"
    "src/game/textobj.h"
    "src/game/tile.c"
    "src/game/tile.h"
    "src/game/trait_defs.h"
    "src/game/trait.c"
    "src/game/trait.h"
    "src/game/trap.c"
    "src/game/trap.h"
    "src/game/version.c"
    "src/game/version.h"
    "src/game/wordwrap.c"
    "src/game/wordwrap.h"
    "src/game/worldmap.c"
    "src/game/worldmap.h"
    "src/int/audio.c"
    "src/int/audio.h"
    "src/int/audiof.c"
    "src/int/audiof.h"
    "src/int/datafile.c"
    "src/int/datafile.h"
    "src/int/dialog.c"
    "src/int/dialog.h"
    "src/int/export.c"
    "src/int/export.h"
    "src/int/intlib.c"
    "src/int/intlib.h"
    "src/int/intrpret.c"
    "src/int/intrpret.h"
    "src/int/memdbg.c"
    "src/int/memdbg.h"
    "src/int/mousemgr.c"
    "src/int/mousemgr.h"
    "src/int/movie.c"
    "src/int/movie.h"
    "src/int/nevs.c"
    "src/int/nevs.h"
    "src/int/pcx.c"
    "src/int/pcx.h"
    "src/int/region.c"
    "src/int/region.h"
    "src/int/share1.c"
    "src/int/share1.h"
    "src/int/sound.c"
    "src/int/sound.h"
    "src/int/support/intextra.c"
    "src/int/support/intextra.h"
    "src/int/widget.c"
    "src/int/widget.h"
    "src/int/window.c"
    "src/int/window.h"
    "src/plib/assoc/assoc.c"
    "src/plib/assoc/assoc.h"
    "src/plib/color/color.c"
    "src/plib/color/color.h"
    "src/plib/db/db.c"
    "src/plib/db/db.h"
    "src/plib/gnw/button.c"
    "src/plib/gnw/button.h"
    "src/plib/gnw/debug.c"
    "src/plib/gnw/debug.h"
    "src/plib/gnw/doscmdln.c"
    "src/plib/gnw/doscmdln.h"
    "src/plib/gnw/dxinput.c"
    "src/plib/gnw/dxinput.h"
    "src/plib/gnw/gnw95dx.c"
    "src/plib/gnw/gnw95dx.h"
    "src/plib/gnw/grbuf.c"
    "src/plib/gnw/grbuf.h"
    "src/plib/gnw/input.c"
    "src/plib/gnw/input.h"
    "src/plib/gnw/gnw_types.h"
    "src/plib/gnw/gnw.c"
    "src/plib/gnw/gnw.h"
    "src/plib/gnw/intrface.c"
    "src/plib/gnw/intrface.h"
    "src/plib/gnw/kb.c"
    "src/plib/gnw/kb.h"
    "src/plib/gnw/memory.c"
    "src/plib/gnw/memory.h"
    "src/plib/gnw/mouse.c"
    "src/plib/gnw/mouse.h"
    "src/plib/gnw/rect.c"
    "src/plib/gnw/rect.h"
    "src/plib/gnw/svga_types.h"
    "src/plib/gnw/svga.c"
    "src/plib/gnw/svga.h"
    "src/plib/gnw/text.c"
    "src/plib/gnw/text.h"
    "src/plib/gnw/vcr.c"
    "src/plib/gnw/vcr.h"
    "src/plib/gnw/winmain.c"
    "src/plib/gnw/winmain.h"
    "src/plib/xfile/dfile.c"
    "src/plib/xfile/dfile.h"
    "src/plib/xfile/xfile.c"
    "src/plib/xfile/xfile.h"
    "src/plib/xfile/xsys_find.c"
    "src/plib/xfile/xsys_find.h"
    "src/memory_defs.h"
    "src/mmx.c"
    "src/mmx.h"
    "src/movie_lib.c"
    "src/movie_lib.h"
    "src/sound_decoder.c"
    "src/sound_decoder.h"
)

target_include_directories(${EXECUTABLE_NAME} PUBLIC src)

target_compile_definitions(${EXECUTABLE_NAME} PUBLIC
    _CRT_SECURE_NO_WARNINGS
    _CRT_NONSTDC_NO_WARNINGS
)

target_link_libraries(${EXECUTABLE_NAME}
    winmm
)

add_subdirectory("third_party/fpattern")
target_link_libraries(${EXECUTABLE_NAME} ${FPATTERN_LIBRARY})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${FPATTERN_INCLUDE_DIR})

add_subdirectory("third_party/zlib")
target_link_libraries(${EXECUTABLE_NAME} ${ZLIB_LIBRARIES})
target_include_directories(${EXECUTABLE_NAME} PRIVATE ${ZLIB_INCLUDE_DIRS})
