diff options
Diffstat (limited to 'Src/replicant/nx/Makefile')
-rw-r--r-- | Src/replicant/nx/Makefile | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Src/replicant/nx/Makefile b/Src/replicant/nx/Makefile new file mode 100644 index 00000000..4bdea3fb --- /dev/null +++ b/Src/replicant/nx/Makefile @@ -0,0 +1,89 @@ +# ex: set ts=8 noet: + +MODULE_NAME := nx + +OS := $(shell sh -c 'uname -s 2>/dev/null || echo not') + +ifeq ($(OS),Linux) +DIR := linux +DIRARCH := linux +else ifeq ($(OS),Darwin) +DIR := osx +DIRARCH := osx-amd64 +else +$(error OS unrecognized ($OS)) +endif + +CSOURCES := $(DIR)/nxstring.c $(DIR)/nxuri.c $(DIR)/nxdata.c $(DIR)/nxsemaphore.c $(DIRARCH)/nxonce.c $(DIR)/nxpath.c $(DIR)/nxcondition.c $(DIR)/nxthread.c $(DIR)/nxfile.c $(DIR)/nxsleep.c +CPPSOURCES := $(DIR)/NXFileObject.cpp $(DIR)/NXFileProgressiveDownloader.cpp + +LIBRARY_FILENAME := lib$(MODULE_NAME).so +OUTPUT_PATH := ../build/$(MODULE_NAME) +ARCHIVE_PATH := ../build/lib +LIBRARY_FILEPATH := ../build/lib/$(LIBRARY_FILENAME) + +CPPOBJS := $(patsubst %.cpp,$(OUTPUT_PATH)/%.o,$(CPPSOURCES)) +CPPDEPS := $(patsubst %.o,$(OUTPUT_PATH)/%.d,$(CPPOBJS)) +COBJS := $(patsubst %.c,$(OUTPUT_PATH)/%.o,$(CSOURCES)) +CDEPS := $(patsubst %.o,$(OUTPUT_PATH)/%.d,$(COBJS)) + +OBJS := $(CPPOBJS) $(COBJS) +DEPS := $(CPPDEPS) $(CDEPS) + +CFLAGS= -I.. -DREPLICANT_NO_ICY -DREPLICANT_NO_ULTRAVOX -DREPLICANT_NO_HTTP -D_LARGEFILE64_SOURCE -fPIC #-fvisibility=hidden +CPPFLAGS := ${CFLAGS} +CFLAGS += -std=gnu99 # C but not CPP, sneaky + +LDFLAGS =-lc -lpthread -lz #-fvisibility=hidden + +ifeq ($(OS),Linux) +LDFLAGS += -lrt +endif + +ifeq ($(OS),Darwin) +CFLAGS += -F /System/Library/Frameworks/CoreServices.framework/Frameworks +LDFLAGS += -framework CoreFoundation -framework CoreServices +endif + +build: build-dir $(LIBRARY_FILEPATH) + +build-dir: + @mkdir -p $(OUTPUT_PATH)/$(DIR) > /dev/null 2> /dev/null + @mkdir -p $(OUTPUT_PATH)/$(DIRARCH) > /dev/null 2> /dev/null + @mkdir -p $(OUTPUT_PATH) > /dev/null 2> /dev/null + @mkdir -p $(ARCHIVE_PATH) > /dev/null 2> /dev/null + +dep: + @rm ${DEPS} + +$(OUTPUT_PATH)/%.o: %.cpp + #@echo Compiling $*.cpp + @$(CXX) $(CPPFLAGS) -MMD -MF $(OUTPUT_PATH)/$*.d -MT $(OUTPUT_PATH)/$*.o -c $*.cpp -o $(OUTPUT_PATH)/$*.o + +$(OUTPUT_PATH)/$(DIR)/%.o: %.cpp + #@echo Compiling $*.cpp + @$(CXX) $(CPPFLAGS) -MMD -MF $(OUTPUT_PATH)/$(DIR)/$*.d -MT $(OUTPUT_PATH)/$(DIR)/$*.o -c $*.cpp -o $(OUTPUT_PATH)/$(DIR)/$*.o + +$(OUTPUT_PATH)/%.o: %.c + #@echo Compiling $*.c + @$(CC) $(CFLAGS) -MMD -MF $(OUTPUT_PATH)/$*.d -MT $(OUTPUT_PATH)/$*.o -c $*.c -o $(OUTPUT_PATH)/$*.o + +$(OUTPUT_PATH)/.*/%.o: %.c + #@echo Compiling $*.c + @$(CC) $(CFLAGS) -MMD -MF $(OUTPUT_PATH)/$*.d -MT $(OUTPUT_PATH)/$*.o -c $*.c -o $(OUTPUT_PATH)/$(DIR)/$*.o + +ifeq ($(OS),Darwin) +LIBLDFLAGS = -Wl,-install_name,libnx.so +else +LIBLDFLAGS = -Wl,-soname,libnx.so +endif + +$(LIBRARY_FILEPATH): ${OBJS} + $(MAKE) -C ../nu + $(MAKE) -C ../jnetlib + @$(CXX) -Wl,-L,'../build/lib' -shared $(LIBLDFLAGS) -o $(LIBRARY_FILEPATH) ${OBJS} ${LDFLAGS} -lnu -ljnet + +clean: + -rm -f ${OBJS} $(LIBRARY_FILENAME) ${DEPS} + +-include $(DEPS) |