58 lines
1.4 KiB
Makefile
58 lines
1.4 KiB
Makefile
IDIR=include
|
|
SRCDIR=src
|
|
ODIR=obj
|
|
ODIR_SHARED=obj_so
|
|
|
|
NAME = libztd
|
|
|
|
CC=g++
|
|
CXXFLAGS= -I$(IDIR) -Wall -std=c++20 -O2 -fPIE
|
|
|
|
$(shell mkdir -p $(ODIR))
|
|
$(shell mkdir -p $(ODIR_SHARED))
|
|
|
|
# automatically finds .h and .hpp
|
|
DEPS = $(shell if [ -n "$(ls $(IDIR))" ] ; then ls $(IDIR)/*.hpp $(IDIR)/*.h 2>/dev/null ; fi)
|
|
|
|
# automatically finds .c and .cpp and makes the corresponding .o rule
|
|
OBJ = $(shell ls $(SRCDIR)/*.cpp $(SRCDIR)/*.c 2>/dev/null | sed 's|\.cpp|.o|g;s|\.c|.o|g;s|$(SRCDIR)/|$(ODIR)/|g')
|
|
|
|
# automatically finds .c and .cpp and makes the corresponding .o rule
|
|
OBJ_SHARED = $(shell ls $(SRCDIR)/*.cpp $(SRCDIR)/*.c 2>/dev/null | sed 's|\.cpp|.o|g;s|\.c|.o|g;s|$(SRCDIR)/|$(ODIR_SHARED)/|g')
|
|
|
|
|
|
$(ODIR)/%.o: $(SRCDIR)/%.c $(DEPS)
|
|
$(CC) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
$(ODIR)/%.o: $(SRCDIR)/%.cpp $(DEPS)
|
|
$(CC) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
$(ODIR_SHARED)/%.o: $(SRCDIR)/%.c $(DEPS)
|
|
$(CC) $(CXXFLAGS) -fPIC -o $@ $<
|
|
|
|
$(ODIR_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPS)
|
|
$(CC) $(CXXFLAGS) -fPIC -c -o $@ $<
|
|
|
|
all: static shared
|
|
|
|
static: $(OBJ)
|
|
ar rcs libztd.a $^
|
|
|
|
shared: $(OBJ_SHARED)
|
|
$(CC) -shared -o libztd.so $^
|
|
|
|
install:
|
|
mkdir -p $(INSTALL)/usr/lib
|
|
cp libztd.a libztd.so $(INSTALL)/usr/lib
|
|
mkdir -p $(INSTALL)/usr/include/ztd
|
|
cp -r include/* $(INSTALL)/usr/include/ztd
|
|
|
|
uninstall:
|
|
rm $(INSTALL)/usr/lib/libztd.*
|
|
rm -r $(INSTALL)/usr/include/ztd
|
|
|
|
clean:
|
|
rm $(ODIR)/*.o $(ODIR_SHARED)/*.o
|
|
|
|
clear:
|
|
rm -r libztd.a libztd.so doc
|