Subversion Repositories Kolibri OS

Rev

Rev 8640 | Blame | Last modification | View Log | RSS feed

  1. AR = ar -rcs
  2. CLINK = ../linuxtools/clink
  3. MKEXP = ../linuxtools/mkexp
  4. KPACK = kpack
  5.  
  6. INCLUDE = include
  7. LIB_DIR = ../lib
  8.  
  9. LIBC.A = $(LIB_DIR)/libc.a
  10. LIBC.OBJ = $(LIB_DIR)/libc.obj
  11.  
  12. CFLAGS = -I$(INCLUDE) -m32 -nostdinc -nostdlib -DGNUC -Os -fno-common -fno-builtin -fno-leading-underscore -fno-pie
  13. DIRS :=  string stdlib stdio sys math ctype exports setjmp shell_api
  14.  
  15. cfiles := $(foreach dir,$(DIRS),$(patsubst %.c, %.o, $(wildcard $(dir)/*.c)))
  16. asmfiles := $(foreach dir,$(DIRS),$(patsubst %.s, %.o, $(wildcard $(dir)/*.s)))
  17. .PHONY: clean all
  18.  
  19. ifdef windir
  20. cfiles := $(subst /,\,$(cfiles))
  21. asmfiles := $(subst /,\,$(asmfiles))
  22. LIB_DIR := $(subst /,\,$(LIB_DIR))
  23. LIBNAME := $(subst /,\,$(LIBNAME))
  24. RM = del /F /Q
  25. MKDIR_P = md
  26. else
  27. RM = rm -rf
  28. MKDIR_P = mkdir -p
  29. endif
  30.  
  31. all: $(cfiles) $(asmfiles) $(LIB_DIR) $(LIBC.A)
  32.         fasm crt/crt0.asm $(LIB_DIR)/crt0.o
  33.  
  34. $(LIBC.A): $(cfiles) $(asmfiles)
  35.         $(AR) $(LIBC.A) $^
  36.  
  37. $(LIB_DIR):
  38.         $(MKDIR_P) $(LIB_DIR)
  39.  
  40. $(asmfiles):
  41.         $(CC) -E -x c -nostdinc -Imath $*.s > $*.sx
  42.         $(AS) --32 $*.sx -o $*.o
  43.         $(RM) $*.sx
  44.  
  45. clean:
  46.         $(RM) $(cfiles) $(asmfiles) exports/exports.c
  47.         $(RM) $(LIBNAME)
  48.  
  49. shared: $(cfiles) $(asmfiles)
  50.         $(CLINK) $^
  51.         $(KPACK) a.out.obj
  52.         mv a.out.obj $(LIBC.OBJ)
  53.        
  54. test:
  55.         make -C ../test -f Makefile.tcc
  56.         kex ../test/test
  57.