Makefile 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. # Haxe compiler Makefile
  2. #
  3. # - use 'make' to build all
  4. # - use 'make haxe' to build only the compiler (not the libraries)
  5. # - if you want to build quickly, install 'ocamlopt.opt' and change OCAMLOPT=ocamlopt.top
  6. #
  7. # Windows users :
  8. # - use 'make -f Makefile.win' to build for Windows
  9. # - use 'make MSVC=1 -f Makefile.win' to build for Windows with OCaml/MSVC
  10. #
  11. .SUFFIXES : .ml .mli .cmo .cmi .cmx .mll .mly
  12. INSTALL_DIR=/usr
  13. OUTPUT=haxe
  14. EXTENSION=
  15. OCAMLOPT=ocamlopt
  16. CFLAGS= -g -I libs/extlib -I libs/extc -I libs/neko -I libs/javalib -I libs/ziplib -I libs/swflib -I libs/xml-light -I libs/ttflib
  17. CC_CMD = $(OCAMLOPT) $(CFLAGS) -c $<
  18. CC_PARSER_CMD = $(OCAMLOPT) -pp camlp4o $(CFLAGS) -c parser.ml
  19. LIBS=unix.cmxa str.cmxa libs/extlib/extLib.cmxa libs/xml-light/xml-light.cmxa libs/swflib/swflib.cmxa \
  20. libs/extc/extc.cmxa libs/neko/neko.cmxa libs/javalib/java.cmxa libs/ziplib/zip.cmxa libs/ttflib/ttf.cmxa
  21. NATIVE_LIBS=-cclib libs/extc/extc_stubs.o -cclib -lz
  22. RELDIR=../../..
  23. EXPORT=../../../projects/motionTools/haxe
  24. MODULES=ast type lexer common genxml parser typecore optimizer typeload \
  25. codegen gencommon genas3 gencpp genjs genneko genphp genswf8 \
  26. genswf9 genswf genjava gencs interp typer matcher dce main
  27. export HAXE_STD_PATH=$(CURDIR)/std
  28. all: libs haxe
  29. libs:
  30. make -C libs/extlib opt
  31. make -C libs/extc native
  32. make -C libs/neko
  33. make -C libs/javalib
  34. make -C libs/ziplib
  35. make -C libs/swflib
  36. make -C libs/xml-light xml-light.cmxa
  37. make -C libs/ttflib
  38. haxe: $(MODULES:=.cmx)
  39. $(OCAMLOPT) -o $(OUTPUT) $(NATIVE_LIBS) $(LIBS) $(MODULES:=.cmx)
  40. haxelib:
  41. $(CURDIR)/$(OUTPUT) --cwd "$(CURDIR)/std/tools/haxelib" haxelib.hxml
  42. cp std/tools/haxelib/haxelib$(EXTENSION) haxelib$(EXTENSION)
  43. haxedoc:
  44. $(CURDIR)/$(OUTPUT) --cwd "$(CURDIR)/std/tools/haxedoc" haxedoc.hxml
  45. cp std/tools/haxedoc/haxedoc$(EXTENSION) haxedoc$(EXTENSION)
  46. tools: haxelib haxedoc
  47. install:
  48. cp haxe $(INSTALL_DIR)/bin/haxe
  49. rm -rf $(INSTALL_DIR)/lib/haxe/std
  50. -mkdir -p $(INSTALL_DIR)/lib/haxe
  51. cp -rf std $(INSTALL_DIR)/lib/haxe/std
  52. -mkdir -p $(INSTALL_DIR)/lib/haxe/lib
  53. chmod -R a+rx $(INSTALL_DIR)/lib/haxe
  54. chmod 777 $(INSTALL_DIR)/lib/haxe/lib
  55. cp std/tools/haxelib/haxelib.sh $(INSTALL_DIR)/bin/haxelib
  56. cp std/tools/haxedoc/haxedoc.sh $(INSTALL_DIR)/bin/haxedoc
  57. chmod a+rx $(INSTALL_DIR)/bin/haxe $(INSTALL_DIR)/bin/haxelib $(INSTALL_DIR)/bin/haxedoc
  58. # will install native version of the tools instead of script ones
  59. install_tools: tools
  60. cp haxelib ${INSTALL_DIR}/bin/haxelib
  61. cp haxedoc ${INSTALL_DIR}/bin/haxedoc
  62. chmod a+rx $(INSTALL_DIR)/bin/haxelib $(INSTALL_DIR)/bin/haxedoc
  63. uninstall:
  64. rm -rf $(INSTALL_DIR)/bin/haxe $(INSTALL_DIR)/bin/haxelib $(INSTALL_DIR)/lib/haxe
  65. export:
  66. cp haxe*.exe doc/CHANGES.txt $(EXPORT)
  67. rsync -a --exclude .svn --exclude *.n --exclude std/libs --delete std $(EXPORT)
  68. codegen.cmx: optimizer.cmx typeload.cmx typecore.cmx type.cmx genxml.cmx common.cmx ast.cmx
  69. common.cmx: type.cmx ast.cmx
  70. dce.cmx: ast.cmx common.cmx type.cmx
  71. genas3.cmx: type.cmx common.cmx codegen.cmx ast.cmx
  72. gencommon.cmx: type.cmx common.cmx codegen.cmx ast.cmx
  73. gencpp.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
  74. gencs.cmx: type.cmx lexer.cmx gencommon.cmx common.cmx codegen.cmx ast.cmx
  75. genjava.cmx: type.cmx gencommon.cmx common.cmx codegen.cmx ast.cmx
  76. genjs.cmx: type.cmx optimizer.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
  77. genneko.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
  78. genphp.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
  79. genswf.cmx: type.cmx genswf9.cmx genswf8.cmx common.cmx ast.cmx
  80. genswf8.cmx: type.cmx lexer.cmx common.cmx codegen.cmx ast.cmx
  81. genswf9.cmx: type.cmx lexer.cmx genswf8.cmx common.cmx codegen.cmx ast.cmx
  82. genxml.cmx: type.cmx lexer.cmx common.cmx ast.cmx
  83. interp.cmx: typecore.cmx type.cmx lexer.cmx genneko.cmx common.cmx codegen.cmx ast.cmx genswf.cmx parser.cmx
  84. matcher.cmx: optimizer.cmx codegen.cmx typecore.cmx type.cmx typer.cmx common.cmx ast.cmx
  85. main.cmx: dce.cmx matcher.cmx typer.cmx typeload.cmx typecore.cmx type.cmx parser.cmx optimizer.cmx lexer.cmx interp.cmx genxml.cmx genswf.cmx genphp.cmx genneko.cmx genjs.cmx gencpp.cmx genas3.cmx common.cmx codegen.cmx ast.cmx gencommon.cmx genjava.cmx gencs.cmx
  86. optimizer.cmx: typecore.cmx type.cmx parser.cmx common.cmx ast.cmx
  87. parser.cmx: parser.ml lexer.cmx common.cmx ast.cmx
  88. $(CC_PARSER_CMD)
  89. type.cmx: ast.cmx
  90. typecore.cmx: type.cmx common.cmx ast.cmx
  91. typeload.cmx: typecore.cmx type.cmx parser.cmx optimizer.cmx lexer.cmx common.cmx ast.cmx
  92. typer.cmx: typeload.cmx typecore.cmx type.cmx parser.cmx optimizer.cmx lexer.cmx interp.cmx genneko.cmx genjs.cmx common.cmx codegen.cmx ast.cmx
  93. lexer.cmx: lexer.ml
  94. lexer.cmx: ast.cmx
  95. clean: clean_libs clean_haxe clean_tools
  96. clean_libs:
  97. make -C libs/extlib clean
  98. make -C libs/extc clean
  99. make -C libs/neko clean
  100. make -C libs/ziplib clean
  101. make -C libs/javalib clean
  102. make -C libs/swflib clean
  103. make -C libs/xml-light clean
  104. make -C libs/ttflib clean
  105. clean_haxe:
  106. rm -f $(MODULES:=.obj) $(MODULES:=.o) $(MODULES:=.cmx) $(MODULES:=.cmi) lexer.ml
  107. clean_tools:
  108. rm -f $(OUTPUT) haxelib haxedoc
  109. # SUFFIXES
  110. .ml.cmx:
  111. $(CC_CMD)
  112. .mli.cmi:
  113. $(CC_CMD)
  114. .mll.ml:
  115. ocamllex $<
  116. .PHONY: haxe libs