cmake_modules/FindFreepascal.cmake
author Mitchell Kember <mk12360@gmail.com>
Tue, 04 Dec 2012 17:57:18 -0500
changeset 8231 a41d84553ae8
parent 8195 37d47f09f981
child 8283 af97cdbb7713
permissions -rw-r--r--
Changed uSound.pas so that music will still play if music is enabled and sound is disabled. Effectively, isSoundEnabled represents only sound effects and does not include music (and I have replaced the places where both are concerned with a logical combination of the two). Still need to figure out why isSEBackup is used and if my changes affect it.

# Load Freepascal
if (FPC)
    set(FPC_EXECUTABLE ${FPC})
else()
    find_program(FPC_EXECUTABLE
        NAMES fpc
        PATHS /opt/local/bin /usr/local/bin /usr/bin)
endif()

# Check Freepascal version
if (FPC_EXECUTABLE)
    exec_program(${FPC_EXECUTABLE} ARGS "-v" OUTPUT_VARIABLE FPC_VERSION_FULL)

    string(REGEX MATCH "[0-9]+\\.[0-9]+" FPC_VERSION_LONG "${FPC_VERSION_FULL}")
    string(REGEX REPLACE "([0-9]+\\.[0-9]+)" "\\1" FPC_VERSION "${FPC_VERSION_LONG}")
    message(STATUS "Found Freepascal: ${FPC_EXECUTABLE} (version ${FPC_VERSION}")
else()
    message(FATAL_ERROR "Could NOT find Freepascal")
endif()

# Check for noexecstack flag support
set(NOEXECSTACK_FLAGS "-k-z" "-knoexecstack")
file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.")

execute_process(COMMAND ${FPC_EXECUTABLE} ${NOEXECSTACK_FLAGS} checkstack.pas
    WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
    RESULT_VARIABLE TEST_NOEXECSTACK
    OUTPUT_QUIET ERROR_QUIET)

if (TEST_NOEXECSTACK)
    set(NOEXECSTACK_FLAGS "")
    message(STATUS "Checking whether linker needs explicit noexecstack -- no")
else(TEST_NOEXECSTACK)
    message(STATUS "Checking whether linker needs explicit noexecstack -- yes")
endif(TEST_NOEXECSTACK)