hedgewars/CMakeLists.txt
branch0.9.20
changeset 9897 f705dc750df2
parent 9886 af0520a6bf00
child 9899 5b8bde62a8ef
equal deleted inserted replaced
9895:1f8f7ebf43f7 9897:f705dc750df2
     2 find_package(SDL_image)
     2 find_package(SDL_image)
     3 find_package(SDL_net)
     3 find_package(SDL_net)
     4 find_package(SDL_ttf)
     4 find_package(SDL_ttf)
     5 find_package(SDL_mixer)
     5 find_package(SDL_mixer)
     6 
     6 
     7 include (CheckLibraryExists)
     7 include(CheckLibraryExists)
       
     8 include(${CMAKE_MODULE_PATH}/utils.cmake)
     8 
     9 
     9 
    10 
    10 enable_language(Pascal)
    11 enable_language(Pascal)
    11 add_flag_append(CMAKE_Pascal_FLAGS "-Cs2000000")
    12 add_flag_append(CMAKE_Pascal_FLAGS "-Cs2000000")
    12 add_flag_append(CMAKE_Pascal_FLAGS_DEBUG "-gv")
    13 add_flag_append(CMAKE_Pascal_FLAGS_DEBUG "-gv")
    81     uGearsUtils.pas
    82     uGearsUtils.pas
    82     uTeams.pas
    83     uTeams.pas
    83 
    84 
    84     #these interact with everything, so compile last
    85     #these interact with everything, so compile last
    85     uScript.pas
    86     uScript.pas
    86     hwengine.pas
       
    87 
       
    88     #we also have uTouch.pas
       
    89     options.inc
       
    90     ${CMAKE_CURRENT_BINARY_DIR}/config.inc
       
    91     )
    87     )
    92 
    88 
    93 
       
    94 include(${CMAKE_MODULE_PATH}/utils.cmake)
       
    95 
    89 
    96 if (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.2 OR # older versions are just ancient
    90 if (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.2 OR # older versions are just ancient
    97     (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.6 AND APPLE)) # because of 64bit and opengl bindings
    91     (${CMAKE_Pascal_COMPILER_VERSION} VERSION_LESS 2.6 AND APPLE)) # because of 64bit and opengl bindings
    98     message(FATAL_ERROR "Your FreePascal installation is too old (fpc ${CMAKE_Pascal_COMPILER_VERSION})!")
    92     message(FATAL_ERROR "Your FreePascal installation is too old (fpc ${CMAKE_Pascal_COMPILER_VERSION})!")
    99 elseif(CMAKE_Pascal_COMPILER_VERSION VERSION_GREATER 2.4)
    93 elseif(CMAKE_Pascal_COMPILER_VERSION VERSION_GREATER 2.4)
   169 
   163 
   170 #needs to be last
   164 #needs to be last
   171 add_definitions(-dDEBUGFILE)
   165 add_definitions(-dDEBUGFILE)
   172 
   166 
   173 
   167 
   174 # make source files objects depend on their predecessors in list
   168 # source files are with full path after this
   175 set(sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/options.inc" "${CMAKE_CURRENT_BINARY_DIR}/config.inc")
   169 set(sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/options.inc" "${CMAKE_CURRENT_BINARY_DIR}/config.inc")
   176 foreach(loop_var ${engine_sources})
   170 foreach(loop_var ${engine_sources})
   177     SET_SOURCE_FILES_PROPERTIES(${loop_var} PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar}")
       
   178     list(APPEND sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/${loop_var}")
   171     list(APPEND sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/${loop_var}")
   179 endforeach(loop_var)
   172 endforeach(loop_var)
   180 
   173 
   181 
   174 
   182 #SOURCE AND PROGRAMS SECTION
   175 #SOURCE AND PROGRAMS SECTION
   191     set(engine_output_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
   184     set(engine_output_name "${CMAKE_SHARED_LIBRARY_PREFIX}hwengine${CMAKE_SHARED_LIBRARY_SUFFIX}")
   192     set(destination_dir ${target_library_install_dir})
   185     set(destination_dir ${target_library_install_dir})
   193     add_flag_prepend(CMAKE_Pascal_FLAGS "-o${LIBRARY_OUTPUT_PATH}/${engine_output_name}")
   186     add_flag_prepend(CMAKE_Pascal_FLAGS "-o${LIBRARY_OUTPUT_PATH}/${engine_output_name}")
   194 
   187 
   195     add_definitions(-dHWLIBRARY)
   188     add_definitions(-dHWLIBRARY)
   196     add_library(hwengine SHARED ${engine_sources} hwLibrary.pas)
   189     set_source_files_properties(hwLibrary.pas PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar}")
       
   190     add_library(hwengine SHARED hwLibrary.pas)
   197 else()
   191 else()
   198     # no need to change name here because target has same name
   192     # no need to change name here because target has same name
   199     set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}")
   193     set(engine_output_name "hwengine${CMAKE_EXECUTABLE_SUFFIX}")
   200     set(destination_dir ${target_binary_install_dir})
   194     set(destination_dir ${target_binary_install_dir})
   201     add_executable(hwengine ${engine_sources})
   195     set_source_files_properties(hwengine.pas PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar}")
       
   196     add_executable(hwengine hwengine.pas)
   202 endif()
   197 endif()
   203 
   198 
   204 #even though not actually used, this will trigger relink if any lib changes
   199 #even though not actually used, this will trigger relink if any lib changes
   205 target_link_libraries(hwengine ${HW_LINK_LIBS})
   200 target_link_libraries(hwengine ${HW_LINK_LIBS})
   206 
   201