1#
2# ONLY INCLUDE MIT OR 2/3-BSD-LICENSED CODE IN THIS LIBRARY
3#
4
5# Include configuration rules
6NOGPL := 1
7VPATH = $(SRC)
8include $(MAKEDIR)/lib.mk
9
10## OPTIONAL OBJECTS, AVAILABLE AS DYNAMIC LINKED MODULES
11# PNG library object files
12LIBPNG_OBJS = \
13	libpng/png.o libpng/pngset.o libpng/pngget.o libpng/pngrutil.o  \
14	libpng/pngtrans.o libpng/pngwutil.o libpng/pngread.o		\
15	libpng/pngrio.o libpng/pngwio.o libpng/pngwrite.o		\
16	libpng/pngrtran.o libpng/pngwtran.o libpng/pngmem.o		\
17	libpng/pngerror.o libpng/pngpread.o
18
19# JPG library object files
20LIBJPG_OBJS = \
21	jpeg/tinyjpeg.o jpeg/jidctflt.o	jpeg/decode1.o jpeg/decode3.o   \
22	jpeg/rgb24.o jpeg/bgr24.o jpeg/yuv420p.o jpeg/grey.o		\
23	jpeg/rgba32.o jpeg/bgra32.o					
24
25ifdef EFI_BUILD
26I915VESA_OBJ =
27else
28I915VESA_OBJ = sys/vesa/i915resolution.o
29endif
30
31LIBVESA_OBJS = \
32	sys/vesacon_write.o sys/vesaserial_write.o			\
33	sys/vesa/initvesa.o sys/vesa/drawtxt.o	sys/vesa/background.o	\
34	sys/vesa/alphatbl.o sys/vesa/screencpy.o sys/vesa/fmtpixel.o	\
35	$(I915VESA_OBJ)
36
37LIBMISC_OBJS = \
38	sys/libansi.o sys/gpxe.o
39
40LIBPCI_OBJS = \
41	pci/cfgtype.o pci/scan.o pci/bios.o				\
42	pci/readb.o pci/readw.o pci/readl.o				\
43	pci/writeb.o pci/writew.o pci/writel.o
44
45LIBSYSLINUX_OBJS = \
46	syslinux/reboot.o syslinux/keyboard.o				\
47	syslinux/version.o						\
48	syslinux/pxe_get_cached.o syslinux/pxe_get_nic.o		\
49	syslinux/pxe_dns.o						\
50	syslinux/video/fontquery.o syslinux/video/reportmode.o
51
52DYNENTRY_OBJS = \
53	atexit.o onexit.o abort.o
54
55MINLIBOBJS = \
56	syslinux/ipappend.o \
57	syslinux/dsinfo.o \
58	$(LIBOTHER_OBJS) \
59	$(LIBGCC_OBJS) \
60	$(LIBCONSOLE_OBJS) \
61	$(LIBLOAD_OBJS) \
62	$(LIBZLIB_OBJS)
63#	$(LIBVESA_OBJS)
64
65DYNLIBOBJS = \
66	$(LIBZLIB_OBJS) \
67	$(LIBPNG_OBJS) \
68	$(LIBJPG_OBJS) \
69	$(LIBPCI_OBJS) \
70	$(LIBVESA_OBJS) \
71	$(LIBSYSLINUX_OBJS) \
72	$(LIBLOAD_OBJS) \
73	$(LIBMISC_OBJS) \
74	$(DYNENTRY_OBJS)
75
76
77LIBOBJS = $(DYNLIBOBJS)
78
79BINDIR   = /usr/bin
80LIBDIR   = /usr/lib
81DATADIR  = /usr/share
82AUXDIR   = $(DATADIR)/syslinux
83INCDIR   = /usr/include
84COM32DIR = $(AUXDIR)/com32
85
86all: makeoutputdirs libcom32.c32 libcom32min.a libcom32core.a
87
88makeoutputdirs:
89	@mkdir -p $(foreach b, \
90		$(addprefix $(OBJ)/,$(sort $(dir $(LIBOBJS) $(MINLIBOBJS) $(CORELIBOBJS)))),$(b))
91
92libcom32.elf : $(LIBOBJS)
93	rm -f $@
94	$(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^
95
96libcom32min.a : $(MINLIBOBJS)
97	rm -f $@
98	$(AR) cq $@ $^
99	$(RANLIB) $@
100
101libcom32core.a : $(CORELIBOBJS)
102	rm -f $@
103	$(AR) cq $@ $^
104	$(RANLIB) $@
105
106tidy dist clean:
107	rm -f sys/vesa/alphatbl.c errlist.c
108	find . \( -name \*.o -o -name \*.a -o -name .\*.d -o -name \*.tmp \) -print0 | \
109		xargs -0r rm -f
110
111spotless: clean
112	rm -f *.a *.c32
113	rm -f *~ \#* */*~ */\#*
114
115install: all
116	mkdir -m 755 -p $(INSTALLROOT)$(COM32DIR)
117	install -m 644 $(SRC)/com32.ld $(INSTALLROOT)$(COM32DIR)
118	-rm -rf $(INSTALLROOT)$(COM32DIR)/include
119	cp -r $(SRC)/../include $(INSTALLROOT)$(COM32DIR)
120
121errlist.c: makeerrlist.pl $(SRC)/../include/errno.h
122	$(PERL) $<  $(CFLAGS) -errlist > $@ || rm -f $@
123
124# These files are performance critical, and doesn't compile well with -Os
125sys/vesa/drawtxt.o: sys/vesa/drawtxt.c
126	$(CC) $(MAKEDEPS) $(CFLAGS) -O3 -c -o $@ $<
127
128sys/vesa/alphatbl.c: sys/vesa/alphatbl.pl
129	$(PERL) $< > $@
130
131jpeg/jidctflt.o: jpeg/jidctflt.c
132	$(CC) $(MAKEDEPS) $(CFLAGS) -O3 -c -o $@ $<
133
134-include .*.d */.*.d */*/.*.d
135