# Makefile for Forge # Top-level build and dist dir BUILD_DIR=@FORGE_DIR@/build TOP_DIST_DIR=@FORGE_DIR@/dist DIST_DIR=$(TOP_DIST_DIR)/forge _FLASH := $(DIST_DIR)/SocketPool.swf ifeq (@BUILD_FLASH@,yes) FLASH := $(_FLASH) else ifeq (@USE_PRE_BUILT_FLASH@,yes) FLASH := $(_FLASH) endif endif JS_SOURCES := $(wildcard js/*.js) JS_DIST := $(JS_SOURCES:js/%.js=$(DIST_DIR)/%.js) JS_DIST_MIN := $(JS_DIST:%.js=%.min.js) TESTS_FORGE_LINK := @FORGE_DIR@/tests/forge ifeq (@BUILD_PYTHON_MODULES@,yes) SSL_SESSIONS_DIR = \ $(TOP_DIST_DIR)/forge_ssl/lib/python@PYTHON_VERSION@/site-packages SSL_SESSIONS_FILES = \ $(SSL_SESSIONS_DIR)/_forge_ssl.so \ $(SSL_SESSIONS_DIR)/forge/ssl.py endif # Whether or not to print commands as they are being executed, helpful for # debugging the build system. ifdef PRINT_COMMANDS PCMD= else PCMD=@ endif .PHONY: all build-all update-all verbose clean verbose-commands # debug flags for flash build ifeq (@MXMLC_DEBUG_MODE@,yes) FLASH_FLAGS = \ -debug=true \ -define=CONFIG::debugging,true \ -define=CONFIG::release,false else FLASH_FLAGS = \ -debug=false \ -define=CONFIG::debugging,false \ -define=CONFIG::release,true endif all: $(BUILD_DIR) $(DIST_DIR) $(FLASH) $(JS_DIST) $(TESTS_FORGE_LINK) $(SSL_SESSIONS_FILES) @echo "forge build complete." build-all: all update-all: @git pull && ./build-setup && make all $(BUILD_DIR): $(PCMD) mkdir -p $@ $(DIST_DIR): $(PCMD) mkdir -p $@ ifeq (@BUILD_FLASH@,yes) $(DIST_DIR)/SocketPool.swf: flash/SocketPool.as flash/PooledSocket.as flash/SocketEvent.as @echo "Building $@..." $(PCMD) @MXMLC@ $(FLASH_FLAGS) \ -load-config+=build-flash.xml \ -output=$@ $< else ifeq (@USE_PRE_BUILT_FLASH@,yes) $(DIST_DIR)/SocketPool.swf: @FORGE_DIR@/swf/SocketPool.swf @echo "Copying pre-built $(@F)..." $(PCMD) cp $< $@ endif endif $(DIST_DIR)/%.js: js/%.js @echo "Linking $@..." $(PCMD) ln -sf $(realpath $<) $@ $(TESTS_FORGE_LINK): $(DIST_DIR) @echo "Linking $@..." $(PCMD) ln -sf $(realpath $<) $@ ifeq (@BUILD_PYTHON_MODULES@,yes) $(SSL_SESSIONS_DIR)/_forge_ssl.so: \ @FORGE_DIR@/tests/forge_ssl/forge/_ssl.c \ @FORGE_DIR@/tests/forge_ssl/forge/socketmodule.h \ @FORGE_DIR@/tests/forge_ssl/setup.py $(SSL_SESSIONS_DIR)/forge/ssl.py: \ @FORGE_DIR@/tests/forge_ssl/forge/ssl.py \ @FORGE_DIR@/tests/forge_ssl/setup.py (cd @FORGE_DIR@/tests/forge_ssl && \ @PYTHON@ setup.py \ build --build-base $(BUILD_DIR) \ install --prefix=$(TOP_DIST_DIR)/forge_ssl) @# fix distutils timestamp issue @# (sub-seconds of source file are truncated on target so rebuild is @# always triggered) @touch $@ endif clean: $(PCMD) rm -rf $(BUILD_DIR) $(TOP_DIST_DIR) @echo "Removed all generated files." verbose-commands: PRINT_COMMANDS=true $(MAKE) all