set(GAME_SOURCES
  # amazons/amazons.cc
  # amazons/amazons.h
  # backgammon/backgammon.cc
  # backgammon/backgammon.h
  # bargaining/bargaining.cc
  # bargaining/bargaining.h
  # bargaining/bargaining_instances1000.cc
  # battleship/battleship.cc
  # battleship/battleship.h
  # battleship/battleship_types.h
  # battleship/battleship_types.cc
  # blackjack/blackjack.cc
  # blackjack/blackjack.h
  # blotto/blotto.cc
  # blotto/blotto.h
  # breakthrough/breakthrough.cc
  # breakthrough/breakthrough.h
#  bridge/bridge.cc  # Commented out - missing double_dummy_solver sources
#  bridge/bridge.h
#  bridge/bridge_scoring.cc
#  bridge/bridge_scoring.h
#  bridge/bridge_uncontested_bidding.cc
#  bridge/bridge_uncontested_bidding.h
  # catch/catch.cc
  # catch/catch.h
  # checkers/checkers.cc
  # checkers/checkers.h
  # chess/chess.cc
  # chess/chess.h
  # chess/chess_board.cc
  # chess/chess_board.h
  # chess/chess_common.cc
  # chess/chess_common.h
  # chess/chess960_starting_positions.cc
  # cliff_walking/cliff_walking.cc
  # cliff_walking/cliff_walking.h
  # clobber/clobber.cc
  # clobber/clobber.h
  # coin_game/coin_game.cc
  # coin_game/coin_game.h
  # colored_trails/colored_trails.cc
  # colored_trails/colored_trails.h
  # colored_trails/colored_trails_utils.cc
  # connect_four/connect_four.cc
  # connect_four/connect_four.h
  # coop_box_pushing/coop_box_pushing.cc
  # coop_box_pushing/coop_box_pushing.h
  # coordinated_mp/coordinated_mp.cc
  # coordinated_mp/coordinated_mp.h
  # crazy_eights/crazy_eights.cc
  # crazy_eights/crazy_eights.h
  # cribbage/cribbage.cc
  # cribbage/cribbage.h
  # cursor_go/cursor_go.cc
  # cursor_go/cursor_go.h
  # dark_chess/dark_chess.cc
  # dark_chess/dark_chess.h
  # dark_hex/dark_hex.cc
  # dark_hex/dark_hex.h
  # deep_sea/deep_sea.cc
  # deep_sea/deep_sea.h
  # dots_and_boxes/dots_and_boxes.cc
  # dots_and_boxes/dots_and_boxes.h
  # dynamic_routing/dynamic_routing_data.cc
  # dynamic_routing/dynamic_routing_data.h
  # dynamic_routing/dynamic_routing_utils.cc
  # dynamic_routing/dynamic_routing_utils.h
  # dou_dizhu/dou_dizhu.cc
  # dou_dizhu/dou_dizhu.h
  # dou_dizhu/dou_dizhu_utils.cc
  # dou_dizhu/dou_dizhu_utils.h
  # efg_game/efg_game.cc
  # efg_game/efg_game.h
  # efg_game/efg_game_data.cc
  # efg_game/efg_game_data.h
  # einstein_wurfelt_nicht/einstein_wurfelt_nicht.cc
  # einstein_wurfelt_nicht/einstein_wurfelt_nicht.h
  # euchre/euchre.cc
  # euchre/euchre.h
  # first_sealed_auction/first_sealed_auction.cc
  # first_sealed_auction/first_sealed_auction.h
  # gin_rummy/gin_rummy.cc
  # gin_rummy/gin_rummy.h
  # gin_rummy/gin_rummy_utils.cc
  # gin_rummy/gin_rummy_utils.h
  # go/go.cc
  # go/go.h
  # go/go_board.cc
  # go/go_board.h
  # goofspiel/goofspiel.cc
  # goofspiel/goofspiel.h
  # havannah/havannah.cc
  # havannah/havannah.h
  # hearts/hearts.cc
  # hearts/hearts.h
  # hex/hex.cc
  # hex/hex.h
  # hive/hive.cc
  # hive/hive.h
  # hive/hive_board.cc
  # hive/hive_board.h
  # interstate/interstate.cc
  # interstate/interstate.h
  # kriegspiel/kriegspiel.cc
  # kriegspiel/kriegspiel.h
  kuhn_poker/kuhn_poker.cc
  kuhn_poker/kuhn_poker.h
  # laser_tag/laser_tag.cc
  # laser_tag/laser_tag.h
  # latent_ttt/latent_ttt.cc
  # latent_ttt/latent_ttt.h
  # leduc_poker/leduc_poker.cc
  # leduc_poker/leduc_poker.h
  # leduc_poker/repeated_leduc_poker.cc
  # leduc_poker/repeated_leduc_poker.h
  # lewis_signaling/lewis_signaling.cc
  # lewis_signaling/lewis_signaling.h
  # liars_dice/liars_dice.cc
  # liars_dice/liars_dice.h
  # lines_of_action/lines_of_action.cc
  # lines_of_action/lines_of_action.h
  # maedn/maedn.cc
  # maedn/maedn.h
  # mancala/mancala.cc
  # mancala/mancala.h
  # markov_soccer/markov_soccer.cc
  # markov_soccer/markov_soccer.h
  # matching_pennies_3p/matching_pennies_3p.cc
  # matching_pennies_3p/matching_pennies_3p.h
  # matrix_games/matrix_games.cc
  # mfg/crowd_modelling.cc
  # mfg/crowd_modelling.h
  # mfg/crowd_modelling_2d.cc
  # mfg/crowd_modelling_2d.h
  # mfg/dynamic_routing.cc
  # mfg/dynamic_routing.h
  # mfg/garnet.cc
  # mfg/garnet.h
  # mnk/mnk.cc
  # mnk/mnk.h
  # morpion_solitaire/morpion_solitaire.cc
  # morpion_solitaire/morpion_solitaire.h
  # negotiation/negotiation.cc
  # negotiation/negotiation.h
  # nfg_game/nfg_game.cc
  # nfg_game/nfg_game.h
  # nine_mens_morris/nine_mens_morris.cc
  # nine_mens_morris/nine_mens_morris.h
  # nim/nim.cc
  # nim/nim.h
  # oh_hell/oh_hell.cc
  # oh_hell/oh_hell.h
  # oshi_zumo/oshi_zumo.cc
  # oshi_zumo/oshi_zumo.h
  # othello/othello.cc
  # othello/othello.h
  # oware/oware.cc
  # oware/oware.h
  # oware/oware_board.cc
  # oware/oware_board.h
  # pathfinding/pathfinding.cc
  # pathfinding/pathfinding.h
  # pentago/pentago.cc
  # pentago/pentago.h
  # phantom_go/phantom_go.h
  # phantom_go/phantom_go.cc
  # phantom_go/phantom_go_board.h
  # phantom_go/phantom_go_board.cc
  # phantom_ttt/phantom_ttt.cc
  # phantom_ttt/phantom_ttt.h
  # pig/pig.cc
  # pig/pig.h
  # pokerkit_wrapper/pokerkit_wrapper_struct.h
  # repeated_pokerkit/repeated_pokerkit_struct.h
  # quoridor/quoridor.cc
  # quoridor/quoridor.h
  # rbc/rbc.cc
  # rbc/rbc.h
  # sheriff/sheriff.cc
  # sheriff/sheriff.h
  # skat/skat.cc
  # skat/skat.h
  # solitaire/solitaire.cc
  # solitaire/solitaire.h
  # spades/spades.cc
  # spades/spades.h
  # spades/spades_scoring.cc
  # spades/spades_scoring.h
  # stones_and_gems/stones_and_gems.cc
  # stones_and_gems/stones_and_gems.h
  # tarok/tarok.cc
  # tarok/tarok.h
  # tarok/cards.cc
  # tarok/cards.h
  # tarok/contracts.cc
  # tarok/contracts.h
  # tic_tac_toe/tic_tac_toe.cc
  # tic_tac_toe/tic_tac_toe.h
  # tiny_bridge/tiny_bridge.cc
  # tiny_bridge/tiny_bridge.h
  # tiny_hanabi/tiny_hanabi.cc
  # tiny_hanabi/tiny_hanabi.h
  # trade_comm/trade_comm.cc
  # trade_comm/trade_comm.h
  # twenty_forty_eight/2048.cc
  # twenty_forty_eight/2048.h
  # twixt/twixt.cc
  # twixt/twixt.h
  # twixt/twixtboard.cc
  # twixt/twixtboard.h
  # twixt/twixtcell.h
  # ultimate_tic_tac_toe/ultimate_tic_tac_toe.h
  # ultimate_tic_tac_toe/ultimate_tic_tac_toe.cc
  y/y.cc
  y/y.h
)

if (${OPEN_SPIEL_BUILD_WITH_HANABI})
  set(GAME_SOURCES ${GAME_SOURCES} hanabi/hanabi.cc hanabi/hanabi.h)
endif()
if (${OPEN_SPIEL_BUILD_WITH_ACPC})
  set(GAME_SOURCES ${GAME_SOURCES} universal_poker/universal_poker.cc universal_poker/universal_poker.h)
  set(GAME_SOURCES ${GAME_SOURCES} universal_poker/repeated_poker.cc universal_poker/repeated_poker.h)
endif()


add_library (games OBJECT ${GAME_SOURCES})

target_include_directories (games PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (games PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}../pybind11_abseil)
target_include_directories (games PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}../pybind11_json)
target_include_directories (games PUBLIC ${Python3_INCLUDE_DIRS})

if (${OPEN_SPIEL_BUILD_WITH_HANABI})
  add_subdirectory(hanabi)
endif()
if (${OPEN_SPIEL_BUILD_WITH_ACPC})
  add_subdirectory(universal_poker)
endif()
if (${OPEN_SPIEL_BUILD_WITH_GAMUT})
  add_subdirectory(gamut)
endif()

# Bridge double dummy solver commented out - sources missing
# add_library(bridge_double_dummy_solver OBJECT
#   bridge/double_dummy_solver/include/dll.h
#   bridge/double_dummy_solver/include/portab.h
#   bridge/double_dummy_solver/src/ABsearch.cpp
#   bridge/double_dummy_solver/src/ABsearch.h
#   bridge/double_dummy_solver/src/ABstats.cpp
#   bridge/double_dummy_solver/src/ABstats.h
#   bridge/double_dummy_solver/src/CalcTables.cpp
#   bridge/double_dummy_solver/src/CalcTables.h
#   bridge/double_dummy_solver/src/dds.cpp
#   bridge/double_dummy_solver/src/dds.h
#   bridge/double_dummy_solver/src/DealerPar.cpp
#   bridge/double_dummy_solver/src/debug.h
#   bridge/double_dummy_solver/src/dump.cpp
#   bridge/double_dummy_solver/src/dump.h
#   bridge/double_dummy_solver/src/File.cpp
#   bridge/double_dummy_solver/src/File.h
#   bridge/double_dummy_solver/src/Init.cpp
#   bridge/double_dummy_solver/src/Init.h
#   bridge/double_dummy_solver/src/LaterTricks.cpp
#   bridge/double_dummy_solver/src/LaterTricks.h
#   bridge/double_dummy_solver/src/Memory.cpp
#   bridge/double_dummy_solver/src/Memory.h
#   bridge/double_dummy_solver/src/Moves.cpp
#   bridge/double_dummy_solver/src/Moves.h
#   bridge/double_dummy_solver/src/Par.cpp
#   bridge/double_dummy_solver/src/parallel.h
#   bridge/double_dummy_solver/src/PBN.cpp
#   bridge/double_dummy_solver/src/PBN.h
#   bridge/double_dummy_solver/src/PlayAnalyser.cpp
#   bridge/double_dummy_solver/src/PlayAnalyser.h
#   bridge/double_dummy_solver/src/QuickTricks.cpp
#   bridge/double_dummy_solver/src/QuickTricks.h
#   bridge/double_dummy_solver/src/Scheduler.cpp
#   bridge/double_dummy_solver/src/Scheduler.h
#   bridge/double_dummy_solver/src/SolveBoard.cpp
#   bridge/double_dummy_solver/src/SolveBoard.h
#   bridge/double_dummy_solver/src/SolverIF.cpp
#   bridge/double_dummy_solver/src/SolverIF.h
#   bridge/double_dummy_solver/src/System.cpp
#   bridge/double_dummy_solver/src/System.h
#   bridge/double_dummy_solver/src/ThreadMgr.cpp
#   bridge/double_dummy_solver/src/ThreadMgr.h
#   bridge/double_dummy_solver/src/Timer.cpp
#   bridge/double_dummy_solver/src/Timer.h
#   bridge/double_dummy_solver/src/TimerGroup.cpp
#   bridge/double_dummy_solver/src/TimerGroup.h
#   bridge/double_dummy_solver/src/TimerList.cpp
#   bridge/double_dummy_solver/src/TimerList.h
#   bridge/double_dummy_solver/src/TimeStat.cpp
#   bridge/double_dummy_solver/src/TimeStat.h
#   bridge/double_dummy_solver/src/TimeStatList.cpp
#   bridge/double_dummy_solver/src/TimeStatList.h
#   bridge/double_dummy_solver/src/TransTable.h
#   bridge/double_dummy_solver/src/TransTableL.cpp
#   bridge/double_dummy_solver/src/TransTableL.h
#   bridge/double_dummy_solver/src/TransTableS.cpp
#   bridge/double_dummy_solver/src/TransTableS.h
# )
# target_include_directories (bridge_double_dummy_solver PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
# target_compile_definitions(bridge_double_dummy_solver PUBLIC DDS_NO_STATIC_INIT)

# add_executable(2048_test twenty_forty_eight/2048_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(2048_test 2048_test)

# add_executable(amazons_test amazons/amazons_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(amazons_test amazons_test)

# add_executable(backgammon_test backgammon/backgammon_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(backgammon_test backgammon_test)

# add_executable(bargaining_instance_generator bargaining/bargaining_instance_generator.cc
#                ${OPEN_SPIEL_OBJECTS})
# add_executable(bargaining_test bargaining/bargaining_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(bargaining_test bargaining_test)

# add_executable(battleship_test battleship/battleship_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(battleship_test battleship_test)

# add_executable(blackjack_test blackjack/blackjack_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(blackjack_test blackjack_test)

# add_executable(blotto_test blotto/blotto_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(blotto_test blotto_test)

# add_executable(breakthrough_test breakthrough/breakthrough_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(breakthrough_test breakthrough_test)

# Disabled until we reduce the length. See #1371.
# add_executable(bridge_test bridge/bridge_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(bridge_test bridge_test)

# add_executable(catch_test catch/catch_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(catch_test catch_test)

# add_executable(checkers_test checkers/checkers_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(checkers_test checkers_test)

# add_executable(chess_test chess/chess_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(chess_test chess_test)

# add_executable(cliff_walking_test cliff_walking/cliff_walking_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(cliff_walking_test cliff_walking_test)

# add_executable(clobber_test clobber/clobber_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(clobber_test clobber_test)

# add_executable(coin_game_test coin_game/coin_game_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(coin_game_test coin_game_test)

# add_executable(colored_trails_board_generator
#                colored_trails/colored_trails_board_generator.cc
#                ${OPEN_SPIEL_OBJECTS} $<TARGET_OBJECTS:tests>)

# add_executable(colored_trails_test colored_trails/colored_trails_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(colored_trails_test colored_trails_test)

# add_executable(connect_four_test connect_four/connect_four_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(connect_four_test connect_four_test)

# add_executable(coop_box_pushing_test coop_box_pushing/coop_box_pushing_test.cc
#                ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(coop_box_pushing_test coop_box_pushing_test)

# add_executable(coordinated_mp_test coordinated_mp/coordinated_mp_test.cc ${OPEN_SPIEL_OBJECTS}
#         $<TARGET_OBJECTS:tests>
#         $<TARGET_OBJECTS:algorithms>)
# add_test(coordinated_mp_test coordinated_mp_test)

# add_executable(crazy_eights_test crazy_eights/crazy_eights_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(crazy_eights_test crazy_eights_test)

# add_executable(cribbage_test cribbage/cribbage_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(cribbage_test cribbage_test)

# add_executable(crowd_modelling_test mfg/crowd_modelling_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(crowd_modelling_test crowd_modelling_test)

# add_executable(crowd_modelling_2d_test mfg/crowd_modelling_2d_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(crowd_modelling_2d_test crowd_modelling_2d_test)

# add_executable(cursor_go_test cursor_go/cursor_go_test.cc
#                ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(cursor_go_test cursor_go_test)

# add_executable(dark_chess_test dark_chess/dark_chess_test.cc ${OPEN_SPIEL_OBJECTS}
#         $<TARGET_OBJECTS:tests>)
# add_test(dark_chess_test dark_chess_test)

# add_executable(dark_hex_test dark_hex/dark_hex_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dark_hex_test dark_hex_test)

# add_executable(deep_sea_test deep_sea/deep_sea_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(deep_sea_test deep_sea_test)

# add_executable(dots_and_boxes_test dots_and_boxes/dots_and_boxes_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dots_and_boxes_test dots_and_boxes_test)

# add_executable(dynamic_routing_data_test dynamic_routing/dynamic_routing_data_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dynamic_routing_data_test dynamic_routing_data_test)

# add_executable(dynamic_routing_test mfg/dynamic_routing_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dynamic_routing_test dynamic_routing_test)

# add_executable(dynamic_routing_utils_test dynamic_routing/dynamic_routing_utils_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dynamic_routing_utils_test dynamic_routing_utils_test)

# add_executable(dou_dizhu_test dou_dizhu/dou_dizhu_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dou_dizhu_test dou_dizhu_test)

# add_executable(dou_dizhu_utils_test dou_dizhu/dou_dizhu_utils_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(dou_dizhu_utils_test dou_dizhu_utils_test)

# add_executable(efg_game_test efg_game/efg_game_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(efg_game_test efg_game_test)

# add_executable(einstein_wurfelt_nicht_test einstein_wurfelt_nicht/einstein_wurfelt_nicht_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(einstein_wurfelt_nicht_test einstein_wurfelt_nicht_test)

# add_executable(euchre_test euchre/euchre_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(euchre_test euchre_test)

# add_executable(first_sealed_auction_test first_sealed_auction/first_sealed_auction_test.cc
#                ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(first_sealed_auction_test first_sealed_auction_test)

# add_executable(garnet_test mfg/garnet_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(garnet_test garnet_test)

# add_executable(gin_rummy_test gin_rummy/gin_rummy_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(gin_rummy_test gin_rummy_test)

# add_executable(go_test go/go_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(go_test go_test)

# add_executable(phantom_go_test phantom_go/phantom_go_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(phantom_go_test phantom_go_test)

# add_executable(goofspiel_test goofspiel/goofspiel_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(goofspiel_test goofspiel_test)

# add_executable(havannah_test havannah/havannah_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(havannah_test havannah_test)

# add_executable(hearts_test hearts/hearts_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(hearts_test hearts_test)

# add_executable(hex_test hex/hex_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(hex_test hex_test)

# add_executable(hive_test hive/hive_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(hive_test hive_test)

# add_executable(interstate_test interstate/interstate_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(interstate_test interstate_test)

# add_executable(kriegspiel_test kriegspiel/kriegspiel_test.cc ${OPEN_SPIEL_OBJECTS}
#         $<TARGET_OBJECTS:tests>)
# add_test(kriegspiel_test kriegspiel_test)

add_executable(kuhn_poker_test kuhn_poker/kuhn_poker_test.cc ${OPEN_SPIEL_OBJECTS}
               $<TARGET_OBJECTS:tests>
               $<TARGET_OBJECTS:algorithms>)
add_test(kuhn_poker_test kuhn_poker_test)

# add_executable(latent_ttt_test latent_ttt/latent_ttt_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(latent_ttt_test latent_ttt_test)

# add_executable(leduc_poker_test leduc_poker/leduc_poker_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(leduc_poker_test leduc_poker_test)

# add_executable(lewis_signaling_test lewis_signaling/lewis_signaling_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(lewis_signaling_test lewis_signaling_test)

# add_executable(liars_dice_test liars_dice/liars_dice_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(liars_dice_test liars_dice_test)

# add_executable(lines_of_action_test lines_of_action/lines_of_action_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(lines_of_action_test lines_of_action_test)

# add_executable(maedn_test maedn/maedn_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(maedn_test maedn_test)

# add_executable(mancala_test mancala/mancala_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(mancala_test mancala_test)

# add_executable(markov_soccer_test markov_soccer/markov_soccer_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(markov_soccer_test markov_soccer_test)

# add_executable(matching_pennies_3p_test matching_pennies_3p/matching_pennies_3p_test.cc
#                ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(matching_pennies_3p_test matching_pennies_3p_test)

# add_executable(matrix_games_test matrix_games/matrix_games_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(matrix_games_test matrix_games_test)

# add_executable(mnk_test mnk/mnk_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(mnk_test mnk_test)

# add_executable(morpion_solitaire_test morpion_solitaire/morpion_solitaire_test.cc ${OPEN_SPIEL_OBJECTS}
#         $<TARGET_OBJECTS:tests>)
# add_test(morpion_solitaire_test morpion_solitaire_test)

# add_executable(negotiation_test negotiation/negotiation_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(negotiation_test negotiation_test)

# add_executable(nfg_game_test nfg_game/nfg_game_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(nfg_game_test nfg_game_test)

# add_executable(nim_test nim/nim_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(nim_test nim_test)

# add_executable(nine_mens_morris_test nine_mens_morris/nine_mens_morris_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(nine_mens_morris_test nine_mens_morris_test)

# add_executable(oh_hell_test oh_hell/oh_hell_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(oh_hell_test oh_hell_test)

# add_executable(oshi_zumo_test oshi_zumo/oshi_zumo_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(oshi_zumo_test oshi_zumo_test)

# add_executable(othello_test othello/othello_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(othello_test othello_test)

# add_executable(oware_test oware/oware_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(oware_test oware_test)

# add_executable(pathfinding_test pathfinding/pathfinding_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(pathfinding_test pathfinding_test)

# add_executable(pentago_test pentago/pentago_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(pentago_test pentago_test)

# add_executable(phantom_ttt_test phantom_ttt/phantom_ttt_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(phantom_ttt_test phantom_ttt_test)

# add_executable(pig_test pig/pig_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(pig_test pig_test)

# add_executable(pokerkit_wrapper_struct_test pokerkit_wrapper/pokerkit_wrapper_struct_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(pokerkit_wrapper_struct_test pokerkit_wrapper_struct_test)

# add_executable(repeated_pokerkit_struct_test repeated_pokerkit/repeated_pokerkit_struct_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(repeated_pokerkit_struct_test repeated_pokerkit_struct_test)

# add_executable(quoridor_test quoridor/quoridor_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(quoridor_test quoridor_test)

# add_executable(rbc_test rbc/rbc_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(rbc_test rbc_test)

# add_executable(repeated_leduc_poker_test leduc_poker/repeated_leduc_poker_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(repeated_leduc_poker_test repeated_leduc_poker_test)

# add_executable(sheriff_test sheriff/sheriff_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(sheriff_test sheriff_test)

# add_executable(skat_test skat/skat_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(skat_test skat_test)

# add_executable(solitaire_test solitaire/solitaire_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(solitaire_test solitaire_test)

# add_executable(spades_test spades/spades_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(spades_test spades_test)

# add_executable(stones_and_gems_test stones_and_gems/stones_and_gems_test.cc
#                ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(stones_and_gems_test stones_and_gems_test)

# add_executable(tarok_test tarok/tarok_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(tarok_test tarok_test)

# add_executable(tic_tac_toe_test tic_tac_toe/tic_tac_toe_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(tic_tac_toe_test tic_tac_toe_test)

# add_executable(laser_tag_test laser_tag/laser_tag_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(laser_tag_test laser_tag_test)

# add_executable(tiny_bridge_test tiny_bridge/tiny_bridge_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(tiny_bridge_test tiny_bridge_test)

# add_executable(tiny_hanabi_test tiny_hanabi/tiny_hanabi_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>
#                $<TARGET_OBJECTS:algorithms>)
# add_test(tiny_hanabi_test tiny_hanabi_test)

# add_executable(trade_comm_test trade_comm/trade_comm_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(trade_comm_test trade_comm_test)

# add_executable(twixt_test twixt/twixt_test.cc ${OPEN_SPIEL_OBJECTS}
#                $<TARGET_OBJECTS:tests>)
# add_test(twixt_test twixt_test)

# add_executable(ultimate_tic_tac_toe_test ultimate_tic_tac_toe/ultimate_tic_tac_toe_test.cc
#                ${OPEN_SPIEL_OBJECTS} $<TARGET_OBJECTS:tests>)
# add_test(ultimate_tic_tac_toe_test ultimate_tic_tac_toe_test)

if (${OPEN_SPIEL_BUILD_WITH_ACPC})
  add_executable(universal_poker_test universal_poker/universal_poker_test.cc ${OPEN_SPIEL_OBJECTS}
          $<TARGET_OBJECTS:tests>
          $<TARGET_OBJECTS:algorithms>)
  add_test(universal_poker_test universal_poker_test
           --subgames_data_dir=${CMAKE_CURRENT_SOURCE_DIR}/universal_poker/endgames)
  add_executable(repeated_poker_test universal_poker/repeated_poker_test.cc ${OPEN_SPIEL_OBJECTS}
          $<TARGET_OBJECTS:tests>
          $<TARGET_OBJECTS:algorithms>)
  add_test(repeated_poker_test repeated_poker_test)
endif()

add_executable(y_test y/y_test.cc ${OPEN_SPIEL_OBJECTS}
               $<TARGET_OBJECTS:tests>)
add_test(y_test y_test)
