# ----------------------------------------------------------------------- # Makefile for curses user interface programs on eisfair # # Creation : 13.03.2004 # Last Modified: $Id$ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # Tool settings # ---------------------------------------------------------------------- # Tools SHELL = @SHELL@ CC = @CC@ FLEX = @LEX@ SED = @SED@ # compile options CFLAGS += -Wall -Wextra -Wstrict-prototypes CFLAGS += -Wno-unused-function CFLAGS += -Wno-sign-compare CFLAGS += -D_XOPEN_SOURCE_EXTENDED CFLAGS += -D_GNU_SOURCE CFLAGS += @DEFS@ CFLAGS += -fPIC DBGFLAGS = -g # linker LDFLAGS = @CURSES_LIB@ -ldl # definitions TARGET = @PACKAGE_NAME@ VERSION = @PACKAGE_VERSION@ prefix = @prefix@ exec_prefix = @exec_prefix@ INSTALLLIBDIR = @libdir@ INSTALLINCDIR = @includedir@ DBG_DIR = Debug REL_DIR = Release BASE_DIR = . # ---------------------------------------------------------------------- # Objetcs to build # ---------------------------------------------------------------------- # files SOURCES = main.c # files for libcui CUI_SOURCES = wrappers.c CUI_SOURCES += chartools.c CUI_SOURCES += window.c CUI_SOURCES += edit.c CUI_SOURCES += memo.c CUI_SOURCES += label.c CUI_SOURCES += button.c CUI_SOURCES += radio.c CUI_SOURCES += checkbox.c CUI_SOURCES += groupbox.c CUI_SOURCES += listbox.c CUI_SOURCES += combobox.c CUI_SOURCES += progressbar.c CUI_SOURCES += textview.c CUI_SOURCES += listview.c CUI_SOURCES += terminal.c CUI_SOURCES += menu.c CUI_SOURCES += msgbox.c CUI_SOURCES += finddlg.c CUI_SOURCES += inputdlg.c CUI_SOURCES += passwddlg.c # files for libcui-util UTIL_SOURCES = xmlparser.c UTIL_SOURCES += config.c UTIL_SOURCES += coproc.c UTIL_SOURCES += xml.c UTIL_SOURCES += cfg.c # files for libcui-script SCRIPT_SOURCES = backend.c SCRIPT_SOURCES += api.c SCRIPT_SOURCES += api_ctrl.c SCRIPT_SOURCES += api_util.c SCRIPT_SOURCES += stub.c # targets DBG_OBJECTS := $(addprefix $(DBG_DIR)/,$(subst /,!,$(SOURCES:.c=.o))) REL_OBJECTS := $(addprefix $(REL_DIR)/,$(subst /,!,$(SOURCES:.c=.o))) DBG_CUI_OBJECTS := $(addprefix $(DBG_DIR)/,$(subst /,!,$(CUI_SOURCES:.c=.o))) REL_CUI_OBJECTS := $(addprefix $(REL_DIR)/,$(subst /,!,$(CUI_SOURCES:.c=.o))) DBG_UTIL_OBJECTS := $(addprefix $(DBG_DIR)/,$(subst /,!,$(UTIL_SOURCES:.c=.o))) REL_UTIL_OBJECTS := $(addprefix $(REL_DIR)/,$(subst /,!,$(UTIL_SOURCES:.c=.o))) DBG_SCRIPT_OBJECTS := $(addprefix $(DBG_DIR)/,$(subst /,!,$(SCRIPT_SOURCES:.c=.o))) REL_SCRIPT_OBJECTS := $(addprefix $(REL_DIR)/,$(subst /,!,$(SCRIPT_SOURCES:.c=.o))) # ---------------------------------------------------------------------- # Rules # ---------------------------------------------------------------------- # compile targets all: release release: $(REL_DIR)/$(TARGET).so.$(VERSION) release: $(REL_DIR)/$(TARGET).a release: $(REL_DIR)/$(TARGET)-util.so.$(VERSION) release: $(REL_DIR)/$(TARGET)-util.a release: $(REL_DIR)/$(TARGET)-script.so.$(VERSION) release: $(REL_DIR)/$(TARGET)-script.a debug: $(DBG_DIR)/$(TARGET).so.$(VERSION) debug: $(DBG_DIR)/$(TARGET).a debug: $(DBG_DIR)/$(TARGET)-util.so.$(VERSION) debug: $(DBG_DIR)/$(TARGET)-util.a debug: $(DBG_DIR)/$(TARGET)-script.so.$(VERSION) debug: $(DBG_DIR)/$(TARGET)-script.a $(REL_DIR)/$(TARGET).so.$(VERSION): $(REL_CUI_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET).so.2 -o $@ $^ $(LDFLAGS) $(DBG_DIR)/$(TARGET).so.$(VERSION): $(DBG_CUI_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET).so.2 -o $@ $^ $(LDFLAGS) $(REL_DIR)/$(TARGET)-util.so.$(VERSION): $(REL_UTIL_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET)-util.so.2 -o $@ $^ -L$(REL_DIR) -lcui $(LDFLAGS) $(DBG_DIR)/$(TARGET)-util.so.$(VERSION): $(DBG_UTIL_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET)-util.so.2 -o $@ $^ -L$(REL_DIR) -lcui $(LDFLAGS) $(REL_DIR)/$(TARGET)-script.so.$(VERSION): $(REL_SCRIPT_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET)-script.so.2 -o $@ $^ -L$(REL_DIR) -lcui -lcui-util $(LDFLAGS) $(DBG_DIR)/$(TARGET)-script.so.$(VERSION): $(DBG_SCRIPT_OBJECTS) @echo "linking $@ ..." @$(CC) -shared -Wl,-soname,$(TARGET)-script.so.2 -o $@ $^ -L$(DBG_DIR) -lcui -lcui-util $(LDFLAGS) $(REL_DIR)/$(TARGET).a: $(REL_CUI_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ $(DBG_DIR)/$(TARGET).a: $(DBG_CUI_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ $(REL_DIR)/$(TARGET)-util.a: $(REL_UTIL_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ $(DBG_DIR)/$(TARGET)-util.a: $(DBG_UTIL_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ $(REL_DIR)/$(TARGET)-script.a: $(REL_SCRIPT_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ $(DBG_DIR)/$(TARGET)-script.a: $(DBG_SCRIPT_OBJECTS) @echo "linking $@ ..." @rm -f $@ @ar rsc $@ $^ # include dependencies -include $(REL_CUI_OBJECTS:.o=.d) -include $(DBG_CUI_OBJECTS:.o=.d) -include $(REL_UTIL_OBJECTS:.o=.d) -include $(DBG_UTIL_OBJECTS:.o=.d) -include $(REL_SCRIPT_OBJECTS:.o=.d) -include $(DBG_SCRIPT_OBJECTS:.o=.d) # pattern build rule for release target .SECONDEXPANSION: $(REL_DIR)/%.o: $(BASE_DIR)/$$(subst !,/,%).c @echo "building $*.c ..." @mkdir -p $(REL_DIR) @$(CC) -c $(CFLAGS) $< -o $@ @$(CC) -MM $(CFLAGS) $< > $(subst .o,.d,$@) @mv -f $(subst .o,.d,$@) $(subst .o,.d,$@).tmp @$(SED) -e 's|.*:|$@:|' < $(subst .o,.d,$@).tmp > $(subst .o,.d,$@) @cp -f $(subst .o,.d,$@) $(subst .o,.d,$@).tmp @$(SED) -e 's/.*://' -e 's/\\$$//' < $(subst .o,.d,$@).tmp | fmt -1 | $(SED) -e 's/^ *//' -e 's/$$/:/' >> $(subst .o,.d,$@) @rm -f $(subst .o,.d,$@).tmp # pattern build rule for debug target .SECONDEXPANSION: $(DBG_DIR)/%.o: $(BASE_DIR)/$$(subst !,/,%).c @echo "building $*.c ..." @mkdir -p $(DBG_DIR) @$(CC) -c $(CFLAGS) $(DBGFLAGS) $< -o $@ @$(CC) -MM $(CFLAGS) $(DBGFLAGS) $< > $(subst .o,.d,$@) @mv -f $(subst .o,.d,$@) $(subst .o,.d,$@).tmp @$(SED) -e 's|.*:|$@:|' < $(subst .o,.d,$@).tmp > $(subst .o,.d,$@) @cp -f $(subst .o,.d,$@) $(subst .o,.d,$@).tmp @$(SED) -e 's/.*://' -e 's/\\$$//' < $(subst .o,.d,$@).tmp | fmt -1 | $(SED) -e 's/^ *//' -e 's/$$/:/' >> $(subst .o,.d,$@) @rm -f $(subst .o,.d,$@).tmp # pattern build rule l->c %.c: $(BASE_DIR)/%.l @echo "generating $*.c from $*.l ..." @$(FLEX) -P$* -o$*.c $*.l # install install: release @echo "installing $(TARGET)..." @mkdir -p $(DESTDIR)/$(INSTALLLIBDIR) @mkdir -p $(DESTDIR)/$(INSTALLINCDIR) @mkdir -p $(DESTDIR)/var/install/include @install -m0644 $(REL_DIR)/$(TARGET).so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @install -m0644 $(REL_DIR)/$(TARGET)-util.so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @install -m0644 $(REL_DIR)/$(TARGET)-script.so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @cp $(REL_DIR)/$(TARGET).a $(DESTDIR)/$(INSTALLLIBDIR) @cp $(REL_DIR)/$(TARGET)-util.a $(DESTDIR)/$(INSTALLLIBDIR) @cp $(REL_DIR)/$(TARGET)-script.a $(DESTDIR)/$(INSTALLLIBDIR) @strip $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).so.$(VERSION) @strip $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.so.$(VERSION) @strip $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.so.$(VERSION) @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.so @ldconfig -n $(DESTDIR)/$(INSTALLLIBDIR) @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET).so.$(VERSION) $(TARGET).so @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET)-util.so.$(VERSION) $(TARGET)-util.so @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET)-script.so.$(VERSION) $(TARGET)-script.so @install -m0644 cui.h $(DESTDIR)/$(INSTALLINCDIR) @install -m0644 cui-char.h $(DESTDIR)/$(INSTALLINCDIR) @install -m0644 cui-util.h $(DESTDIR)/$(INSTALLINCDIR) @install -m0644 cui-script.h $(DESTDIR)/$(INSTALLINCDIR) @install -m0644 cuilib $(DESTDIR)/var/install/include # install install_debug: debug @echo "installing $(TARGET)..." @mkdir -p $(DESTDIR)/$(INSTALLLIBDIR) @install -m0644 $(DBG_DIR)/$(TARGET).so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @install -m0644 $(DBG_DIR)/$(TARGET)-util.so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @install -m0644 $(DBG_DIR)/$(TARGET)-script.so.$(VERSION) $(DESTDIR)/$(INSTALLLIBDIR) @cp $(DBG_DIR)/$(TARGET).a $(DESTDIR)/$(INSTALLLIBDIR) @cp $(DBG_DIR)/$(TARGET)-util.a $(DESTDIR)/$(INSTALLLIBDIR) @cp $(DBG_DIR)/$(TARGET)-script.a $(DESTDIR)/$(INSTALLLIBDIR) @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.so @ldconfig -n $(DESTDIR)/$(INSTALLLIBDIR) @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET).so.$(VERSION) $(TARGET).so @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET)-util.so.$(VERSION) $(TARGET)-util.so @cd $(DESTDIR)/$(INSTALLLIBDIR) && ln -s $(TARGET)-script.so.$(VERSION) $(TARGET)-script.so @install cui.h $(DESTDIR)/$(INSTALLINCDIR) @install cui-char.h $(DESTDIR)/$(INSTALLINCDIR) @install cui-util.h $(DESTDIR)/$(INSTALLINCDIR) @install cui-script.h $(DESTDIR)/$(INSTALLINCDIR) @install cuilib $(DESTDIR)/var/install/include # uninstall uninstall: @echo "uninstalling $(TARGET)..." @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).so.$(VERSION) @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.so.$(VERSION) @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.so.$(VERSION) @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.so @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET).a @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-util.a @rm -f $(DESTDIR)/$(INSTALLLIBDIR)/$(TARGET)-script.a @rm -f $(DESTDIR)/var/install/include/cuilib @ldconfig -n $(DESTDIR)/$(INSTALLLIBDIR) # clean build directory clean : @echo "cleaning up build directories ..." @rm -rf $(REL_DIR) @rm -rf $(DBG_DIR) .PHONY: all release debug install uninstall clean