aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/nx/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Src/replicant/nx/Makefile')
-rw-r--r--Src/replicant/nx/Makefile89
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)