blob: e57dbe4949ff221ccfaeec667b560352e34bfc73 [file] [log] [blame]
# Gerrit
#
# Copyright 2008 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Define GWT_SDK to the location of the Google Web Toolkit SDK.
#
# Define GEN_DEBUG to save the generated Java code from GWT.
#
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
JAVA = java
JAVAC = javac
JAR = jar
JAVA_ARGS = -Xmx265m
CPIO = cpio -pd
GWT_OS = unknown
GWT_FLAGS =
gwtjsonrpc = ../gwtjsonrpc
gwtorm = ../gwtorm
ifeq ($(uname_S),Darwin)
GWT_OS = mac
endif
ifeq ($(uname_S),Linux)
GWT_OS = linux
endif
ifeq ($(uname_S),Cygwin)
GWT_OS = win
endif
-include config.mak
WEBAPP = webapp
WEB_MAIN = com.google.gerrit.Gerrit
GWT_CP = \
$(GWT_SDK)/gwt-user.jar \
$(GWT_SDK)/gwt-dev-$(GWT_OS).jar \
lib/gwtjsonrpc.jar \
lib/gwtorm.jar \
#end GWT_CP
WEB_LIB_GEN = \
$(WEBAPP)/lib/antlr.jar \
$(WEBAPP)/lib/asm.jar \
$(WEBAPP)/lib/commons-codec.jar \
$(WEBAPP)/lib/gson.jar \
$(WEBAPP)/lib/gwtjsonrpc.jar \
$(WEBAPP)/lib/gwtorm.jar \
$(WEBAPP)/lib/jdbc-h2.jar \
#end WEB_LIB_GEN
ALL_LIB = $(filter-out $(WEBAPP)/lib/jdbc-h2.jar, \
$(GWT_SDK)/gwt-servlet.jar \
$(WEBAPP)/lib/dyuproject-openid.jar \
$(WEBAPP)/lib/dyuproject-util.jar \
$(WEBAPP)/lib/jetty-util.jar \
$(WEB_LIB_GEN) \
)
#end ALL_LIB
ifdef GEN_DEBUG
GWT_FLAGS += -gen gensrc
endif
MY_JAVA := $(shell find $(WEBAPP)/src -name \*.java)
MY_RSRC := $(shell find $(WEBAPP)/src \
-name \*.css \
-o -name \*.gif \
-o -name \*.html \
-o -name \*.png \
-o -name \*.properties \
)
MY_JAR := gerrit-server.jar
MY_WAR := gerrit.war
MY_WXML := $(WEBAPP)/src/com/google/gerrit/web.xml
MY_NCJS := $(WEBAPP)/www/$(WEB_MAIN)/$(WEB_MAIN).nocache.js
all: $(MY_WAR)
clean:
rm -rf $(MY_JAR) $(MY_WAR) .bin
rm -f $(WEB_LIB_GEN)
rm -rf $(WEBAPP)/gensrc
rm -rf $(WEBAPP)/classes
rm -rf $(WEBAPP)/www
rm -rf $(WEBAPP)/tomcat
clean-h2db:
rm -f $(WEBAPP)/ReviewDb.*.db
.PHONY: clean-h2db
$(MY_JAR): $(MY_JAVA) $(ALL_LIB)
rm -rf .bin
mkdir .bin
CLASSPATH= && \
$(foreach p,$(ALL_LIB) $(GWT_SDK)/gwt-user.jar,CLASSPATH="$$CLASSPATH:$(abspath $p)" &&) \
export CLASSPATH && \
cd $(WEBAPP)/src && $(JAVAC) \
-encoding utf-8 \
-source 1.5 \
-target 1.5 \
-g \
-d "$(abspath .bin)" \
$(patsubst $(WEBAPP)/src/%,%,$(MY_JAVA))
cd .bin && $(JAR) cf ../$(MY_JAR) .
rm -rf .bin
$(MY_WAR): $(MY_NCJS) $(ALL_LIB) $(MY_JAR) $(MY_WXML)
rm -rf .bin
mkdir -p .bin/WEB-INF/lib
cd $(WEBAPP)/www/$(WEB_MAIN) && find . | $(CPIO) $(abspath .bin)
for p in $$(find .bin -type f); do\
gzip -9c $$p > $$p.gz || exit;\
done
$(foreach p,$(ALL_LIB) $(MY_JAR),cp $p .bin/WEB-INF/lib &&) :
cp $(MY_WXML) .bin/WEB-INF
mkdir -p .bin/WEB-INF/classes/com/google/gerrit/public
$(foreach p,Gerrit.html SetCookie.html,\
rm .bin/$p.gz && \
mv .bin/$p .bin/WEB-INF/classes/com/google/gerrit/public &&) :
cd .bin && $(JAR) cf ../$(MY_WAR) .
rm -rf .bin
$(MY_NCJS): \
$(MY_JAVA) \
$(MY_RSRC) \
$(WEBAPP)/src/com/google/gerrit/Gerrit.gwt.xml \
$(WEB_LIB_GEN)
CLASSPATH=src:classes && \
$(foreach p,$(GWT_CP),CLASSPATH=$$CLASSPATH:$p &&) \
export CLASSPATH && \
cd $(WEBAPP) && $(JAVA) $(JAVA_ARGS) \
com.google.gwt.dev.GWTCompiler \
-out www \
$(GWT_FLAGS) \
$(WEB_MAIN)
web-shell: $(WEB_LIB_GEN)
CLASSPATH=src:classes && \
$(foreach p,$(GWT_CP),CLASSPATH=$$CLASSPATH:$p &&) \
export CLASSPATH && \
cd $(WEBAPP) && $(JAVA) $(JAVA_ARGS) \
com.google.gwt.dev.GWTShell \
-out www \
$(WEB_MAIN)/Gerrit.html
web-lib: $(WEB_LIB_GEN)
$(WEBAPP)/lib/gwtjsonrpc.jar: $(gwtjsonrpc)/lib/gwtjsonrpc.jar
cp $< $@
$(WEBAPP)/lib/gson.jar: $(gwtjsonrpc)/lib/gson.jar
cp $< $@
$(WEBAPP)/lib/commons-codec.jar: $(gwtjsonrpc)/lib/commons-codec.jar
cp $< $@
$(gwtjsonrpc)/lib/gwtjsonrpc.jar: make-gwtjsonrpc
$(MAKE) -C $(gwtjsonrpc) GWT_SDK=$(GWT_SDK)
.PHONY: make-gwtjsonrpc
$(WEBAPP)/lib/gwtorm.jar: $(gwtorm)/lib/gwtorm.jar
cp $< $@
$(WEBAPP)/lib/antlr.jar: $(gwtorm)/lib/antlr.jar
cp $< $@
$(WEBAPP)/lib/asm.jar: $(gwtorm)/lib/asm.jar
cp $< $@
$(WEBAPP)/lib/jdbc-h2.jar: $(gwtorm)/lib/jdbc-h2.jar
cp $< $@
$(gwtorm)/lib/gwtorm.jar: make-gwtorm
$(MAKE) -C $(gwtorm) GWT_SDK=$(GWT_SDK)
.PHONY: make-gwtorm
.PHONY: all
.PHONY: clean
.PHONY: web web-shell web-lib