NDK_BASE := ../.. include $(NDK_BASE)/config/config.mk # Assumes PREBUILT is defined to point to the correct flavor of the prebuilt # directory in the Android source tree SOURCES := hellolibrary.c OBJECTS := $(SOURCES:.c=.o) LIBS := -lc -lm ALIB := $(PREBUILT)/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a all: sharedlib staticlib # Using shared and static suffixes as these are going in the same directory; # typically you would not do this as you would make only one version, # but if we don't we'll screw up the linking because of linker defaults. staticlib: $(OBJECTS) $(AR) -cr libhello-static.a $(OBJECTS) sharedlib: hellolibrary-shared.o $(CC) -nostdlib -Wl,-soname,libhello-shared.so -Wl,-shared,-Bsymbolic -L$(NDK_BASE)/lib $^ $(LIBS) -o libhello-shared.so -Wl,--no-undefined $(ALIB) hellolibrary-shared.o: hellolibrary.c $(CC) -c -fpic $(INC) -o $@ $^ clean: rm -rf *.o libhello-static.a libhello-shared.so