INSTALLDIR = usr/lib
+BIN_INSTALLDIR = /usr/local/bin
+HEADER_INSTALLDIR = /usr/local/include/
## Since include directives do not impose additional dependencies, we can make
## Makefile more clear, simply putting all includes we ever need in single
INCLUDE_CPPFLAGS = \
-I./include \
-I./probe_thread \
+ -I./probe_event \
-I/usr/include/appfw \
-I/usr/include/dbus-1.0 \
-I/usr/include/e_dbus-1 \
-I/usr/include/ecore-1 \
+ -I/usr/include/ecore-x-1 \
+ -I/usr/include/ecore-input-1 \
+ -I/usr/include/ecore-evas-1 \
+ -I/usr/include/ecore-file-1 \
+ -I/usr/include/ecore-imf-1 \
+ -I/usr/include/ecore-con-1 \
-I/usr/include/edje-1 \
-I/usr/include/eet-1 \
-I/usr/include/efreet-1 \
-I/usr/include/eina-1 \
-I/usr/include/eina-1/eina \
-I/usr/include/elementary-1 \
+ -I/usr/include/eldbus-1 \
-I/usr/include/ethumb-1 \
+ -I/usr/include/ethumb-client-1 \
-I/usr/include/evas-1 \
-I/usr/include/pixman-1 \
-I/usr/include/system \
-I/usr/include/capi-system-runtime-info \
-I/usr/include/vconf \
-I/usr/lib/dbus-1.0/include \
+ -I/usr/include/efl-1 \
+ -I/usr/include/eo-1 \
-WARN_CFLAGS = \
+WARN_CFLAGS = -g \
-Wall \
-funwind-tables \
-fomit-frame-pointer \
--no-undefined \
-Werror \
-Wextra \
- -O2 \
+ -O0 \
-Wwrite-strings \
-Wlogical-op \
-Wpacked \
## holds search paths and common libraries.
LDFLAGS = -shared \
- -lX11 \
- -lXext \
- -lcapi-appfw-application \
- -lcapi-system-runtime-info \
- -ldl \
- -lecore \
- -lecore_input \
- -lecore_x \
- -leina \
- -levas \
-lpthread \
-lrt \
+ -ldl \
-Wl,-z,noexecstack
ASMFLAG = -O0 -g
./probe_memory/libdamemalloc.c \
./probe_memory/libdamemmanage.c \
./probe_socket/libdasocket.c \
+ ./probe_event/gesture.c \
./probe_event/da_event.c \
./probe_event/keytouch.c \
./probe_event/orientation.c \
./probe_third/libdaemon.c \
./probe_thread/libdathread.c \
./probe_thread/libdasync.c \
- ./probe_userfunc/libdauserfunc.c \
./probe_file/da_io_posix.c \
./probe_file/da_io_stdc.c \
./probe_graphics/da_gl_api_init.c \
./probe_graphics/da_gles20_tizen.cpp \
./probe_graphics/da_gles20_native.cpp \
- ./probe_graphics/da_gles20_direct.cpp
+ ./probe_graphics/da_gles30_native.cpp
ASM_SRC = ./helper/da_call_original.S
+PARSE_ELF_LIB_SRC = ./elf_parsing/lib_parse_elf.c
+PARSE_ELF_BIN_SRC = ./elf_parsing/parse_elf.c
+
## Totally brain-dead.
## FIXME: Rewrite this normally with eval.
ASM_OBJ = $(patsubst %.S,%.o, $(ASM_SRC))
CAPI_OBJS = $(patsubst %.c,%.o, $(CAPI_SRCS)) $(ASM_OBJ)
TIZEN_OBJS = $(patsubst %.cpp,%.o, $(patsubst %.c,%.o, $(TIZEN_SRCS))) $(ASM_OBJ)
DUMMY_OBJS = $(patsubst %.c,%.o, $(DUMMY_SRCS))
-
+PARSE_ELF_LIB_OBJ = $(patsubst %.c,%.o, $(PARSE_ELF_LIB_SRC))
+PARSE_ELF_BIN_OBJ = $(patsubst %.c,%.o, $(PARSE_ELF_BIN_SRC))
TIZEN_TARGET = da_probe_tizen.so
DUMMY_TARGET = libdaprobe.so
+PARSE_ELF_LIB_TARGET = libparserelf.so
+PARSE_ELF_BIN_TARGET = parse_elf
CPPFLAGS = $(INCLUDE_CPPFLAGS) -D_GNU_SOURCE -DSELF_LIB_NAME="\"/$(INSTALLDIR)/$(TIZEN_TARGET)\""
CFLAGS = $(WARN_CFLAGS) -fPIC
TIZEN_CPPFLAGS = -DTIZENAPP $(SWAP_PROBE_DEFS)
TIZEN_LDFLAGS = -lstdc++
-all: capi tizen dummy
-tizen: headers $(TIZEN_TARGET)
-dummy: headers $(DUMMY_TARGET)
+
+all: elflib capi tizen dummy elfparser
+tizen: headers $(TIZEN_TARGET)
+dummy: headers $(DUMMY_TARGET)
+elflib: $(PARSE_ELF_LIB_OBJ) $(PARSE_ELF_LIB_TARGET)
+elfparser: elflib $(PARSE_ELF_BIN_OBJ) $(PARSE_ELF_BIN_TARGET)
$(ASM_OBJ): $(ASM_SRC)
$(CC) $(ASMFLAG) -c $^ -o $@
-GENERATED_CONFIG = include/api_config.h
-GENERATED_HEADERS = include/api_id_mapping.h include/api_id_list.h include/id_list
-headers: $(GENERATED_CONFIG) $(GENERATED_HEADERS)
+$(PARSE_ELF_LIB_OBJ): $(PARSE_ELF_LIB_SRC)
+ $(CC) -fPIC -c $^ -o $@
+
+$(PARSE_ELF_BIN_OBJ): $(PARSE_ELF_BIN_SRC)
+ $(CC) -c $^ -o $@
+
+API_NAME_LIST = scripts/api_names_all.txt
+GENERATED_HEADERS = include/api_id_mapping.h include/x_define_api_id_list.h
+SOURCE_HEADERS = include/api_ld_mapping.h
+
+headers: $(API_NAME_LIST) $(GENERATED_HEADERS)
rmheaders:
- rm -f $(GENERATED_CONFIG) $(GENERATED_HEADERS)
+ rm -f $(API_NAME_LIST) $(GENERATED_HEADERS) $(SOURCE_HEADERS)
+
+$(API_NAME_LIST):
+ if [ -f $@ ]; then rm $@;fi
+ cat include/api_names_global.h > $@
+ cat */api_names.txt >> $@
-$(GENERATED_CONFIG): ./scripts/gen_api_config.sh
- sh $< > $@
+$(SOURCE_HEADERS): $(API_NAME_LIST)
+$(SOURCE_HEADERS): ./scripts/gen_headers.py
+ python $< $(API_NAME_LIST) $(TIZEN_TARGET) $(INSTALLDIR) > $@ >&2
+ cat $@
include/api_id_mapping.h: ./scripts/gen_api_id_mapping_header.awk
-include/api_id_list.h: ./scripts/gen_api_id_mapping_header_list.awk
-include/id_list: ./scripts/gen_api_id_mapping_list.awk
+include/x_define_api_id_list.h: ./scripts/gen_api_id_mapping_list.awk
da_api_map: $(GENERATED_HEADERS)
-$(GENERATED_HEADERS): APINAMES=scripts/api_names.txt
-$(GENERATED_HEADERS): ./scripts/api_names.txt
$(GENERATED_HEADERS):
- awk -f $< < $(APINAMES) > $@
+ awk -f $< < $(API_NAME_LIST) > $@
$(TIZEN_TARGET): LDFLAGS+=$(TIZEN_LDFLAGS)
$(TIZEN_TARGET): CPPFLAGS+=$(TIZEN_CPPFLAGS)
$(DUMMY_TARGET): $(DUMMY_OBJS)
$(CC) $(LDFLAGS) $^ -o $@
-install: all
+$(PARSE_ELF_LIB_TARGET): $(PARSE_ELF_LIB_OBJ)
+ $(CC) $^ -shared -o $@
+
+$(PARSE_ELF_BIN_TARGET): $(PARSE_ELF_BIN_OBJ) $(PARSE_ELF_LIB_TARGET)
+ $(CC) $^ -o $@ -L. -lparserelf
+
+ldheader: $(SOURCE_HEADERS)
+
+install: install_da install_ld install_elf
+
+install_da: all
[ -d "$(DESTDIR)/$(INSTALLDIR)" ] || mkdir -p $(DESTDIR)/$(INSTALLDIR)
install $(TIZEN_TARGET) $(DUMMY_TARGET) $(DESTDIR)/$(INSTALLDIR)/
- install -m 644 include/id_list $(DESTDIR)/$(INSTALLDIR)/da_api_map
+
+
+install_ld: ldheader # var_addr
+ install -m 644 include/ld_preload_probes.h $(DESTDIR)/$(HEADER_INSTALLDIR)/ld_preload_probes.h
+ install -m 644 include/ld_preload_types.h $(DESTDIR)/$(HEADER_INSTALLDIR)/ld_preload_types.h
+ install -m 644 include/ld_preload_probe_lib.h $(DESTDIR)/$(HEADER_INSTALLDIR)/ld_preload_probe_lib.h
+ install -m 644 include/x_define_api_id_list.h $(DESTDIR)/$(HEADER_INSTALLDIR)/x_define_api_id_list.h
+ install -m 644 include/app_protocol.h $(DESTDIR)/$(HEADER_INSTALLDIR)/app_protocol.h
+
+install_elf: elflib elfparser
+ install $(PARSE_ELF_LIB_TARGET) $(DESTDIR)/$(INSTALLDIR)/libparserelf.so
+ install $(PARSE_ELF_BIN_TARGET) $(DESTDIR)/$(BIN_INSTALLDIR)/parse_elf
+ install -m 644 elf_parsing/parse_elf.h $(DESTDIR)/$(HEADER_INSTALLDIR)/parse_elf.h
+
clean:
- rm -f *.so *.o $(GENERATED_HEADERS)
+ rm -f *.so $(TIZEN_OBJS) $(PARSE_ELF_LIB_OBJ) $(PARSE_ELF_BIN_OBJ) $(GENERATED_HEADERS) $(API_NAME_LIST) $(SOURCE_HEADERS)
-.PHONY: all capi tizen dummy clean install headers
+.PHONY: all capi tizen dummy clean install_ld install_da install_elf install headers