# Program name PROJ = ordena # Compiler to be used CC = gcc # Flags for the compiler CFLAGS = -Wall INCLUDE = . LIB = . ifdef NDEBUG OUT_DIR = release else OUT_DIR = debug CFLAGS += -g -DDEBUG endif # Build list of object files OBJ_LST = $(OUT_DIR)/sortui.o \ $(OUT_DIR)/log.o \ $(OUT_DIR)/buscabinaria.o \ $(OUT_DIR)/buscaseq.o \ $(OUT_DIR)/selectsort.o \ $(OUT_DIR)/quicksort.o proj_$(PROJ): $(OUT_DIR) $(OUT_DIR)/$(PROJ) Makefile #******* #* WARNING i have no idea why, but if you use the target name #* to build a dir statically (as build_dir:) make does not #* show the message "make: Nothing to be done for `target_name'." #***************************************************************** $(OUT_DIR): @if [ ! -e $(OUT_DIR) ]; then \ echo "Building dir '$(OUT_DIR)'..."; \ mkdir $(OUT_DIR); \ echo "done."; \ fi $(OUT_DIR)/$(PROJ): $(OBJ_LST) $(CC) -L$(LIB) -o $@ $(OBJ_LST) -lncurses -lm @echo "done with '$(@)'"; $(OUT_DIR)/sortui.o: sortui.c sortui.h mycommdef.h mydebug.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< $(OUT_DIR)/log.o: log.c log.h mycommdef.h mydebug.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< $(OUT_DIR)/buscabinaria.o: buscabinaria.c buscabinaria.h sortui.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< $(OUT_DIR)/buscaseq.o: buscaseq.c buscaseq.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< $(OUT_DIR)/selectsort.o: selectsort.c selectsort.h sortui.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< $(OUT_DIR)/quicksort.o: quicksort.c quicksort.h Makefile $(CC) -c $(CFLAGS) -I$(INCLUDE) -o $@ $< clean: -rm -f $(OUT_DIR)/*.o $(OUT_DIR)/$(PROJ) trab2-algii.tar.gz cleanall: -rm -rf $(OUT_DIR) trab2-algii.tar.gz dist: trab2-algii.tar.gz trab2-algii.tar.gz: -tar czf trab2-algii.tar.gz *.h *.c Makefile