project_files/hwc/CMakeLists.txt
branchwebgl
changeset 8035 68ec3138c16d
parent 8029 7ba43d7e54e7
child 8038 625b628d55f3
equal deleted inserted replaced
8032:f8fcece14302 8035:68ec3138c16d
     1 
     1 
       
     2 #only Clang is supported
     2 if(CLANG)
     3 if(CLANG)
     3     set(clang_executable ${CLANG})
     4     set(clang_executable ${CLANG})
     4 else()
     5 else()
     5     find_program(clang_executable
     6     find_program(clang_executable
     6         NAMES clang-mp-3.2 clang-mp-3.1 clang-mp-3.0 clang
     7         NAMES clang-mp-3.2 clang-mp-3.1 clang-mp-3.0 clang
    18 endif()
    19 endif()
    19 
    20 
    20 set(CMAKE_C_COMPILER ${clang_executable})
    21 set(CMAKE_C_COMPILER ${clang_executable})
    21 
    22 
    22 
    23 
       
    24 #the usual set of dependencies
    23 find_package(OPENGL REQUIRED)
    25 find_package(OPENGL REQUIRED)
    24 find_package(GLEW REQUIRED)
    26 find_package(GLEW REQUIRED)
    25 find_package(SDL REQUIRED)
    27 find_package(SDL REQUIRED)
    26 find_package(SDL_mixer REQUIRED)
    28 find_package(SDL_mixer REQUIRED)
    27 find_package(SDL_net REQUIRED)
    29 find_package(SDL_net REQUIRED)
    28 find_package(SDL_image REQUIRED)
    30 find_package(SDL_image REQUIRED)
    29 find_package(SDL_ttf REQUIRED)
    31 find_package(SDL_ttf REQUIRED)
    30 
    32 
       
    33 #compile our rtl implementation
       
    34 include_directories("${GLEW_INCLUDE_PATH}")
       
    35 include_directories(rtl)
       
    36 add_subdirectory(rtl)
       
    37 
       
    38 
    31 configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
    39 configure_file(${hedgewars_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
    32 
    40 
       
    41 #get the list of pas files that are going to be converted and compiled
       
    42 file(GLOB engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/*.pas")
       
    43 #TODO: temporary until cmake can configure itself accordingly
       
    44 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/uWeb.pas")
       
    45 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/uVideoRec.pas")
       
    46 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/uTouch.pas")
       
    47 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/PNGh.pas")
       
    48 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/pas2cSystem.pas")
       
    49 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/pas2cRedo.pas")
       
    50 list(REMOVE_ITEM engine_sources_pas "${hedgewars_SOURCE_DIR}/hedgewars/hwLibrary.pas")
    33 
    51 
    34 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/hwengine.c"
    52 foreach(sourcefile ${engine_sources_pas})
       
    53     get_filename_component(sourcename ${sourcefile} NAME_WE) #drops .pas
       
    54     set(engine_sources "${CMAKE_CURRENT_BINARY_DIR}/${sourcename}.c" ${engine_sources})
       
    55 endforeach()
       
    56 
       
    57 #invoke pas2c on our pas files
       
    58 add_custom_command(OUTPUT ${engine_sources}
    35         COMMAND "${EXECUTABLE_OUTPUT_PATH}/pas2c${CMAKE_EXECUTABLE_SUFFIX}"
    59         COMMAND "${EXECUTABLE_OUTPUT_PATH}/pas2c${CMAKE_EXECUTABLE_SUFFIX}"
    36         ARGS -n hwengine
    60         ARGS -n "hwengine"
    37              -i "${hedgewars_SOURCE_DIR}/hedgewars"
    61              -i "${hedgewars_SOURCE_DIR}/hedgewars"
    38              #-i "~/xymengxy-webport/hedgewars"
       
    39              -o "${CMAKE_CURRENT_BINARY_DIR}"
    62              -o "${CMAKE_CURRENT_BINARY_DIR}"
    40              -a "${CMAKE_CURRENT_BINARY_DIR}"
    63              -a "${CMAKE_CURRENT_BINARY_DIR}"
    41         DEPENDS pas2c
    64         DEPENDS pas2c
    42     )
    65     )
    43 
    66 add_custom_target(engine_c DEPENDS ${engine_sources})
    44 add_custom_target(engine_c ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/hwengine.c")
       
    45 
    67 
    46 
    68 
    47 add_subdirectory(rtl)
    69 #compile the c files
    48 
    70 add_executable(hwengine WIN32 ${engine_sources})
    49 include_directories("${GLEW_INCLUDE_PATH}")
       
    50 include_directories(rtl)
       
    51 
       
    52 set(engine_src               uDebug.c             uLandTexture.c
       
    53         LuaPas.c             uFloat.c             uLocale.c
       
    54         SDLh.c               uGame.c              uMisc.c
       
    55         adler32.c            uGears.c             uMobile.c
       
    56         hwengine.c           uGearsHandlers.c     uRandom.c
       
    57         uAI.c                uGearsHandlersRope.c uRender.c
       
    58         uAIActions.c         uGearsHedgehog.c     uRenderUtils.c
       
    59         uAIAmmoTests.c       uGearsList.c         uScript.c
       
    60         uAILandMarks.c       uGearsRender.c       uSinTable.c
       
    61         uAIMisc.c            uGearsUtils.c        uSound.c
       
    62         uAmmos.c             uIO.c                uStats.c
       
    63         uCaptions.c          uInputHandler.c      uStore.c
       
    64         uChat.c              uLand.c              uTeams.c
       
    65         uCollisions.c        uLandGenMaze.c       uTextures.c
       
    66         uCommandHandlers.c   uLandGraphics.c      uTypes.c
       
    67         uCommands.c          uLandObjects.c       uUtils.c
       
    68         uConsole.c           uLandOutline.c       uVariables.c
       
    69         uConsts.c            uLandPainted.c       uVisualGears.c
       
    70         uCursor.c            uLandTemplates.c     uWorld.c
       
    71     )
       
    72 
       
    73 set(engine_hdr               uGame.h              uFloat.h
       
    74         uLocale.h            SDLh.h               uMisc.h
       
    75         adler32.h            uDebug.h             uLandTexture.h
       
    76         LuaPas.h             uGears.h             uMobile.h
       
    77         uAI.h                uGearsHandlersRope.h uRender.h
       
    78         uAIActions.h         uGearsHedgehog.h     uRenderUtils.h
       
    79         uAIAmmoTests.h       uGearsList.h         uScript.h
       
    80         uGearsHandlers.h     uRandom.h
       
    81         uAILandMarks.h       uGearsRender.h       uSinTable.h
       
    82         uAIMisc.h            uGearsUtils.h        uSound.h
       
    83         uAmmos.h             uIO.h                uStats.h
       
    84         uCaptions.h          uInputHandler.h      uStore.h
       
    85         uChat.h              uLand.h              uTeams.h
       
    86         uCollisions.h        uLandGenMaze.h       uTextures.h
       
    87         uCommandHandlers.h   uLandGraphics.h      uTypes.h
       
    88         uCommands.h          uLandObjects.h       uUtils.h
       
    89         uConsole.h           uLandOutline.h       uVariables.h
       
    90         uConsts.h            uLandPainted.h       uVisualGears.h
       
    91         uCursor.h            uLandTemplates.h     uWorld.h
       
    92     )
       
    93 
       
    94 add_executable(hwengine WIN32 ${engine_src})
       
    95 
    71 
    96 target_link_libraries(hwengine  fpcrtl
    72 target_link_libraries(hwengine  fpcrtl
    97                                 ${LUA_LIBRARY}
    73                                 ${LUA_LIBRARY}
    98                                 ${OPENGL_LIBRARY}
    74                                 ${OPENGL_LIBRARY}
    99                                 ${SDL_LIBRARY}
    75                                 ${SDL_LIBRARY}
   101                                 ${SDLNET_LIBRARY}
    77                                 ${SDLNET_LIBRARY}
   102                                 ${SDLIMAGE_LIBRARY}
    78                                 ${SDLIMAGE_LIBRARY}
   103                                 ${SDLTTF_LIBRARY}
    79                                 ${SDLTTF_LIBRARY}
   104                             )
    80                             )
   105 
    81 
   106 add_dependencies(hwengine engine_c fpcrtl)
       
   107