1# Make file for GCC compiler on Linux or compatible OS 2 3# list of source files for astyle 4SRC = astyle_main.cpp \ 5 ASBeautifier.cpp \ 6 ASFormatter.cpp \ 7 ASEnhancer.cpp \ 8 ASLocalizer.cpp \ 9 ASResource.cpp 10 11# list of source files for libraries without ASLocalizer 12SRCx = astyle_main.cpp \ 13 ASBeautifier.cpp \ 14 ASFormatter.cpp \ 15 ASEnhancer.cpp \ 16 ASResource.cpp 17 18# source directories 19vpath %.cpp ../../src 20vpath %.h ../../src 21 22# NOTE for java compiles the environment variable $JAVA_HOME must be set 23# example: export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.00 24ifndef JAVA_HOME 25 JAVA_HOME = /usr/lib/jvm/default-java 26endif 27 28# set prefix if not defined on the command line 29ifndef prefix 30 prefix=/usr 31endif 32SYSCONF_PATH=$(prefix)/share/doc/astyle 33 34# define macros 35bindir = bin 36objdir = obj 37ipath=$(prefix)/bin 38CBASEFLAGS = -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 39JAVAINCS = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux 40CXX = clang++ 41INSTALL=install -o $(USER) -g $(USER) 42 43# Library's major version number -- Increment in case of incompatible API 44# change. 45MAJORVER = 3 46# Library's minor version number -- Increment when functionnality is added in a 47# backward-compatible manner; reset to 0 when major number changes. 48MINORVER = 1 49# Library's patch version number -- Increment in case of backward-compatible 50# bug fixes or refactoring; reset to 0 when minor number changes. 51PATCHVER = 0 52# Library's full version number. 53SOLIBVER = $(MAJORVER).$(MINORVER).$(PATCHVER) 54 55################################################## 56 57# define compile options for each build 58ifdef CFLAGS 59 CFLAGSr = -DNDEBUG $(CBASEFLAGS) $(CFLAGS) 60 CFLAGSd = -g $(CBASEFLAGS) $(CFLAGS) 61else 62 CFLAGSr = -DNDEBUG -O3 $(CBASEFLAGS) 63 CFLAGSd = -g $(CBASEFLAGS) 64endif 65CFLAGSs = -DASTYLE_LIB -fPIC $(CFLAGSr) 66CFLAGSsd = -DASTYLE_LIB -fPIC $(CFLAGSd) 67CFLAGSa = -DASTYLE_LIB $(CFLAGSr) 68CFLAGSad = -DASTYLE_LIB $(CFLAGSd) 69CFLAGSsj = -DASTYLE_JNI -fPIC $(CFLAGSr) $(JAVAINCS) 70CFLAGSsjd = -DASTYLE_JNI -fPIC $(CFLAGSd) $(JAVAINCS) 71 72# define link options 73ifdef LDFLAGS 74 LDFLAGSr = $(LDFLAGS) 75 LDFLAGSd = $(LDFLAGS) 76else 77 LDFLAGSr = -s 78 LDFLAGSd = 79endif 80 81# object files are built from the source list $(SRC) 82# a suffix is added for each build 83OBJ = $(patsubst %.cpp,$(objdir)/%.o,$(SRC)) 84OBJd = $(patsubst %.cpp,$(objdir)/%_d.o,$(SRC)) 85OBJs = $(patsubst %.cpp,$(objdir)/%_s.o,$(SRCx)) 86OBJsd = $(patsubst %.cpp,$(objdir)/%_sd.o,$(SRCx)) 87OBJa = $(patsubst %.cpp,$(objdir)/%_a.o,$(SRCx)) 88OBJad = $(patsubst %.cpp,$(objdir)/%_ad.o,$(SRCx)) 89OBJsj = $(patsubst %.cpp,$(objdir)/%_sj.o,$(SRCx)) 90OBJsjd = $(patsubst %.cpp,$(objdir)/%_sjd.o,$(SRCx)) 91 92# define object file rule (with the suffix) for each build 93 94# OBJ 95$(objdir)/%.o: %.cpp astyle.h astyle_main.h 96 @ mkdir -p $(objdir) 97 $(CXX) $(CFLAGSr) -c $< -o $@ 98 99# OBJd 100$(objdir)/%_d.o: %.cpp astyle.h astyle_main.h 101 @ mkdir -p $(objdir) 102 $(CXX) $(CFLAGSd) -c $< -o $@ 103 104# OBJs 105$(objdir)/%_s.o: %.cpp astyle.h 106 @ mkdir -p $(objdir) 107 $(CXX) $(CFLAGSs) -c $< -o $@ 108 109# OBJsd 110$(objdir)/%_sd.o: %.cpp astyle.h 111 @ mkdir -p $(objdir) 112 $(CXX) $(CFLAGSsd) -c $< -o $@ 113 114# OBJa 115$(objdir)/%_a.o: %.cpp astyle.h 116 @ mkdir -p $(objdir) 117 $(CXX) $(CFLAGSa) -c $< -o $@ 118 119# OBJad 120$(objdir)/%_ad.o: %.cpp astyle.h 121 @ mkdir -p $(objdir) 122 $(CXX) $(CFLAGSad) -c $< -o $@ 123 124# OBJsj 125$(objdir)/%_sj.o: %.cpp astyle.h 126 @ mkdir -p $(objdir) 127 $(CXX) $(CFLAGSsj) -c $< -o $@ 128 129# OBJsjd 130$(objdir)/%_sjd.o: %.cpp astyle.h 131 @ mkdir -p $(objdir) 132 $(CXX) $(CFLAGSsjd) -c $< -o $@ 133 134################################################## 135# define build dependencies for each command 136 137release: astyle 138astyle: $(OBJ) 139 @ mkdir -p $(bindir) 140 $(CXX) $(LDFLAGSr) -o $(bindir)/$@ $^ 141 @ echo 142 143debug: astyled 144astyled: $(OBJd) 145 @ mkdir -p $(bindir) 146 $(CXX) $(LDFLAGSd) -o $(bindir)/$@ $^ 147 @ echo 148 149shared: libastyle.so 150libastyle.so: $(OBJs) 151 @ mkdir -p $(bindir) 152 $(CXX) -shared $(LDFLAGSr) -Wl,-soname,libastyle.so.$(MAJORVER) -o $(bindir)/libastyle.so.$(SOLIBVER) $^ 153 @ echo 154 155shareddebug: libastyled.so 156libastyled.so: $(OBJsd) 157 @ mkdir -p $(bindir) 158 $(CXX) -shared $(LDFLAGSd) -Wl,-soname,libastyled.so.$(MAJORVER) -o $(bindir)/libastyled.so.$(SOLIBVER) $^ 159 @ echo 160 161static: libastyle.a 162libastyle.a: $(OBJa) 163 @ mkdir -p $(bindir) 164 ar crs $(bindir)/$@ $^ 165 @ echo 166 167staticdebug: libastyled.a 168libastyled.a: $(OBJad) 169 @ mkdir -p $(bindir) 170 ar crs $(bindir)/$@ $^ 171 @ echo 172 173java: libastylej.so 174libastylej.so: $(OBJsj) 175 @ mkdir -p $(bindir) 176 $(CXX) -shared $(LDFLAGSr) -Wl,-soname,libastylej.so.$(MAJORVER) -o $(bindir)/libastylej.so.$(SOLIBVER) $^ 177 @ echo 178 179javadebug: libastylejd.so 180libastylejd.so: $(OBJsjd) 181 @ mkdir -p $(bindir) 182 $(CXX) -shared $(LDFLAGSr) -Wl,-soname,libastylejd.so.$(MAJORVER) -o $(bindir)/libastylejd.so.$(SOLIBVER) $^ 183 @ echo 184 185all: release debug shared shareddebug static staticdebug 186 187javaall: java javadebug 188 189clean: 190 rm -f $(objdir)/*.o $(bindir)/*astyle* 191 192cleanobj: 193 rm -f $(objdir)/*.o 194 195install: 196 $(INSTALL) -m 755 -d $(ipath) 197 @$(INSTALL) -m 755 $(bindir)/astyle $(ipath) 198 199 @if [ -d $(SYSCONF_PATH)/html ]; then \ 200 rm -rf $(SYSCONF_PATH)/html; \ 201 fi 202 203 $(INSTALL) -m 755 -d $(SYSCONF_PATH) 204 @mkdir -p $(SYSCONF_PATH)/html; 205 @for files in ../../doc/*.html ../../doc/*.css; \ 206 do \ 207 $(INSTALL) -m 644 $$files $(SYSCONF_PATH)/html; \ 208 done 209 210uninstall: 211 rm -f $(ipath)/astyle 212 rm -rf $(SYSCONF_PATH) 213