189 lines
3.9 KiB
Makefile
189 lines
3.9 KiB
Makefile
#-----------------------------------------------------------------------------
|
|
# Makefile for Final Cut
|
|
#-----------------------------------------------------------------------------
|
|
|
|
# This is where make install will install the library
|
|
VERSION = "0.5.1"
|
|
MAJOR := $(shell echo ${VERSION} | cut -d. -f1)
|
|
LIBDIR = /usr/local/lib
|
|
INCLUDEDIR1 = include/final
|
|
INCLUDEDIR2 = /usr/local/include/final
|
|
INCLUDE_HEADERS = \
|
|
fapplication.h \
|
|
fbuttongroup.h \
|
|
fbutton.h \
|
|
ftogglebutton.h \
|
|
fcheckbox.h \
|
|
fswitch.h \
|
|
fdialog.h \
|
|
fwindow.h \
|
|
ffiledialog.h \
|
|
final.h \
|
|
flabel.h \
|
|
flineedit.h \
|
|
flistbox.h \
|
|
flistview.h \
|
|
fmenu.h \
|
|
fdialoglistmenu.h \
|
|
fmenubar.h \
|
|
fradiomenuitem.h \
|
|
fcheckmenuitem.h \
|
|
fmessagebox.h \
|
|
ftooltip.h \
|
|
foptiattr.h \
|
|
foptimove.h \
|
|
ftermbuffer.h \
|
|
fpoint.h \
|
|
fprogressbar.h \
|
|
fradiobutton.h \
|
|
frect.h \
|
|
fscrollbar.h \
|
|
fscrollview.h \
|
|
fstatusbar.h \
|
|
fstring.h \
|
|
fmouse.h \
|
|
fkeyboard.h \
|
|
ftermcap.h \
|
|
fterm.h \
|
|
ftermdata.h \
|
|
ftermios.h \
|
|
ftermdetection.h \
|
|
ftermcapquirks.h \
|
|
ftermxterminal.h \
|
|
ftermfreebsd.h \
|
|
ftermopenbsd.h \
|
|
ftermlinux.h \
|
|
fvterm.h \
|
|
ftextview.h \
|
|
fcolorpalette.h \
|
|
fwidgetcolors.h \
|
|
fwidget.h \
|
|
fevent.h \
|
|
fobject.h \
|
|
|
|
# compiler parameter
|
|
CXX = clang++
|
|
CCXFLAGS = $(OPTIMIZE) $(PROFILE) -DCOMPILE_FINAL_CUT $(DEBUG) $(VER) $(GPM) -fexceptions -std=c++11
|
|
MAKEFILE = -f Makefile.clang
|
|
LDFLAGS = $(TERMCAP) -lgpm
|
|
INCLUDES = -Iinclude
|
|
GPM = -D F_HAVE_LIBGPM
|
|
VER = -D F_VERSION=$(VERSION)
|
|
RM = rm -f
|
|
LIB = libfinal.so
|
|
OBJS = \
|
|
fstring.o \
|
|
fpoint.o \
|
|
frect.o \
|
|
fscrollbar.o \
|
|
fprogressbar.o \
|
|
flineedit.o \
|
|
fbutton.o \
|
|
fbuttongroup.o \
|
|
ftogglebutton.o \
|
|
fradiobutton.o \
|
|
fcheckbox.o \
|
|
fswitch.o \
|
|
flabel.o \
|
|
flistbox.o \
|
|
flistview.o \
|
|
fmenu.o \
|
|
fdialoglistmenu.o \
|
|
fmenubar.o \
|
|
fmenuitem.o \
|
|
fradiomenuitem.o \
|
|
fcheckmenuitem.o \
|
|
fmenulist.o \
|
|
fdialog.o \
|
|
fwindow.o \
|
|
fscrollview.o \
|
|
fmessagebox.o \
|
|
ftooltip.o \
|
|
ffiledialog.o \
|
|
fkey_map.o \
|
|
ftextview.o \
|
|
fstatusbar.o \
|
|
fmouse.o \
|
|
fkeyboard.o \
|
|
ftermcap.o \
|
|
fterm.o \
|
|
ftermios.o \
|
|
ftermdetection.o \
|
|
ftermcapquirks.o \
|
|
ftermxterminal.o \
|
|
ftermfreebsd.o \
|
|
ftermopenbsd.o \
|
|
ftermlinux.o \
|
|
fvterm.o \
|
|
foptiattr.o \
|
|
foptimove.o \
|
|
ftermbuffer.o \
|
|
fapplication.o \
|
|
fcolorpalette.o \
|
|
fwidgetcolors.o \
|
|
fwidget.o \
|
|
fevent.o \
|
|
fobject.o
|
|
|
|
TERMCAP := $(shell test -n "$$(ldd {/usr,}/lib64/libncursesw.so.5 2>/dev/null | grep libtinfo)" && echo "-ltinfo" || echo "-lncurses")
|
|
|
|
ifdef DEBUG
|
|
OPTIMIZE = -O0 -fsanitize=bool,bounds,enum,float-cast-overflow,function,null
|
|
# OPTIMIZE = -O0 -fsanitize=undefined
|
|
else
|
|
OPTIMIZE = -O2
|
|
endif
|
|
|
|
.SUFFIXES: .cpp
|
|
|
|
# $@ = name of the targets
|
|
# $< = the first dependency
|
|
.cpp.o:
|
|
$(CXX) -c $(CCXFLAGS) $(INCLUDES) -fpic -o $@ $<
|
|
|
|
all: dep $(OBJS)
|
|
$(CXX) $(CCXFLAGS) $(INCLUDES) $(LDFLAGS) -shared -Wl,-soname,$(LIB).$(MAJOR) -o $(LIB).$(VERSION) $(OBJS)
|
|
ln -s -f $(LIB).$(VERSION) libfinal.so.$(MAJOR)
|
|
ln -s -f $(LIB).$(MAJOR) libfinal.so
|
|
|
|
$(LIB): all
|
|
|
|
debug:
|
|
$(MAKE) $(MAKEFILE) DEBUG="-g -D DEBUG -Wall -Wextra -Wpedantic -Weverything -Wpadded -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-implicit-fallthrough -Wno-reserved-id-macro"
|
|
|
|
profile:
|
|
$(MAKE) $(MAKEFILE) PROFILE="-pg"
|
|
|
|
install: $(LIB)
|
|
mkdir -p $(LIBDIR)
|
|
install -c $(LIB).$(VERSION) $(LIBDIR)/$(LIB).$(VERSION)
|
|
ln -s -f $(LIB).$(VERSION) $(LIBDIR)/libfinal.so.$(MAJOR)
|
|
ln -s -f $(LIB).$(MAJOR) $(LIBDIR)/libfinal.so
|
|
ldconfig
|
|
mkdir -p $(INCLUDEDIR2)
|
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
|
do \
|
|
install -m 644 $(INCLUDEDIR1)/$$h $(INCLUDEDIR2)/$$h; \
|
|
done
|
|
|
|
uninstall: $(OBJS)
|
|
$(RM) $(LIBDIR)/$(LIB).$(VERSION) $(LIBDIR)/libfinal.so.$(MAJOR) $(LIBDIR)/libfinal.so
|
|
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
|
|
do \
|
|
$(RM) $(INCLUDEDIR2)/$$h; \
|
|
done
|
|
rmdir $(INCLUDEDIR2)
|
|
|
|
.PHONY: clean dep
|
|
clean:
|
|
$(RM) $(LIB)* $(OBJS) .depend *.gcno *.gcda *.gch *.plist *~
|
|
|
|
dep:
|
|
$(CXX) $(INCLUDES) -std=c++11 -DCOMPILE_FINAL_CUT -MM *.cpp >.depend
|
|
|
|
#
|
|
# include .depend if it exists
|
|
#
|
|
|
|
-include .depend
|