configure_file(${hedgewars_SOURCE_DIR}/hedgewars/proto.inc.in
${hedgewars_SOURCE_DIR}/hedgewars/proto.inc)
set(dcc32_tryexe dcc32.exe)
set(fpc_tryexe fpc)
set(hwengine_project "hwengine.dpr")
set(engine_sources
${hwengine_project}
SDLh.pas
uAI.pas
uAIActions.pas
uAIAmmoTests.pas
uAIMisc.pas
uAIThinkStack.pas
uAmmos.pas
uCollisions.pas
uConsole.pas
uConsts.pas
uGame.pas
uGears.pas
uIO.pas
uKeys.pas
uLand.pas
uLandGraphics.pas
uLandObjects.pas
uLandTemplates.pas
uLocale.pas
uMisc.pas
uRandom.pas
uSound.pas
uStore.pas
uTeams.pas
uWorld.pas
CCHandlers.inc
GSHandlers.inc
HHHandlers.inc
options.inc
proto.inc
tunsetborder.inc
)
find_program(dcc32_executable ${dcc32_tryexe})
find_program(fpc_executable ${fpc_tryexe})
if (dcc32_executable)
exec_program(${dcc32_executable} ARGS "--version" OUTPUT_VARIABLE dcc32_output)
endif (dcc32_executable)
if (fpc_executable)
exec_program(${fpc_executable} ARGS "-h" OUTPUT_VARIABLE fpc_output)
endif (fpc_executable)
string(REGEX MATCH "[0-9]+\\.[0-9]+" dcc32version "${dcc32_output}")
if (dcc32version)
set(pascal_compiler ${dcc32_executable})
set(pascal_compiler_flags "-B" "-W" "-E${EXECUTABLE_OUTPUT_PATH}" ${hwengine_project})
else (dcc32version)
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}")
if (fpc_version)
string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}")
string(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}")
string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}")
math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}")
if (fpc_ver LESS "010904")
message("Minimum required version of FreePascal is 1.9.4")
else (fpc_ver LESS "010904")
set(pascal_compiler ${fpc_executable})
set(pascal_compiler_flags "-k-z" "-knoexecstack" "-B" "-Sd" "-Xs" "-OG" "-O2" "-FE../bin" "-Cs2000000" ${hwengine_project})
endif (fpc_ver LESS "010904")
endif (fpc_version)
endif (dcc32version)
if (NOT pascal_compiler)
message(FATAL_ERROR "No Pascal compiler found!")
endif (NOT pascal_compiler)
add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}"
COMMAND "${pascal_compiler}"
ARGS ${pascal_compiler_flags}
MAIN_DEPENDENCY ${hwengine_project}
DEPENDS ${engine_sources}
)
add_custom_target(hwengine ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}")
install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION bin)