# vim: ts=4 sw=4 sts=4 fenc=utf-8 ff=unix : # ===================================================================== # Makefile for libsc # ===================================================================== # --------------------------------------------------------------------- # SETTING & OPTION # --------------------------------------------------------------------- #TARGET_TYPE = static-library #TARGET_TYPE = shared-library TARGET_TYPE = windows-dll #TARGET_TYPE = exec TARGET_NAME = sc MAJOR_VER = 1 MINOR_VER = 0 SRCDIR = src OBJDIR = obj SRCS = $(wildcard $(SRCDIR)/*.c) OBJS = $(SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o) DEPEND_FILE = depend.inc INCLUDES = -Iinclude CFLAGS = $(INCLUDES) CFLAGS += -Wall SFLAGS = -fPIC LDFLAGS = LIBS = `./sc-config --libs-depends` # --------------------------------------------------------------------- # TARGET_TYPE 毎の設定 # --------------------------------------------------------------------- ifeq ($(TARGET_TYPE), static-library) TARGET = lib$(TARGET_NAME).a else ifeq ($(TARGET_TYPE), shared-library) TARGET = lib$(TARGET_NAME).so.$(MAJOR_VER).$(MINOR_VER) CFLAGS += $(SFLAGS) else ifeq ($(TARGET_TYPE), windows-dll) TARGET = $(TARGET_NAME).dll CFLAGS += -mrtd else ifeq ($(TARGET_TYPE), exec) TARGET = $(TARGET_NAME).exe endif # --------------------------------------------------------------------- # SUFFIXES # --------------------------------------------------------------------- .SUFFIXES: .o .c # --------------------------------------------------------------------- # COMMANDS # --------------------------------------------------------------------- AS = as AR = ar CC = gcc CP = cp MV = mv MAKE = make MKDIR = mkdir RANLIB = ranlib RM = rm STRIP = strip # --------------------------------------------------------------------- # TARGET # --------------------------------------------------------------------- all: depend $(TARGET) # --------------------------------------------------------------------- # test # --------------------------------------------------------------------- .PHONY: test test: $(MAKE) -C tests # --------------------------------------------------------------------- # static library # --------------------------------------------------------------------- lib$(TARGET_NAME).a: $(OBJS) $(AR) rv $(TARGET) $^ $(RANLIB) $(TARGET) # --------------------------------------------------------------------- # shared library # --------------------------------------------------------------------- lib$(TARGET_NAME).so.$(MAJOR_VER).$(MINOR_VER): $(OBJS) $(CC) $(LDFLAGS) -shared -Wl,-soname,lib$(TARGET_NAME).so.$(MAJOR_VER) -o $(TARGET) $^ $(LIBS) # --------------------------------------------------------------------- # windows dll # --------------------------------------------------------------------- $(TARGET_NAME).dll: $(OBJS) $(CC) $(LDFLAGS) -shared -o $(TARGET) $^ $(LIBS) # --------------------------------------------------------------------- # exec # --------------------------------------------------------------------- $(TARGET_NAME).exe: $(OBJS) $(CC) $(LDFLAGS) -o $(TARGET) $^ $(LIBS) # --------------------------------------------------------------------- # .c -> .o # --------------------------------------------------------------------- $(OBJDIR)/%.o: $(SRCDIR)/%.c $(CC) $(CFLAGS) -c -o $@ $< # --------------------------------------------------------------------- # clean # --------------------------------------------------------------------- .PHONY: clean clean: $(RM) -f lib$(TARGET_NAME).a $(RM) -f lib$(TARGET_NAME).so.* $(RM) -f $(TARGET_NAME).dll $(RM) -f $(TARGET_NAME).exe $(RM) -f $(OBJDIR)/*.o $(RM) -f $(DEPEND_FILE) $(RM) -f *~ */*~ $(MAKE) clean -C tests # --------------------------------------------------------------------- # depends # --------------------------------------------------------------------- .PHONY: depend depend: $(SRCS) -@ $(RM) -f $(DEPEND_FILE) -@ for i in $^; do \ echo -n "$(OBJDIR)/" >> $(DEPEND_FILE); \ cpp -MM $(CFLAGS) $$i | sed "s/\ [_a-zA-Z0-9\/]*\.c//g" >> $(DEPEND_FILE); \ echo "" >> $(DEPEND_FILE); \ done # --------------------------------------------------------------------- # include # --------------------------------------------------------------------- -include $(DEPEND_FILE)