Commit fd9845da authored by Greg Williams's avatar Greg Williams
Browse files

More updates to Makefile. Updated logger to log all ByteArrays with new method...

More updates to Makefile. Updated logger to log all ByteArrays with new method which outputs in backslash delimited hex values
parent 862bce99
Loading
Loading
Loading
Loading
+124 −28
Original line number Diff line number Diff line
OUT_DIR = obj
BIN_DIR = bin
OBJS = $(OUT_DIR)/protobuf-c.o $(OUT_DIR)/kinetic_proto.o $(OUT_DIR)/kinetic_client.o
INCS = -I"./include" -I"./src/lib" -I"./vendor/protobuf=c" -I"./vendor"
BIN = $(BIN_DIR)/kinetic_client
CC = gcc
CFLAGS = $(INCS) -g -Wall
LFLAGS = -Wall
MKDIRS = mkdir -p
RM_ALL = rm -rf
# OUT_DIR = obj
# BIN_DIR = bin
# OBJS = $(OUT_DIR)/protobuf-c.o $(OUT_DIR)/kinetic_proto.o $(OUT_DIR)/kinetic_client.o
# INCS = -I"./include" -I"./src/lib" -I"./vendor/protobuf=c" -I"./vendor"
# BIN = $(BIN_DIR)/kinetic_client
# CC = gcc
# CFLAGS = $(INCS) -g -Wall
# LFLAGS = -Wall
# MKDIRS = mkdir -p
# RM_ALL = rm -rf

.PHONY: directories run
# .PHONY: directories run

build: directories $(BIN)
# build: directories $(BIN)

all: clean build run
# all: clean build run

directories: $(OUT_DIR) $(BIN_DIR)
# directories: $(OUT_DIR) $(BIN_DIR)

$(OUT_DIR):
	$(MKDIRS) $(OUT_DIR)
# $(OUT_DIR):
# 	$(MKDIRS) $(OUT_DIR)

$(BIN_DIR):
	$(MKDIRS) $(BIN_DIR)
# $(BIN_DIR):
# 	$(MKDIRS) $(BIN_DIR)

clean:
	$(RM_ALL) $(OBJS) $(OUT_DIR) $(BIN)
# clean:
# 	$(RM_ALL) $(OBJS) $(OUT_DIR) $(BIN)

# $(OUT_DIR)/protobuf-c.o: directories ./vendor/protobuf-c/protobuf-c.c
# 	$(CC) $(CFLAGS) -c ./src/vendor/protobuf-c/protobuf-c.c -o $@

$(OUT_DIR)/protobuf-c.o: directories ./vendor/protobuf-c/protobuf-c.c
	$(CC) $(CFLAGS) -c ./src/vendor/protobuf-c/protobuf-c.c -o $@
# $(OUT_DIR)/kinetic_proto.o: directories /src/lib/kinetic_proto.c ./vendor/protobuf-c/protobuf-c.c
# 	$(CC) $(CFLAGS) -c ./src/lib/kinetic_proto.c -o $@

$(OUT_DIR)/kinetic_proto.o: directories /src/lib/kinetic_proto.c ./vendor/protobuf-c/protobuf-c.c
	$(CC) $(CFLAGS) -c ./src/lib/kinetic_proto.c -o $@
# $(OUT_DIR)/kinetic_client.o: directories ./src/lib/kinetic_client.c /src/lib/kinetic_proto.c ./vendor/protobuf-c/protobuf-c.c
# 	$(CC) $(CFLAGS) -c ./src/lib/kinetic_client.c -o $@

$(OUT_DIR)/kinetic_client.o: directories ./src/lib/kinetic_client.c /src/lib/kinetic_proto.c ./vendor/protobuf-c/protobuf-c.c
	$(CC) $(CFLAGS) -c ./src/lib/kinetic_client.c -o $@
# $(BIN): $(OBJS)
# 	$(CC) $(LFLAGS) $(OBJS) -o $(BIN)


LIB_NAME = kinetic_client
CC      = gcc
OUT_DIR = ./build/lib/obj
BIN_DIR = ./build/lib/bin
PUB_INC = ./include
PUB_API = $(PUB_INC)/$(LIB_NAME).h
LIB_INC = ./src/lib
EX_INC  = ./src/utility
PBC_INC = ./vendor/protobuf-c
SOCKET99 = ./vendor/socket99
VND_INC = ./vendor
INCS    = -I$(PUB_INC) -I$(LIB_INC) -I$(EX_INC) -I$(PBC_INC) -I$(VND_INC) -I$(SOCKET99)
CFLAGS  = $(INCS) -g -Wall
LIBS    = -lm -l crypto
BIN     = $(BIN_DIR)/kinetic_client

$(BIN): $(OBJS)
	$(CC) $(LFLAGS) $(OBJS) -o $(BIN)
_LIB_DEPS = kinetic_connection.h kinetic_hmac.h kinetic_logger.h kinetic_message.h kinetic_nbo.h kinetic_operation.h kinetic_pdu.h kinetic_proto.h kinetic_socket.h kinetic_types.h
DEPS = $(PBC_INC)/protobuf-c.h $(SOCKET99)/socket99.h $(patsubst %,$(LIB_INC)/%,$(_LIB_DEPS))

LIB_OBJS = $(LIB_NAME).o kinetic_connection.o kinetic_hmac.o kinetic_logger.o kinetic_message.o kinetic_nbo.o kinetic_operation.o kinetic_pdu.o kinetic_proto.o kinetic_socket.o protobuf-c.o socket99.o
OBJ = $(patsubst %,$(OUT_DIR)/%,$(LIB_OBJS))

$(OUT_DIR)/%.o: %.c $(DEPS)
	$(CC) -c -o $@ $< $(CFLAGS)

$(OUT_DIR)/$(LIB_NAME).o: $(LIB_INC)/$(LIB_NAME).c
	$(CC) -c -o $@ $(INCS) $(CFLAGS)

$(LIB_NAME): $(OBJ)
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean

clean:
	rm -f $(OUT_DIR)/*.o *~ core

run:
	@echo=off; echo "\nRunning Executable $(BIN):"
	./$(BIN)


PROJECT = kinetic-c-client
OPTIMIZE = -O3
WARN = -Wall -Wextra -pedantic
#CDEFS += 
CFLAGS += -std=c99 -g ${WARN} ${CDEFS} ${OPTIMIZE}
#LDFLAGS +=

# A tautological compare is expected in the test suite.
# CFLAGS += -Wno-tautological-compare

all: lib${PROJECT}.a
# all: test_${PROJECT}

LIB_OBJS = $(LIB_NAME).o kinetic_connection.o kinetic_hmac.o kinetic_logger.o kinetic_message.o kinetic_nbo.o kinetic_operation.o kinetic_pdu.o kinetic_proto.o kinetic_socket.o protobuf-c.o socket99.o

# TEST_OBJS=

${PROJECT}: main.c ${OBJS}
	${CC} -o $@ main.c ${OBJS} ${LDFLAGS}

lib${PROJECT}.a: ${OBJS}
	ar -rcs lib${PROJECT}.a ${OBJS}

# test_${PROJECT}: test_${PROJECT}.c ${OBJS} ${TEST_OBJS}
# 	${CC} -o $@ test_${PROJECT}.c ${OBJS} ${TEST_OBJS} ${CFLAGS} ${LDFLAGS}

# test: ./test_${PROJECT}
# 	./test_${PROJECT}

clean:
	rm -f ${PROJECT} test_${PROJECT} *.o *.a *.core


# Installation
PREFIX ?=/usr/local
INSTALL ?= install
RM ?=rm

install: lib${PROJECT}.a
	${INSTALL} -d ${PREFIX}/lib/
	${INSTALL} -c lib${PROJECT}.a ${PREFIX}/lib/lib${PROJECT}.a
	${INSTALL} -d ${PREFIX}/include/
	${INSTALL} -c ${PROJECT}.h ${PREFIX}/include/
	${INSTALL} -c ${PROJECT}_types.h ${PREFIX}/include/

uninstall:
	${RM} -f ${PREFIX}/lib/lib${PROJECT}.a
	${RM} -f ${PREFIX}/include/${PROJECT}.h
	${RM} -f ${PREFIX}/include/${PROJECT}_types.h


# Other dependencies
theft.o: Makefile
theft.o: theft.h theft_types.h theft_types_internal.h


build.sh

0 → 100755
+55 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash

echo
echo ================================================================================
echo Cleaning out old build artifacts...
echo ================================================================================
find src/**/*.o vendor/socket99/*.o vendor/protobuf-c/protobuf-c/*.o | xargs rm $1
rm libkinetic-c-client.a
rm src/utility/kinetic-c-util
echo DONE!

echo
echo ================================================================================
echo Building the kinetic-c lib sources and bundled dependencies
echo ================================================================================
cd src/lib/
gcc -Wall -c *.c -I. -I../../include/ -I../../vendor/
cd ../../
cd vendor/socket99/
gcc -Wall -std=c99 -c *.c
cd ../protobuf-c/protobuf-c
gcc -Wall -std=c99 -c *.c
cd ../../socket99/
gcc -Wall -std=c99 -c *.c
cd ../../
cd src/lib/
gcc -Wall -std=c99 -c *.c -I. -I../../include/ -I../../vendor/
cd ../..
echo DONE!

echo
echo ================================================================================
echo Assembling kinetic-c-client lib
echo ================================================================================
ar -cvq libkinetic-c-client.a src/lib/*.o vendor/protobuf-c/protobuf-c/*.o vendor/socket99/socket99.o
ar -t libkinetic-c-client.a
echo DONE!

echo
echo ================================================================================
echo Building kinetic-c-client utility
echo ================================================================================
cd src/utility/
gcc -o kinetic-c-util -std=c99 *.c ./examples/*.c  ../../libkinetic-c-client.a -I. -I../../include/ -I../lib -I ./examples/ -l crypto -l ssl
echo DONE!

echo
echo ================================================================================
echo Running kinetic-c-client examples
echo ================================================================================
./kinetic-c-util noop
cd ../../
echo DONE!
echo
echo Kinetic-C library and utility build complete!
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@
  :support:
    - test/support/**
  :source:
    - src/**
    - src/lib/*.c
    - vendor/protobuf-c/protobuf-c/protobuf-c.c
    - vendor/socket99/socket99.c
  :include:
+27 −27
Original line number Diff line number Diff line
@@ -101,7 +101,6 @@ void KineticLogger_LogHeader(const KineticPDUHeader* header)
}

#define LOG_PROTO_INIT() \
    unsigned int _i; \
    char _indent[32] = "  "; \
    const char* _str_true = "true"; \
    const char* _str_false = "false";
@@ -116,7 +115,7 @@ void KineticLogger_LogHeader(const KineticPDUHeader* header)

int KineticLogger_u8toa(char* p_buf, uint8_t val)
{
    LOGF("Converting byte=%02u", val);
    // LOGF("Converting byte=%02u", val);
    const int width = 2;
    int i = width;
    const uint8_t base = 16;
@@ -128,7 +127,7 @@ int KineticLogger_u8toa(char* p_buf, uint8_t val)
        val /= base;
        if(c >= 10) c += 'A'-'0'-10;
        c += '0';
        LOGF("CH: %c @ %d to 0x%llX", c, i, (long long)(p_buf));
        // LOGF("CH: %c @ %d to 0x%llX", c, i, (long long)(p_buf));
        *p_buf-- = c;
    } while (--i);
    return width;
@@ -137,18 +136,18 @@ int KineticLogger_u8toa(char* p_buf, uint8_t val)
int KineticLogger_ByteArraySliceToCString(char* p_buf,
    const ByteArray bytes, const int start, const int count)
{
    LOGF("Converting ByteArray (count=%u)", count);
    // LOGF("Converting ByteArray (count=%u)", count);
    int len = 0;
    for(int i = 0; i < count; i++)
    {
        LOGF("BYTE to 0x%llX (prepending '\\')", (long long)(&p_buf[len]));
        // LOGF("BYTE to 0x%llX (prepending '\\')", (long long)(&p_buf[len]));
        p_buf[len++] = '\\';
        LOGF("BYTE digits to 0x%llX", (long long)(&p_buf[len]));
        // LOGF("BYTE digits to 0x%llX", (long long)(&p_buf[len]));
        len += KineticLogger_u8toa(&p_buf[len], bytes.data[start + i]);
        LOGF("BYTE next @ 0x%llX", (long long)(&p_buf[len]));
        // LOGF("BYTE next @ 0x%llX", (long long)(&p_buf[len]));
    }
    p_buf[len] = '\0';
    LOGF("BYTE string terminated @ 0x%llX", (long long)(&p_buf[len]));
    // LOGF("BYTE string terminated @ 0x%llX", (long long)(&p_buf[len]));
    return len;
}

@@ -168,8 +167,6 @@ void KineticLogger_LogProtobuf(const KineticProto* proto)
    }

    LOG("Kinetic Protobuf:");

    // KineticProto_Command* command;
    if (proto->command)
    {
        LOG_PROTO_LEVEL_START("command");
@@ -246,15 +243,24 @@ void KineticLogger_LogProtobuf(const KineticProto* proto)
                        }
                        if (proto->command->body->keyValue->has_newVersion)
                        {
                            LOGF("%snewVersion: '%s'", _indent, proto->command->body->keyValue->newVersion.data);
                            BYTES_TO_CSTRING(tmpBuf,
                                proto->command->body->keyValue->newVersion,
                                0, proto->command->body->keyValue->newVersion.len);
                            LOGF("%snewVersion: '%s'", _indent, tmpBuf);
                        }
                        if (proto->command->body->keyValue->has_dbVersion)
                        {
                            LOGF("%sdbVersion: '%s'", _indent, proto->command->body->keyValue->dbVersion.data);
                            BYTES_TO_CSTRING(tmpBuf,
                                proto->command->body->keyValue->dbVersion,
                                0, proto->command->body->keyValue->dbVersion.len);
                            LOGF("%sdbVersion: '%s'", _indent, tmpBuf);
                        }
                        if (proto->command->body->keyValue->has_tag)
                        {
                            LOGF("%stag: '%s'", _indent, proto->command->body->keyValue->tag.data);
                            BYTES_TO_CSTRING(tmpBuf,
                                proto->command->body->keyValue->tag,
                                0, proto->command->body->keyValue->tag.len);
                            LOGF("%stag: '%s'", _indent, tmpBuf);
                        }
                        if (proto->command->body->keyValue->has_force)
                        {
@@ -306,13 +312,10 @@ void KineticLogger_LogProtobuf(const KineticProto* proto)
                }
                if (proto->command->status->has_detailedMessage)
                {
                    char tmp[8], buf[64] = "detailedMessage: ";
                    for (_i = 0; _i < proto->command->status->detailedMessage.len; _i++)
                    {
                        sprintf(tmp, "%02hhX", proto->command->status->detailedMessage.data[_i]);
                        strcat(buf, tmp);
                    }
                    LOGF("%s%s", _indent, buf);
                    BYTES_TO_CSTRING(tmpBuf,
                        proto->command->status->detailedMessage,
                        0, proto->command->status->detailedMessage.len);
                    LOGF("%detailedMessage: '%s'", _indent, tmpBuf);
                }
            }
            LOG_PROTO_LEVEL_END();
@@ -322,13 +325,10 @@ void KineticLogger_LogProtobuf(const KineticProto* proto)

    if (proto->has_hmac)
    {
        char tmp[8], buf[64] = "hmac: ";
        for (_i = 0; _i < proto->hmac.len; _i++)
        {
            sprintf(tmp, "%02hhX", proto->hmac.data[_i]);
            strcat(buf, tmp);
        }
        LOGF("%s%s", _indent, buf);
        BYTES_TO_CSTRING(tmpBuf,
            proto->hmac,
            0, proto->hmac->key.len);
        LOGF("%shmac: '%s'", _indent, tmpBuf);
    }
}