AcessNative - Fix compile errors from API changes (and from compiler upgrade)
[tpg/acess2.git] / AcessNative / acesskernel_src / Makefile
index 71782a9..d2a22c6 100644 (file)
@@ -1,33 +1,60 @@
 # AcessNative Server\r
 # Makefile\r
 \r
+-include ../../Makefile.Version.cfg\r
+-include Makefile.BuildNum\r
+ifeq ($(BUILD_NUM),)\r
+BUILD_NUM = 1\r
+endif\r
+\r
 ifeq ($(PLATFORM),)\r
        PLATFORM := lin\r
 endif\r
 \r
-KERNEL_SRC = ../../Kernel/\r
+KERNEL_SRC = ../../KernelLand/Kernel/\r
+LDACESS_SRC = ../../Usermode/Libraries/ld-acess.so_src/\r
 \r
-KERNEL_OBJ := logging.o adt.o lib.o drvutil.o\r
-KERNEL_OBJ += vfs/main.o vfs/open.o vfs/acls.o vfs/io.o vfs/dir.o vfs/nodecache.o vfs/mount.o vfs/memfile.o\r
+# - Kernel objects (from KernelLand/Kernel)\r
+KERNEL_OBJ := logging.o adt.o lib.o debug.o messages.o drvutil_disk.o drvutil_video.o memfs_helpers.o\r
+KERNEL_OBJ += mutex.o semaphore.o rwlock.o workqueue.o events.o\r
+#KERNEL_OBJ += libc.o\r
+KERNEL_OBJ += vfs/main.o vfs/open.o vfs/acls.o vfs/io.o vfs/dir.o\r
+KERNEL_OBJ += vfs/nodecache.o vfs/mount.o vfs/memfile.o vfs/select.o\r
 KERNEL_OBJ += vfs/fs/root.o vfs/fs/devfs.o\r
-KERNEL_OBJ += drv/vterm.o drv/fifo.o drv/proc.o\r
-\r
-OBJ := main.o helpers.o threads.o syscalls.o\r
+KERNEL_OBJ += drv/fifo.o drv/proc.o drv/dgram_pipe.o\r
+KERNEL_OBJ += drv/vterm.o drv/vterm_font.o drv/vterm_output.o drv/vterm_input.o drv/vterm_termbuf.o\r
+KERNEL_OBJ += drv/vterm_vt100.o drv/vterm_2d.o\r
+KERNEL_OBJ += drv/pty.o\r
+# - Native (unsullied) objects\r
+N_OBJ := main.o net_wrap.o\r
+# - Local objects (use the kernel includes)\r
+OBJ := helpers.o threads.o threads_glue.o server.o syscalls.o time.o\r
 OBJ += video.o keyboard.o mouse.o nativefs.o vfs_handle.o ui_sdl.o\r
-OBJ += $(addprefix $(KERNEL_SRC),$(KERNEL_OBJ))\r
+OBJ += net.o syscall_getpath.o\r
+\r
+BUILDINFO_OBJ := obj-$(PLATFORM)/buildinfo.o\r
+BUILDINFO_SRC := $(BUILDINFO_OBJ:%.o=%.c)\r
+\r
+OBJ := $(addprefix obj-$(PLATFORM)/,$(OBJ))\r
+N_OBJ := $(addprefix obj-$(PLATFORM)/,$(N_OBJ))\r
+K_OBJ := $(addprefix $(KERNEL_SRC)obj-native-$(PLATFORM)/,$(KERNEL_OBJ))\r
 \r
-OBJ := $(addsuffix .$(PLATFORM),$(OBJ))\r
+DEPFILES  = $(filter %.o,$(OBJ) $(N_OBJ) $(K_OBJ))\r
+DEPFILES := $(DEPFILES:%=%.dep)\r
 \r
-CPPFLAGS += -I include/ -I $(KERNEL_SRC)include/\r
-CFLAGS += -Wall -g\r
-LDFLAGS += -lSDL -lSDLmain -g\r
+KCPPFLAGS = -I include/ -I $(KERNEL_SRC)include/ -I$(LDACESS_SRC)include_exp/ -D KERNEL_VERSION=${ACESS_VERSION}\r
+CFLAGS += -Wall -g -std=gnu99\r
+CPPFLAGS += $(shell sdl-config --cflags) -I /usr/include/\r
+LDFLAGS += $(shell sdl-config --libs) -g -Wl,--defsym,__buildnum=$(BUILD_NUM)\r
 \r
 ifeq ($(PLATFORM),win)\r
        BIN := ../AcessKernel.exe\r
+       LDFLAGS += -lws2_32 -lpthread\r
 endif\r
 ifeq ($(PLATFORM),lin)\r
        BIN := ../AcessKernel\r
-       CFLAGS +=\r
+       CFLAGS += \r
+       LDFLAGS += -lpthread\r
 endif\r
 \r
 .PHONY: all clean\r
@@ -35,10 +62,41 @@ endif
 all: $(BIN)\r
 \r
 clean:\r
-       $(RM) $(BIN) $(OBJ)\r
+       $(RM) $(BIN) $(OBJ) $(N_OBJ) $(K_OBJ) $(DEPFILES)\r
+\r
+$(BIN): $(OBJ) $(N_OBJ) $(K_OBJ) $(BUILDINFO_OBJ)\r
+       @echo [LINK] -o $@\r
+       @$(CC) -o $@ $(N_OBJ) $(LDFLAGS) $(K_OBJ) $(OBJ) $(BUILDINFO_OBJ)\r
+       @echo BUILD_NUM = $$(( $(BUILD_NUM) + 1 )) > Makefile.BuildNum\r
+\r
+$(OBJ): obj-$(PLATFORM)/%.o: %.c\r
+       @mkdir -p $(dir $@)\r
+       @echo [CC] -o $@\r
+       @$(CC) -c $< -o $@ $(CFLAGS) $(KCPPFLAGS) $(CPPFLAGS) -MMD -MP -MF [email protected]\r
+\r
+$(K_OBJ): $(KERNEL_SRC)obj-native-$(PLATFORM)/%.o: $(KERNEL_SRC)%.c\r
+       @mkdir -p $(dir $@)\r
+       @echo [CC] -o $@\r
+       @$(CC) -ffreestanding -c $< -o $@ $(CFLAGS) $(KCPPFLAGS) $(CPPFLAGS) -MMD -MP -MF [email protected]\r
+\r
+\r
+$(N_OBJ): obj-$(PLATFORM)/%.o: %.c\r
+       @mkdir -p $(dir $@)\r
+       @echo [CC] -o $@\r
+       @$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) -MMD -MP -MF [email protected]\r
 \r
-$(BIN): $(OBJ)\r
-       $(CC) $(LDFLAGS) -o $@ $(OBJ)\r
+$(BUILDINFO_SRC): $(filter-out $(BUILDINFO_OBJ), $(OBJ)) Makefile\r
+       @echo "" > $@\r
+       $(eval _GITHASH=$(shell (git log -n 1 | head -n 1 | awk '{print $$2}') 2>/dev/null || echo UNK))\r
+       $(eval _GITCHANGED=$(shell (git status --porcelain | grep -c '^ M ') 2>/dev/null || echo UNK))\r
+       $(eval _HOSTNAME=$(shell hostname --fqdn 2>/dev/null || hostname || echo UNK))\r
+       @echo "const char gsKernelVersion[] = \"$(ACESS_VERSION)\";" >> $@\r
+       @echo "const char gsGitHash[] = \"$(_GITHASH)\";" >> $@\r
+       @echo "const char gsBuildInfo[] = \"AcessNative $(ACESS_VERSION) $(ARCH)-$(PLATFORM)\\\\r\\\\n\"" >> $@\r
+       @echo "                           \"Build $(_HOSTNAME):$(BUILD_NUM) Git $(_GITHASH) - $(_GITCHANGED) modified\";" >> $@\r
+       @echo "const int giBuildNumber = $(BUILD_NUM);" >> $@\r
+$(BUILDINFO_OBJ): $(BUILDINFO_SRC)\r
+       @echo [CC] -o $@\r
+       @$(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS)\r
 \r
-%.o.$(PLATFORM): %.c\r
-       $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)\r
+-include $(DEPFILES)\r

UCC git Repository :: git.ucc.asn.au