# Copyright (C) 2010-2014 by Hoefer Alfred 

TOP = ..
TOPI = $(TOP)/include

ifdef MAKE_ALL
include $(TOP)/Makefile.tool
endif


include $(TOP)/vernr

LVER = $(MINOR).$(SUBLEVEL)$(EXTRA)
NAME = libaldccp
NAMEw = libaldccpw

ifeq ($(BUILD_OS), Win32) 
# ANAME = $(NAME)$(CROSS_PREFIX).a
 ANAME = $(NAME).a
 DLLNAME = $(NAME)_$(MAJOR)
 DLLNAMEw = $(NAMEw)_$(MAJOR)

else
# ANAME = $(NAME)$(CROSS_PREFIX).a
 ANAME = $(NAME).a
 ifeq ($(SHARED_ALDLIB), y) 
  ifndef USE_uClibc
   SONAME = $(NAME).so
   SONAMEw = $(NAMEw).so
   SHAREDLIB1 = $(loc_obj_shPHAT)/$(SONAME)
  endif
 endif

 SO_LIB = -ldl -lpthread
 SOX_LIB = -lX11 -lXext -lXtst -laldccp
 ifeq ($(HAVE_FT), y) 
  SOX_LIB += -lfreetype -lz -lbz2
 endif
endif

ifdef USE_ASM
ASM_DIR = $(USE_ASM)
else
ASM_DIR = c
endif

include sys/Mobj
include sys/char/Mobj
include sys/gp/Mobj
include sys/tlines/Mobj
ifeq (,$(wildcard sys/$(ASM_DIR)))
 include sys/c/Mobj
else
 include sys/$(ASM_DIR)/Mobj
endif


include io/Mobj
include io/elf/Mobj
include io/file/Mobj
include io/ftp/Mobj
include io/media/Mobj
include io/mime/Mobj
include io/ny/Mobj
include io/rs232/Mobj
include io/tdirlist/Mobj
include io/tty/Mobj
include io/xcopy/Mobj

include app/Mobj
include app/tthread/Mobj

include Xapp/Mobj
include Xapp/font/Mobj

include Ximg/Mobj
include Ximg/bm/Mobj
include Ximg/cicons/Mobj
include Ximg/decor/Mobj
include Ximg/decor/dat/Mobj
include Ximg/image_draw/Mobj
include Ximg/video/Mobj

ifeq (,$(wildcard Ximg/$(ASM_DIR)))
 include Ximg/c/Mobj
else
 include Ximg/$(ASM_DIR)/Mobj
endif

include vl_base/Mobj

include vl_ext/Mobj
include vl_ext/lineedit/Mobj
include vl_ext/lineedit/keyplugin/Mobj
include vl_ext/dlg/Mobj

OBJL = $(addprefix $(loc_obj_PHAT)/,$(nOBJ))
ifndef USE_uClibc
 OBJLX = $(addprefix $(loc_obj_PHAT)/,$(nOBJX))
endif

ifeq ($(BUILD_OS), Win32) 
# *********************** WIN32 ****************************
include Xapp/W32_X11/Mobj
endif # !OS_WIN32


ifndef MAKEOKFLAG
  MAKEFLAGS += --no-print-directory
endif #MAKEOKFLAG

include $(TOP)/Makefile.tool

LBUILT = ./LastBuilt$(CROSS_PREFIX)

ifeq (,$(wildcard $(LBUILT)))
  ${shell echo mUSE_ACL = $(USE_ACL) >$(LBUILT)}
  ${shell echo mUSE_libPM = $(USE_libPM) >>$(LBUILT)}
  ${shell echo mDEBUG_STACK = $(DEBUG_STACK) >>$(LBUILT)}
  ${shell echo mLD_LIB_PNG = $(LD_LIB_PNG) >>$(LBUILT)}
  ${shell echo mLD_LIB_JPEG = $(LD_LIB_JPEG) >>$(LBUILT)}
endif

include $(LBUILT)

include odep

ifdef Tmp_clean
  ifndef TMPCLEAN
    TMPCLEAN = loc_clean
  endif
  ${shell echo mUSE_ACL = $(USE_ACL) >$(LBUILT)}
  ${shell echo mUSE_libPM = $(USE_libPM) >>$(LBUILT)}
  ${shell echo mDEBUG_STACK = $(DEBUG_STACK) >>$(LBUILT)}
  ${shell echo mLD_LIB_PNG = $(LD_LIB_PNG) >>$(LBUILT)}
  ${shell echo mLD_LIB_JPEG = $(LD_LIB_JPEG) >>$(LBUILT)}

  locDat_clean = $(addprefix $(loc_obj_PHAT)/,$(Tmp_locDat_clean))
  ifneq ($(loc_obj_PHAT), ${loc_obj_shPHAT}) 
    locDat_clean += $(addprefix $(loc_obj_shPHAT)/,$(Tmp_locDat_clean))
  endif
endif

${shell echo '/*** Autogenerated by lib/Makefile - Do not edit ***/' >$(TOP)/include/build.h}
${shell echo  >>$(TOP)/include/build.h}

${shell echo '#ifndef	__ALD_BUILD_H__' >>$(TOP)/include/build.h}
${shell echo '#define	__ALD_BUILD_H__ 1' >>$(TOP)/include/build.h}
${shell echo  >>$(TOP)/include/build.h}
${shell echo '#define ALD_MAJOR_VERSION $(MAJOR)' >>$(TOP)/include/build.h}
${shell echo '#define ALD_MINOR_VERSION $(MINOR)' >>$(TOP)/include/build.h}
${shell echo '#define ALD_SUBLEVEL_VERSION $(SUBLEVEL)' >>$(TOP)/include/build.h}
${shell echo '#define ALD_EXTRAVERSION $(EXTRA)' >>$(TOP)/include/build.h}
${shell echo '#define ALD_VERSION "$(VERSION)"' >>$(TOP)/include/build.h}
${shell echo  >>$(TOP)/include/build.h}

ifdef USE_ACL
  ${shell echo "#define USE_ACL 1" >>$(TOP)/include/build.h}
endif

ifdef DEBUG_STACK
  ${shell echo "#define DEBUG_STACK 1" >>$(TOP)/include/build.h}
endif

ifeq ($(BUILD_OS), Win32) 
  ${shell echo "#define OS_WIN32 1" >>$(TOP)/include/build.h}  
  SUBDIRS = sys app Xapp Ximg vl_base vl_ext io
else
 ifdef USE_uClibc
  SUBDIRS = sys io app Ximg
 else
  SUBDIRS = sys io app Xapp Ximg vl_base vl_ext
 endif
endif
${shell echo  >>$(TOP)/include/build.h}
${shell echo '#endif /* __ALD_BUILD_H__ */' >>$(TOP)/include/build.h}

ARFLAGS = cru

ifeq (,$(wildcard ${loc_obj_PHAT}))
  ${shell mkdir ${loc_obj_PHAT}}
endif

ifneq ($(loc_obj_PHAT), ${loc_obj_shPHAT}) 
 ifeq (,$(wildcard ${loc_obj_shPHAT}))
  ${shell mkdir ${loc_obj_shPHAT}}
 endif
endif

ifeq ($(loc_obj_PHAT), ${loc_obj_shPHAT}) 
vpath %.a %.o %.so $(loc_obj_PHAT)
else
vpath %.a %.o %.so $(loc_obj_PHAT) $(loc_obj_shPHAT)
endif

all: $(TMPCLEAN) azflags subdirs $(loc_obj_PHAT)/$(ANAME) $(SHAREDLIB1)

azflags:
	@echo "CC = $(CC)-$(GCC_VER_STR)"
	@echo "CFLAGS = $(CFLAGS)"
	@echo "LDFLAGS = $(LDFLAGS)"

.PHONY: subdirs $(SUBDIRS)

subdirs: $(SUBDIRS)

.NOTPARALLEL:

$(SUBDIRS):
	@$(MAKE) -C $@

.c.o:
	@echo "	CC $<"
	@$(CC) $(CFLAGS) -I$(TOPI) -c $< -o $(loc_obj_PHAT)/$@

$(OBJS): Makefile $(TOP)/vernr

$(loc_obj_PHAT)/$(ANAME): $(OBJL) $(OBJLX) Makefile $(TOP)/vernr
	@${RM} $(loc_obj_PHAT)/$(ANAME)
	@echo "	AR $@"
ifdef USE_uClibc
	@cd $(loc_obj_PHAT); ${AR} ${ARFLAGS} $(ANAME) $(nOBJ)
else
	@cd $(loc_obj_PHAT); ${AR} ${ARFLAGS} $(ANAME) ${nOBJ} $(nOBJX)
endif

$(SHAREDLIB1): $(loc_obj_PHAT)/$(ANAME)
	@echo "	LD $@"
	@cd $(loc_obj_shPHAT); \
	$(CC) -shared -Wl,-soname,$(SONAME).$(MAJOR).$(LVER) $(LDFLAGS) -o $(SONAME).$(MAJOR).$(LVER) $(nOBJ) $(SO_LIB)
	@cd $(loc_obj_shPHAT); ln -sf $(SONAME).$(MAJOR).$(LVER) $(NAME).so
	@echo "	LD $(loc_obj_shPHAT)/$(SONAMEw)"
	@cd $(loc_obj_shPHAT); \
	$(CC) -shared -Wl,-soname,$(SONAMEw).$(MAJOR).$(LVER) $(LDFLAGS) $(PXLIBS) -L./ -o $(SONAMEw).$(MAJOR).$(LVER) $(nOBJX) $(SOX_LIB)
	@cd $(loc_obj_shPHAT); ln -sf $(SONAMEw).$(MAJOR).$(LVER) $(NAMEw).so
 
loc_clean:
	${RM} $(locDat_clean)

clean:
	${RM} *.o $(ANAME)
	${RM} -r $(loc_obj_PHAT)
	${RM} LastBuilt$(CROSS_PREFIX)
ifneq ($(loc_obj_PHAT), ${loc_obj_shPHAT}) 
	${RM} $(loc_obj_shPHAT)/*
endif
