201 lines
4.7 KiB
Makefile
201 lines
4.7 KiB
Makefile
# Make file for GCC compiler on Linux or compatible OS
|
|
|
|
# list of source files for astyle
|
|
SRC = astyle_main.cpp \
|
|
ASBeautifier.cpp \
|
|
ASFormatter.cpp \
|
|
ASEnhancer.cpp \
|
|
ASLocalizer.cpp \
|
|
ASResource.cpp
|
|
|
|
# list of source files for libraries without ASLocalizer
|
|
SRCx = astyle_main.cpp \
|
|
ASBeautifier.cpp \
|
|
ASFormatter.cpp \
|
|
ASEnhancer.cpp \
|
|
ASResource.cpp
|
|
|
|
# source directories
|
|
vpath %.cpp ../../src
|
|
vpath %.h ../../src
|
|
|
|
# NOTE for java compiles the environment variable $JAVA_HOME must be set
|
|
# example: export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.00
|
|
ifndef JAVA_HOME
|
|
JAVA_HOME = /usr/lib/jvm/default-java
|
|
endif
|
|
|
|
# set prefix if not defined on the command line
|
|
ifndef prefix
|
|
prefix=/usr
|
|
endif
|
|
SYSCONF_PATH=$(prefix)/share/doc/astyle
|
|
|
|
# define macros
|
|
bindir = bin
|
|
objdir = obj
|
|
ipath=$(prefix)/bin
|
|
CBASEFLAGS = -Wall -Wextra -fno-rtti -fno-exceptions
|
|
JAVAINCS = -I$(JAVA_HOME)/include
|
|
CXX = clang++
|
|
INSTALL=install -o $(USER) -g $(USER)
|
|
|
|
##################################################
|
|
|
|
# define compile options for each build
|
|
ifdef CFLAGS
|
|
CFLAGSr = -DNDEBUG $(CBASEFLAGS) $(CFLAGS)
|
|
CFLAGSd = -g $(CBASEFLAGS) $(CFLAGS)
|
|
else
|
|
CFLAGSr = -DNDEBUG -O3 $(CBASEFLAGS)
|
|
CFLAGSd = -g $(CBASEFLAGS)
|
|
endif
|
|
CFLAGSs = -DASTYLE_LIB -fPIC -fvisibility=hidden $(CFLAGSr)
|
|
CFLAGSsd = -DASTYLE_LIB -fPIC -fvisibility=hidden $(CFLAGSd)
|
|
CFLAGSa = -DASTYLE_LIB $(CFLAGSr)
|
|
CFLAGSad = -DASTYLE_LIB $(CFLAGSd)
|
|
CFLAGSsj = -DASTYLE_JNI -fPIC -fvisibility=hidden $(CFLAGSr) $(JAVAINCS)
|
|
CFLAGSsjd = -DASTYLE_JNI -fPIC -fvisibility=hidden $(CFLAGSd) $(JAVAINCS)
|
|
|
|
# define link options
|
|
ifdef LDFLAGS
|
|
LDFLAGSr = $(LDFLAGS)
|
|
LDFLAGSd = $(LDFLAGS)
|
|
else
|
|
LDFLAGSr = -s
|
|
LDFLAGSd =
|
|
endif
|
|
|
|
# object files are built from the source list $(SRC)
|
|
# a suffix is added for each build
|
|
OBJ = $(patsubst %.cpp,$(objdir)/%.o,$(SRC))
|
|
OBJd = $(patsubst %.cpp,$(objdir)/%_d.o,$(SRC))
|
|
OBJs = $(patsubst %.cpp,$(objdir)/%_s.o,$(SRCx))
|
|
OBJsd = $(patsubst %.cpp,$(objdir)/%_sd.o,$(SRCx))
|
|
OBJa = $(patsubst %.cpp,$(objdir)/%_a.o,$(SRCx))
|
|
OBJad = $(patsubst %.cpp,$(objdir)/%_ad.o,$(SRCx))
|
|
OBJsj = $(patsubst %.cpp,$(objdir)/%_sj.o,$(SRCx))
|
|
OBJsjd = $(patsubst %.cpp,$(objdir)/%_sjd.o,$(SRCx))
|
|
|
|
# define object file rule (with the suffix) for each build
|
|
|
|
# OBJ
|
|
$(objdir)/%.o: %.cpp astyle.h astyle_main.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSr) -c $< -o $@
|
|
|
|
# OBJd
|
|
$(objdir)/%_d.o: %.cpp astyle.h astyle_main.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSd) -c $< -o $@
|
|
|
|
# OBJs
|
|
$(objdir)/%_s.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSs) -c $< -o $@
|
|
|
|
# OBJsd
|
|
$(objdir)/%_sd.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSsd) -c $< -o $@
|
|
|
|
# OBJa
|
|
$(objdir)/%_a.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSa) -c $< -o $@
|
|
|
|
# OBJad
|
|
$(objdir)/%_ad.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSad) -c $< -o $@
|
|
|
|
# OBJsj
|
|
$(objdir)/%_sj.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSsj) -c $< -o $@
|
|
|
|
# OBJsjd
|
|
$(objdir)/%_sjd.o: %.cpp astyle.h
|
|
@ mkdir -p $(objdir)
|
|
$(CXX) $(CFLAGSsjd) -c $< -o $@
|
|
|
|
##################################################
|
|
# define build dependencies for each command
|
|
|
|
release: astyle
|
|
astyle: $(OBJ)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) $(LDFLAGSr) -o $(bindir)/$@ $^
|
|
@ echo
|
|
|
|
debug: astyled
|
|
astyled: $(OBJd)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) $(LDFLAGSd) -o $(bindir)/$@ $^
|
|
@ echo
|
|
|
|
shared: libastyle.so
|
|
libastyle.so: $(OBJs)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) -shared $(LDFLAGSr) -o $(bindir)/libastyle-2.06.so $^
|
|
@ echo
|
|
|
|
shareddebug: libastyled.so
|
|
libastyled.so: $(OBJsd)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) -shared $(LDFLAGSd) -o $(bindir)/libastyle-2.06d.so $^
|
|
@ echo
|
|
|
|
static: libastyle.a
|
|
libastyle.a: $(OBJa)
|
|
@ mkdir -p $(bindir)
|
|
ar crs $(bindir)/$@ $^
|
|
@ echo
|
|
|
|
staticdebug: libastyled.a
|
|
libastyled.a: $(OBJad)
|
|
@ mkdir -p $(bindir)
|
|
ar crs $(bindir)/$@ $^
|
|
@ echo
|
|
|
|
java: libastylej.so
|
|
libastylej.so: $(OBJsj)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) -shared $(LDFLAGSr) -o $(bindir)/libastyle-2.06j.so $^
|
|
@ echo
|
|
|
|
javadebug: libastylejd.so
|
|
libastylejd.so: $(OBJsjd)
|
|
@ mkdir -p $(bindir)
|
|
$(CXX) -shared $(LDFLAGSd) -o $(bindir)/libastyle-2.06jd.so $^
|
|
@ echo
|
|
|
|
all: release debug shared shareddebug static staticdebug
|
|
|
|
javaall: java javadebug
|
|
|
|
clean:
|
|
rm -f $(objdir)/*.o $(bindir)/*astyle*
|
|
|
|
cleanobj:
|
|
rm -f $(objdir)/*.o
|
|
|
|
install:
|
|
$(INSTALL) -m 755 -d $(ipath)
|
|
@$(INSTALL) -m 755 $(bindir)/astyle $(ipath)
|
|
|
|
@if [ -d $(SYSCONF_PATH)/html ]; then \
|
|
rm -rf $(SYSCONF_PATH)/html; \
|
|
fi
|
|
|
|
$(INSTALL) -m 755 -d $(SYSCONF_PATH)
|
|
@mkdir -p $(SYSCONF_PATH)/html;
|
|
@for files in ../../doc/*.html ../../doc/*.css; \
|
|
do \
|
|
$(INSTALL) -m 644 $$files $(SYSCONF_PATH)/html; \
|
|
done
|
|
|
|
uninstall:
|
|
rm -f $(ipath)/astyle
|
|
rm -rf $(SYSCONF_PATH)
|