CMakeLists.txt 8.31 KB
Newer Older
Matthew Hausknecht's avatar
Matthew Hausknecht committed
1
cmake_minimum_required(VERSION 2.6)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
2
project(hfo)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
3
include(ExternalProject)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
4

Matthew Hausknecht's avatar
Matthew Hausknecht committed
5
option(BUILD_SOCCERWINDOW "Build Soccerwindow Visualizer" ON)
6
option(INSTALL_ADDITIONAL_TEAMS "Install additional team binaries" ON)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
7

8
add_definitions(-DELOG -std=c++11)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
9

10 11 12
find_package(BOOST 1.45.0 COMPONENTS scoped_ptr)
include_directories(${Boost_INCLUDE_DIRS})

Matthew Hausknecht's avatar
Matthew Hausknecht committed
13
ExternalProject_Add(rcssserver
14
  GIT_REPOSITORY "https://github.com/mhauskn/rcssserver.git"
Matthew Hausknecht's avatar
Matthew Hausknecht committed
15
  GIT_TAG "master"
16
  CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
Matthew Hausknecht's avatar
Matthew Hausknecht committed
17 18 19 20 21 22 23
  UPDATE_COMMAND ""
  INSTALL_COMMAND "")
ExternalProject_Get_Property(rcssserver SOURCE_DIR)
include_directories(${SOURCE_DIR}/rcssbase ${SOURCE_DIR}/src)
ExternalProject_Get_Property(rcssserver BINARY_DIR)
link_directories(${BINARY_DIR}/lib)
set(RCSSSERVER_BINARY_DIR ${BINARY_DIR}/bin)
24

Matthew Hausknecht's avatar
Matthew Hausknecht committed
25
ExternalProject_Add(librcsc
26
  GIT_REPOSITORY "https://github.com/mhauskn/librcsc.git"
Matthew Hausknecht's avatar
Matthew Hausknecht committed
27
  GIT_TAG "master"
28
  CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
Matthew Hausknecht's avatar
Matthew Hausknecht committed
29 30 31 32 33 34 35 36
  UPDATE_COMMAND ""
  INSTALL_COMMAND "")
ExternalProject_Get_Property(librcsc SOURCE_DIR)
include_directories(${SOURCE_DIR})
set(LIBRCSC_INCLUDE_DIR ${SOURCE_DIR})
ExternalProject_Get_Property(librcsc BINARY_DIR)
link_directories(${BINARY_DIR}/lib)
set(LIBRCSC_LINK_DIR ${BINARY_DIR}/lib)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
37

Matthew Hausknecht's avatar
Matthew Hausknecht committed
38 39 40
if(BUILD_SOCCERWINDOW)
  ExternalProject_Add(soccerwindow2
    DEPENDS librcsc
41
    GIT_REPOSITORY "https://github.com/mhauskn/soccerwindow2.git"
Matthew Hausknecht's avatar
Matthew Hausknecht committed
42
    GIT_TAG "master"
43
    CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DLIBRCSC_INCLUDE_DIR=${LIBRCSC_INCLUDE_DIR} -DLIBRCSC_LINK_DIR=${LIBRCSC_LINK_DIR}
Matthew Hausknecht's avatar
Matthew Hausknecht committed
44 45 46 47
    UPDATE_COMMAND ""
    INSTALL_COMMAND "")
  ExternalProject_Get_Property(soccerwindow2 BINARY_DIR)
  set(SOCCERWINDOW2_BINARY_DIR ${BINARY_DIR}/bin)
48
  install(DIRECTORY ${SOCCERWINDOW2_BINARY_DIR} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} USE_SOURCE_PERMISSIONS)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
49 50
endif()

51
if(INSTALL_ADDITIONAL_TEAMS)
52 53 54 55 56 57 58 59 60 61 62 63 64 65
  if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    ExternalProject_Add(hfo-teams
      GIT_REPOSITORY "https://github.com/mhauskn/hfo-teams.git"
      GIT_TAG "master"
      CONFIGURE_COMMAND ""
      BUILD_COMMAND ""
      UPDATE_COMMAND ""
      INSTALL_COMMAND "")
    ExternalProject_Get_Property(hfo-teams SOURCE_DIR)
    set(TEAMS_SOURCE_DIR ${SOURCE_DIR}/teams)
    install(DIRECTORY ${TEAMS_SOURCE_DIR} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/bin USE_SOURCE_PERMISSIONS)
  else()
    MESSAGE("Additional team binaries only supported in Linux. Skipping Install.")
  endif()
66 67
endif()

68 69 70 71
if(APPLE)
  set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
endif()

Matthew Hausknecht's avatar
Matthew Hausknecht committed
72 73 74
set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
include_directories(${SOURCE_DIR} ${SOURCE_DIR}/chain_action)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
75

76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
set(PLAYER_CPP bhv_basic_move.cpp bhv_basic_offensive_kick.cpp
  bhv_basic_tackle.cpp bhv_custom_before_kick_off.cpp
  bhv_force_pass.cpp bhv_go_to_static_ball.cpp
  bhv_goalie_basic_move.cpp bhv_goalie_chase_ball.cpp
  bhv_goalie_free_kick.cpp bhv_prepare_set_play_kick.cpp
  bhv_set_play.cpp bhv_set_play_free_kick.cpp
  bhv_set_play_goal_kick.cpp bhv_set_play_indirect_free_kick.cpp
  bhv_set_play_kick_in.cpp bhv_set_play_kick_off.cpp
  bhv_their_goal_kick_move.cpp bhv_penalty_kick.cpp
  feature_extractor.cpp lowlevel_feature_extractor.cpp
  highlevel_feature_extractor.cpp neck_default_intercept_neck.cpp
  neck_goalie_turn_neck.cpp neck_offensive_intercept_neck.cpp
  view_tactical.cpp intention_receive.cpp
  intention_wait_after_set_play_kick.cpp soccer_role.cpp
  role_center_back.cpp role_center_forward.cpp role_defensive_half.cpp
  role_goalie.cpp role_offensive_half.cpp role_sample.cpp
  role_side_back.cpp role_side_forward.cpp role_side_half.cpp
  role_keepaway_keeper.cpp role_keepaway_taker.cpp
  sample_communication.cpp keepaway_communication.cpp
95
  sample_field_evaluator.cpp sample_player.cpp strategy.cpp agent.cpp)
96 97 98 99 100

foreach(src ${PLAYER_CPP})
  list(APPEND PLAYER_SOURCES ${SOURCE_DIR}/${src})
endforeach(src ${PLAYER_CPP})
file(GLOB CHAIN_ACTION_SOURCES ${SOURCE_DIR}/chain_action/*.cpp)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
101

Matthew Hausknecht's avatar
Matthew Hausknecht committed
102 103
list(APPEND LINK_LIBS rcsc_agent rcsc_geom rcsc_param rcsc_ann
  rcsc_net rcsc_gz rcsc_time rcsc_rcg)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
104

105
add_library(player_chain_action SHARED ${PLAYER_SOURCES} ${CHAIN_ACTION_SOURCES})
106
add_executable(sample_coach ${SOURCE_DIR}/main_coach.cpp ${SOURCE_DIR}/sample_coach.cpp)
107
add_executable(sample_player ${SOURCE_DIR}/HFO.cpp ${SOURCE_DIR}/main_player.cpp ${SOURCE_DIR}/sample_player.cpp ${SOURCE_DIR}/agent.cpp) 
108 109
add_executable(sample_trainer ${SOURCE_DIR}/main_trainer.cpp ${SOURCE_DIR}/sample_trainer.cpp)
add_executable(agent ${SOURCE_DIR}/HFO.cpp ${SOURCE_DIR}/main_agent.cpp ${SOURCE_DIR}/agent.cpp)
110 111 112 113 114 115
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams/base)
set_target_properties(sample_coach PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams/base)
set_target_properties(sample_player PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams/base)
set_target_properties(sample_trainer PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams/base)
set_target_properties(agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams/base)

116
add_library(hfo-lib SHARED ${SOURCE_DIR}/HFO.hpp ${SOURCE_DIR}/HFO.cpp)
117 118
set_target_properties(hfo-lib PROPERTIES OUTPUT_NAME hfo)
set_target_properties(hfo-lib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
119

120 121 122 123
add_library(hfo-c-lib SHARED ${CMAKE_CURRENT_SOURCE_DIR}/hfo/hfo_c_wrapper.cpp ${SOURCE_DIR}/HFO.cpp)
set_target_properties(hfo-c-lib PROPERTIES OUTPUT_NAME hfo_c)
set_target_properties(hfo-c-lib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/hfo)

124
add_dependencies(player_chain_action librcsc)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
125 126 127 128
add_dependencies(sample_coach librcsc)
add_dependencies(sample_player librcsc)
add_dependencies(sample_trainer librcsc)
add_dependencies(agent librcsc)
129 130
add_dependencies(hfo-lib player_chain_action)
add_dependencies(hfo-c-lib player_chain_action)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
131

132
target_link_libraries(player_chain_action ${LINK_LIBS})
Matthew Hausknecht's avatar
Matthew Hausknecht committed
133
target_link_libraries(sample_coach ${LINK_LIBS})
134
target_link_libraries(sample_player ${LINK_LIBS} player_chain_action)
Matthew Hausknecht's avatar
Matthew Hausknecht committed
135
target_link_libraries(sample_trainer ${LINK_LIBS})
136
target_link_libraries(agent ${LINK_LIBS} player_chain_action)
137 138
target_link_libraries(hfo-lib ${LINK_LIBS} player_chain_action)
target_link_libraries(hfo-c-lib ${LINK_LIBS} player_chain_action)
139 140 141

link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib)
add_executable(hfo_example_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/hfo_example_agent.cpp)
142
set_target_properties(hfo_example_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
143
target_link_libraries(hfo_example_agent hfo-lib)
144 145
add_executable(low_level_random_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/low_level_random_agent.cpp)
set_target_properties(low_level_random_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
146
target_link_libraries(low_level_random_agent hfo-lib)
147 148
add_executable(high_level_random_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/high_level_random_agent.cpp)
set_target_properties(high_level_random_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
149
target_link_libraries(high_level_random_agent hfo-lib)
150 151 152 153 154 155 156 157 158 159 160 161 162

add_executable(mid_level_move_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/mid_level_move_agent.cpp)
set_target_properties(mid_level_move_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
target_link_libraries(mid_level_move_agent hfo-lib)

add_executable(mid_level_kick_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/mid_level_kick_agent.cpp)
set_target_properties(mid_level_kick_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
target_link_libraries(mid_level_kick_agent hfo-lib)

add_executable(mid_level_dribble_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/mid_level_dribble_agent.cpp)
set_target_properties(mid_level_dribble_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
target_link_libraries(mid_level_dribble_agent hfo-lib)

163 164 165 166
add_executable(communication_agent ${CMAKE_CURRENT_SOURCE_DIR}/example/communication_agent.cpp)
set_target_properties(communication_agent PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example)
target_link_libraries(communication_agent hfo-lib)

167
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/example DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} USE_SOURCE_PERMISSIONS)
168
install(DIRECTORY ${RCSSSERVER_BINARY_DIR} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR} USE_SOURCE_PERMISSIONS)
169
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/teams DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/bin USE_SOURCE_PERMISSIONS)