add_subdirectory(utility)
add_subdirectory(place_io)
add_subdirectory(dct)
add_subdirectory(pin_pos)
add_subdirectory(move_boundary)
if(BUILD_DRAW_PLACE)
  add_subdirectory(draw_place)
endif()
add_subdirectory(density_map)
add_subdirectory(density_overflow)
add_subdirectory(density_potential)
add_subdirectory(electric_potential)
add_subdirectory(hpwl)
# add_subdirectory(rmst_wl)
add_subdirectory(weighted_average_wirelength)
add_subdirectory(logsumexp_wirelength)
add_subdirectory(fence_region)
# legalization operators
add_subdirectory(legality_check)
add_subdirectory(macro_legalize)
add_subdirectory(greedy_legalize)
add_subdirectory(abacus_legalize)
# detailed placement operators
add_subdirectory(global_swap)
add_subdirectory(independent_set_matching)
add_subdirectory(k_reorder)
# routing congestion operator
add_subdirectory(pin_utilization)
add_subdirectory(rudy)
add_subdirectory(pinrudy)
if(BUILD_NCTUGR)
  add_subdirectory(nctugr_binary)
endif()
add_subdirectory(adjust_node_area)
# timing operator
add_subdirectory(pin_weight_sum)
if(BUILD_OPENTIMER)
  add_subdirectory(timing)
endif()
if(BUILD_HETEROSTA)
  add_subdirectory(timing_heterosta)
endif()
# gift initial placement 
add_subdirectory(gift_init)

file(GLOB INSTALL_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/*.py")
install(
    FILES ${INSTALL_SRCS} DESTINATION dreamplace/ops
    )
