View Issue Details

IDProjectCategoryView StatusLast Update
0002943FSSCPBuild systempublic2021-01-09 06:28
Reporterni1s Assigned Tochief1983  
PrioritynormalSeverityfeatureReproducibilityalways
Status resolvedResolutionfixed 
Summary0002943: CMake build system files
DescriptionCMake build system files for fs2_open, fred and wxfred.

Note that these are incomplete and in some places just plain wrong.

Tested on Gentoo Linux and Windows 7(64bit)
TagsNo tags attached.

Activities

ni1s

2013-10-26 09:55

reporter  

cmake.patch (61,495 bytes)   
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..88387b6
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,66 @@
+# CMake build script files for Freespace 2 Source Code Project.
+#
+# Files:
+# CMakeLists.txt - This file.
+# toolchain-gcc.cmake - GNU/GCC toolchain configuration.
+# toolchain-msvc.cmake - Visual Studio toolchain configuration.
+# dependencies.cmake - Dependencies, does lookup on Linux and builds/imports on Windows.
+# code/CMakeLists.txt - CMakeLists.txt containing LIBCODE_SOURCES and other commons.
+#                       Includes the fred2, wxfred2 and freespace2 CMake subdirectories.
+# code/fred2/CMakeLists.txt - Fred2.
+# code/wxfred2/CMakeLists.txt - wxfred2.
+# code/freespace2/CMakeLists.txt - Freespace2.
+
+project("FSSCP" C CXX)
+
+if(MSVC)
+	set(CMAKE_CONFIGURATION_TYPES "Debug;Debug_SSE;Debug_SSE2;Debug_AVX;Release;Release_SSE;Release_SSE2;Release_AVX" CACHE STRING "Available configurations" FORCE)
+	set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+else()
+	if(NOT CMAKE_BUILD_TYPE)
+		set(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "Default build configuration used." FORCE)
+		message(WARNING "CMAKE_BUILD_TYPE was not specified, defaulting to Debug configuration.")
+	endif()
+endif()
+
+cmake_minimum_required(VERSION 2.8)
+
+set(VERSION_STRING 3_6_19)
+
+find_package(Git)
+if(GIT_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.git AND REV_VERSION)
+	set(GIT_ARGS --no-pager rev-parse --short HEAD)
+	execute_process(
+		COMMAND ${GIT_EXECUTABLE} ${GIT_ARGS}
+		WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+		OUTPUT_VARIABLE VERSION_STRING
+		OUTPUT_STRIP_TRAILING_WHITESPACE
+	)
+endif()
+
+# WARNING: Ugh ...
+macro(build_solution_tree ${ARGV0})
+	if(MSVC)
+		get_target_property(${ARGV0}_SOURCES ${ARGV0} SOURCES)
+		foreach(SOURCE_FILEPATH ${${ARGV0}_SOURCES})
+			string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/code/" "" SOURCE_LOCAL_FILEPATH ${SOURCE_FILEPATH})
+			string(REGEX REPLACE ".*/" "" SOURCE_LOCAL_FILENAME ${SOURCE_LOCAL_FILEPATH})
+			string(REGEX REPLACE "${SOURCE_LOCAL_FILENAME}" "" SOURCE_LOCAL_DIRPATH ${SOURCE_LOCAL_FILEPATH})
+			string(REGEX REPLACE "/" "\\\\\\\\" SOURCE_GROUPNAME ${SOURCE_LOCAL_DIRPATH})
+			source_group("${SOURCE_GROUPNAME}" FILES "${SOURCE_FILEPATH}")
+		endforeach(SOURCE_FILEPATH ${${ARGV0}_SOURCES})
+	endif(MSVC)
+endmacro(build_solution_tree ${ARGV0})
+
+if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+	include(toolchain-gcc.cmake)
+elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
+	include(toolchain-msvc.cmake)
+elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+	include(toolchain-clang.cmake)
+endif()
+
+include(dependencies.cmake)
+
+add_subdirectory(code)
diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
new file mode 100644
index 0000000..a9fd561
--- /dev/null
+++ b/code/CMakeLists.txt
@@ -0,0 +1,599 @@
+
+set(LIBCODE_SOURCES
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/ai.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/ai.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/ai_profiles.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/ai_profiles.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aibig.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aibig.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aicode.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aigoals.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aigoals.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aiinternal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/ailocal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ai/aiturret.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/anim/animplay.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/anim/animplay.h
+	${CMAKE_CURRENT_SOURCE_DIR}/anim/packunpack.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/anim/packunpack.h	
+	${CMAKE_CURRENT_SOURCE_DIR}/asteroid/asteroid.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/asteroid/asteroid.h
+	${CMAKE_CURRENT_SOURCE_DIR}/autopilot/autopilot.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/autopilot/autopilot.h
+	${CMAKE_CURRENT_SOURCE_DIR}/bmpman/bm_internal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/bmpman/bmpman.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/bmpman/bmpman.h
+	${CMAKE_CURRENT_SOURCE_DIR}/camera/camera.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/camera/camera.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfile.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfile.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfilearchive.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfilearchive.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfilelist.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfilesystem.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cfile/cfilesystem.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cmdline/cmdline.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cmdline/cmdline.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cmeasure/cmeasure.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cmeasure/cmeasure.h
+	${CMAKE_CURRENT_SOURCE_DIR}/controlconfig/controlsconfig.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/controlconfig/controlsconfig.h
+	${CMAKE_CURRENT_SOURCE_DIR}/controlconfig/controlsconfigcommon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/cutscenes.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/cutscenes.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/decoder16.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/decoder8.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/movie.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/movie.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/mve_audio.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/mvelib.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/mvelib.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/mveplayer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/oggplayer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cutscene/oggplayer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ddsutils/ddsutils.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ddsutils/ddsutils.h
+	${CMAKE_CURRENT_SOURCE_DIR}/debris/debris.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/debris/debris.h
+	${CMAKE_CURRENT_SOURCE_DIR}/debugconsole/console.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/debugconsole/timerbar.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/debugconsole/timerbar.h
+	${CMAKE_CURRENT_SOURCE_DIR}/exceptionhandler/exceptionhandler.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/exceptionhandler/exceptionhandler.h
+	${CMAKE_CURRENT_SOURCE_DIR}/external_dll/externalcode.h
+	${CMAKE_CURRENT_SOURCE_DIR}/external_dll/trackirglobal.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/external_dll/trackirpublic.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fireball/fireballs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fireball/fireballs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fireball/warpineffect.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/fs2netd_client.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/fs2netd_client.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/protocol.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/tcp_client.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/tcp_client.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/tcp_socket.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fs2netd/tcp_socket.h
+	${CMAKE_CURRENT_SOURCE_DIR}/gamehelp/contexthelp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/gamehelp/contexthelp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/gamehelp/gameplayhelp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/gamehelp/gameplayhelp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesequence/gamesequence.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesequence/gamesequence.h
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesnd/eventmusic.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesnd/eventmusic.h
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesnd/gamesnd.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/gamesnd/gamesnd.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/alphacolors.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/alphacolors.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/def_files.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/def_files.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/globals.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/linklist.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/profiling.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/pstypes.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/safe_strings.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/safe_strings.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/safe_strings_test.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/systemvars.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/systemvars.h
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/version.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/globalincs/version.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/2d.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/2d.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/font.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/font.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/generic.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/generic.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/grbatch.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/grbatch.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/grinternal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengl.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengl.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglbmpman.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglbmpman.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengldraw.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengldraw.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglextension.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglextension.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengllight.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengllight.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglpostprocessing.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglpostprocessing.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglshader.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglshader.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglstate.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropenglstate.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengltexture.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengltexture.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengltnl.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/gropengltnl.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/grstub.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/grstub.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/line.h
+	${CMAKE_CURRENT_SOURCE_DIR}/graphics/tmapper.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hud.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hud.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudartillery.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudartillery.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudbrackets.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudbrackets.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudconfig.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudconfig.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudescort.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudescort.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudets.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudets.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudgauges.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudlock.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudlock.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudmessage.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudmessage.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudnavigation.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudnavigation.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudobserver.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudobserver.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudparse.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudparse.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudreticle.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudreticle.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudshield.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudshield.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudsquadmsg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudsquadmsg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudtarget.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudtarget.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudtargetbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudtargetbox.h
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudwingmanstatus.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/hud/hudwingmanstatus.h
+	${CMAKE_CURRENT_SOURCE_DIR}/iff_defs/iff_defs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/iff_defs/iff_defs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/cftp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/cftp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/chttpget.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/chttpget.h
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/inetgetfile.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/inetfile/inetgetfile.h
+	${CMAKE_CURRENT_SOURCE_DIR}/io/key.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/io/key.h
+	${CMAKE_CURRENT_SOURCE_DIR}/io/keycontrol.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/io/keycontrol.h
+	${CMAKE_CURRENT_SOURCE_DIR}/io/mouse.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/io/mouse.h
+	${CMAKE_CURRENT_SOURCE_DIR}/io/timer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/io/timer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/jpgutils/jpgutils.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/jpgutils/jpgutils.h
+	${CMAKE_CURRENT_SOURCE_DIR}/jumpnode/jumpnode.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/jumpnode/jumpnode.h
+	${CMAKE_CURRENT_SOURCE_DIR}/lighting/lighting.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/lighting/lighting.h
+	${CMAKE_CURRENT_SOURCE_DIR}/localization/fhash.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/localization/fhash.h
+	${CMAKE_CURRENT_SOURCE_DIR}/localization/localize.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/localization/localize.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/fix.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/fix.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/floating.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/floating.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/fvi.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/fvi.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/spline.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/spline.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/staticrand.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/staticrand.h
+	${CMAKE_CURRENT_SOURCE_DIR}/math/vecmat.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/math/vecmat.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/barracks.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/barracks.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/credits.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/credits.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/fishtank.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/fishtank.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/mainhallmenu.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/mainhallmenu.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/mainhalltemp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/mainhalltemp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/optionsmenu.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/optionsmenu.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/optionsmenumulti.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/optionsmenumulti.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/playermenu.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/playermenu.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/readyroom.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/readyroom.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/snazzyui.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/snazzyui.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/techmenu.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/techmenu.h
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/trainingmenu.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/menuui/trainingmenu.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionbriefcommon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionbriefcommon.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missioncampaign.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missioncampaign.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiongoals.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiongoals.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiongrid.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiongrid.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionhotkey.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionhotkey.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionload.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionload.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionlog.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionlog.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionmessage.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionmessage.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionparse.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missionparse.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiontraining.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mission/missiontraining.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/chatbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/chatbox.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/fictionviewer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/fictionviewer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionbrief.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionbrief.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missioncmdbrief.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missioncmdbrief.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missiondebrief.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missiondebrief.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionloopbrief.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionloopbrief.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionpause.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionpause.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionrecommend.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionrecommend.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionscreencommon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionscreencommon.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionshipchoice.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionshipchoice.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionstats.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionstats.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionweaponchoice.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/missionweaponchoice.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/redalert.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionui/redalert.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mod_table/mod_table.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mod_table/mod_table.h
+	${CMAKE_CURRENT_SOURCE_DIR}/model/model.h
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelanim.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelanim.h
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelcollide.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelinterp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modeloctant.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelread.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/model/modelsinc.h
+	${CMAKE_CURRENT_SOURCE_DIR}/nebula/neb.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/nebula/neb.h
+	${CMAKE_CURRENT_SOURCE_DIR}/nebula/neblightning.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/nebula/neblightning.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/chat_api.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/chat_api.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_campaign.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_campaign.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_data.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_data.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_dogfight.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_dogfight.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_endgame.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_endgame.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_ingame.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_ingame.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_kick.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_kick.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_log.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_log.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_obj.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_obj.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_observer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_observer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_options.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_options.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pause.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pause.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pinfo.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pinfo.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_ping.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_ping.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pmsg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pmsg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pxo.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_pxo.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_rate.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_rate.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_respawn.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_respawn.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_sexp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_sexp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_team.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_team.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_update.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_voice.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_voice.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_xfer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multi_xfer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multilag.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multilag.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multimsgs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multimsgs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiteamselect.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiteamselect.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiui.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiui.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiutil.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/multiutil.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/psnet2.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/psnet2.h
+	${CMAKE_CURRENT_SOURCE_DIR}/network/stand_gui-unix.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/stand_gui.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/network/stand_gui.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/collidedebrisship.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/collidedebrisweapon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/collideshipship.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/collideshipweapon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/collideweaponweapon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/deadobjectdock.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/deadobjectdock.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objcollide.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objcollide.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/object.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/object.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectdock.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectdock.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectshield.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectshield.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectsnd.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectsnd.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/objectsort.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/parseobjectdock.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/parseobjectdock.h
+	${CMAKE_CURRENT_SOURCE_DIR}/object/waypoint.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/object/waypoint.h
+	${CMAKE_CURRENT_SOURCE_DIR}/observer/observer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/observer/observer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/palman/palman.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/palman/palman.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/encrypt.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/encrypt.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/generic_log.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/generic_log.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/lua.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/lua.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/parselo.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/parselo.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/scripting.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/scripting.h
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/sexp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/parse/sexp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/particle/particle.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/particle/particle.h
+	${CMAKE_CURRENT_SOURCE_DIR}/pcxutils/pcxutils.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pcxutils/pcxutils.h
+	${CMAKE_CURRENT_SOURCE_DIR}/physics/physics.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/physics/physics.h
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/csg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/csg_convert.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/pilotfile.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/pilotfile.h
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/pilotfile_convert.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/pilotfile_convert.h
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/plr.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pilotfile/plr_convert.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/playerman/managepilot.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/playerman/managepilot.h
+	${CMAKE_CURRENT_SOURCE_DIR}/playerman/player.h
+	${CMAKE_CURRENT_SOURCE_DIR}/playerman/playercontrol.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pngutils/pngutils.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/pngutils/pngutils.h
+	${CMAKE_CURRENT_SOURCE_DIR}/popup/popup.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/popup/popup.h
+	${CMAKE_CURRENT_SOURCE_DIR}/popup/popupdead.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/popup/popupdead.h
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radar.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radar.h
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radardradis.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radardradis.h
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radarorb.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radarorb.h
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radarsetup.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/radar/radarsetup.h
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3d.h
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3dclipper.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3ddraw.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3dinternal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3dlaser.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3dmath.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/render/3dsetup.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/afterburner.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/afterburner.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/awacs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/awacs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shield.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/ship.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/ship.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shipcontrails.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shipcontrails.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shipfx.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shipfx.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shiphit.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/shiphit.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship/subsysdamage.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/acm.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/acm.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/audiostr.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/audiostr.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ds.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ds.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ds3d.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ds3d.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/dscap.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/dscap.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/fsspeech.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/fsspeech.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ogg/ogg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/ogg/ogg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/openal.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/openal.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/rtvoice.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/rtvoice.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/sound.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/sound.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/speech.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/speech.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/voicerec.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sound/voicerec.h
+	${CMAKE_CURRENT_SOURCE_DIR}/species_defs/species_defs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/species_defs/species_defs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/nebula.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/nebula.h
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/starfield.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/starfield.h
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/supernova.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/starfield/supernova.h
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/medals.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/medals.h
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/scoring.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/scoring.h
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/stats.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/stats/stats.h
+	${CMAKE_CURRENT_SOURCE_DIR}/tgautils/tgautils.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/tgautils/tgautils.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/button.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/checkbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/gadget.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/icon.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/inputbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/keytrap.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/listbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/radio.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/scroll.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/slider.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/slider2.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/ui.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/uidefs.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/uidraw.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/uimouse.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ui/window.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/beam.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/beam.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/corkscrew.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/corkscrew.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/emp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/emp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/flak.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/flak.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/muzzleflash.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/muzzleflash.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/shockwave.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/shockwave.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/swarm.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/swarm.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/trails.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/trails.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/weapon.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weapon/weapons.cpp
+	# For "old" MSVC?
+	#${CMAKE_CURRENT_SOURCE_DIR}/globalincs/fsmemory.cpp
+	#${CMAKE_CURRENT_SOURCE_DIR}/globalincs/fsmemory.h
+)
+
+if(UNIX)
+	set(LIBCODE_SOURCES
+		${LIBCODE_SOURCES}
+		${CMAKE_CURRENT_SOURCE_DIR}/io/joy.h
+		${CMAKE_CURRENT_SOURCE_DIR}/io/joy_ff.h
+		${CMAKE_CURRENT_SOURCE_DIR}/io/joy-unix.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osapi_unix.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osapi.h
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osregistry_unix.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osregistry.h
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/outwnd_unix.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/outwnd.h
+		${CMAKE_CURRENT_SOURCE_DIR}/windows_stub/stubs.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/windows_stub/config.h
+	)
+elseif(MSVC)
+	set(LIBCODE_SOURCES
+		${LIBCODE_SOURCES}
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vasync.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vd3dtypes.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vddraw.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vdinput.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vdplay.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vdplobby.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vdsetup.h
+		${CMAKE_CURRENT_SOURCE_DIR}/directx/vdvp.h
+		${CMAKE_CURRENT_SOURCE_DIR}/globalincs/mspdb_callstack.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/globalincs/mspdb_callstack.h
+		${CMAKE_CURRENT_SOURCE_DIR}/globalincs/windebug.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/graphics/gl/GLAUX.h
+		${CMAKE_CURRENT_SOURCE_DIR}/graphics/gl/Glext.h
+		${CMAKE_CURRENT_SOURCE_DIR}/graphics/gl/GLU.h
+		${CMAKE_CURRENT_SOURCE_DIR}/graphics/gl/wglext.h
+		${CMAKE_CURRENT_SOURCE_DIR}/graphics/gl/Gl.h
+		${CMAKE_CURRENT_SOURCE_DIR}/io/joy.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/io/joy_ff.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/io/sw_error.hpp
+		${CMAKE_CURRENT_SOURCE_DIR}/io/sw_force.h
+		${CMAKE_CURRENT_SOURCE_DIR}/io/sw_guid.hpp
+		${CMAKE_CURRENT_SOURCE_DIR}/io/swff_lib.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/network/multi_update.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/network/multi_update.h
+		${CMAKE_CURRENT_SOURCE_DIR}/network/stand_gui.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/monopub.h
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osapi.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osapi.h
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osregistry.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/osregistry.h
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/outwnd.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/osapi/outwnd.h
+	)
+endif()
+
+# WARNING: Untested.
+option(FS2OPEN_SPEECH "Enable Text-to-Speech" FALSE)
+if(FS2OPEN_SPEECH)
+	set_source_files_properties(
+		${CMAKE_CURRENT_SOURCE_DIR}/sound/fsspeech.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/sound/fsspeech.h
+		${CMAKE_CURRENT_SOURCE_DIR}/sound/speech.cpp
+		${CMAKE_CURRENT_SOURCE_DIR}/sound/speech.h
+			PROPERTIES
+				COMPILE_DEFINITIONS "FS2_SPEECH"
+	)
+endif(FS2OPEN_SPEECH)
+
+add_subdirectory(freespace2)
+
+find_package(MFC)
+if(MFC_FOUND)
+	add_subdirectory(fred2)
+endif(MFC_FOUND)
+
+find_package(wxWidgets COMPONENTS gl core base)
+if(wxWidgets_FOUND)
+	add_subdirectory(wxfred2)
+endif(wxWidgets_FOUND)
diff --git a/code/fred2/CMakeLists.txt b/code/fred2/CMakeLists.txt
new file mode 100644
index 0000000..2e251a4
--- /dev/null
+++ b/code/fred2/CMakeLists.txt
@@ -0,0 +1,209 @@
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+
+set(FRED2_SOURCES
+	${CMAKE_CURRENT_SOURCE_DIR}/altshipclassdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/altshipclassdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fictionviewerdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fictionviewerdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/addvariabledlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/addvariabledlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/adjustgriddlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/adjustgriddlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/asteroideditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/asteroideditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/backgroundchooser.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/backgroundchooser.h
+	${CMAKE_CURRENT_SOURCE_DIR}/bgbitmapdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/bgbitmapdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/briefingeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/briefingeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigneditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigneditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/campaignfilelistbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/campaignfilelistbox.h
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigntreeview.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigntreeview.h
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigntreewnd.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/campaigntreewnd.h
+	${CMAKE_CURRENT_SOURCE_DIR}/cmdbrief.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/cmdbrief.h
+	${CMAKE_CURRENT_SOURCE_DIR}/createwingdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/createwingdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/customwingnames.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/customwingnames.h
+	${CMAKE_CURRENT_SOURCE_DIR}/debriefingeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/debriefingeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/dialog1.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/dialog1.h
+	${CMAKE_CURRENT_SOURCE_DIR}/dumpstats.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/dumpstats.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/eventeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/eventeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/folderdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/folderdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fred.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fred.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fred.rc
+	${CMAKE_CURRENT_SOURCE_DIR}/freddoc.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/freddoc.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fredrender.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fredrender.h
+	${CMAKE_CURRENT_SOURCE_DIR}/fredstubs.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fredview.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/fredview.h
+	${CMAKE_CURRENT_SOURCE_DIR}/grid.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/grid.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ignoreordersdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ignoreordersdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/initialships.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/initialships.h
+	${CMAKE_CURRENT_SOURCE_DIR}/initialstatus.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/initialstatus.h
+	${CMAKE_CURRENT_SOURCE_DIR}/mainfrm.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/mainfrm.h
+	${CMAKE_CURRENT_SOURCE_DIR}/management.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/management.h
+	${CMAKE_CURRENT_SOURCE_DIR}/messageeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/messageeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missiongoalsdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missiongoalsdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionnotesdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionnotesdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/missionsave.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/missionsave.h
+	${CMAKE_CURRENT_SOURCE_DIR}/modifyvariabledlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/modifyvariabledlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/operatorargtypeselect.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/operatorargtypeselect.h
+	${CMAKE_CURRENT_SOURCE_DIR}/orienteditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/orienteditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/playerstarteditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/playerstarteditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/prefsdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/prefsdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/reinforcementeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/reinforcementeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/resource.h
+	${CMAKE_CURRENT_SOURCE_DIR}/restrictpaths.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/restrictpaths.h
+	${CMAKE_CURRENT_SOURCE_DIR}/setglobalshipflags.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/setglobalshipflags.h
+	${CMAKE_CURRENT_SOURCE_DIR}/sexp_tree.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/sexp_tree.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shieldsysdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shieldsysdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/ship_select.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/ship_select.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipchecklistbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipchecklistbox.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipclasseditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipclasseditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipflagsdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipflagsdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipgoalsdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipgoalsdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipspecialdamage.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipspecialdamage.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shipspecialhitpoints.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shipspecialhitpoints.h
+	${CMAKE_CURRENT_SOURCE_DIR}/shiptexturesdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/shiptexturesdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/soundenvironmentdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/soundenvironmentdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/starfieldeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/starfieldeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/stdafx.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h
+	${CMAKE_CURRENT_SOURCE_DIR}/textviewdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/textviewdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/voiceactingmanager.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/voiceactingmanager.h
+	${CMAKE_CURRENT_SOURCE_DIR}/waypointpathdlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/waypointpathdlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/weaponeditordlg.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/weaponeditordlg.h
+	${CMAKE_CURRENT_SOURCE_DIR}/wing.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/wing.h
+	${CMAKE_CURRENT_SOURCE_DIR}/wing_editor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/wing_editor.h
+)
+
+set_source_files_properties(
+	${CMAKE_CURRENT_SOURCE_DIR}/fred.rc
+		PROPERTIES
+			LANGUAGE RC
+)
+
+set(CMAKE_MFC_FLAG 1)
+
+add_executable(fred2 WIN32 ${LIBCODE_SOURCES} ${FRED2_SOURCES})
+build_solution_tree(fred2)
+
+set_target_properties(fred2 PROPERTIES
+	COMPILE_DEFINITIONS_RELEASE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE2 "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_AVX "NDEBUG"
+	COMPILE_DEFINITIONS_DEBUG "_DEBUG;PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	COMPILE_DEFINITIONS_DEBUG_SSE "_DEBUG;PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	COMPILE_DEFINITIONS_DEBUG_SSE2 "_DEBUG;PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	COMPILE_DEFINITIONS_DEBUG_AVX "_DEBUG;PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	RELEASE_POSTFIX "_${VERSION_STRING}"
+	RELEASE_SSE_POSTFIX "_${VERSION_STRING}-SSE"
+	RELEASE_SSE2_POSTFIX "_${VERSION_STRING}-SSE2"
+	RELEASE_AVX_POSTFIX "_${VERSION_STRING}-AVX"
+	DEBUG_POSTFIX "_${VERSION_STRING}-DEBUG"
+	DEBUG_SSE_POSTFIX "_${VERSION_STRING}-DEBUG-SSE"
+	DEBUG_SSE2_POSTFIX "_${VERSION_STRING}-DEBUG-SSE2"
+	DEBUG_AVX_POSTFIX "_${VERSION_STRING}-DEBUG-AVX"
+)
+
+add_definitions(
+	/DFRED
+	/DWINVER=0x0501
+	/D_WIN32_WINNT=0x0501
+	/D_WINDOWS
+	/DWIN32
+	/D_CRT_SECURE_NO_DEPRECATE
+	/D_SECURE_SCL=0
+)
+include_directories(
+	${PROJECT_SOURCE_DIR}/code
+	${JPEG_INCLUDE_DIR}
+	${LUA_INCLUDE_DIR}
+	${OPENAL_INCLUDE_DIR}
+	${PNG_INCLUDE_DIR}
+	${ZLIB_INCLUDE_DIR}
+	${OGG_INCLUDE_DIRS}
+	${VORBIS_INCLUDE_DIRS}
+	${VORBISFILE_INCLUDE_DIRS}
+	${THEROA_INCLUDE_DIRS}
+)
+target_link_libraries(fred2
+	ogg
+	vorbis
+	vorbisfile
+	theora
+	zlib
+	png
+	lua
+	jpeg
+	openal
+	${DIRECTX_LIBRARIRES}
+	debug "nafxcwd.lib"
+	optimized "nafxcw.lib"
+)
+# NOTE: This doesn't work with the NMake generator.
+list(APPEND CMAKE_CXX_STANDARD_LIBRARIES
+	comctl32.lib
+	msacm32.lib
+	odbc32.lib
+	odbccp32.lib
+	vfw32.lib
+	winmm.lib
+	wsock32.lib
+)
diff --git a/code/freespace2/CMakeLists.txt b/code/freespace2/CMakeLists.txt
new file mode 100644
index 0000000..d2f11aa
--- /dev/null
+++ b/code/freespace2/CMakeLists.txt
@@ -0,0 +1,109 @@
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+
+set(FS2OPEN_SOURCES
+	${CMAKE_CURRENT_SOURCE_DIR}/freespace.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/freespace.h
+	${CMAKE_CURRENT_SOURCE_DIR}/freespace.rc
+	${CMAKE_CURRENT_SOURCE_DIR}/freespaceresource.h
+	${CMAKE_CURRENT_SOURCE_DIR}/levelpaging.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/levelpaging.h
+	${PROJECT_SOURCE_DIR}/code/lab/lab.cpp
+	${PROJECT_SOURCE_DIR}/code/lab/lab.h
+	${PROJECT_SOURCE_DIR}/code/lab/wmcgui.cpp
+	${PROJECT_SOURCE_DIR}/code/lab/wmcgui.h
+)
+
+add_executable(fs2_open WIN32 ${LIBCODE_SOURCES} ${FS2OPEN_SOURCES})
+build_solution_tree(fs2_open)
+
+set_target_properties(fs2_open PROPERTIES
+	COMPILE_DEFINITIONS_RELEASE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE2 "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_AVX "NDEBUG"
+	COMPILE_DEFINITIONS_DEBUG "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_SSE "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_SSE2 "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_AVX "_DEBUG"
+	RELEASE_POSTFIX "_${VERSION_STRING}"
+	RELEASE_SSE_POSTFIX "_${VERSION_STRING}-SSE"
+	RELEASE_SSE2_POSTFIX "_${VERSION_STRING}-SSE2"
+	RELEASE_AVX_POSTFIX "_${VERSION_STRING}-AVX"
+	DEBUG_POSTFIX "_${VERSION_STRING}-DEBUG"
+	DEBUG_SSE_POSTFIX "_${VERSION_STRING}-DEBUG-SSE"
+	DEBUG_SSE2_POSTFIX "_${VERSION_STRING}-DEBUG-SSE2"
+	DEBUG_AVX_POSTFIX "_${VERSION_STRING}-DEBUG-AVX"
+)
+include_directories(fs2_open PUBLIC
+	${PROJECT_SOURCE_DIR}/code
+	${JPEG_INCLUDE_DIR}
+	${LUA_INCLUDE_DIR}
+	${OPENAL_INCLUDE_DIR}
+	${PNG_INCLUDE_DIR}
+	${OGG_INCLUDE_DIRS}
+	${VORBIS_INCLUDE_DIRS}
+	${VORBISFILE_INCLUDE_DIRS}
+	${THEROA_INCLUDE_DIRS}
+	${ZLIB_INCLUDE_DIR}
+)
+
+if(UNIX)
+	add_definitions(
+		-DSCP_UNIX
+		-DLUA_USE_LINUX
+	)
+	include_directories(
+		${OPENGL_INCLUDE_DIR}
+		${SDL_INCLUDE_DIR}
+	)
+	target_link_libraries(fs2_open
+		${OGG_LIBRARIES}
+		${OPENGL_LIBRARY}
+		${SDL_LIBRARY}
+		${THEORA_LIBRARIES}
+		${VORBISFILE_LIBRARIES}
+		${VORBIS_LIBRARIES}
+		${JPEG_LIBRARY}
+		${LUA_LIBRARY}
+		${PNG_LIBRARY}
+		${OPENAL_LIBRARY}
+	)
+elseif(MSVC)
+	add_definitions(
+		/D_WINDOWS
+		/DWIN32
+		/D_CRT_SECURE_NO_DEPRECATE
+		/D_CRT_SECURE_NO_WARNINGS
+		/D_SECURE_SCL=0
+		/DUSE_OPENAL
+	)
+	target_link_libraries(fs2_open
+		ogg
+		vorbis
+		vorbisfile
+		theora
+		zlib
+		png
+		lua
+		jpeg
+		openal
+		${DIRECTX_LIBRARIRES}
+	)
+	# NOTE: This doesn't work with the NMake generator.
+	list(APPEND CMAKE_CXX_STANDARD_LIBRARIES
+		comctl32.lib
+		msacm32.lib
+		odbc32.lib
+		odbccp32.lib
+		vfw32.lib
+		winmm.lib
+		wsock32.lib
+	)
+	set_target_properties(fs2_open PROPERTIES
+		COMPILE_DEFINITIONS_DEBUG "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_SSE "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_SSE2 "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_AVX "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	)
+endif()
\ No newline at end of file
diff --git a/code/wxfred2/CMakeLists.txt b/code/wxfred2/CMakeLists.txt
new file mode 100644
index 0000000..16f375e
--- /dev/null
+++ b/code/wxfred2/CMakeLists.txt
@@ -0,0 +1,187 @@
+
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+
+set(WXFRED2_SOURCES
+	${CMAKE_CURRENT_SOURCE_DIR}/res/select.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/constz.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/constx.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/selectrot.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/constyz.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/constxy.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/wingform.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/zoomsel.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/constxz.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/consty.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/wingdisband.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/showdist.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/orbitsel.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/zoomext.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/rotlocal.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/selectmove.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/selectlock.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/res/selectlist.png.h
+	${CMAKE_CURRENT_SOURCE_DIR}/base/wxfred_base.h
+	${CMAKE_CURRENT_SOURCE_DIR}/base/wxfred_base.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgobjecteditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgobjecteditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgvoiceactingmanager.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmdebriefingeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgbackgroundeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgmissionobjectiveseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmbriefingeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmteamloadouteditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgmissionobjectiveseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgmissionspecseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmdebriefingeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgfictionviewer.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgvoiceactingmanager.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgsoundenvironment.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmcommandbriefingeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmbriefingeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgshieldsystemeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgreinforcementseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgeventseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmteamloadouteditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmcommandbriefingeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmwaypointeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgasteroidfieldeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgsetglobalshipflagseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgshieldsystemeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmshipseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgfictionviewer.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgreinforcementspicker.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmcampaigneditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgasteroidfieldeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgreinforcementspicker.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgreinforcementseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmcampaigneditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgbackgroundeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmshipseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgeventseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgsetglobalshipflagseditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmwingeditor.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmwingeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/frmwaypointeditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgsoundenvironment.h
+	${CMAKE_CURRENT_SOURCE_DIR}/editors/dlgmissionspecseditor.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/glcviewport.h
+	${CMAKE_CURRENT_SOURCE_DIR}/misc/dlgmissionstats.h
+	${CMAKE_CURRENT_SOURCE_DIR}/misc/dlgmissionstats.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/wxfred2.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/wxfred2.h
+	${CMAKE_CURRENT_SOURCE_DIR}/help/dlgsexphelp.h
+	${CMAKE_CURRENT_SOURCE_DIR}/help/dlgsexphelp.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/help/dlgaboutbox.h
+	${CMAKE_CURRENT_SOURCE_DIR}/help/dlgaboutbox.cpp
+	${CMAKE_CURRENT_SOURCE_DIR}/frmfred2.h
+	${CMAKE_CURRENT_SOURCE_DIR}/frmfred2.cpp
+)
+
+include(${wxWidgets_USE_FILE})
+
+add_executable(wxfred2 WIN32 ${WXFRED2_SOURCES})
+build_solution_tree(wxfred2)
+
+set_target_properties(wxfred2
+	PROPERTIES
+	COMPILE_DEFINITIONS_RELEASE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_SSE2 "NDEBUG"
+	COMPILE_DEFINITIONS_RELEASE_AVX "NDEBUG"
+	COMPILE_DEFINITIONS_DEBUG "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_SSE "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_SSE2 "_DEBUG"
+	COMPILE_DEFINITIONS_DEBUG_AVX "_DEBUG"
+	RELEASE_POSTFIX "_${VERSION_STRING}"
+	RELEASE_SSE_POSTFIX "_${VERSION_STRING}-SSE"
+	RELEASE_SSE2_POSTFIX "_${VERSION_STRING}-SSE2"
+	RELEASE_AVX_POSTFIX "_${VERSION_STRING}-AVX"
+	DEBUG_POSTFIX "_${VERSION_STRING}-DEBUG"
+	DEBUG_SSE_POSTFIX "_${VERSION_STRING}-DEBUG-SSE"
+	DEBUG_SSE2_POSTFIX "_${VERSION_STRING}-DEBUG-SSE2"
+	DEBUG_AVX_POSTFIX "_${VERSION_STRING}-DEBUG-AVX"
+)
+add_definitions(
+	-DFRED
+)
+include_directories(
+	${PROJECT_SOURCE_DIR}/code
+	${CMAKE_CURRENT_SOURCE_DIR}
+	${JPEG_INCLUDE_DIR}
+	${LUA_INCLUDE_DIR}
+	${OPENAL_INCLUDE_DIR}
+	${PNG_INCLUDE_DIR}
+	${ZLIB_INCLUDE_DIR}
+	${OGG_INCLUDE_DIRS}
+	${VORBIS_INCLUDE_DIRS}
+	${VORBISFILE_INCLUDE_DIRS}
+	${THEROA_INCLUDE_DIRS}
+	${wxWidgets_INCLUDE_DIRS}
+)
+target_link_libraries(wxfred2
+	${wxWidgets_LIBRARIES}
+)
+
+if(UNIX)
+	add_definitions(
+		-DSCP_UNIX
+		-DLUA_USE_LINUX
+	)
+	include_directories(
+		${OPENGL_INCLUDE_DIR}
+		${SDL_INCLUDE_DIR}
+	)
+	target_link_libraries(wxfred2
+		${OGG_LIBRARIES}
+		${OPENGL_LIBRARY}
+		${SDL_LIBRARY}
+		${THEORA_LIBRARIES}
+		${VORBISFILE_LIBRARIES}
+		${VORBIS_LIBRARIES}
+		${JPEG_LIBRARY}
+		${LUA_LIBRARY}
+		${PNG_LIBRARY}
+		${OPENAL_LIBRARY}
+	)
+	set_target_properties(wxfred2
+		PROPERTIES
+			EXCLUDE_FROM_ALL TRUE
+	)
+elseif(MSVC)
+	set(wxWidgets_CONFIGURATION "mswu" CACHE STRING "Release WxWidgets configuration" FORCE)
+
+	add_definitions(
+		/DWINVER=0x0501
+		/D_WIN32_WINNT=0x0501
+		/D_WINDOWS
+		/DWIN32
+	)
+	target_link_libraries(wxfred2
+		ogg
+		vorbis
+		vorbisfile
+		theora
+		zlib
+		png
+		lua
+		jpeg
+		openal
+		${DIRECTX_LIBRARIRES}
+	)
+	# NOTE: This doesn't work with the NMake generator.
+	list(APPEND CMAKE_CXX_STANDARD_LIBRARIES
+		comctl32.lib
+		msacm32.lib
+		odbc32.lib
+		odbccp32.lib
+		vfw32.lib
+		winmm.lib
+		wsock32.lib
+	)
+	set_target_properties(fs2_open PROPERTIES
+		COMPILE_DEFINITIONS_DEBUG "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_SSE "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_SSE2 "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+		COMPILE_DEFINITIONS_DEBUG_AVX "PDB_DEBUGGING=1;_HAS_ITERATOR_DEBUGGING=0"
+	)
+endif()
diff --git a/dependencies.cmake b/dependencies.cmake
new file mode 100644
index 0000000..6c1829a
--- /dev/null
+++ b/dependencies.cmake
@@ -0,0 +1,244 @@
+# Dependencies
+if(UNIX)
+	find_package(JPEG REQUIRED)
+	find_package(Lua51 REQUIRED)
+	find_package(OpenAL REQUIRED)
+	find_package(OpenGL REQUIRED)
+	find_package(PNG REQUIRED)
+	find_package(SDL REQUIRED)
+	find_package(PkgConfig REQUIRED)
+	pkg_check_modules(OGG REQUIRED ogg)
+	pkg_check_modules(THEORA REQUIRED theora)
+	pkg_check_modules(VORBIS REQUIRED vorbis)
+	pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
+elseif(MSVC)
+	# JPEG
+	add_library(jpeg STATIC
+		libjpeg/jaricom.c
+		libjpeg/jcapimin.c
+		libjpeg/jcapistd.c
+		libjpeg/jcomapi.c
+		libjpeg/jconfig.h
+		libjpeg/jcparam.c
+		libjpeg/jctrans.c
+		libjpeg/jdapimin.c
+		libjpeg/jdapistd.c
+		libjpeg/jdarith.c
+		libjpeg/jdatasrc.c
+		libjpeg/jdcoefct.c
+		libjpeg/jdcolor.c
+		libjpeg/jdct.h
+		libjpeg/jddctmgr.c
+		libjpeg/jdhuff.c
+		libjpeg/jdinput.c
+		libjpeg/jdmainct.c
+		libjpeg/jdmarker.c
+		libjpeg/jdmaster.c
+		libjpeg/jdmerge.c
+		libjpeg/jdpostct.c
+		libjpeg/jdsample.c
+		libjpeg/jdtrans.c
+		libjpeg/jerror.c
+		libjpeg/jerror.h
+		libjpeg/jidctflt.c
+		libjpeg/jidctfst.c
+		libjpeg/jidctint.c
+		libjpeg/jinclude.h
+		libjpeg/jmemmgr.c
+		libjpeg/jmemnobs.c
+		libjpeg/jmemsys.h
+		libjpeg/jmorecfg.h
+		libjpeg/jpegint.h
+		libjpeg/jpeglib.h
+		libjpeg/jquant1.c
+		libjpeg/jquant2.c
+		libjpeg/jutils.c
+		libjpeg/jversion.h
+	)
+	set_target_properties(jpeg
+		PROPERTIES
+			COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS
+	)
+	set(JPEG_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/libjpeg")
+
+	# zlib
+	add_library(zlib STATIC
+		zlib/adler32.c
+		zlib/compress.c
+		zlib/crc32.c
+		zlib/crc32.h
+		zlib/deflate.c
+		zlib/deflate.h
+		zlib/infback.c
+		zlib/inffast.c
+		zlib/inffast.h
+		zlib/inffixed.h
+		zlib/inflate.c
+		zlib/inflate.h
+		zlib/inftrees.c
+		zlib/inftrees.h
+		zlib/trees.c
+		zlib/trees.h
+		zlib/uncompr.c
+		zlib/zconf.h
+		zlib/zlib.h
+		zlib/zutil.c
+		zlib/zutil.h
+	)
+	set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/zlib")
+
+	# PNG
+	add_library(png STATIC
+		libpng/png.c
+		libpng/png.h
+		libpng/pngconf.h
+		libpng/pngdebug.h
+		libpng/pngerror.c
+		libpng/pngget.c
+		libpng/pnginfo.h
+		libpng/pnglibconf.h
+		libpng/pngmem.c
+		libpng/pngpread.c
+		libpng/pngpriv.h
+		libpng/pngread.c
+		libpng/pngrio.c
+		libpng/pngrtran.c
+		libpng/pngrutil.c
+		libpng/pngset.c
+		libpng/pngstruct.h
+		libpng/pngtrans.c
+		libpng/pngwio.c
+		libpng/pngwrite.c
+		libpng/pngwtran.c
+		libpng/pngwutil.c
+	)
+	set_target_properties(png
+		PROPERTIES
+			COMPILE_DEFINITIONS _CRT_SECURE_NO_WARNINGS
+			COMPILE_DEFINITIONS_DEBUG PNG_DEBUG=1
+			INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIR}"
+	)
+	set(PNG_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/libpng")
+
+	# Lua 5.1
+	add_library(lua STATIC
+		lua/lapi.c
+		lua/lapi.h
+		lua/lauxlib.c
+		lua/lauxlib.h
+		lua/lbaselib.c
+		lua/lcode.c
+		lua/lcode.h
+		lua/ldblib.c
+		lua/ldebug.c
+		lua/ldebug.h
+		lua/ldo.c
+		lua/ldo.h
+		lua/ldump.c
+		lua/lfunc.c
+		lua/lfunc.h
+		lua/lgc.c
+		lua/lgc.h
+		lua/linit.c
+		lua/liolib.c
+		lua/llex.c
+		lua/llex.h
+		lua/llimits.h
+		lua/lmathlib.c
+		lua/lmem.c
+		lua/lmem.h
+		lua/loadlib.c
+		lua/lobject.c
+		lua/lobject.h
+		lua/lopcodes.c
+		lua/lopcodes.h
+		lua/loslib.c
+		lua/lparser.c
+		lua/lparser.h
+		lua/lstate.c
+		lua/lstate.h
+		lua/lstring.c
+		lua/lstring.h
+		lua/lstrlib.c
+		lua/ltable.c
+		lua/ltable.h
+		lua/ltablib.c
+		lua/ltm.c
+		lua/ltm.h
+		lua/lua.h
+		lua/luaconf.h
+		lua/lualib.h
+		lua/lundump.c
+		lua/lundump.h
+		lua/lvm.c
+		lua/lvm.h
+		lua/lzio.c
+		lua/lzio.h
+		lua/print.c
+	)
+	set_target_properties(lua
+		PROPERTIES
+			COMPILE_FLAGS _CRT_SECURE_NO_WARNINGS
+	)
+	set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua")
+
+	set_target_properties(jpeg png lua zlib
+		PROPERTIES
+			COMPILE_FLAGS "/W0"
+			FOLDER "3rdparty"
+			STATIC_LIBRARY_FLAGS "/LTCG"
+	)
+
+	# Ogg
+	add_library(ogg STATIC IMPORTED)
+	set_target_properties(ogg
+		PROPERTIES
+			IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/oggvorbis/lib/ogg_static.lib
+			IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/oggvorbis/lib/ogg_static_d.lib
+	)
+	set(OGG_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/oggvorbis/include")
+
+	# Vorbis
+	add_library(vorbis STATIC IMPORTED)
+	set_target_properties(vorbis
+		PROPERTIES
+			IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/oggvorbis/lib/vorbis_static.lib
+			IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/oggvorbis/lib/vorbis_static_d.lib
+	)
+	set(VORBIS_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/oggvorbis/include")
+
+	# Vorbisfile
+	add_library(vorbisfile STATIC IMPORTED)
+	set_target_properties(vorbisfile
+		PROPERTIES
+			IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/oggvorbis/lib/vorbisfile_static.lib
+			IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/oggvorbis/lib/vorbisfile_static_d.lib
+	)
+	set(VORBISFILE_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/oggvorbis/include")
+
+	# Theora
+	add_library(theora STATIC IMPORTED)
+	set_target_properties(theora
+		PROPERTIES
+			IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/oggvorbis/lib/theora_static.lib
+			IMPORTED_LOCATION_DEBUG ${PROJECT_SOURCE_DIR}/oggvorbis/lib/theora_static_d.lib
+	)
+	set(THEORA_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/oggvorbis/include")
+
+	# OpenAL
+	add_library(openal STATIC IMPORTED)
+	set_target_properties(openal
+		PROPERTIES
+			IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/openal/libs/win32/openal32.lib
+	)
+	set(OPENAL_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/openal/include")
+
+	# Various DirectX bits.
+	list(APPEND DIRECTX_LIBRARIRES
+		${PROJECT_SOURCE_DIR}/code/directx/dxguid.lib
+		${PROJECT_SOURCE_DIR}/code/directx/strmiids.lib
+		${PROJECT_SOURCE_DIR}/code/directx/vdinput.lib
+		${PROJECT_SOURCE_DIR}/code/directx/vdsound.lib
+	)
+
+endif()
\ No newline at end of file
diff --git a/toolchain-clang.cmake b/toolchain-clang.cmake
new file mode 100644
index 0000000..4b82804
--- /dev/null
+++ b/toolchain-clang.cmake
@@ -0,0 +1,35 @@
+# Clang
+
+unset(CMAKE_CXX_FLAGS)
+if(DEFINED ENV{CXXFLAGS})
+	set(CMAKE_CXX_FLAGS $ENV{CXXFLAGS})
+endif(DEFINED ENV{CXXFLAGS})
+
+if(NOT CMAKE_CXX_FLAGS)
+	if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+		set(CMAKE_CXX_FLAGS "-march=i686 -mtune=generic -mfpmath=sse -msse -msse2 -ansi")
+	elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+		set(CMAKE_CXX_FLAGS "-m64 -march=x86-64 -mtune=generic -msse -msse2 -ansi")
+	endif()
+endif(NOT CMAKE_CXX_FLAGS)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+
+# Omit "argument unused during compilation" when clang is used with ccache.
+if(${CMAKE_CXX_COMPILER} MATCHES "ccache")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments")
+endif()
+# Omit "conversion from string literal to 'char *' is deprecated" warnings.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-writable-strings")
+# Omit "unknown pragma ignored" warnings.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
+# Omit "... antiquated header ..." warnings. This is caused by clang's usage of GNU/GCC's hash_map.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
+
+set(CMAKE_CXX_FLAGS_RELEASE "-O2")
+
+set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wextra -Wshadow")
+set(CMAKE_EXE_LINKER_FLAGS "-Wl,-O1 -Wl,--as-needed")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-Wl,--strip-all")
diff --git a/toolchain-gcc.cmake b/toolchain-gcc.cmake
new file mode 100644
index 0000000..9dc3aa6
--- /dev/null
+++ b/toolchain-gcc.cmake
@@ -0,0 +1,27 @@
+# GCC
+
+unset(CMAKE_CXX_FLAGS)
+if(DEFINED ENV{CXXFLAGS})
+	set(CMAKE_CXX_FLAGS $ENV{CXXFLAGS})
+endif(DEFINED ENV{CXXFLAGS})
+
+if(NOT CMAKE_CXX_FLAGS)
+	if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+		set(CMAKE_CXX_FLAGS "-march=i686 -mtune=generic -mfpmath=sse -msse -msse2 -ansi")
+	elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
+		set(CMAKE_CXX_FLAGS "-m64 -march=x86-64 -mtune=generic -msse -msse2 -ansi")
+	endif()
+endif(NOT CMAKE_CXX_FLAGS)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -funroll-loops -fsigned-char")
+
+# Omit "deprecated conversion from string constant to 'char*'" warnings.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings")
+# Omit "unused parameter 'foo'" warnings.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
+
+set(CMAKE_CXX_FLAGS_RELEASE "-O2")
+
+set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wextra -Wshadow")
+set(CMAKE_EXE_LINKER_FLAGS "-Wl,-O1 -Wl,--as-needed")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-Wl,--strip-all")
diff --git a/toolchain-msvc.cmake b/toolchain-msvc.cmake
new file mode 100644
index 0000000..63d4c66
--- /dev/null
+++ b/toolchain-msvc.cmake
@@ -0,0 +1,48 @@
+# Visual Studio
+
+set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS Debug Debug_SSE Debug_SSE2 Debug_AVX)
+
+# Base
+set(CMAKE_C_FLAGS "/MP /GS- /analyze- /Zc:wchar_t /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo")
+set(CMAKE_CXX_FLAGS "/MP  /GS- /analyze- /Zc:wchar_t /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo")
+set(CMAKE_EXE_LINKER_FLAGS "/MANIFEST /DYNAMICBASE:NO /MAPINFO:EXPORTS /SAFESEH:NO /MANIFESTUAC:NO /ERRORREPORT:PROMPT /NOLOGO")
+
+# Release
+set(CMAKE_C_FLAGS_RELEASE "/GL /W2 /Gy- /Zi /O2 /Ob2 /fp:fast /GF /Oy /Oi /MT")
+set(CMAKE_CXX_FLAGS_RELEASE "/GL /W2 /Gy- /Zi /O2 /Ob2 /fp:fast /GF /Oy /Oi /MT")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /INCREMENTAL:NO /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libci.lib")
+
+# Release SSE
+set(CMAKE_C_FLAGS_RELEASE_SSE "${CMAKE_C_FLAGS_RELEASE} /arch:SSE")
+set(CMAKE_CXX_FLAGS_RELEASE_SSE "${CMAKE_CXX_FLAGS_RELEASE} /arch:SSE")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE_SSE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
+
+# Release SSE2
+set(CMAKE_C_FLAGS_RELEASE_SSE2 "${CMAKE_C_FLAGS_RELEASE} /arch:SSE2")
+set(CMAKE_CXX_FLAGS_RELEASE_SSE2 "${CMAKE_CXX_FLAGS_RELEASE} /arch:SSE2")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE_SSE2 "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
+
+# Release AVX
+set(CMAKE_C_FLAGS_RELEASE_AVX "${CMAKE_C_FLAGS_RELEASE} /arch:AVX")
+set(CMAKE_CXX_FLAGS_RELEASE_AVX "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX")
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE_AVX "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
+
+# Debug
+set(CMAKE_C_FLAGS_DEBUG "/W4 /Gy /ZI /Od /RTC1 /Gd /Oy- /MTd")
+set(CMAKE_CXX_FLAGS_DEBUG "/W4 /Gy /ZI /Od /RTC1 /Gd /Oy- /MTd")
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG /INCREMENTAL /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libci.lib")
+
+# Debug SSE
+set(CMAKE_C_FLAGS_DEBUG_SSE "${CMAKE_C_FLAGS_DEBUG} /arch:SSE")
+set(CMAKE_CXX_FLAGS_DEBUG_SSE "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE")
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG_SSE "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+
+# Debug SSE2
+set(CMAKE_C_FLAGS_DEBUG_SSE2 "${CMAKE_C_FLAGS_DEBUG} /arch:SSE2")
+set(CMAKE_CXX_FLAGS_DEBUG_SSE2 "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE2")
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG_SSE2 "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+
+# Debug AVX
+set(CMAKE_C_FLAGS_DEBUG_AVX "${CMAKE_C_FLAGS_DEBUG} /arch:AVX")
+set(CMAKE_CXX_FLAGS_DEBUG_AVX "${CMAKE_CXX_FLAGS_DEBUG} /arch:AVX")
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG_AVX "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
\ No newline at end of file
cmake.patch (61,495 bytes)   

ni1s

2013-10-28 19:54

reporter   ~0015370

Git repo for this: https://github.com/nisselarsson/fs2_open_patchbucket.git

chief1983

2014-06-04 19:05

administrator   ~0015791

Another competitor now is https://github.com/asarium/fs2open.github.com/tree/cmake

FSCyborg

2021-01-09 06:28

developer   ~0017045

We finished these files a long time ago.

Issue History

Date Modified Username Field Change
2013-10-26 09:55 ni1s New Issue
2013-10-26 09:55 ni1s Status new => assigned
2013-10-26 09:55 ni1s Assigned To => chief1983
2013-10-26 09:55 ni1s File Added: cmake.patch
2013-10-28 19:54 ni1s Note Added: 0015370
2014-06-04 19:05 chief1983 Note Added: 0015791
2021-01-09 06:28 FSCyborg Status assigned => resolved
2021-01-09 06:28 FSCyborg Resolution open => fixed
2021-01-09 06:28 FSCyborg Note Added: 0017045