# makefile for circle packing routines

CC=cc
#CC=cc -static
#OPT_CC= -O2 -funroll-loops
DEBUG= -g
#DEBUG= -g -Wall -O2
#DEBUG= -g -Wall
TREE_TOP=${HOME}/CP
CP_INC_DIR=${TREE_TOP}/include
CP_SRC_DIR=${TREE_TOP}/src
CP_LIB_DIR=${TREE_TOP}/lib
CP_BIN_DIR=${TREE_TOP}/bin

XView_INC = -I/usr/openwin/include -I/opt/openwin/include -I/usr/X11R6/include\
-I${CP_INC_DIR} -Ipvm3/include

LIBPATH = -L/usr/openwin/lib -L/usr/X11R6/lib -L/usr/lib -L${CP_LIB_DIR}\
-L/usr/pvm3/lib/LINUX
# for XVIEW problems, workaround with old glibc
# LIBPATH = -L/${HOME}/circle/work -L/usr/i386-glibc20-linux/lib \
# -L/usr/openwin/lib -L/opt/openwin/lib -L/usr/X11R6/lib -L/usr/lib\
# -L${CP_LIB_DIR}


XOPTIONS=  ${LIBPATH} -lCP_libs -lxview -lolgx -lX11 -lm

CFLAGS = ${DEBUG} ${XView_INC}

CirclePackOBJS = cp_main.o  cp_action.o cp_call.o cp_cmd.o            \
 cp_format.o cp_io.o cp_remote.o cp_screen.o cp_special.o cp_xview.o

CirclePack: ${CirclePackOBJS}  libCP_libs.a
	$(CC) -o ${CP_BIN_DIR}/$@ ${DEBUG} ${CirclePackOBJS} \
	$(XOPTIONS)

CP_static: ${CirclePackOBJS}  libCP_libs.a
	$(CC) -static -o ${CP_BIN_DIR}/$@ ${CirclePackOBJS} \
	$(XOPTIONS)

DP: DesPack.o libCP_libs.a
	$(CC) DesPack.o -o ${CP_BIN_DIR}/DP \
	$(XOPTIONS) ${INCLUDES} ${DEBUG} -lm

PlugPack: PlugPack.o libCP_libs.a
	$(CC) PlugPack.o -o ${CP_BIN_DIR}/$@ \
                ${XOPTIONS} ${INCLUDES} ${DEBUG} 

ActivePack: ActivePack.o extract_light_pack.o debug_stuff.o libCP_libs.a 
	$(CC) $@.o extract_light_pack.o debug_stuff.o -o ${CP_BIN_DIR}/$@  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lm

TM: TorusMod.o libCP_libs.a
	$(CC) TorusMod.o -o ${CP_BIN_DIR}/TM ${DEBUG} \
	$(XOPTIONS) ${INCLUDES} ${DEBUG} -lm


Decompose: Decompose.o write_light.o debug_stuff.o libCP_libs.a 
	$(CC) $@.o debug_stuff.o -o ${CP_BIN_DIR}/$@  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lCP_libs -lm

Disp_decomposition: Disp_decomposition.o libCP_libs.a 
	$(CC) $@.o -o ${CP_BIN_DIR}/$@  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lCP_libs -lm

tile: tile_coloring.o libCP_libs.a 
	$(CC) tile_coloring.o -o ${CP_BIN_DIR}/tile_coloring  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lCP_libs -lm

light_list: light_list.o write_light.o
	$(CC) $@.o read_light.o write_light.o -o ${CP_BIN_DIR}/$@ \
		${LIBPATH} ${DEBUG} -lCP_libs -lm

ViewCP: ViewCP.o
	$(CC) ViewCP.o -o ${CP_BIN_DIR}/$@\
	${XOPTIONS} ${INCLUDES} ${DEBUG} -lCP_libs -lm


RePack: RePack.o libCP_libs.a 
	$(CC) -static $@.o -o ${CP_BIN_DIR}/$@  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lm

RePack_O2: RePack.o libCP_libs.a 
	$(OPT_CC) RePack.o -o ${CP_BIN_DIR}/$@  \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lm

RP_master: RePack_master.o test_worker.o  
	$(CC) -o RP_master RePack_master.o ${LIBPATH} -lCP_libs -lpvm3 -lm

pvm_test:
	$(CC) -o pvm_test master.c -Ipvm3/include ${LIBPATH} -lpvm3
	$(CC) -o worker worker.c -Ipvm3/include ${LIBPATH} -lpvm3

adj_mat: adjcy_matrix.o
	$(CC) adjcy_matrix.o -o adj_mat \
		${XOPTIONS} ${INCLUDES} ${DEBUG} -lm

cp_main.o  cp_action.o cp_call.o cp_cmd.o cp_format.o \
cp_io.o cp_remote.o cp_screen.o cp_special.o: \
${CP_INC_DIR}/cp_head.h ${CP_INC_DIR}/cp_types.h ${CP_INC_DIR}/cp_post.h \
${CP_INC_DIR}/cp_canvas.h ${CP_INC_DIR}/cp_proto.h

# ======================= CirclePack libraries =================

${CP_PROC} : ${CP_INC_DIR}/cp_types.h ${CP_INC_DIR}/cp_util.h \
${CP_INC_DIR}/cp_proto.h

remake:
	/bin/rm *.o
	/bin/rm ../lib/libCP_libs.a

CP_PROC = \
eucl_math.o hyp_math.o sph_math.o complex_math.o mobius_math.o\
NS_mobius.o\
writepack.o readpack.o writepath.o readpath.o\
writeeucldata.o remote_comm_stuff.o\
seed_pack.o copy_pack.o\
grab_stuff.o paren_parse.o brace_parse.o symb_to_value.o\
comparison.o pair_picking.o\
cp_X_draw.o draw_circle_stuff.o draw_face_stuff.o \
vert_draw_order.o \
s_draw_objs.o h_draw_objs.o e_draw_objs.o\
draw_text_stuff.o \
ss_view.o r_to_pix.o pix_to_r.o\
reset_screen_box.o\
post_ops_stuff.o print_call.o post_text_stuff.o\
post_circle_stuff.o post_face_stuff.o s_post_objs.o\
post_any_polygon.o post_any_geo.o post_in_order.o post_shape.o\
comb_util_stuff.o check_red_layout.o\
gen_cut.o incr_generations.o\
complex_count.o\
close_up.o add_circles.o flat_hex.o\
remove_edge.o swap_nodes.o reverse_orient.o double_K.o\
adjoin.o\
e_riffle_stuff.o e_radcalc.o e_radcalc_binary.o\
h_riffle_stuff.o h_radcalc.o h_radcalc_binary.o\
s_riffle_stuff.o s_radcalc.o s_radcalc_norm.o\
call_test_repack.o test_riffle.o\
s_anglesum_overlap.o h_anglesum_overlap.o e_anglesum_overlap.o\
h_as_overlap.o e_as_overlap.o \
h_anglesum.o h_curvcalc.o\
h_changerad.o e_changerad.o s_changerad.o\
fillcurves.o\
debug_stuff.o adjacency.o\
ck_pack_status.o\
diag_small_rads.o\
screen_focus.o\
set_screen.o\
sphere_view.o\
check_red_chain.o diag_hanging_verts.o diag_int_connected.o\
cir_placement_data.o placement_err.o invdist_err.o\
line_ck.o cir_ck.o geo_ck.o\
select_vertex.o\
branch_order.o\
s_deriv_sign.o\
ideal_bdry_node.o\
add_vert.o enfold.o slit_complex.o open_edge.o\
add_layer.o add_barys.o add_barycenter.o \
split_flips.o split_edge.o flip_edge.o\
hex_refine.o set_poison_stuff.o delete_vert_stuff.o \
generation_stuff.o organize_bdry_data.o simplify_redchain.o \
catalog_face_stuff.o\
Node_link_parse.o Face_link_parse.o Node_pair_link.o\
get_extended_edge.o\
extended_edge_verts.o\
blend_stuff.o\
find_path_int.o path_wrap.o path_XPoints.o\
path_follow.o \
path_construct.o\
map_stuff.o\
s_carrier_area.o ck_s_compat.o\
get_put_data.o\
set_plot_flags.o\
crement_radii.o\
apply_pair_mobius.o\
e_norm_scale.o\
rect_ratio.o\
eucl_scale.o\
pair_mobius.o\
e_norm_pack.o\
update_pair_mob.o apply_Mobius.o\
rotate.o\
any_compcenter.o\
h_compcenter.o\
center_point.o \
comp_single_angle.o\
comp_center_face.o\
spiral.o\
norm_any_pack.o\
comp_inv_dist.o\
curv_aim_error.o\
set_aim_stuff.o\
set_abc_stuff.o\
set_radii.o\
set_face_stuff.o geom_convert_stuff.o \
h_norm_pack.o\
s_star_area.o\
bdry_dist.o\
comp_pack_centers.o comp_center_face.o place_face.o \
molify_pack_centers.o molify_center.o \
max_r_adjustment.o\
seg_dist.o\
fill_star_curves.o\
normalize_star.o\
alloc_stuff.o\
free_stuff.o\
set_overlap.o\
gwrand.o\
set_radius.o\
consume_stuff.o\
set_default_overlaps.o\
face_order_stuff.o\
redchain_stuff.o build_gen_redlist.o cookie_stuff.o\
build_redchain.o\
gen_mark.o\
node_to_edge.o\
pt_in_object_stuff.o\
blue_to_red_ramp.o\
set_color_stuff.o\
energy_comp_stuff.o weld_stuff.o random_walk_stuff.o gauss_curv_stuff.o\
fancy_comp_center.o\
convert_to_p_light.o\
convert_from_p_light.o\
write_light.o\
read_light.o\
output_mobius.o \
e_pack_light_uniform.o h_pack_light_uniform.o\
layer_decompose.o\
build_j_function.o\
comb_deep_ck.o\
read_parent_child.o\
fix_call.o\
layout_report.o\
time_stuff.o\
fix_Pages_stuff.o\
set_cp_globals.o\
jason_howard_code.o


libCP_libs.a: ${CP_PROC}
	@ ar r ${CP_LIB_DIR}/$@ ${CP_PROC}







