Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #======================================================================================================================#
  2. CC_SRC := $(wildcard *.c)
  3. CC_SRC += $(wildcard PikaPython/pikascript-api/*.c)
  4. CC_SRC += $(wildcard PikaPython/pikascript-core/*.c)
  5. CC_SRC += $(wildcard PikaPython/pikascript-lib/PikaStdLib/*.c)
  6. CC_INC := .
  7. CC_INC += PikaPython/pikascript-api
  8. CC_INC += PikaPython/pikascript-core
  9. #======================================================================================================================#
  10. PY_SRC := $(wildcard PikaPython/*.py)
  11. #======================================================================================================================#
  12. OUT := pika.exe
  13. #----------------------------------------------------------------------------------------------------------------------#
  14. CC := gcc
  15. #----------------------------------------------------------------------------------------------------------------------#
  16. CCFLAG += -std=gnu11 -O1 -MMD -g
  17. CCFLAG += -ffunction-sections -fdata-sections
  18. CCFLAG += -flto
  19. LDFLAG += -Wl,--warn-common
  20. LDFLAG += -Wl,--gc-sections
  21. LDFLAG += -flto
  22. #======================================================================================================================#
  23. .DEFAULT_GOAL = all
  24. _Comma := ,
  25. ifneq ($(MAKECMDGOALS),clean)
  26. ifeq (${wildcard obj},)
  27. _NUL := ${shell mkdir obj}
  28. endif
  29. CC_OBJ := $(addprefix obj/,$(addsuffix .co,$(notdir $(CC_SRC))))
  30. $(foreach obj,$(CC_SRC),$(eval obj/$(notdir $(obj)).co : $(obj)))
  31. -include $(CC_OBJ:.co=.d)
  32. CCSuffix := $(CCFLAG) $(addprefix -I,$(CC_INC)) $(addprefix -D,$(CC_DEF))
  33. LDObject := $(CC_OBJ) $(addprefix -l,$(LD_LIB))
  34. LDSuffix := $(LDFLAG) $(addprefix -Wl$(_Comma)-L,$(LD_INC))
  35. endif
  36. #======================================================================================================================#
  37. .PHONY: all
  38. all: $(OUT)
  39. @echo Build Completed.
  40. #----------------------------------------------------------------------------------------------------------------------#
  41. PikaPython/pikascript-api/__asset_pikaModules_py_a.c : $(PY_SRC)
  42. @cd PikaPython && ./rust-msc-latest-win10.exe
  43. #----------------------------------------------------------------------------------------------------------------------#
  44. $(OUT): $(CC_OBJ)
  45. @echo Linking $(OUT) ...
  46. @$(CC) $(LDObject) $(LDSuffix) -o $(OUT)
  47. @echo
  48. #----------------------------------------------------------------------------------------------------------------------#
  49. obj/%.co:
  50. @echo Compile $(@F:.co=) ...
  51. @$(CC) -c $< -o $@ $(CCSuffix)
  52. #----------------------------------------------------------------------------------------------------------------------#
  53. .PHONY: clean
  54. clean:
  55. @-rm -f pika.exe
  56. @-rm -rf ./obj
  57. @echo Clean Completed.