ImageGrid/ui (gen4)/Makefile
Alex A. Naanou 1b7288a4cf more tweaking of makefile...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2018-01-08 06:39:10 +03:00

160 lines
3.7 KiB
Makefile
Executable File

#**********************************************************************
# TODO: build to a BUILD_DIR...
# TODO: build all target platforms...
# - Windows (AppJS)
# - MacOSX (AppJS)
# - Windows8 (native?) XXX
# - PhoneGap-remote
# push and api call to fetch and rebuild
# - PhoneGap-local XXX
#
APP_NAME=ImageGrid.Viewer
ELECTRON_DOWNOAD_URL=https://github.com/electron/electron/releases/download
# XXX get this automatically...
# ...also might be good to make this flexible and use these as parameters...
ELECTRON_VERSION=1.7.10
NODE_VERSION=`node --version`
UNAME := $(shell uname)
#**********************************************************************
TARGET_DIR=targets
NODE_DIR=node_modules
BUILD_DIR=build
DIST_DIR=dist
LIB_DIR=lib
EXT_LIB_DIR=ext-lib
CSS_DIR=css
CFG_DIR=cfg
DOMAIN_DIR=imagegrid
FEATURES_DIR=features
WORKERS_DIR=workers
IMAGES_DIR=images
# get all the .less files to process...
#LESS_FILES := $(shell find . -type f -name '*.less')
CSS_FILES := $(patsubst %.less,%.css,$(wildcard css/*.less))
PROJECT_FILES=package.json
JS_FILES := $(wildcard *.js)
HTML_FILES := $(wildcard *.html)
APP_DATE=$(BUILD_DIR)/DATE
APP_NODE=$(BUILD_DIR)/NODE
#**********************************************************************
.PHONY: all css dev clean cleanall win64e win32e
all: dev
css: $(CSS_FILES)
dev: $(NODE_DIR) css
#clean:
# rm -rf $(BUILD_DIR)
# XXX for some reason this is called on make win64e...
#cleanall: clean
# rm -rf $(DIST_DIR) $(TARGET_DIR)
# XXX these still depend on the current arch, need to pass architecture to npm...
win64e: $(DIST_DIR)/$(APP_NAME)-win32-x64.zip
win32e: $(DIST_DIR)/$(APP_NAME)-win32-ia32.zip
#**********************************************************************
# build targets...
# build info...
# XXX add build version...
$(APP_DATE):
date "+%Y%m%d %H%M" > $(APP_DATE)
$(APP_NODE):
echo "$(NODE_VERSION)" > $(APP_NODE)
$(NODE_DIR):
npm install
# process LESS files to CSS...
%.css: %.less
lessc $< > $@
# build app dir...
# XXX need to make this arch/os specific...
# XXX make junction to $(NODE_DIR) -- does not work with asar
$(BUILD_DIR)/$(APP_NAME): $(CSS_FILES) $(NODE_DIR) $(PROJECT_FILES) \
$(JS_FILES) $(CSS_FILES) $(HTML_FILES)
@mkdir -p $@
cp -rlu $(PROJECT_FILES) $(JS_FILES) $(HTML_FILES) \
$(CFG_DIR) $(LIB_DIR) $(EXT_LIB_DIR) $(FEATURES_DIR) \
$(DOMAIN_DIR) $(WORKERS_DIR) $(CSS_DIR) $(IMAGES_DIR) \
"$(BUILD_DIR)/$(APP_NAME)"
cp -rlu $(NODE_DIR) \
"$(BUILD_DIR)/$(APP_NAME)"
#ln -s $(NODE_DIR) "$(BUILD_DIR)/$(APP_NAME)/$(NODE_DIR)"
#cmd /c mklink /j "$(BUILD_DIR)\$(APP_NAME)\$(NODE_DIR)" \
# $(NODE_DIR)
# pack app.asar
# XXX need to do $(BUILD_DIR)/$(APP_NAME) iff app.asar does not exist...
$(BUILD_DIR)/app.asar: $(BUILD_DIR)/$(APP_NAME)
cd $(BUILD_DIR) ; \
asar p "$(APP_NAME)" app.asar
# get the electron binary...
# XXX for some odd reason this is deleted adter extraction...
$(TARGET_DIR)/electron-v$(ELECTRON_VERSION)-%.zip:
@mkdir -p $(@D)
wget \
-nc "$(ELECTRON_DOWNOAD_URL)/v$(ELECTRON_VERSION)/$(@F)" \
-O "$@"
# build the app dir...
$(BUILD_DIR)/$(APP_NAME)-%: $(TARGET_DIR)/electron-v$(ELECTRON_VERSION)-%.zip $(BUILD_DIR)/app.asar
unzip -u "$<" -d "$@"
chmod +x "$@/"*dll "$@/"*exe
cp "$(BUILD_DIR)/app.asar" "$@/resources/"
rm -f "$@/resources/default_app.asar"
mv "$@/electron.exe" "$@/$(APP_NAME).exe"
# package the app dir...
$(DIST_DIR)/$(APP_NAME)-%.zip: $(BUILD_DIR)/$(APP_NAME)-%
@mkdir -p "$(@D)"
cd "$(BUILD_DIR)" ; \
zip -r "../$@" "$(APP_NAME)-$*"
# XXX OSX
# XXX Linux
# XXX android...
# XXX iOS...
#**********************************************************************