/Makefile

http://github.com/candy-chat/candy · Makefile · 103 lines · 75 code · 17 blank · 11 comment · 0 complexity · ab61287a2852f0ede5dd01a7350b2c15 MD5 · raw file

  1. #
  2. # Makefile for Candy
  3. # Candy - Chats are not dead yet
  4. #
  5. # Copyright:
  6. # (c) 2011 Amiado Group AG
  7. #
  8. # Authors:
  9. # - Patrick Stadler <patrick.stadler@gmail.com>
  10. # - Michael Weibel <michael.weibel@gmail.com>
  11. #
  12. SHELL=/bin/bash
  13. DOC_DIR = docs
  14. NDPROJ_DIR = .ndproj
  15. SRC_DIR = src
  16. LIBS_DIR = libs
  17. CANDY_BUNDLE = candy.bundle.js
  18. CANDY_BUNDLE_MIN = candy.min.js
  19. CANDY_BUNDLE_LIBRARIES = libs/libs.bundle.js
  20. CANDY_BUNDLE_LIBRARIES_MIN = libs/libs.min.js
  21. CANDY_FILES = $(SRC_DIR)/candy.js $(SRC_DIR)/core.js $(SRC_DIR)/view.js $(SRC_DIR)/util.js $(SRC_DIR)/core/action.js $(SRC_DIR)/core/chatRoom.js $(SRC_DIR)/core/chatRoster.js $(SRC_DIR)/core/chatUser.js $(SRC_DIR)/core/event.js $(SRC_DIR)/view/event.js $(SRC_DIR)/view/observer.js $(SRC_DIR)/view/pane.js $(SRC_DIR)/view/template.js $(SRC_DIR)/view/translation.js
  22. CANDY_LIBS_FILES = $(LIBS_DIR)/strophejs/strophe.js $(LIBS_DIR)/strophejs-plugins/muc/strophe.muc.js $(LIBS_DIR)/mustache.js/mustache.js $(LIBS_DIR)/jquery-i18n/jquery.i18n.js $(LIBS_DIR)/dateformat/dateFormat.js
  23. CANDY_FILES_BUNDLE = $(CANDY_FILES:.js=.bundle)
  24. CANDY_LIBS_FILES_BUNDLE = $(CANDY_LIBS_FILES:.js=.libs-bundle)
  25. all: bundle min
  26. bundle: clean-bundle $(CANDY_FILES_BUNDLE)
  27. %.bundle: %.js
  28. @@echo -n "Bundling" $< "..."
  29. @@cat $< >> $(CANDY_BUNDLE)
  30. @@echo "done"
  31. min: $(CANDY_BUNDLE)
  32. @@echo -n "Compressing" $(CANDY_BUNDLE) "..."
  33. ifdef YUI_COMPRESSOR
  34. @@java -jar $(YUI_COMPRESSOR) --type js $(CANDY_BUNDLE) -o $(CANDY_BUNDLE_MIN) --charset utf-8
  35. @@echo "done ("$(CANDY_BUNDLE_MIN)")"
  36. else
  37. @@echo "aborted"
  38. @@echo "** You can safely use the uncompressed bundle ("$(CANDY_BUNDLE)")"
  39. @@echo "** YUI Compressor is required to build the minified version."
  40. @@echo "** Please set YUI_COMPRESSOR to the path to the jar file."
  41. endif
  42. libs: libs-bundle libs-min
  43. libs-bundle: clean-libs $(CANDY_LIBS_FILES_BUNDLE)
  44. %.libs-bundle: %.js
  45. @@echo -n "Bundling" $< "..."
  46. @@cat $< >> $(CANDY_BUNDLE_LIBRARIES)
  47. @@echo "done"
  48. libs-min: $(CANDY_BUNDLE_LIBRARIES)
  49. @@echo -n "Compressing" $(CANDY_BUNDLE_LIBRARIES) "..."
  50. ifdef YUI_COMPRESSOR
  51. @@java -jar $(YUI_COMPRESSOR) --type js $(CANDY_BUNDLE_LIBRARIES) -o $(CANDY_BUNDLE_LIBRARIES_MIN) --charset utf-8
  52. @@echo "done ("$(CANDY_BUNDLE_LIBRARIES_MIN)")"
  53. else
  54. @@echo "aborted"
  55. @@echo "** You can safely use the uncompressed bundle ("$(CANDY_BUNDLE_LIBRARIES)")"
  56. @@echo "** YUI Compressor is required to build the minified version."
  57. @@echo "** Please set YUI_COMPRESSOR to the path to the jar file."
  58. endif
  59. docs:
  60. @@echo "Building candy documentation ..."
  61. ifdef NATURALDOCS_DIR
  62. @@if [ ! -d $(NDPROJ_DIR) ]; then mkdir $(NDPROJ_DIR); fi
  63. @@if [ ! -d $(DOC_DIR) ]; then mkdir $(DOC_DIR); fi
  64. @@$(NATURALDOCS_DIR)/NaturalDocs -q --exclude-source libs --exclude-source res --exclude-source candy.min.js --exclude-source candy.bundle.js -i . -o html $(DOC_DIR) -p $(NDPROJ_DIR)
  65. @@rm -r $(NDPROJ_DIR)
  66. @@echo "Documentation built."
  67. @@echo
  68. else
  69. @@echo "aborted"
  70. @@echo "** NaturalDocs is required to build the documentation."
  71. @@echo "** Please set NATURALDOCS_DIR to the path to the NaturalDocs executable"
  72. endif
  73. clean: clean-bundle clean-libs
  74. clean-bundle:
  75. @@echo -n "Cleaning bundles ..."
  76. @@rm -f $(CANDY_BUNDLE) $(CANDY_BUNDLE_MIN)
  77. @@echo "done"
  78. clean-libs:
  79. @@echo -n "Cleaning library bundles ..."
  80. @@rm -f $(CANDY_BUNDLE_LIBRARIES) $(CANDY_BUNDLE_LIBRARIES_MIN)
  81. @@echo "done"
  82. clean-docs:
  83. @@echo -n "Cleaning documentation ..."
  84. @@rm -rf $(NDPROJ_DIR) $(DOC_DIR)
  85. @@echo "done"
  86. .PHONY: all docs clean libs