101 lines
2.1 KiB
Makefile
101 lines
2.1 KiB
Makefile
# Custom GNUMakefile to rebuild nawk for the Android NDK
|
|
# (C) 2011 The Android Open Source Project
|
|
# yada yda yada Apache 2.0 License....
|
|
|
|
BUILD_DIR ?= /tmp/ndk-$(USER)/build-awk
|
|
|
|
|
|
CC := $(HOST_CC)
|
|
CFLAGS := $(CFLAGS) -O2 -I$(BUILD_DIR) -I.
|
|
LDFLAGS := $(LDFLAGS) -Wl,-s
|
|
BISON := bison
|
|
|
|
# NATIVE_CC is to build maketab which needs to run in order
|
|
# to generate proctab.c from ytab.h. Set it to host native
|
|
# cc if host can run windows binary (MINGW=yes) or darwin binary
|
|
# (DARWIN=yes)
|
|
NATIVE_CC ?= $(CC)
|
|
NATIVE_CFLAGS ?= $(CFLAGS)
|
|
NATIVE_LDFLAGS ?= $(LDFLAGS)
|
|
|
|
MINGW := $(strip $(WIN32))
|
|
TRY64 := $(strip $(TRY64))
|
|
|
|
ifeq ($(V),1)
|
|
hide :=
|
|
else
|
|
hide := @
|
|
endif
|
|
|
|
SOURCES := \
|
|
lex.c \
|
|
b.c \
|
|
main.c \
|
|
parse.c \
|
|
lib.c \
|
|
run.c \
|
|
tran.c \
|
|
|
|
EXE :=
|
|
|
|
ifdef MINGW
|
|
ifdef TRY64
|
|
CC := x86_64-pc-mingw32msvc-gcc
|
|
else
|
|
CC := i586-pc-mingw32msvc-gcc
|
|
endif
|
|
EXE := .exe
|
|
endif
|
|
|
|
PROGRAM := $(BUILD_DIR)/ndk-awk$(EXE)
|
|
|
|
all: $(PROGRAM)
|
|
|
|
OBJECTS :=
|
|
|
|
YTAB_H := $(BUILD_DIR)/ytab.h
|
|
YTAB_C := $(BUILD_DIR)/ytab.c
|
|
YTAB_O := $(YTAB_C:.c=.o)
|
|
$(YTAB_C): awkgram.y
|
|
@echo "Bison: ytab.c"
|
|
$(hide)$(BISON) -o $@ --defines=$(YTAB_H) awkgram.y
|
|
|
|
$(YTAB_H): $(YTAB_C) awkgram.y
|
|
|
|
OBJECTS += $(YTAB_O)
|
|
|
|
# $1: source file
|
|
# $2: object file
|
|
define build-c-file
|
|
OBJECTS += $2
|
|
$2: $1 $(YTAB_H)
|
|
@echo "Compile: $1"
|
|
$$(hide)mkdir -p $$(dir $$@)
|
|
$$(hide)$$(CC) $$(CFLAGS) -c -o $$@ $$<
|
|
endef
|
|
|
|
$(foreach src,$(filter %.c,$(SOURCES)),\
|
|
$(eval $(call build-c-file,$(src),$(BUILD_DIR)/$(src:%.c=%.o)))\
|
|
)
|
|
|
|
MAKETAB := $(BUILD_DIR)/maketab$(EXE)
|
|
$(MAKETAB): maketab.c $(BUILD_DIR)/ytab.h
|
|
@echo "Native Executable: $(notdir $@)"
|
|
$(hide)$(NATIVE_CC) $(NATIVE_CFLAGS) $(NATIVE_LDFLAGS) maketab.c -o $@
|
|
|
|
PROCTAB_C := $(BUILD_DIR)/proctab.c
|
|
PROCTAB_O := $(PROCTAB_C:%.c=%.o)
|
|
|
|
$(eval $(call build-c-file,$(PROCTAB_C),$(PROCTAB_O)))
|
|
|
|
$(PROCTAB_C): $(MAKETAB) $(YTAB_H)
|
|
@echo "Gen: $(notdir $@)"
|
|
$(hide)$(MAKETAB) $(YTAB_H) > $@
|
|
|
|
|
|
$(PROGRAM): $(OBJECTS)
|
|
@echo "Link: $(notdir $@)"
|
|
$(hide)$(CC) $(LDFLAGS) -o $@ $(OBJECTS) -lm
|
|
|
|
clean:
|
|
$(hide)rm -f $(OBJECTS) $(PROGRAM) $(MAKETAB) $(YTAB_C) $(YTAB_H) $(PROGTAB_C)
|