111 lines
2.7 KiB
Makefile
111 lines
2.7 KiB
Makefile
# 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
|