aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--com32/elflink/Makefile69
-rw-r--r--com32/elflink/modules/MCONFIG62
-rw-r--r--com32/elflink/modules/Makefile70
3 files changed, 69 insertions, 132 deletions
diff --git a/com32/elflink/Makefile b/com32/elflink/Makefile
index 5995509b..011e18d3 100644
--- a/com32/elflink/Makefile
+++ b/com32/elflink/Makefile
@@ -10,79 +10,16 @@
##
## -----------------------------------------------------------------------
-
-TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
-CC = gcc
-
-gcc_ok = $(shell tmpf=$(TMPFILE); if $(CC) $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \
- then echo $(1); else echo $(2); fi; rm -f $$tmpf)
-
-M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,)
-
-LD = ld -m elf_i386
-AR = ar
-NASM = nasm
-NASMOPT = -O9999
-RANLIB = ranlib
-CFLAGS = $(M32) -mregparm=3 -DREGPARM=3 -W -Wall -march=i386 -Os \
- -fomit-frame-pointer -D__COM32__ \
- -nostdinc -iwithprefix include \
- -I../libutil/include -I../include \
- -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d
-LNXCFLAGS = -W -Wall -O -g -I../libutil/include
-LNXSFLAGS = -g
-LNXLDFLAGS = -g
-SFLAGS = -D__COM32__ -march=i386
-LDFLAGS = -T ../lib/com32.ld
-OBJCOPY = objcopy
-PPMTOLSS16 = ../ppmtolss16
-LIBGCC := $(shell $(CC) --print-libgcc)
-LIBS = ../libutil/libutil_com.a ../lib/libcom32.a $(LIBGCC)
-LNXLIBS = ../libutil/libutil_lnx.a
-
-.SUFFIXES: .lss .c .o .elf .c32 .lnx
-
-BINDIR = /usr/bin
-LIBDIR = /usr/lib
-DATADIR = /usr/share
-AUXDIR = $(DATADIR)/syslinux
-INCDIR = /usr/include
-COM32DIR = $(AUXDIR)/com32
+topdir = ../..
+include ../MCONFIG
MODULES = test_memalign.c32 test_com32.c32
TESTFILES =
all: $(MODULES) $(TESTFILES)
-
-.PRECIOUS: %.o
-%.o: %.S
- $(CC) $(SFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.o
-%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.elf
-%.elf: %.o $(LIBS)
- $(LD) $(LDFLAGS) -o $@ $^
-
-.PRECIOUS: %.lo
-%.lo: %.S
- $(CC) $(LNXSFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.lo
-%.lo: %.c
- $(CC) $(LNXCFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.lnx
-%.lnx: %.lo $(LNXLIBS)
- $(CC) $(LNXLDFLAGS) -o $@ $^
-
-%.c32: %.elf
- $(OBJCOPY) -O binary $< $@
-test_memalign.elf : test_memalign.o $(LIBS)
+test_memalign.elf : test_memalign.o $(LIBS) $(C_LIBS)
$(LD) $(LDFLAGS) -o $@ $^
test_com32.elf: CFLAGS += -DELF_DEBUG
diff --git a/com32/elflink/modules/MCONFIG b/com32/elflink/modules/MCONFIG
new file mode 100644
index 00000000..18845877
--- /dev/null
+++ b/com32/elflink/modules/MCONFIG
@@ -0,0 +1,62 @@
+## -*- makefile -*- -------------------------------------------------------
+##
+## Copyright 2008 H. Peter Anvin - All Rights Reserved
+##
+## 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, Inc., 51 Franklin St, Fifth Floor,
+## Boston MA 02110-1301, USA; either version 2 of the License, or
+## (at your option) any later version; incorporated herein by reference.
+##
+## -----------------------------------------------------------------------
+
+##
+## COM32 common configurables
+##
+
+include $(topdir)/MCONFIG
+
+GCCOPT := $(call gcc_ok,-std=gnu99,) \
+ $(call gcc_ok,-m32,) \
+ $(call gcc_ok,-fno-stack-protector,) \
+ -mregparm=3 -DREGPARM=3 -march=i386 -Os
+
+com32 = $(topdir)/com32
+
+CFLAGS = $(GCCOPT) -W -Wall -march=i386 \
+ -fomit-frame-pointer -D__COM32__ -DDYNAMIC_MODULE \
+ -nostdinc -iwithprefix include \
+ -I$(com32)/libutil/include -I$(com32)/include
+SFLAGS = $(GCCOPT) -D__COM32__ -march=i386
+LDFLAGS = -m elf_i386 -shared -T $(com32)/lib/elf32.ld
+LIBGCC := $(shell $(CC) $(GCCOPT) --print-libgcc)
+
+LNXCFLAGS = -I$(com32)/libutil/include -W -Wall -O -g -D_GNU_SOURCE
+LNXSFLAGS = -g
+LNXLDFLAGS = -g
+
+.SUFFIXES: .lss .c .o .dyn
+
+.PRECIOUS: %.o
+%.o: %.S
+ $(CC) $(SFLAGS) -c -o $@ $<
+
+.PRECIOUS: %.o
+%.o: %.c
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+.PRECIOUS: %.dyn
+%.dyn: %.o $(LIBS)
+ $(LD) $(LDFLAGS) -o $@ $^
+
+.PRECIOUS: %.lo
+%.lo: %.S
+ $(CC) $(LNXSFLAGS) -c -o $@ $<
+
+.PRECIOUS: %.lo
+%.lo: %.c
+ $(CC) $(LNXCFLAGS) -c -o $@ $<
+
+.PRECIOUS: %.lnx
+%.lnx: %.lo $(LNXLIBS)
+ $(CC) $(LNXLDFLAGS) -o $@ $^
diff --git a/com32/elflink/modules/Makefile b/com32/elflink/modules/Makefile
index 9eeef1a9..6bf17e3c 100644
--- a/com32/elflink/modules/Makefile
+++ b/com32/elflink/modules/Makefile
@@ -10,81 +10,19 @@
##
## -----------------------------------------------------------------------
-##
-## COM32 standard modules
-##
-
-TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
-CC = gcc
-
-gcc_ok = $(shell tmpf=$(TMPFILE); if $(CC) $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \
- then echo $(1); else echo $(2); fi; rm -f $$tmpf)
-
-M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-fno-stack-protector,)
-
-LD = ld -m elf_i386
-AR = ar
-NASM = nasm
-NASMOPT = -O9999
-RANLIB = ranlib
-CFLAGS = $(M32) -mregparm=3 -DREGPARM=3 -W -Wall -march=i386 -Os \
- -fomit-frame-pointer -D__COM32__ -DDYNAMIC_MODULE \
- -nostdinc -iwithprefix include \
- -I../../libutil/include -I../../include \
- -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d
-LNXCFLAGS = -W -Wall -O -g -I../libutil/include
-LNXSFLAGS = -g
-LNXLDFLAGS = -g
-SFLAGS = -D__COM32__ -march=i386
-LDFLAGS = -shared -T ../../lib/elf32.ld
-OBJCOPY = objcopy
-PPMTOLSS16 = ../ppmtolss16
-LIBGCC := $(shell $(CC) --print-libgcc)
-LIBS = $(LIBGCC)
-
-.SUFFIXES: .lss .c .o .dyn
-
-BINDIR = /usr/bin
-LIBDIR = /usr/lib
-DATADIR = /usr/share
-AUXDIR = $(DATADIR)/syslinux
-INCDIR = /usr/include
-COM32DIR = $(AUXDIR)/com32
+topdir = ../../..
+include MCONFIG
MODULES = hello.dyn sort.dyn
TESTFILES =
all: $(MODULES) $(TESTFILES)
-
-.PRECIOUS: %.o
-%.o: %.S
- $(CC) $(SFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.o
-%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.dyn
-%.dyn: %.o $(LIBS)
- $(LD) $(LDFLAGS) -o $@ $^
-
-.PRECIOUS: %.lo
-%.lo: %.S
- $(CC) $(LNXSFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.lo
-%.lo: %.c
- $(CC) $(LNXCFLAGS) -c -o $@ $<
-
-.PRECIOUS: %.lnx
-%.lnx: %.lo $(LNXLIBS)
- $(CC) $(LNXLDFLAGS) -o $@ $^
-hello.dyn : hello.o $(LIBS)
+hello.dyn : hello.o
$(LD) $(LDFLAGS) -o $@ $^
-sort.dyn : sort.o $(LIBS)
+sort.dyn : sort.o
$(LD) $(LDFLAGS) -o $@ $^
tidy dist: