subdir = src/common/port
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
VERSION = 1
override CPPFLAGS := -I$(top_builddir)/src/common/port -DFRONTEND $(CPPFLAGS) $(CFLAGS_SSE42)
LIBS += $(PTHREAD_LIBS)
override CPPFLAGS := $(filter-out -fPIE, $(CPPFLAGS)) -fPIC -fstack-protector-all
override CFLAGS := $(filter-out -fPIE, $(CFLAGS)) -fPIC -fstack-protector-all
override CPPSources=$(shell find -name "*.cpp" ! -name "path.cpp" | sort)
ifneq "$(MAKECMDGOALS)" "clean"
ifneq "$(MAKECMDGOALS)" "distclean"
ifneq "$(shell which g++ |grep hutaf_llt |wc -l)" "1"
-include $(DEPEND)
endif
endif
endif
OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o exec.o fls.o inet_net_ntop.o \
noblock.o path.o pg_bitutils.o pgcheckdir.o pgmkdirp.o pgsleep.o \
pgstrcasecmp.o qsort.o qsort_arg.o sprompt.o thread.o flock.o pgstrcasestr.o\
gs_thread.o gs_env_r.o gs_getopt_r.o \
gs_readdir.o gs_strerror.o gs_syscall_lock.o \
gs_system.o \
cipher.o tool_common.o \
$(top_builddir)/src/gausskernel/storage/file/fio_device.o $(top_builddir)/src/gausskernel/storage/dss/fio_dss.o
ifeq "${host_cpu}" "aarch64"
OBJS += pg_crc32c_choose.o
else ifeq "${host_cpu}" "x86_64"
OBJS += pg_crc32c_sse42.o pg_crc32c_sb8.o pg_crc32c_choose.o
else
OBJS += pg_crc32c_sb8.o
endif
OBJS_SRV = $(OBJS:%.o=%_srv.o)
AARCH64_CRC_OBJ =
ifeq "${host_cpu}" "aarch64"
AARCH64_CRC_OBJ = crc32_arm_parallel.o
OBJS += $(AARCH64_CRC_OBJ)
endif
OBJS_TOOL = fls.o strlcat.o strlcpy.o getpeereid.o chklocale.o dirmod.o erand48.o exec.o inet_net_ntop.o \
noblock.o path.o pg_bitutils.o pgcheckdir.o pgmkdirp.o pgsleep.o pgstrcasecmp.o qsort.o qsort_arg.o sprompt.o thread.o flock.o pgstrcasestr.o \
gs_thread.o gs_env_r.o gs_getopt_r.o gs_readdir.o gs_strerror.o gs_syscall_lock.o gs_system.o cipher.o \
$(top_builddir)/src/gausskernel/storage/file/fio_device.o $(top_builddir)/src/gausskernel/storage/dss/fio_dss.o tool_common.o
all: libpgport.a libpgport_srv.a libpgport_tool.so
libpgport_tool.so: $(OBJS_TOOL)
$(CC) -Wl,-z,relro,-z,now -fPIC -shared $(CFLAGS) $(CPPFLAGS) -o libpgport_tool.so.$(VERSION) $^
rm -f libpgport_tool.so
ln -s libpgport_tool.so.$(VERSION) libpgport_tool.so
install: all installdirs
$(INSTALL_STLIB) libpgport.a '$(DESTDIR)$(libdir)/libpgport.a'
$(INSTALL_STLIB) libpgport_tool.so.$(VERSION) '$(DESTDIR)$(libdir)/libpgport_tool.so.$(VERSION)'
cd '$(DESTDIR)$(libdir)' && \
rm -f libpgport_tool.so && \
ln -s libpgport_tool.so.$(VERSION) libpgport_tool.so
installdirs:
$(MKDIR_P) '$(DESTDIR)$(libdir)'
uninstall:
rm -f '$(DESTDIR)$(libdir)/libpgport.a'
libpgport.a: $(OBJS)
$(AR) $(AROPT) $@ $^
thread.o: CFLAGS+=$(PTHREAD_CFLAGS)
crc32_arm_parallel.o: crc32_arm_parallel.S
$(CC) $(CPPFLAGS) $(CFLAGS) -march=armv8-a+crc+crypto -o $@ -c $^
crc32_arm_parallel_srv.o: crc32_arm_parallel.S
$(CC) $(CPPFLAGS) $(CFLAGS) -march=armv8-a+crc+crypto -o $@ -c $^
CFLAGS_SSE42=-msse4.2
pg_crc32c_sse42.o: CFLAGS+=$(CFLAGS_SSE42)
pg_crc32c_sse42_srv.o: CFLAGS+=$(CFLAGS_SSE42)
libpgport_srv.a: $(OBJS_SRV)
$(AR) $(AROPT) $@ $^
libport.so: $(OBJS)
$(CC) -fPIC -shared $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -o $@ $^
libport_srv.so: $(OBJS_SRV)
$(CC) -fPIC -shared $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -o $@ $^
port: libport.so libport_srv.so
mv *.so $(top_builddir)/../distribute/test/ut/lib
%_srv.o: %.cpp %.o
$(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
$(OBJS_SRV): | submake-errcodes submake-lwlocknames
.PHONY: submake-errcodes submake-lwlocknames
submake-errcodes:
$(MAKE) -C ../../gausskernel submake-errcodes
submake-lwlocknames:
$(MAKE) -C ../../gausskernel submake-lwlocknames
path.o: path.cpp pg_config_paths.h
path_srv.o: path.cpp pg_config_paths.h
pg_config_paths.h: $(top_builddir)/src/Makefile.global
echo "#define PGBINDIR \"$(bindir)\"" >$@
echo "#define PGSHAREDIR \"$(datadir)\"" >>$@
echo "#define SYSCONFDIR \"$(sysconfdir)\"" >>$@
echo "#define INCLUDEDIR \"$(includedir)\"" >>$@
echo "#define PKGINCLUDEDIR \"$(pkgincludedir)\"" >>$@
echo "#define INCLUDEDIRSERVER \"$(includedir_server)\"" >>$@
echo "#define LIBDIR \"$(libdir)\"" >>$@
echo "#define PKGLIBDIR \"$(pkglibdir)\"" >>$@
echo "#define LOCALEDIR \"$(localedir)\"" >>$@
echo "#define DOCDIR \"$(docdir)\"" >>$@
echo "#define HTMLDIR \"$(htmldir)\"" >>$@
echo "#define MANDIR \"$(mandir)\"" >>$@
clean distclean maintainer-clean:
rm -f libpgport.a libpgport_srv.a $(OBJS) $(OBJS_SRV) pg_config_paths.h libpgport_tool.so libpgport_tool.so.$(VERSION) *.depend