112 lines
3.7 KiB
Makefile
112 lines
3.7 KiB
Makefile
SUBDIRS = arch format
|
|
TARGETS = libasm.a libasm.so asm asm-static deasm
|
|
PREFIX = /usr/local
|
|
DESTDIR =
|
|
LIBDIR = $(PREFIX)/lib
|
|
CC ?= cc
|
|
CPPFLAGSF= -I ../include
|
|
CPPFLAGS=
|
|
CFLAGSF = -W `pkg-config --cflags cpp`
|
|
CFLAGS = -Wall -g -O2 -pedantic
|
|
LDFLAGSF=
|
|
AR ?= ar
|
|
RANLIB ?= ranlib
|
|
CCSHARED?= $(CC) -shared
|
|
BINDIR = $(PREFIX)/bin
|
|
RM ?= rm -f
|
|
LN ?= ln -f
|
|
MKDIR ?= mkdir -p
|
|
INSTALL ?= install
|
|
|
|
|
|
all: subdirs $(TARGETS)
|
|
|
|
subdirs:
|
|
@for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done
|
|
|
|
libasm_OBJS = arch.o asm.o code.o format.o parser.o token.o
|
|
libasm_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -fPIC
|
|
libasm_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs cpp`
|
|
|
|
libasm.a: $(libasm_OBJS)
|
|
$(AR) -rc libasm.a $(libasm_OBJS)
|
|
$(RANLIB) libasm.a
|
|
|
|
libasm.so: $(libasm_OBJS)
|
|
$(CCSHARED) -o libasm.so -Wl,-soname,libasm.so.0 $(libasm_OBJS) $(libasm_LDFLAGS)
|
|
|
|
asm_OBJS = main.o
|
|
asm_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
|
asm_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L. -Wl,-rpath,$(LIBDIR) -lasm
|
|
|
|
asm: $(asm_OBJS) libasm.so
|
|
$(CC) -o asm $(asm_OBJS) $(asm_LDFLAGS)
|
|
asm-static_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
|
asm-static_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs cpp` main.o libasm.a
|
|
|
|
asm-static: $(asm-static_OBJS) main.o libasm.a
|
|
$(CC) -o asm-static $(asm-static_OBJS) $(asm-static_LDFLAGS)
|
|
|
|
deasm_OBJS = deasm.o
|
|
deasm_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
|
deasm_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L. -Wl,-rpath,$(LIBDIR) -lasm
|
|
|
|
deasm: $(deasm_OBJS) libasm.so
|
|
$(CC) -o deasm $(deasm_OBJS) $(deasm_LDFLAGS)
|
|
|
|
arch.o: arch.c ../include/Asm/arch.h ../include/Asm/asm.h arch.h code.h ../config.h
|
|
$(CC) -D PREFIX=\"$(PREFIX)\" $(libasm_CFLAGS) -c arch.c
|
|
|
|
asm.o: asm.c ../include/Asm.h code.h parser.h ../config.h
|
|
$(CC) -D PREFIX=\"$(PREFIX)\" $(libasm_CFLAGS) -c asm.c
|
|
|
|
code.o: code.c ../include/Asm.h ../include/Asm/arch.h ../include/Asm/asm.h ../include/Asm/format.h arch.h code.h format.h ../config.h
|
|
$(CC) -D PREFIX=\"$(PREFIX)\" $(libasm_CFLAGS) -c code.c
|
|
|
|
format.o: format.c ../include/Asm/asm.h ../include/Asm/format.h code.h format.h ../config.h
|
|
$(CC) -D PREFIX=\"$(PREFIX)\" $(libasm_CFLAGS) -c format.c
|
|
|
|
parser.o: parser.c parser.h token.h
|
|
$(CC) $(libasm_CFLAGS) -c parser.c
|
|
|
|
token.o: token.c common.h token.h
|
|
$(CC) $(libasm_CFLAGS) -c token.c
|
|
|
|
main.o: main.c ../include/Asm/asm.h ../config.h
|
|
$(CC) $(asm_CFLAGS) -c main.c
|
|
|
|
deasm.o: deasm.c ../include/Asm.h ../include/Asm/arch.h ../include/Asm/asm.h ../include/Asm/format.h
|
|
$(CC) $(deasm_CFLAGS) -c deasm.c
|
|
|
|
clean:
|
|
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done
|
|
$(RM) -- $(libasm_OBJS) $(asm_OBJS) $(asm-static_OBJS) $(deasm_OBJS)
|
|
|
|
distclean:
|
|
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done
|
|
$(RM) -- $(libasm_OBJS) $(asm_OBJS) $(asm-static_OBJS) $(deasm_OBJS)
|
|
$(RM) -- $(TARGETS)
|
|
|
|
install: $(TARGETS)
|
|
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) install) || exit; done
|
|
$(MKDIR) $(DESTDIR)$(LIBDIR)
|
|
$(INSTALL) -m 0644 -- libasm.a $(DESTDIR)$(LIBDIR)/libasm.a
|
|
$(INSTALL) -m 0755 -- libasm.so $(DESTDIR)$(LIBDIR)/libasm.so.0.0
|
|
$(LN) -s -- libasm.so.0.0 $(DESTDIR)$(LIBDIR)/libasm.so.0
|
|
$(LN) -s -- libasm.so.0.0 $(DESTDIR)$(LIBDIR)/libasm.so
|
|
$(MKDIR) $(DESTDIR)$(BINDIR)
|
|
$(INSTALL) -m 0755 -- asm $(DESTDIR)$(BINDIR)/asm
|
|
$(MKDIR) $(DESTDIR)$(BINDIR)
|
|
$(INSTALL) -m 0755 -- deasm $(DESTDIR)$(BINDIR)/deasm
|
|
|
|
uninstall:
|
|
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) uninstall) || exit; done
|
|
$(RM) -- $(DESTDIR)$(LIBDIR)/libasm.a
|
|
$(RM) -- $(DESTDIR)$(LIBDIR)/libasm.so.0.0
|
|
$(RM) -- $(DESTDIR)$(LIBDIR)/libasm.so.0
|
|
$(RM) -- $(DESTDIR)$(LIBDIR)/libasm.so
|
|
$(RM) -- $(DESTDIR)$(BINDIR)/asm
|
|
$(RM) -- $(DESTDIR)$(BINDIR)/deasm
|
|
|
|
.PHONY: all subdirs clean distclean install uninstall
|