# GNU Makefile # sourcefiles: all *.cpp files except ./plugins subdirectory # objfiles: corresponding *.o files sourcefiles:=$(shell find . -name "*.cpp" -not \( -path ./plugins/\* \)) objfiles:=$(patsubst %.cpp,%.o,$(sourcefiles)) # sourcefiles_no_main: all *.cpp files except ./plugins and ./main subdirectories sourcefiles_no_main:=$(shell find . -name "*.cpp" -not \( -path ./plugins/\* \) -not \( -path ./main/\* \)) objfiles_no_main:=$(patsubst %.cpp,%.o,$(sourcefiles_no_main)) # sourcefiles_main: all *.cpp files from ./main subdirectory sourcefiles_main:=$(shell find main -name "*.cpp") objfiles_main:=$(patsubst %.cpp,%.o,$(sourcefiles_main)) WINIX_PLUGINS_MAKEDEPEND_INCLUDES = -I../../../../winix/winixd \ -I../../../../pikotools/src \ -I../../../../morm/src \ -I../../../../ezc/src \ -I../../../../tito/src WINIX_NEEDED_MACROS = -DPT_HAS_MORM_LIBRARY \ -DEZC_HAS_MORM_LIBRARY \ -DMORM_HAS_EZC_LIBRARY ifndef CXX CXX = g++ endif ifndef CXXFLAGS CXXFLAGS = -Wall -pedantic -O2 -std=c++20 -fPIC -pthread \ -I/usr/local/include \ -I/usr/include/postgresql \ -I../../winix/winixd \ -I../../pikotools/src \ -I../../morm/src \ -I../../ezc/src \ -I../../tito/src \ $(WINIX_PLUGINS_MAKEDEPEND_INCLUDES) \ $(WINIX_NEEDED_MACROS) endif ifndef LDFLAGS LDFLAGS = -L/usr/local/lib -s endif # for make install WINIX_INSTALL_DIR = /usr/local/winix export CXX export CXXFLAGS export LDFLAGS export WINIX_PLUGINS_MAKEDEPEND_INCLUDES export WINIX_NEEDED_MACROS all: winix winix.so plugins winix: $(objfiles_main) winix.so $(CXX) -o winix $(CXXFLAGS) $(LDFLAGS) $(objfiles_main) winix.so -lfcgi winix.so: $(objfiles_no_main) @cd ../../pikotools ; $(MAKE) -e @cd ../../morm ; $(MAKE) -e @cd ../../ezc ; $(MAKE) -e @cd ../../tito ; $(MAKE) -e $(CXX) -shared -rdynamic -Wl,-whole-archive -o winix.so $(CXXFLAGS) $(objfiles_no_main) ../../pikotools/src/pikotools.a ../../morm/src/morm.a ../../ezc/src/ezc.a ../../tito/src/tito.a $(LDFLAGS) -lfcgi -lpq -lz -lpthread -lcurl -lmagic -Wl,-no-whole-archive plugins: FORCE @cd plugins/stats ; $(MAKE) -e @cd plugins/thread ; $(MAKE) -e @cd plugins/ticket ; $(MAKE) -e @cd plugins/gallery ; $(MAKE) -e @cd plugins/group ; $(MAKE) -e @cd plugins/menu ; $(MAKE) -e @cd plugins/export ; $(MAKE) -e @cd plugins/mailregister ; $(MAKE) -e @cd plugins/seo ; $(MAKE) -e %.o: %.cpp $(CXX) -c $(CXXFLAGS) -o $@ $< FORCE: clean: rm -f $(objfiles) rm -f winix.so rm -f winix @cd plugins/stats ; $(MAKE) -e clean @cd plugins/thread ; $(MAKE) -e clean @cd plugins/ticket ; $(MAKE) -e clean @cd plugins/gallery ; $(MAKE) -e clean @cd plugins/group ; $(MAKE) -e clean @cd plugins/menu ; $(MAKE) -e clean @cd plugins/export ; $(MAKE) -e clean @cd plugins/mailregister ; $(MAKE) -e clean @cd plugins/seo ; $(MAKE) -e clean @cd ../../pikotools ; $(MAKE) -e clean @cd ../../morm ; $(MAKE) -e clean @cd ../../ezc ; $(MAKE) -e clean @cd ../../tito ; $(MAKE) -e clean depend: makedepend -Y. -I../../pikotools/src -I../../morm/src -I../../ezc/src -I../../tito/src $(WINIX_NEEDED_MACROS) -f- $(sourcefiles) > Makefile.dep @cd plugins/stats ; $(MAKE) -e depend @cd plugins/thread ; $(MAKE) -e depend @cd plugins/ticket ; $(MAKE) -e depend @cd plugins/gallery ; $(MAKE) -e depend @cd plugins/group ; $(MAKE) -e depend @cd plugins/menu ; $(MAKE) -e depend @cd plugins/export ; $(MAKE) -e depend @cd plugins/mailregister ; $(MAKE) -e depend @cd plugins/seo ; $(MAKE) -e depend @cd ../../pikotools ; $(MAKE) -e depend @cd ../../morm ; $(MAKE) -e depend @cd ../../ezc ; $(MAKE) -e depend @cd ../../tito ; $(MAKE) -e depend install: all # installing binaries rm -Rf $(WINIX_INSTALL_DIR)/bin mkdir -p $(WINIX_INSTALL_DIR)/bin cp winix $(WINIX_INSTALL_DIR)/bin cp winix.so $(WINIX_INSTALL_DIR)/bin # etc configs rm -Rf $(WINIX_INSTALL_DIR)/etc mkdir -p $(WINIX_INSTALL_DIR)/etc cp -rf etc/* $(WINIX_INSTALL_DIR)/etc/ # html templates rm -Rf $(WINIX_INSTALL_DIR)/html mkdir -p $(WINIX_INSTALL_DIR)/html cp -rf html/* $(WINIX_INSTALL_DIR)/html/ # txt templates rm -Rf $(WINIX_INSTALL_DIR)/txt mkdir -p $(WINIX_INSTALL_DIR)/txt cp -rf txt/* $(WINIX_INSTALL_DIR)/txt/ # locales rm -Rf $(WINIX_INSTALL_DIR)/locale mkdir -p $(WINIX_INSTALL_DIR)/locale cp -rf locale/* $(WINIX_INSTALL_DIR)/locale/ # plugins rm -Rf $(WINIX_INSTALL_DIR)/plugins mkdir -p $(WINIX_INSTALL_DIR)/plugins find plugins/ -name "*.so" | xargs -I foo cp foo $(WINIX_INSTALL_DIR)/plugins/ # removing privileges for others find $(WINIX_INSTALL_DIR) -exec chmod o-r,o-x,o-w "{}" "+" -include Makefile.dep