# Core: Packages and dependencies. CORE_DEPS_CASES = build-c-8cc build-c-imagejs build-erl pkg search CORE_DEPS_TARGETS = $(addprefix core-deps-,$(CORE_DEPS_CASES)) CORE_DEPS_CLEAN_TARGETS = $(addprefix clean-,$(CORE_DEPS_TARGETS)) .PHONY: core-deps $(CORE_DEPS_TARGETS) clean-core-deps $(CORE_DEPS_CLEAN_TARGETS) clean-core-deps: $(CORE_DEPS_CLEAN_TARGETS) $(CORE_DEPS_CLEAN_TARGETS): $t rm -rf $(APP_TO_CLEAN)/ core-deps: $(CORE_DEPS_TARGETS) ifneq ($(PLATFORM),msys2) core-deps-build-c-8cc: build clean-core-deps-build-c-8cc $i "Bootstrap a new OTP library named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v $i "Add 8cc to the list of build dependencies" $t sed -i.bak '2i\ BUILD_DEPS = 8cc\ dep_8cc = git https://github.com/rui314/8cc master\ ' $(APP)/Makefile $i "Build the application" $t $(MAKE) -C $(APP) $v $i "Check that all dependencies were fetched" $t test -d $(APP)/deps/8cc $i "Check that 8cc can be started" $t $(APP)/deps/8cc/8cc -h $v $i "Check that the application was compiled correctly" $t $(ERL) -pa $(APP)/ebin/ $(APP)/deps/*/ebin/ -eval " \ [ok = application:load(App) || App <- [$(APP)]], \ {ok, Deps} = application:get_key($(APP), applications), \ false = lists:member('8cc', Deps), \ halt()" endif core-deps-build-c-imagejs: build clean-core-deps-build-c-imagejs $i "Bootstrap a new OTP library named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v $i "Add imagejs to the list of build dependencies" $t sed -i.bak '2i\ BUILD_DEPS = imagejs\ dep_imagejs = git https://github.com/jklmnn/imagejs master\ ' $(APP)/Makefile $i "Build the application" $t $(MAKE) -C $(APP) $v $i "Check that all dependencies were fetched" $t test -d $(APP)/deps/imagejs $i "Check that imagejs works" $t $(APP)/deps/imagejs/imagejs bmp $(APP)/deps/imagejs/Makefile $t test -f $(APP)/deps/imagejs/Makefile.bmp $i "Check that the application was compiled correctly" $t $(ERL) -pa $(APP)/ebin/ $(APP)/deps/*/ebin/ -eval " \ [ok = application:load(App) || App <- [$(APP)]], \ {ok, Deps} = application:get_key($(APP), applications), \ false = lists:member(imagejs, Deps), \ halt()" core-deps-build-erl: build clean-core-deps-build-erl $i "Bootstrap a new OTP library named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v $i "Add rebar to the list of build dependencies" $t sed -i.bak '2i\ BUILD_DEPS = rebar\ dep_rebar = git https://github.com/rebar/rebar master\ ' $(APP)/Makefile $i "Build the application" $t $(MAKE) -C $(APP) $v $i "Check that all dependencies were fetched" $t test -d $(APP)/deps/rebar $i "Check that the application was compiled correctly" $t $(ERL) -pa $(APP)/ebin/ $(APP)/deps/*/ebin/ -eval " \ [ok = application:load(App) || App <- [$(APP), rebar]], \ {ok, Deps} = application:get_key($(APP), applications), \ false = lists:member(rebar, Deps), \ halt()" core-deps-pkg: build clean-core-deps-pkg $i "Bootstrap a new OTP library named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v $i "Add Cowboy to the list of dependencies" $t sed -i.bak '2i\ DEPS = cowboy\ ' $(APP)/Makefile ifdef LEGACY $i "Add Cowboy to the applications key in the .app.src file" $t sed -i.bak '8i\ cowboy,' $(APP)/src/$(APP).app.src endif $i "Build the application" $t $(MAKE) -C $(APP) $v $i "Check that all dependencies were fetched" $t test -d $(APP)/deps/cowboy $t test -d $(APP)/deps/cowlib $t test -d $(APP)/deps/ranch $i "Check that the application was compiled correctly" $t $(ERL) -pa $(APP)/ebin/ $(APP)/deps/*/ebin/ -eval " \ [ok = application:load(App) || App <- [$(APP), cowboy, cowlib, ranch]], \ {ok, Deps} = application:get_key($(APP), applications), \ true = lists:member(cowboy, Deps), \ halt()" core-deps-search: build clean-core-deps-search $i "Bootstrap a new OTP library named $(APP)" $t mkdir $(APP)/ $t cp ../erlang.mk $(APP)/ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v $i "Run 'make search' and check that it prints packages" $t test -n "`$(MAKE) -C $(APP) search`" $i "Run 'make search q=cowboy' and check that it prints packages" $t test -n "`$(MAKE) -C $(APP) search q=cowboy`"