Simon Krajewski 8 роки тому
батько
коміт
501b7a6488
5 змінених файлів з 43 додано та 61 видалено
  1. 6 4
      .travis.yml
  2. 35 52
      Makefile
  3. 0 2
      Makefile.win
  4. 1 2
      appveyor.yml
  5. 1 1
      libs

+ 6 - 4
.travis.yml

@@ -1,8 +1,6 @@
 env:
   global:
     # make variables
-    - OCAMLC=ocamlc.opt
-    - OCAMLOPT=ocamlopt.opt
     - ADD_REVISION=1
     # SauceLabs
     # - secure: SjyKefmjUEXi0IKHGGpcbLAajU0mLHONg8aA8LoY7Q9nAkSN6Aql+fzS38Boq7w1jWn+2FOpr+4jy0l6wVd/bftsF+huFfYpFJmdh8BlKmE0K71zZAral0H1c7YxkuQpPiJCIFGXqtkvev7SWTy0z31u7kuuQeEyW27boXe5cDA=
@@ -28,7 +26,7 @@ install_linux: &install_linux
   # Install opam + ocaml
   - sudo wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin 4.02.3
   - export OPAMYES=1
-  - opam install camlp4
+  - opam install camlp4 ocamlfind
   - eval `opam config env`
   # Install neko and haxe dependencies
   - sudo add-apt-repository ppa:haxe/snapshots -y
@@ -61,7 +59,11 @@ install_osx: &install_osx
   # Install haxe dependencies
   - brew uninstall --force brew-cask # https://github.com/caskroom/homebrew-cask/pull/15381
   - travis_retry brew update
-  - travis_retry brew install ocaml camlp4;
+  - travis_retry brew install opam;
+  - export OPAMYES=1
+  - opam init
+  - opam install camlp4 ocamlfind
+  - eval `opam config env`
   # Install neko
   - travis_retry brew install neko --HEAD;
   # Setup database

+ 35 - 52
Makefile

@@ -22,52 +22,39 @@ PLATFORM?=unix
 
 OUTPUT=haxe
 EXTENSION=
-OCAMLOPT?=ocamlopt
-OCAMLC?=ocamlc
 LFLAGS=
 STATICLINK?=0
 
-HAXE_DIRECTORIES=compiler context generators generators/gencommon macro optimization syntax typing display
-
-INCLUDES = $(HAXE_DIRECTORIES:%=-I _build/src/%)
-
-CFLAGS= -bin-annot
-ALL_CFLAGS= $(CFLAGS) -g -w -3 -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 -I libs/ilib -I libs/objsize -I libs/pcre \
-	$(INCLUDES)
-
-LIBS=unix str libs/extlib/extLib libs/xml-light/xml-light libs/swflib/swflib \
-	libs/extc/extc libs/neko/neko libs/javalib/javalib libs/ziplib/ziplib \
-	libs/ttflib/ttflib libs/ilib/ilib libs/objsize/objsize libs/pcre/pcre
-
-
-ifneq ($(STATICLINK),0)
-LIB_PARAMS= -cclib '-Wl,-Bstatic -lpcre -lz -Wl,-Bdynamic '
+# Configuration
 
-else
-LIB_PARAMS?= -cclib -lpcre -cclib -lz
+HAXE_DIRECTORIES=compiler context generators generators/gencommon macro optimization syntax typing display
+EXTLIB_LIBS=extlib extc neko javalib ziplib swflib xml-light ttflib ilib objsize pcre
+FINDLIB_LIBS=unix str
 
-endif
+# Includes, packages and compiler
 
-NATIVE_LIBS=-cclib libs/extc/extc_stubs.o -cclib libs/extc/process_stubs.o -cclib libs/objsize/c_objsize.o -cclib libs/pcre/pcre_stubs.o -ccopt -L/usr/local/lib $(LIB_PARAMS)
+HAXE_INCLUDES=$(HAXE_DIRECTORIES:%=-I _build/src/%)
+EXTLIB_INCLUDES=$(EXTLIB_LIBS:%=-I libs/%)
+ALL_INCLUDES=$(EXTLIB_INCLUDES) $(HAXE_INCLUDES)
+FINDLIB_PACKAGES=$(FINDLIB_LIBS:%=-package %)
+ALL_CFLAGS=-bin-annot -g -w -3 $(ALL_INCLUDES) $(FINDLIB_PACKAGES)
 
 ifeq ($(BYTECODE),1)
 	TARGET_FLAG = bytecode
-	COMPILER = $(OCAMLC)
+	COMPILER = ocamlfind ocamlc
 	LIB_EXT = cma
 	MODULE_EXT = cmo
 	NATIVE_LIB_FLAG = -custom
 else
 	TARGET_FLAG = native
-	COMPILER = $(OCAMLOPT)
+	COMPILER = ocamlfind ocamlopt
 	LIB_EXT = cmxa
 	MODULE_EXT = cmx
 endif
 
 CC_CMD = $(COMPILER) $(ALL_CFLAGS) -c $<
 
-RELDIR=../../..
-
--include Makefile.modules
+# Meta information
 
 ADD_REVISION?=0
 
@@ -90,20 +77,26 @@ else
 	export HAXE_STD_PATH=$(CURDIR)/std
 endif
 
+# Native libraries
+
+ifneq ($(STATICLINK),0)
+	LIB_PARAMS= -cclib '-Wl,-Bstatic -lpcre -lz -Wl,-Bdynamic '
+else
+	LIB_PARAMS?= -cclib -lpcre -cclib -lz
+endif
+
+NATIVE_LIBS=-cclib libs/extc/extc_stubs.o -cclib libs/extc/process_stubs.o -cclib libs/objsize/c_objsize.o -cclib libs/pcre/pcre_stubs.o -ccopt -L/usr/local/lib $(LIB_PARAMS)
+
+# Modules
+
+-include Makefile.modules
+
+# Rules
+
 all: libs haxe tools
 
 libs:
-	make -C libs/extlib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/extc OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/neko OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/javalib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/ilib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/ziplib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/swflib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/xml-light OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/ttflib OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/objsize OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
-	make -C libs/pcre OCAMLOPT=$(OCAMLOPT) OCAMLC=$(OCAMLC) $(TARGET_FLAG)
+	$(foreach lib,$(EXTLIB_LIBS),make -C libs/$(lib) $(TARGET_FLAG) &&) true
 
 copy_output_files:
 	mkdir -p _build
@@ -125,13 +118,13 @@ build_pass_1:
 
 build_pass_2:
 	printf MODULES= > Makefile.modules
-	ocamldep -sort -slash $(INCLUDES) $(MODULES) | sed -e "s/\.ml//g" >> Makefile.modules
+	ocamlfind ocamldep -sort -slash $(HAXE_INCLUDES) $(FINDLIB_PACKAGES) $(MODULES) | sed -e "s/\.ml//g" >> Makefile.modules
 
 build_pass_3:
-	ocamldep -slash -native $(INCLUDES) $(MODULES:%=%.ml) > Makefile.dependencies
+	ocamlfind ocamldep -slash -native $(HAXE_INCLUDES) $(FINDLIB_PACKAGES) $(MODULES:%=%.ml) > Makefile.dependencies
 
 build_pass_4: $(MODULES:%=%.$(MODULE_EXT))
-	$(COMPILER) -o $(OUTPUT) $(NATIVE_LIBS) $(NATIVE_LIB_FLAG) $(LFLAGS) $(LIBS:=.$(LIB_EXT)) $(MODULES:%=%.$(MODULE_EXT))
+	$(COMPILER) -linkpkg -o $(OUTPUT) $(NATIVE_LIBS) $(NATIVE_LIB_FLAG) $(LFLAGS) $(FINDLIB_PACKAGES) $(EXTLIB_INCLUDES) $(EXTLIB_LIBS:=.$(LIB_EXT)) $(MODULES:%=%.$(MODULE_EXT))
 
 haxelib:
 	(cd $(CURDIR)/extra/haxelib_src && $(CURDIR)/$(OUTPUT) client.hxml && nekotools boot run.n)
@@ -166,7 +159,7 @@ uninstall:
 		rm -rf $(INSTALL_LIB_DIR); \
 	fi
 
-# Modules
+# Dependencies
 
 -include Makefile.dependencies
 
@@ -215,17 +208,7 @@ deploy_doc:
 clean: clean_libs clean_haxe clean_tools clean_package
 
 clean_libs:
-	make -C libs/extlib clean
-	make -C libs/extc clean
-	make -C libs/neko clean
-	make -C libs/ziplib clean
-	make -C libs/javalib clean
-	make -C libs/ilib clean
-	make -C libs/swflib clean
-	make -C libs/xml-light clean
-	make -C libs/ttflib clean
-	make -C libs/objsize clean
-	make -C libs/pcre clean
+	$(foreach lib,$(EXTLIB_LIBS),make -C libs/$(lib) clean &&) true
 
 clean_haxe:
 	rm -f -r _build $(OUTPUT)

+ 0 - 2
Makefile.win

@@ -5,8 +5,6 @@ OUTPUT=haxe.exe
 EXTENSION=.exe
 PACKAGE_SRC_EXTENSION=.zip
 
-OCAMLOPT=ocamlopt.opt
-
 kill:
 	-@taskkill /F /IM haxe.exe
 

+ 1 - 2
appveyor.yml

@@ -5,7 +5,6 @@ environment:
         HAXELIB_ROOT: C:/projects/haxelib
         CYG_ROOT: C:/cygwin
         ADD_REVISION: 1
-        OCAMLOPT: ocamlopt.opt
         MYSQL_PATH: C:\Program Files\MySQL\MySQL Server 5.7
         MYSQL_USER: root
         MYSQL_PASSWORD: Password12!
@@ -35,7 +34,7 @@ install:
     - 7z x "opam32.tar.xz" -so | 7z x -aoa -si -ttar
     - '%CYG_ROOT%/bin/bash -lc "cd \"$OLDPWD\" && bash opam32/install.sh"'
     - '%CYG_ROOT%/bin/bash -lc "opam init mingw \"https://github.com/fdopen/opam-repository-mingw.git\" --comp 4.02.3+mingw32c --switch 4.02.3+mingw32c --auto-setup --yes"'
-    - '%CYG_ROOT%/bin/bash -lc "opam install camlp4 --yes"'
+    - '%CYG_ROOT%/bin/bash -lc "opam install camlp4 ocamlfind --yes"'
     # Install neko
     - choco install neko --prerelease --ignore-dependencies -s 'https://ci.appveyor.com/nuget/neko' -y
     - choco install chocolatey-core.extension php --ignore-dependencies -y

+ 1 - 1
libs

@@ -1 +1 @@
-Subproject commit 02ad6924e313d73263a6289a760126970e4dd4e2
+Subproject commit ea953db15a552e682b8dea83e7c98da343ae1d65