2021-10-11 18:37:13 -03:00

160 lines
3.2 KiB
Makefile

# @(#)device.mk 1.1 94/10/31 SMI
# pixrect library common makefile template
# (included in each sub-makefile)
# targets
LIB = $(TARGET_DIR)/libpixrect.a
LIB_g = $(TARGET_DIR)/libpixrect_g.a
LIB_p = $(TARGET_DIR)/libpixrect_p.a
LIB_pg = $(TARGET_DIR)/libpixrect_pg.a
LIB_so = $(TARGET_DIR)/libpixrect.so
LIB_sa = $(TARGET_DIR)/libpixrect.sa
LIB_sh = $(LIB_sa) $(LIB_so)
CSRC = $(CDATA) $(CNORM) $(CNOOPT) $(CNORO)
OBJ1 = $(CSRC:.c=.o) $(MOREOBJ) $(ASRC:.S=.o)
OBJ2 = $(CPROM:.c=.o) $(CSTAND:.c=.o)
OBJ = $(OBJ1) $(OBJ2)
ODATA = $(CDATA:.c=.o)
ONOOPT = $(CNOOPT:.c=.o)
ONORO = $(CNORO:.c=.o)
OSHSA1 = $(CSHSA1:.c=.o)
OSHSA2 = $(CSHSA2:.c=.o)
OSHSA = $(OSHSA1) $(OSHSA2)
$(LIB_sh) := OBJ1 += $(OSHSA2)
SHOBJ = $(OBJ1:%.o=$(SHOBJ_DIR)/%.o)
SHDATA = $(ODATA:%.o=$(SHOBJ_DIR)/%.o)
SHNOOPT = $(ONOOPT:%.o=$(SHOBJ_DIR)/%.o)
SHONORO = $(ONORO:%.o=$(SHOBJ_DIR)/%.o)
# note: CSHNOROs also appear in CSRC; used only to kill -R
SHNORO = $(CSHNORO:%.c=$(SHOBJ_DIR)/%.o)
# misc commands/flags
CPP = /lib/cpp -E
ARFLAGS = ruc
# compiler flags
INCLUDE = -I.. -I../pixrect -I../../../sys -I../../../include -I../../libsunwindow
FLAGS =
FLOAT-sun2 = -fsoft
FLOAT-sun3 = -fsoft
FLOAT = $(FLOAT$(TARGET_ARCH))
OPTIM = -O
PIC = -pic -DPIC
READONLY = -R
SHLIB = $(PIC) -DSHLIB
SHLIB_SA = -DSHLIB_SA
$(LIB_g) := READONLY=
$(LIB_g) := OPTIM=
$(ONORO) \
$(LIB)($(ONORO)) \
$(LIB_p)($(ONORO)) \
$(LIB_pg)($(ONORO)) \
$(SHNORO) \
$(SHONORO) \
:= READONLY=
CPPFLAGS = $(INCLUDE) $(PIXINC)
CFBASE = $(FLAGS) $(FLOAT)
CFDATA = $(CFBASE)
CFNOOPT = $(CFBASE) $(READONLY)
CFNORM = $(CFBASE) $(OPTIM) $(READONLY)
CFLAGS = $(CFNORM)
$(ODATA) \
$(LIB)($(ODATA)) \
$(LIB_p)($(ODATA)) \
$(LIB_pg)($(ODATA)) \
$(SHDATA) \
:= CFLAGS = $(CFDATA)
$(ONOOPT) \
$(LIB)($(ONOOPT)) \
$(LIB_p)($(ONOOPT)) \
$(LIB_pg)($(ONOOPT)) \
$(SHNOOPT) \
:= CFLAGS = $(CFNOOPT)
$(LIB_sh) := ASFLAGS += $(SHLIB)
$(LIB_sh) \
$(SHDATA) \
$(SHNOOPT) \
:= CFLAGS += $(SHLIB)
$(LIB_sa) := ASFLAGS += $(SHLIB_SA)
$(LIB_sa) := CFLAGS += $(SHLIB_SA)
# rules
.SUFFIXES: .IL .IL~
$(TARGET_DIR)/%.il: %.IL
$(CPP) -I$(PIXINC) $< > $@
$(TARGET_DIR)/%.o $(SHOBJ_DIR)/%.o: %.c
$(COMPILE.c) -o $@ $<
$(TARGET_DIR)/%.o $(SHOBJ_DIR)/%.o: %.S
$(COMPILE.S) -o $@ $<
$(LIB_p)(%.o): %.c
$(COMPILE.c) -p -o $% $<
$(AR) $(ARFLAGS) $@ $%
$(RM) $%
$(LIB_pg)(%.o): %.c
$(COMPILE.c) -pg -o $% $<
$(AR) $(ARFLAGS) $@ $%
$(RM) $%
$(LIB_g)(%.o): %.c
$(COMPILE.c) -g -o $% $<
$(AR) $(ARFLAGS) $@ $%
$(RM) $%
$(LIB_g)(%.o) $(LIB_p)(%.o) $(LIB_pg)(%.o): %.S
$(COMPILE.c) -o $% $<
$(AR) $(ARFLAGS) $@ $%
$(RM) $%
.PRECIOUS: $(LIB) $(LIB_p) $(LIB_g) $(LIB_pg)
default:
@echo "no target specified" ; exit 1
clean:
$(RM) $(OBJ)
ALL_SRCS = $(CSRC) $(ASRC) $(MORESRC) $(HDRS)
populate: $(ALL_SRCS) $(MAKEFILE)
sid: $(ALL_SRCS) $(MAKEFILE)
$(SID_WHAT) $(ALL_SRCS) $(MAKEFILE) >> $(SID_FILE)
tags: $(ALL_SRC)
$(TAGS_CMD) -f $(TAGS_FILE) $(ALL_SRCS:%=$(DEVDIR)/%)
$(RM) `basename $(TAGS_FILE)`; \
ln -s $(TAGS_FILE) `basename $(TAGS_FILE)`
# indirection to avoid `foo' is up to date messages
libpixrect%: $(TARGET_DIR)/libpixrect%
$(LIB) \
$(LIB_g) \
$(LIB_p) \
$(LIB_pg): $$@($$(OBJ)) $(MORESRC)
$(LIB_sa): $$@($(OSHSA)) $(MORESRC)
$(LIB_so): $$(SHOBJ) $(MORESRC)
FRC: