hedgewars/CMakeLists.txt
branchspacecampaign
changeset 9308 4bddcc1a1450
parent 9302 1cf37fd7bc47
child 9339 14f5f3a1e2f7
equal deleted inserted replaced
9296:5cc010e79431 9308:4bddcc1a1450
    10 enable_language(Pascal)
    10 enable_language(Pascal)
    11 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
    11 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
    12 include_directories(${CMAKE_CURRENT_BINARY_DIR})
    12 include_directories(${CMAKE_CURRENT_BINARY_DIR})
    13 
    13 
    14 
    14 
       
    15 #set the sources with the correct order of dependencies so that cmake won't be confused
    15 set(engine_sources
    16 set(engine_sources
    16     SDLh.pas
    17     SDLh.pas
    17     uSinTable.pas
    18     uSinTable.pas
    18     uFloat.pas
    19     uFloat.pas
    19     uConsts.pas
    20     uConsts.pas
    20     LuaPas.pas
    21     LuaPas.pas
    21     uTypes.pas
    22     uTypes.pas
       
    23     uVariables.pas
    22     uUtils.pas
    24     uUtils.pas
    23     uVariables.pas
       
    24     uMisc.pas
    25     uMisc.pas
    25     uConsole.pas
    26     uConsole.pas
       
    27     uCommands.pas
    26     uDebug.pas
    28     uDebug.pas
    27     uCommands.pas
       
    28     uInputHandler.pas
    29     uInputHandler.pas
    29     uTextures.pas
    30     uTextures.pas
    30     uRenderUtils.pas
    31     uRenderUtils.pas
    31     uRender.pas
    32     uRender.pas
    32     uCaptions.pas
    33     uCaptions.pas
    33     uLandTexture.pas
       
    34     uIO.pas
    34     uIO.pas
    35     uChat.pas
    35     uChat.pas
    36     uPhysFSLayer.pas
    36     uPhysFSLayer.pas
    37     uStore.pas
       
    38     uSound.pas
    37     uSound.pas
       
    38     ArgParsers.pas
    39     uRandom.pas
    39     uRandom.pas
    40     uLocale.pas
    40     uLocale.pas
    41     uStats.pas
    41     uStats.pas
    42     uCursor.pas
    42     uCursor.pas
    43     uVideoRec.pas
    43     uVideoRec.pas
    44     uAILandMarks.pas
    44     uAILandMarks.pas
    45     adler32.pas
    45     adler32.pas
    46     uLandTemplates.pas
    46     uLandTemplates.pas
       
    47     uLandTexture.pas
    47     uLandGraphics.pas
    48     uLandGraphics.pas
    48     uLandPainted.pas
    49     uLandPainted.pas
    49     uLandOutline.pas
    50     uLandOutline.pas
    50     uLandGenMaze.pas
    51     uLandGenMaze.pas
       
    52 
       
    53     #this is where dependency tracking becomes hard
       
    54     uStore.pas
       
    55     uAmmos.pas
    51     uLandObjects.pas
    56     uLandObjects.pas
    52     uLand.pas
    57     uLand.pas
    53     uAmmos.pas
    58     uGearsList.pas
    54 
    59     uCollisions.pas
    55     uAIMisc.pas
    60     uAIMisc.pas
    56     uAIActions.pas
    61     uAIActions.pas
       
    62     uAIAmmoTests.pas
    57     uAI.pas
    63     uAI.pas
    58     uWorld.pas
    64     uWorld.pas
       
    65     uVisualGearsList.pas
       
    66     uVisualGearsHandlers.pas
    59     uVisualGears.pas
    67     uVisualGears.pas
    60     uTeams.pas
       
    61 
    68 
    62     uGearsList.pas
       
    63     uCollisions.pas
       
    64     uAIAmmoTests.pas
       
    65     uGears.pas
    69     uGears.pas
    66     uGame.pas
    70     uGame.pas
    67     uCommandHandlers.pas
    71     uCommandHandlers.pas
       
    72     uGearsRender.pas
       
    73     uGearsHedgehog.pas
    68     uGearsHandlers.pas
    74     uGearsHandlers.pas
    69     uGearsHandlersRope.pas
    75     uGearsHandlersRope.pas
    70     uGearsHedgehog.pas
    76     uGearsHandlersMess.pas
    71     uGearsRender.pas
       
    72     uGearsUtils.pas
    77     uGearsUtils.pas
       
    78     uTeams.pas
       
    79 
       
    80     #these interact with everything, so compile last
    73     uScript.pas
    81     uScript.pas
    74     hwengine.pas
    82     hwengine.pas
    75 
    83 
    76     GSHandlers.inc
    84     #we also have uTouch.pas
    77     VGSHandlers.inc
       
    78     ArgParsers.inc
       
    79     options.inc
    85     options.inc
    80     ${CMAKE_CURRENT_BINARY_DIR}/config.inc
    86     ${CMAKE_CURRENT_BINARY_DIR}/config.inc
    81     )
    87     )
    82 
    88 
    83 
    89 
    91     add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si)
    97     add_flag_prepend(CMAKE_Pascal_FLAGS_RELEASE -Si)
    92 endif()
    98 endif()
    93 
    99 
    94 
   100 
    95 #DEPENDECIES AND EXECUTABLES SECTION
   101 #DEPENDECIES AND EXECUTABLES SECTION
    96 if(APPLE)
   102 if(NOT ${BUILD_ENGINE_LIBRARY} AND APPLE)
    97     if(CMAKE_OSX_ARCHITECTURES)
       
    98         #parse this system variable and adjust only the powerpc syntax to be compatible with -P
       
    99         string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}")
       
   100         string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}")
       
   101         string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}")
       
   102         if(x86_64_build)
       
   103             add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
       
   104         elseif(i386_build)
       
   105             add_flag_prepend(CMAKE_Pascal_FLAGS -Pi386)
       
   106         elseif(powerpc_build)
       
   107             add_flag_prepend(CMAKE_Pascal_FLAGS -Ppowerpc)
       
   108         else()
       
   109             message(FATAL_ERROR "Unknown architecture present in CMAKE_OSX_ARCHITECTURES (${CMAKE_OSX_ARCHITECTURES})")
       
   110         endif()
       
   111         list(LENGTH CMAKE_OSX_ARCHITECTURES num_of_archs)
       
   112         if(num_of_archs GREATER 1)
       
   113             message(${WARNING} "Only one architecture in CMAKE_OSX_ARCHITECTURES is currently supported, picking the first one")
       
   114         endif()
       
   115     elseif(CMAKE_SIZEOF_VOID_P MATCHES "8")
       
   116         #if that variable is not set check if we are on x86_64 and if so force it, else use default
       
   117         add_flag_prepend(CMAKE_Pascal_FLAGS -Px86_64)
       
   118     endif()
       
   119 
       
   120     #on OSX we need to provide the SDL_main() function when building as executable
   103     #on OSX we need to provide the SDL_main() function when building as executable
   121     if(NOT BUILD_ENGINE_LIBRARY)
   104     add_subdirectory(sdlmain)
   122         add_subdirectory(sdlmain)
   105     list(APPEND HW_LINK_LIBS SDLmain)
   123         list(APPEND HW_LINK_LIBS SDLmain)
   106     add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
   124         add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
   107 endif()
   125     endif()
       
   126 
       
   127     #when sysroot is set, make sure that fpc picks it
       
   128     if(CMAKE_OSX_SYSROOT)
       
   129         set(add_flag_append "-XD${CMAKE_OSX_SYSROOT}")
       
   130     endif(CMAKE_OSX_SYSROOT)
       
   131 endif(APPLE)
       
   132 
   108 
   133 if(FFMPEG_FOUND)
   109 if(FFMPEG_FOUND)
   134     add_subdirectory(avwrapper)
   110     add_subdirectory(avwrapper)
   135     list(APPEND HW_LINK_LIBS avwrapper)
   111     list(APPEND HW_LINK_LIBS avwrapper)
   136     add_definitions(-dUSE_VIDEO_RECORDING)
   112     add_definitions(-dUSE_VIDEO_RECORDING)
   137     add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
   113     add_flag_append(CMAKE_Pascal_FLAGS -Fl${LIBRARY_OUTPUT_PATH})
       
   114     #only for SDL < 2, linking carried out by fpc
       
   115     find_package_or_disable_msg(GLUT NOVIDEOREC "Video recording will not be built")
   138 endif()
   116 endif()
   139 
   117 
   140 find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP")
   118 find_package_or_disable_msg(PNG NOPNG "Screenshots will be saved in BMP")
   141 if(PNG_FOUND)
   119 if(PNG_FOUND)
   142     list(APPEND engine_sources PNGh.pas)
   120     list(INSERT engine_sources 0 PNGh.pas)
   143     list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path
   121     list(REMOVE_AT PNG_LIBRARIES 1) #removing the zlib library path
   144     get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH)
   122     get_filename_component(PNG_LIBRARY_DIR ${PNG_LIBRARIES} PATH)
   145     add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR})
   123     add_flag_append(CMAKE_Pascal_FLAGS -Fl${PNG_LIBRARY_DIR})
   146 endif()
   124 endif()
   147 
   125