blob: eb4495efffe8378dc1d99474763e4ab05bcaae40 [file] [log] [blame]
# 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