CC      = gcc
INCS    = -I. -I$(UDF_HOME)/include
LBS     = -L. -L$(UDF_HOME)/lib
CADD    =
EXT     =
RANLIB  =
CTYPE   =

ifeq "$(CTYPE)" "SHARED"
CFLAGS  = $(INCS) $(LBS) $(CADD) $(CSO)
LIBRARY = libbase_udf.$(SO_EXT)
RTIME   =
else
CFLAGS  = $(INCS) $(LBS) $(CADD)
LIBRARY = libbase_udf.a
RTIME   = rtime_dfiles.o
endif

objects = $(RTIME) \
          acq_pitch.o adjust_time.o adv_tm_ptrs.o alloc_exp.o alloc_pitch.o \
          alloc_swp.o assign_ptrs.o \
	  BuildBins.o BuildImage.o BuildMatrix.o \
          chk_cal_size.o chk_crit_stat.o chk_dep_hdr.o \
          chk_idf_mem.o CombineOp.o compute_pa.o conv_cal.o conv_mode.o \
          conv_sen.o conv_swp.o conv_units.o copy_pdata.o count_combo.o \
	  create_data.o CreateMatStruc.o create_tbl.o \
	  err_msg.o \
	  FileLength.o \
          fields_key.o file_open.o file_pos.o file_setup.o fill_aarray.o \
          fill_cal_bit.o fill_cal_byte.o fill_darray.o fill_pitch.o \
          fine_search.o fix_ptrs.o free_ex.o free_ex_str.o free_idf.o \
          free_version.o free_vidf_str.o FilePosRec.o FreeTblSen.o \
	  get_const.o get_crit_info.o get_data_key.o get_mode_info.o \
          get_mode_tbl.o get_new_tbl.o get_pinfo.o GetOrdering.o \
          get_sen_tbls.o get_tbl_info.o get_vnum.o \
          idf_add.o idf_div.o idf_ex_func.o idf_look.o idf_mod.o idf_exor.o \
          idf_inv.o idf_mult.o idf_sub.o init_exper.o init_udf.o idf_and.o \
          idf_or.o idf_shiftr.o idf_shiftl.o idf_pow.o init_sen_ptr.o \
          init_struct.o init_vidf.o intfp.o \
          key_fields.o \
          locate_ex.o \
          mode_tbl_sz.o \
          new_data.o new_hdr.o next_file_tm.o next_idf.o num_of_cal.o \
	  NewVidf.o \
          oper_asgn.o \
          PromoteFile.o \
          PaFormat0.o PaFormat1.o pa_dsrc.o pa_status.o pa_swp_times.o \
          pa_tbls.o pback_dfiles.o pitch_etime.o pitch_frac.o  pitch_los.o \
	  pitch_stime.o poly_exp.o pos_rtime.o proc_pdata.o \
          RawToFloat.o read_drec.o read_drec_adv.o read_drec_times.o \
          read_drec_data.o read_header.o read_idf.o read_idf_disk.o \
          read_idf_mem.o read_idf_once.o read_tbl.o reset_exp.o \
	  ReOrderBytes.o \
          ReOpenFile.o ReOrderUdf.o reset_hdr.o reset_set.o \
          same_ptime.o samp_time.o select_sen.o sen_combo.o sen_set_time.o \
          set_time.o start_image.o \
          tbl_size.o ThetaConing.o TimeTblVal.o  ToThisTime.o \
          to_sign.o time_comp.o trans_data.o \
          unit_normals.o

ifeq "$(CTYPE)" "SHARED"
                                                                                
.c.o:   $(CC) -c $(CFLAGS) $<
                                                                                
$(LIBRARY):  $(objects)
	$(LD) $(LD_FLAGS) -o $@ $(objects)
                                                                                
else
                                                                                
.PRECIOUS: $(LIBRARY)
.KEEP_STATE:
                                                                                
$(LIBRARY): $(objects)
	ar r $(LIBRARY) $(objects)
        ifdef $(RANLIB)
        	$(RANLIB) $(LIBRARY)
        endif
endif

release:
	cp $(LIBRARY) $(UDF_HOME)/lib
	cp gen_defs.h $(UDF_HOME)/include
	cp libbase_udf.h $(UDF_HOME)/include
	cp ret_codes.h $(UDF_HOME)/include
	cp user_defs.h $(UDF_HOME)/include
	cp util_str.h $(UDF_HOME)/include
	cp util_var.h $(UDF_HOME)/include

clean:
	-rm -f $(LIBRARY)
	-rm -f $(objects)
