finalcut/src/Makefile.clang

189 lines
3.9 KiB
Makefile
Raw Normal View History

2015-05-23 13:35:12 +02:00
#-----------------------------------------------------------------------------
# Makefile for Final Cut
#-----------------------------------------------------------------------------
# This is where make install will install the library
VERSION = "0.5.1"
2015-07-12 18:54:27 +02:00
MAJOR := $(shell echo ${VERSION} | cut -d. -f1)
LIBDIR = /usr/local/lib
2018-09-21 06:19:25 +02:00
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 \
2017-02-06 02:21:40 +01:00
ftermcap.h \
fterm.h \
2018-11-20 21:11:04 +01:00
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 \
2015-05-23 13:35:12 +02:00
# compiler parameter
CXX = clang++
CCXFLAGS = $(OPTIMIZE) $(PROFILE) -DCOMPILE_FINAL_CUT $(DEBUG) $(VER) $(GPM) -fexceptions -std=c++11
2015-05-23 13:35:12 +02:00
MAKEFILE = -f Makefile.clang
LDFLAGS = $(TERMCAP) -lgpm
2018-09-21 06:19:25 +02:00
INCLUDES = -Iinclude
2015-08-22 18:53:52 +02:00
GPM = -D F_HAVE_LIBGPM
VER = -D F_VERSION=$(VERSION)
2015-05-23 13:35:12 +02:00
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
2015-05-23 13:35:12 +02:00
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
2015-05-23 13:35:12 +02:00
else
OPTIMIZE = -O2
endif
.SUFFIXES: .cpp
# $@ = name of the targets
# $< = the first dependency
.cpp.o:
2015-09-20 05:44:50 +02:00
$(CXX) -c $(CCXFLAGS) $(INCLUDES) -fpic -o $@ $<
2015-05-23 13:35:12 +02:00
all: dep $(OBJS)
2015-07-12 18:54:27 +02:00
$(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
2015-05-23 13:35:12 +02:00
$(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"
2015-05-23 13:35:12 +02:00
profile:
$(MAKE) $(MAKEFILE) PROFILE="-pg"
install: $(LIB)
mkdir -p $(LIBDIR)
2015-07-12 18:54:27 +02:00
install -c $(LIB).$(VERSION) $(LIBDIR)/$(LIB).$(VERSION)
ln -s -f $(LIB).$(VERSION) $(LIBDIR)/libfinal.so.$(MAJOR)
ln -s -f $(LIB).$(MAJOR) $(LIBDIR)/libfinal.so
2015-05-23 13:35:12 +02:00
ldconfig
mkdir -p $(INCLUDEDIR2)
2015-05-23 13:35:12 +02:00
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
do \
install -m 644 $(INCLUDEDIR1)/$$h $(INCLUDEDIR2)/$$h; \
2015-05-23 13:35:12 +02:00
done
uninstall: $(OBJS)
2015-07-12 18:54:27 +02:00
$(RM) $(LIBDIR)/$(LIB).$(VERSION) $(LIBDIR)/libfinal.so.$(MAJOR) $(LIBDIR)/libfinal.so
2015-05-23 13:35:12 +02:00
@list='$(INCLUDE_HEADERS)'; for h in $$list; \
do \
$(RM) $(INCLUDEDIR2)/$$h; \
2015-05-23 13:35:12 +02:00
done
rmdir $(INCLUDEDIR2)
2015-05-23 13:35:12 +02:00
.PHONY: clean dep
clean:
2017-11-11 14:52:33 +01:00
$(RM) $(LIB)* $(OBJS) .depend *.gcno *.gcda *.gch *.plist *~
2015-05-23 13:35:12 +02:00
dep:
$(CXX) $(INCLUDES) -std=c++11 -DCOMPILE_FINAL_CUT -MM *.cpp >.depend
2015-05-23 13:35:12 +02:00
#
# include .depend if it exists
#
-include .depend