Makefile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. ######################################################################################
  2. ## SETTINGS ##
  3. ######################################################################################
  4. ## path stuff
  5. DOCS_PATH:=./doc
  6. DEMO_PATH=demo
  7. SRC_PATH=src
  8. ## Documents settings
  9. DOXYFILE:=$(DOCS_PATH)/Doxyfile
  10. ## HEADER file packing settings
  11. ## note: source file paths are prefixed later, no need to add prefix here; just
  12. ## give it the name.
  13. MACRO = NK
  14. INTRO = HEADER.md
  15. PUB = nuklear.h
  16. OUTPUT = nuklear.h
  17. PRIV1 = nuklear_internal.h nuklear_math.c nuklear_util.c nuklear_color.c nuklear_utf8.c nuklear_buffer.c nuklear_string.c nuklear_draw.c nuklear_vertex.c
  18. EXTERN = stb_rect_pack.h stb_truetype.h
  19. PRIV2 = nuklear_font.c nuklear_input.c nuklear_style.c nuklear_context.c nuklear_pool.c nuklear_page_element.c nuklear_table.c nuklear_panel.c nuklear_window.c nuklear_popup.c nuklear_contextual.c nuklear_menu.c nuklear_layout.c nuklear_tree.c nuklear_group.c nuklear_list_view.c nuklear_widget.c nuklear_text.c nuklear_image.c nuklear_9slice.c nuklear_button.c nuklear_toggle.c nuklear_selectable.c nuklear_slider.c nuklear_knob.c nuklear_progress.c nuklear_scrollbar.c nuklear_text_editor.c nuklear_edit.c nuklear_property.c nuklear_chart.c nuklear_color_picker.c nuklear_combo.c nuklear_tooltip.c
  20. OUTRO = LICENSE CHANGELOG CREDITS
  21. ## Demo settings
  22. DEMO_LIST = $(shell find $(DEMO_PATH) -type f -name Makefile -printf "%h ")
  23. ######################################################################################
  24. ## RECIPES ##
  25. ######################################################################################
  26. .PHONY: usage all demos $(DEMO_LIST)
  27. usage:
  28. echo "make docs to create documentation"
  29. echo "make nuke to rebuild the single header nuklear.h from source"
  30. echo "make demos to build all of the demos
  31. echo "make all to re-pack the header and create documentation"
  32. all: docs nuke demos
  33. demos: $(DEMO_LIST)
  34. ########################################################################################
  35. ## Nuklear.h
  36. nuke: $(addprefix $(SRC_PATH)/, $(SRC))
  37. python3 $(SRC_PATH)/build.py --macro $(MACRO) --intro $(addprefix $(SRC_PATH)/, $(INTRO)) --pub $(addprefix $(SRC_PATH)/, $(PUB)) --priv1 "$(addprefix $(SRC_PATH)/, $(PRIV1))" --extern "$(addprefix $(SRC_PATH)/, $(EXTERN))" --priv2 "$(addprefix $(SRC_PATH)/, $(PRIV2))" --outro "$(addprefix $(SRC_PATH)/, $(OUTRO))" > $(OUTPUT)
  38. ########################################################################################
  39. ## Docs
  40. docs: $(DOCS_PATH)/html/index.html
  41. $(DOCS_PATH)/html/index.html: $(DOCS_PATH)/doxygen-awesome-css/doxygen-awesome.css $(DOXYFILE)
  42. doxygen $(DOXYFILE)
  43. $(DOXYFILE):
  44. doxygen -g $@
  45. $(DOCS_PATH)/doxygen-awesome-css/doxygen-awesome.css:
  46. git clone https://github.com/jothepro/doxygen-awesome-css.git $(DOCS_PATH)/doxygen-awesome-css --branch v2.3.4
  47. ########################################################################################
  48. ## Demos
  49. $(DEMO_LIST):
  50. $(MAKE) -C $@
  51. ########################################################################################
  52. ## Utility helpers
  53. clean:
  54. rm -rf $(DOCS_PATH)/html $(OUTPUT)