diff --git a/3rd_party/3rd_party.sh b/3rd_party/3rd_party.sh index e6db6e52ad..9dc6dcc1a3 100755 --- a/3rd_party/3rd_party.sh +++ b/3rd_party/3rd_party.sh @@ -52,67 +52,44 @@ case `uname` in Linux) if [ -z "$CPP_CROSS_COMPILE" ] ; then - ldd --version 2>&1 | grep musl > /dev/null - if [ $? -ne 0 ] ; then - APR_LOCATION=/usr/local/gcc62/lib - APR_EXTENSION=1.so.0 - BOOST_LOCATION=/usr/local/gcc62/lib - BOOST_COMPILER=gcc - BOOST_EXTENSION=mt-1_65_1.so.1.65.1 - BOOST_LIBRARIES='date_time filesystem iostreams program_options regex system thread' - LOG4CXX_LOCATION=/usr/local/gcc62/lib - LOG4CXX_EXTENSION=.so.10 - XML_LOCATION=/usr/local/gcc62/lib - XML_EXTENSION=.so.2 - # Ship the version of expat that came with the apr-util library - EXPAT_LOCATION=/usr/local/gcc62/lib - EXPAT_EXTENSION=.so.0 - GCC_RT_LOCATION=/usr/local/gcc62/lib64 - GCC_RT_EXTENSION=.so.1 - STL_LOCATION=/usr/local/gcc62/lib64 - STL_PREFIX=libstdc++ - STL_EXTENSION=.so.6 - ATOMIC_LOCATION= - ZLIB_LOCATION= - else - APR_LOCATION=/usr/local/lib - APR_EXTENSION=1.so.0 - BOOST_LOCATION=/usr/local/lib - BOOST_COMPILER=gcc - BOOST_EXTENSION=mt-1_65_1.so.1.65.1 - BOOST_LIBRARIES='date_time filesystem iostreams program_options regex system thread' - LOG4CXX_LOCATION=/usr/local/lib - LOG4CXX_EXTENSION=.so.10 - XML_LOCATION=/usr/local/lib - XML_EXTENSION=.so.2 - # Ship the version of expat that came with the apr-util library - EXPAT_LOCATION=/usr/local/lib - EXPAT_EXTENSION=.so.0 - GCC_RT_LOCATION= - STL_LOCATION= - ATOMIC_LOCATION= - ZLIB_LOCATION= - fi + APR_LOCATION=/usr/local/gcc62/lib + APR_EXTENSION=1.so.0 + BOOST_LOCATION=/usr/local/gcc62/lib + BOOST_COMPILER=gcc + BOOST_EXTENSION=mt-1_65_1.so.1.65.1 + BOOST_LIBRARIES='date_time filesystem iostreams program_options regex system thread' + LOG4CXX_LOCATION=/usr/local/gcc62/lib + LOG4CXX_EXTENSION=.so.10 + XML_LOCATION=/usr/local/gcc62/lib + XML_EXTENSION=.so.2 + # Ship the version of expat that came with the apr-util library + EXPAT_LOCATION=/usr/local/gcc62/lib + EXPAT_EXTENSION=.so.0 + GCC_RT_LOCATION=/usr/local/gcc62/lib64 + GCC_RT_EXTENSION=.so.1 + STL_LOCATION=/usr/local/gcc62/lib64 + STL_PREFIX=libstdc++ + STL_EXTENSION=.so.6 + ATOMIC_LOCATION= + ZLIB_LOCATION= + elif [ "$CPP_CROSS_COMPILE" = macosx ] ; then + SYSROOT=/usr/local/sysroot-x86_64-apple-macosx10.10 + APR_LOCATION= + BOOST_LOCATION=$SYSROOT/usr/local/lib + BOOST_COMPILER=clang + BOOST_EXTENSION=mt-1_65_1.dylib + BOOST_LIBRARIES='date_time filesystem iostreams program_options regex system thread' + LOG4CXX_LOCATION=$SYSROOT/usr/local/lib + LOG4CXX_EXTENSION=.10.dylib + XML_LOCATION= + EXPAT_LOCATION= + GCC_RT_LOCATION= + STL_LOCATION= + ATOMIC_LOCATION= + ZLIB_LOCATION= else - if [ "$CPP_CROSS_COMPILE" = macosx ] ; then - SYSROOT=/usr/local/sysroot-x86_64-apple-macosx10.10 - APR_LOCATION= - BOOST_LOCATION=$SYSROOT/usr/local/lib - BOOST_COMPILER=clang - BOOST_EXTENSION=mt-1_65_1.dylib - BOOST_LIBRARIES='date_time filesystem iostreams program_options regex system thread' - LOG4CXX_LOCATION=$SYSROOT/usr/local/lib - LOG4CXX_EXTENSION=.10.dylib - XML_LOCATION= - EXPAT_LOCATION= - GCC_RT_LOCATION= - STL_LOCATION= - ATOMIC_LOCATION= - ZLIB_LOCATION= - else - echo "Cannot cross compile to $CPP_CROSS_COMPILE" - exit 3 - fi + echo "Cannot cross compile to $CPP_CROSS_COMPILE" + exit 3 fi ;; @@ -293,27 +270,5 @@ case `uname` in fi ;; - SunOS) - if [ -n "$INSTALL_DIR" ] ; then - cd "$INSTALL_DIR" - for FILE in `find . -type f | egrep -v '^core|-debug$|libMl'` - do - # Replace RPATH for 3rd party libraries that already have one - elfedit -r -e 'dyn:runpath' $FILE >/dev/null 2>&1 && chmod u+wx $FILE && elfedit -e 'dyn:runpath $ORIGIN/.' $FILE - if [ $? -eq 0 ] ; then - echo "Set RPATH in $FILE" - else - # Set RPATH for 3rd party libraries that reference other libraries we ship - ldd $FILE | grep /usr/local/lib >/dev/null 2>&1 && chmod u+wx $FILE && elfedit -e 'dyn:runpath $ORIGIN/.' $FILE - if [ $? -eq 0 ] ; then - echo "Set RPATH in $FILE" - else - echo "Did not set RPATH in $FILE" - fi - fi - done - fi - ;; - esac diff --git a/bin/autoconfig/Makefile b/bin/autoconfig/Makefile index 9740197d67..c01e987dae 100644 --- a/bin/autoconfig/Makefile +++ b/bin/autoconfig/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=$(OBJS_DIR)/autoconfig$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) ML_LIBS=$(LIB_ML_CORE) $(LIB_ML_MATHS) $(LIB_ML_MODEL) $(LIB_ML_API) $(LIB_ML_CONFIG) diff --git a/bin/autodetect/Makefile b/bin/autodetect/Makefile index a4051da9cd..0150537ba6 100644 --- a/bin/autodetect/Makefile +++ b/bin/autodetect/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=$(OBJS_DIR)/autodetect$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) ML_LIBS=$(LIB_ML_CORE) $(LIB_ML_MATHS) $(LIB_ML_MODEL) $(LIB_ML_API) diff --git a/bin/categorize/Makefile b/bin/categorize/Makefile index 692ee5ce12..e1fdbeac86 100644 --- a/bin/categorize/Makefile +++ b/bin/categorize/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=$(OBJS_DIR)/categorize$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) ML_LIBS=$(LIB_ML_CORE) $(LIB_ML_MATHS) $(LIB_ML_MODEL) $(LIB_ML_API) diff --git a/bin/controller/Makefile b/bin/controller/Makefile index f12718ba02..758fa8ce07 100644 --- a/bin/controller/Makefile +++ b/bin/controller/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=$(OBJS_DIR)/controller$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) ML_LIBS=$(LIB_ML_CORE) @@ -16,7 +16,7 @@ USE_BOOST_PROGRAMOPTIONS_LIBS=1 LIBS=$(ML_LIBS) -all: build +all:: build SRCS= \ Main.cc \ @@ -24,6 +24,11 @@ SRCS= \ CCmdLineParser.cc \ CCommandProcessor.cc \ +ifneq ($(PLIST_FILE),) +all:: $(CPP_SRC_HOME)/gradle.properties $(CPP_SRC_HOME)/mk/make_info_plist.sh + $(MKDIR) $(INSTALL_DIR) + $(CPP_SRC_HOME)/mk/make_info_plist.sh "$(ML_APP_NAME)" true > $(INSTALL_DIR)/../$(notdir $(PLIST_FILE)) +endif include $(CPP_SRC_HOME)/mk/stdapp.mk diff --git a/bin/normalize/Makefile b/bin/normalize/Makefile index dae92c89b2..7480eddf7b 100644 --- a/bin/normalize/Makefile +++ b/bin/normalize/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=$(OBJS_DIR)/normalize$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) ML_LIBS=$(LIB_ML_CORE) $(LIB_ML_MATHS) $(LIB_ML_MODEL) $(LIB_ML_API) diff --git a/dev-tools/strip_binaries.sh b/dev-tools/strip_binaries.sh index 4850cd9588..a2ce5cefcf 100755 --- a/dev-tools/strip_binaries.sh +++ b/dev-tools/strip_binaries.sh @@ -5,24 +5,47 @@ # you may not use this file except in compliance with the Elastic License. # -# Strips Ml native code binaries to make them smaller before distribution. +# Strips ML native code binaries to make them smaller before distribution. + +ML_APP_NAME=controller +case `uname` in + + Darwin) + EXE_DIR="$ML_APP_NAME.app/Contents/MacOS" + DYNAMIC_LIB_DIR="$ML_APP_NAME.app/Contents/lib" + ;; + + Linux) + if [ -z "$CPP_CROSS_COMPILE" ] ; then + EXE_DIR=bin + DYNAMIC_LIB_DIR=lib + elif [ "$CPP_CROSS_COMPILE" = macosx ] ; then + EXE_DIR="$ML_APP_NAME.app/Contents/MacOS" + DYNAMIC_LIB_DIR="$ML_APP_NAME.app/Contents/lib" + else + echo "Cannot cross compile to $CPP_CROSS_COMPILE" + exit 1 + fi + ;; + +esac # Ensure $CPP_PLATFORM_HOME is set if [ -z "$CPP_PLATFORM_HOME" ] ; then echo '$CPP_PLATFORM_HOME is not set' - exit 1 + exit 2 fi -# Ensure the bin folder has been created. -if [ ! -d "$CPP_PLATFORM_HOME/bin" ] ; then - echo '$CPP_PLATFORM_HOME/bin does not exist' - exit 2 +# Ensure the executable programs folder has been created. +if [ ! -d "$CPP_PLATFORM_HOME/$EXE_DIR" ] ; then + echo "$CPP_PLATFORM_HOME/$EXE_DIR does not exist" + exit 3 fi # Ensure the lib folder has been created. -if [ ! -d "$CPP_PLATFORM_HOME/lib" ] ; then - echo '$CPP_PLATFORM_HOME/lib does not exist' - exit 3 +if [ ! -d "$CPP_PLATFORM_HOME/$DYNAMIC_LIB_DIR" ] ; then + echo "$CPP_PLATFORM_HOME/$DYNAMIC_LIB_DIR does not exist" + exit 4 fi cd "$CPP_PLATFORM_HOME" @@ -32,13 +55,13 @@ cd "$CPP_PLATFORM_HOME" case `uname` in Darwin) - for PROGRAM in `ls -1d bin/* | grep -v '\.dSYM$'` + for PROGRAM in `ls -1d "$EXE_DIR"/* | grep -v '\.dSYM$'` do echo "Stripping $PROGRAM" dsymutil $PROGRAM strip -u -r $PROGRAM done - for LIBRARY in `ls -1d lib/* | grep -v '\.dSYM$'` + for LIBRARY in `ls -1d "$DYNAMIC_LIB_DIR"/* | grep -v '\.dSYM$'` do echo "Stripping $LIBRARY" case $LIBRARY in @@ -51,7 +74,7 @@ case `uname` in Linux) if [ -z "$CPP_CROSS_COMPILE" ] ; then - for PROGRAM in `ls -1 bin/* | egrep -v 'bin/core|-debug$'` + for PROGRAM in `ls -1 "$EXE_DIR"/* | egrep -v "$EXE_DIR"'/core|-debug$'` do echo "Stripping $PROGRAM" objcopy --only-keep-debug "$PROGRAM" "$PROGRAM-debug" @@ -59,34 +82,32 @@ case `uname` in objcopy --add-gnu-debuglink="$PROGRAM-debug" "$PROGRAM" chmod -x "$PROGRAM-debug" done - for LIBRARY in `ls -1 lib/* | egrep -v 'lib/core|-debug$'` + for LIBRARY in `ls -1 "$DYNAMIC_LIB_DIR"/* | egrep -v 'lib/core|-debug$'` do echo "Stripping $LIBRARY" objcopy --only-keep-debug "$LIBRARY" "$LIBRARY-debug" strip --strip-unneeded $LIBRARY objcopy --add-gnu-debuglink="$LIBRARY-debug" "$LIBRARY" done + elif [ "$CPP_CROSS_COMPILE" = macosx ] ; then + for PROGRAM in `ls -1d "$EXE_DIR"/* | grep -v '\.dSYM$'` + do + echo "Stripping $PROGRAM" + llvm-dsymutil-3.8 $PROGRAM + /usr/local/bin/x86_64-apple-macosx10.10-strip -u -r $PROGRAM + done + for LIBRARY in `ls -1d "$DYNAMIC_LIB_DIR"/* | grep -v '\.dSYM$'` + do + echo "Stripping $LIBRARY" + case $LIBRARY in + *Ml*) + llvm-dsymutil-3.8 $LIBRARY + esac + /usr/local/bin/x86_64-apple-macosx10.10-strip -x $LIBRARY + done else - if [ "$CPP_CROSS_COMPILE" = macosx ] ; then - for PROGRAM in `ls -1d bin/* | grep -v '\.dSYM$'` - do - echo "Stripping $PROGRAM" - llvm-dsymutil-3.8 $PROGRAM - /usr/local/bin/x86_64-apple-macosx10.10-strip -u -r $PROGRAM - done - for LIBRARY in `ls -1d lib/* | grep -v '\.dSYM$'` - do - echo "Stripping $LIBRARY" - case $LIBRARY in - *Ml*) - llvm-dsymutil-3.8 $LIBRARY - esac - /usr/local/bin/x86_64-apple-macosx10.10-strip -x $LIBRARY - done - else - echo "Cannot cross compile to $CPP_CROSS_COMPILE" - exit 4 - fi + echo "Cannot cross compile to $CPP_CROSS_COMPILE" + exit 5 fi ;; diff --git a/devbin/analyze_test/Makefile b/devbin/analyze_test/Makefile index 7fbf73917d..42a4f897c2 100644 --- a/devbin/analyze_test/Makefile +++ b/devbin/analyze_test/Makefile @@ -7,7 +7,7 @@ include $(CPP_SRC_HOME)/mk/defines.mk TARGET=analyze_test$(EXE_EXT) -INSTALL_DIR=$(CPP_PLATFORM_HOME)/devbin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) all: build diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 3ca6f28110..3ae6f4a457 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -28,6 +28,13 @@ //=== Regressions +== {es} version 6.8.5 + +=== Enhancements + +* The {ml} native processes are now arranged in a .app directory structure on + macOS, to allow for notarization on macOS Catalina. (See {ml-pull}593[#593].) + == {es} version 6.8.4 === Bug Fixes diff --git a/include/core/CLogger.h b/include/core/CLogger.h index 91aa2819e2..5215b2d07d 100644 --- a/include/core/CLogger.h +++ b/include/core/CLogger.h @@ -116,12 +116,11 @@ class CORE_EXPORT CLogger : private CNonCopyable { CLogger(); ~CLogger(); - //! Replace Ml specific patterns in log4cxx properties. In - //! addition to the patterns usually supported by log4cxx, Ml will + //! Replace ML specific patterns in log4cxx properties. In + //! addition to the patterns usually supported by log4cxx, ML will //! substitute: - //! 1) %D with the path to the Ml base log directory - //! 2) %N with the program's name - //! 3) %P with the program's process ID + //! 1) %N with the program's name + //! 2) %P with the program's process ID void massageProperties(log4cxx::helpers::Properties& props) const; using TLogCharLogStrMap = std::map; diff --git a/include/core/CResourceLocator.h b/include/core/CResourceLocator.h index 0e00f95042..5eb2dd0073 100644 --- a/include/core/CResourceLocator.h +++ b/include/core/CResourceLocator.h @@ -36,9 +36,6 @@ class CORE_EXPORT CResourceLocator : private CNonInstantiatable { //! details and dictionary words. static std::string resourceDir(); - //! Get the directory that stores log files. - static std::string logDir(); - //! Get the root directory for the C++ section of the source tree. //! (Obviously this should only be used in test code!) static std::string cppRootDir(); diff --git a/lib/core/CLogger.cc b/lib/core/CLogger.cc index 9e8fc20ba5..da323d9aa6 100644 --- a/lib/core/CLogger.cc +++ b/lib/core/CLogger.cc @@ -357,15 +357,11 @@ void CLogger::massageProperties(log4cxx::helpers::Properties& props) const { std::ostringstream pidStrm; pidStrm << CProcess::instance().id(); - // Set up Ml specific mappings - // 1) %D with the path to the Ml base log directory - // 2) %N with the program name - // 3) %P with the program's process ID + // Set up ML specific mappings + // 1) %N with the program name + // 2) %P with the program's process ID TLogCharLogStrMap mappings; log4cxx::LogString logStr; - log4cxx::helpers::Transcoder::decode(CResourceLocator::logDir(), logStr); - mappings.insert(TLogCharLogStrMap::value_type(static_cast('D'), logStr)); - logStr.clear(); log4cxx::helpers::Transcoder::decode(m_ProgramName, logStr); mappings.insert(TLogCharLogStrMap::value_type(static_cast('N'), logStr)); logStr.clear(); diff --git a/lib/core/CResourceLocator.cc b/lib/core/CResourceLocator.cc index 7c0530e8ee..52d6a1a923 100644 --- a/lib/core/CResourceLocator.cc +++ b/lib/core/CResourceLocator.cc @@ -8,28 +8,36 @@ #include #include -#include +#include namespace { -const char* const CPP_SRC_HOME("CPP_SRC_HOME"); +// Important: all file scope in this file must be simple types that don't +// require construction, as they could be accessed before the static +// constructors are run. +const char* const CPP_SRC_HOME{"CPP_SRC_HOME"}; + +#ifdef MacOSX +const char* const RESOURCE_RELATIVE_DIR{"../Resources"}; +#else +const char* const RESOURCE_RELATIVE_DIR{"../resources"}; +#endif } namespace ml { namespace core { std::string CResourceLocator::resourceDir() { - // Look relative to the program that's running, assuming this directory layout: - // $ES_HOME/plugin//resources - // $ES_HOME/plugin//platform//bin - std::string productionDir(CProgName::progDir() + "/../../../resources"); + // Look relative to the program that's running, assuming that the resource + // directory is located relative to the directory the current program is in. + std::string productionDir(CProgName::progDir() + '/' + RESOURCE_RELATIVE_DIR); // If the production directory doesn't exist, return the dev directory if // that does, but if neither exist return the production directory so the // error message is nicer for the end user. COsFileFuncs::TStat buf; if (COsFileFuncs::stat(productionDir.c_str(), &buf) != 0) { - const char* cppSrcHome(::getenv(CPP_SRC_HOME)); + const char* cppSrcHome(std::getenv(CPP_SRC_HOME)); if (cppSrcHome != nullptr) { std::string devDir(cppSrcHome); devDir += "/lib/core"; @@ -42,24 +50,8 @@ std::string CResourceLocator::resourceDir() { return productionDir; } -std::string CResourceLocator::logDir() { - // Look relative to the program that's running, assuming this directory layout: - // $ES_HOME/logs - // $ES_HOME/plugin//platform//bin - - std::string productionDir(CProgName::progDir() + "/../../../../../logs"); - - COsFileFuncs::TStat buf; - if (COsFileFuncs::stat(productionDir.c_str(), &buf) != 0) { - // Assume we're running as a unit test - return "."; - } - - return productionDir; -} - std::string CResourceLocator::cppRootDir() { - const char* cppSrcHome(::getenv(CPP_SRC_HOME)); + const char* cppSrcHome(std::getenv(CPP_SRC_HOME)); if (cppSrcHome == nullptr) { // Assume we're in a unittest directory return "../../.."; diff --git a/lib/core/Makefile b/lib/core/Makefile index efcbc9dc61..5ba2ecf779 100644 --- a/lib/core/Makefile +++ b/lib/core/Makefile @@ -19,7 +19,7 @@ USE_STRPTIME=1 CPPFLAGS+= -DDYNAMIC_LIB_EXT=$(DYNAMIC_LIB_EXT) -CONF_INSTALL_DIR=$(CPP_DISTRIBUTION_HOME)/resources +CONF_INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(RESOURCES_DIR) # On Windows we need to copy over the Boost date/time config file that lists # details of each timezone, whereas on Unix timezone config is part of the diff --git a/lib/core/log4cxx.properties b/lib/core/log4cxx.properties index 4176142ed2..b14a6ecbb1 100644 --- a/lib/core/log4cxx.properties +++ b/lib/core/log4cxx.properties @@ -1,11 +1,11 @@ # Set root logger level to INFO and its only appender to A1. The root logger -# will never be used by Ml code once this config file has been read, so any +# will never be used by ML code once this config file has been read, so any # logging to the console will generally indicate something is not working # correctly. log4j.rootLogger=INFO, A1 # Also set up a logger named after the log identifier of the program, with -# appender A2. Ml programs should send all their messages to this logger +# appender A2. ML programs should send all their messages to this logger # once this config file has been read. If there is more than one appender, the # logger itself must have its level set to the lowest level to be output by any # of them, and then the individual appenders have separate thresholds to apply @@ -17,17 +17,16 @@ log4j.additivity.%N=false log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.Target=System.err -# A1 uses PatternLayout. %P is a Ml extension that is substituted with the +# A1 uses PatternLayout. %P is a ML extension that is substituted with the # the process ID. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %d{%Z} [%P] %-5p %F@%L %m%n -# A2 is set to log to a rolling file in a sub-directory of the Ml logs -# directory. %D and %N are Ml extensions to standard log4cxx. %D is -# replaced with the path to the Elasticsearch logs directory and %N with the -# name of the program. +# A2 is set to log to a rolling file in a sub-directory of the ML logs +# directory. %N is an ML extension to standard log4cxx that is replaced +# with the name of the program. log4j.appender.A2=org.apache.log4j.RollingFileAppender -log4j.appender.A2.File=%D/%N.log +log4j.appender.A2.File=%N.log log4j.appender.A2.MaxFileSize=1MB log4j.appender.A2.MaxBackupIndex=9 diff --git a/lib/core/unittest/CResourceLocatorTest.cc b/lib/core/unittest/CResourceLocatorTest.cc index a0abbf73ae..1cd00379ae 100644 --- a/lib/core/unittest/CResourceLocatorTest.cc +++ b/lib/core/unittest/CResourceLocatorTest.cc @@ -14,8 +14,6 @@ CppUnit::Test* CResourceLocatorTest::suite() { suiteOfTests->addTest(new CppUnit::TestCaller( "CResourceLocatorTest::testResourceDir", &CResourceLocatorTest::testResourceDir)); - suiteOfTests->addTest(new CppUnit::TestCaller( - "CResourceLocatorTest::testLogDir", &CResourceLocatorTest::testLogDir)); suiteOfTests->addTest(new CppUnit::TestCaller( "CResourceLocatorTest::testSrcRootDir", &CResourceLocatorTest::testSrcRootDir)); @@ -32,14 +30,6 @@ void CResourceLocatorTest::testResourceDir() { 0, ml::core::COsFileFuncs::stat((resourceDir + "/ml-en.dict").c_str(), &buf)); } -void CResourceLocatorTest::testLogDir() { - std::string logDir(ml::core::CResourceLocator::logDir()); - LOG_DEBUG(<< "Log directory is " << logDir); - - // Don't assert on this as it will be non-essential once - // we're an Elasticsearch plugin -} - void CResourceLocatorTest::testSrcRootDir() { std::string cppRootDir(ml::core::CResourceLocator::cppRootDir()); LOG_DEBUG(<< "C++ root directory is " << cppRootDir); diff --git a/lib/core/unittest/CResourceLocatorTest.h b/lib/core/unittest/CResourceLocatorTest.h index 38a48ff594..e32135387f 100644 --- a/lib/core/unittest/CResourceLocatorTest.h +++ b/lib/core/unittest/CResourceLocatorTest.h @@ -11,7 +11,6 @@ class CResourceLocatorTest : public CppUnit::TestFixture { public: void testResourceDir(); - void testLogDir(); void testSrcRootDir(); static CppUnit::Test* suite(); diff --git a/mk/defines.mk b/mk/defines.mk index 4cfa7ef7b1..f173463ee3 100644 --- a/mk/defines.mk +++ b/mk/defines.mk @@ -42,12 +42,7 @@ ifeq ($(OS),$(linuxOS)) ifdef CPP_CROSS_COMPILE include $(CPP_SRC_HOME)/mk/linux_crosscompile_$(CPP_CROSS_COMPILE).mk else -MUSL=$(shell ldd --version 2>&1 | grep musl) -ifeq ($(MUSL),) include $(CPP_SRC_HOME)/mk/linux.mk -else -include $(CPP_SRC_HOME)/mk/linux-musl.mk -endif endif endif diff --git a/mk/dynamiclib.mk b/mk/dynamiclib.mk index 75562ee34b..6dd40265ce 100644 --- a/mk/dynamiclib.mk +++ b/mk/dynamiclib.mk @@ -64,6 +64,6 @@ build: $(TARGET) $(MAKE) -f $(filter-out %.mk %.d,$(MAKEFILE_LIST)) install clean: - $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(IMPORT_LIB_NAME) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp + $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.xml $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(IMPORT_LIB_NAME) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp +$(CLEAN_CMDS) $(RMDIR) results diff --git a/mk/linux.mk b/mk/linux.mk index aa51f789a1..78cf4c5bfd 100644 --- a/mk/linux.mk +++ b/mk/linux.mk @@ -32,6 +32,14 @@ CDEPFLAGS=-MM COMP_OUT_FLAG=-o LINK_OUT_FLAG=-o DEP_REFORMAT=sed 's,\($*\)\.o[ :]*,$(OBJS_DIR)\/\1.o $@ : ,g' +OBJECT_FILE_EXT=.o +EXE_DIR=bin +DYNAMIC_LIB_EXT=.so +DYNAMIC_LIB_DIR=lib +STATIC_LIB_EXT=.a +SHELL_SCRIPT_EXT=.sh +UT_TMP_DIR=/tmp/$(LOGNAME) +RESOURCES_DIR=resources LOCALLIBS=-lm -lpthread -ldl -lrt NETLIBS=-lnsl BOOSTVER=1_65_1 @@ -50,21 +58,15 @@ RAPIDJSONCPPFLAGS=-DRAPIDJSON_HAS_STDSTRING -DRAPIDJSON_SSE42 EIGENCPPFLAGS=-DEIGEN_MPL2_ONLY XMLINCLUDES=`/usr/local/gcc62/bin/xml2-config --cflags` XMLLIBS=`/usr/local/gcc62/bin/xml2-config --libs` -DYNAMICLIBLDFLAGS=$(PLATPICFLAGS) -shared -Wl,--as-needed -L$(CPP_PLATFORM_HOME)/lib $(COVERAGE) -Wl,-z,relro -Wl,-z,now -Wl,-rpath,'$$ORIGIN/.' +DYNAMICLIBLDFLAGS=$(PLATPICFLAGS) -shared -Wl,--as-needed -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) $(COVERAGE) -Wl,-z,relro -Wl,-z,now -Wl,-rpath,'$$ORIGIN/.' JAVANATIVEINCLUDES=-I$(JAVA_HOME)/include JAVANATIVELDFLAGS=-L$(JAVA_HOME)/jre/lib/server JAVANATIVELIBS=-ljvm CPPUNITLIBS=-lcppunit LOG4CXXLIBS=-llog4cxx ZLIBLIBS=-lz -EXELDFLAGS=-pie $(PLATPIEFLAGS) -L$(CPP_PLATFORM_HOME)/lib $(COVERAGE) -Wl,-z,relro -Wl,-z,now -Wl,-rpath,'$$ORIGIN/../lib' -UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/lib -OBJECT_FILE_EXT=.o -DYNAMIC_LIB_EXT=.so -DYNAMIC_LIB_DIR=lib -STATIC_LIB_EXT=.a -SHELL_SCRIPT_EXT=.sh -UT_TMP_DIR=/tmp/$(LOGNAME) +EXELDFLAGS=-pie $(PLATPIEFLAGS) -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) $(COVERAGE) -Wl,-z,relro -Wl,-z,now -Wl,-rpath,'$$ORIGIN/../lib' +UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) LIB_ML_CORE=-lMlCore LIB_ML_VER=-lMlVer ML_VER_LDFLAGS=-L$(CPP_SRC_HOME)/lib/ver/.objs diff --git a/mk/linux_crosscompile_macosx.mk b/mk/linux_crosscompile_macosx.mk index c2b34f2e81..b87ebe1008 100644 --- a/mk/linux_crosscompile_macosx.mk +++ b/mk/linux_crosscompile_macosx.mk @@ -7,6 +7,8 @@ OS=MacOSX CPP_PLATFORM_HOME=$(CPP_DISTRIBUTION_HOME)/platform/darwin-x86_64 +ML_APP_NAME=controller +APP_CONTENTS=$(ML_APP_NAME).app/Contents CROSS_TARGET_PLATFORM=x86_64-apple-macosx10.10 SYSROOT=/usr/local/sysroot-$(CROSS_TARGET_PLATFORM) @@ -36,6 +38,14 @@ COMP_OUT_FLAG=-o ANALYZE_OUT_FLAG=-o LINK_OUT_FLAG=-o DEP_REFORMAT=sed 's,\($*\)\.o[ :]*,$(OBJS_DIR)\/\1.o $@ : ,g' +OBJECT_FILE_EXT=.o +EXE_DIR=$(APP_CONTENTS)/MacOS +DYNAMIC_LIB_EXT=.dylib +DYNAMIC_LIB_DIR=$(APP_CONTENTS)/lib +STATIC_LIB_EXT=.a +SHELL_SCRIPT_EXT=.sh +UT_TMP_DIR=/tmp/$(LOGNAME) +RESOURCES_DIR=$(APP_CONTENTS)/Resources LOCALLIBS= NETLIBS= BOOSTVER=1_65_1 @@ -56,18 +66,14 @@ XMLINCLUDES=-isystem $(SYSROOT)/usr/include/libxml2 XMLLIBLDFLAGS=-L$(SYSROOT)/usr/lib XMLLIBS=-lxml2 ML_VERSION_NUM=$(shell cat $(CPP_SRC_HOME)/gradle.properties | grep '^elasticsearchVersion' | awk -F= '{ print $$2 }' | xargs echo | sed 's/-.*//') -DYNAMICLIBLDFLAGS=-current_version $(ML_VERSION_NUM) -compatibility_version $(ML_VERSION_NUM) -dynamiclib -Wl,-dead_strip_dylibs $(COVERAGE) -Wl,-install_name,@rpath/$(notdir $(TARGET)) -L$(CPP_PLATFORM_HOME)/lib -Wl,-rpath,@loader_path/. -Wl,-headerpad_max_install_names +DYNAMICLIBLDFLAGS=-current_version $(ML_VERSION_NUM) -compatibility_version $(ML_VERSION_NUM) -dynamiclib -Wl,-dead_strip_dylibs $(COVERAGE) -Wl,-install_name,@rpath/$(notdir $(TARGET)) -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) -Wl,-rpath,@loader_path/. -Wl,-headerpad_max_install_names CPPUNITLIBS=-lcppunit LOG4CXXLIBS=-llog4cxx ZLIBLIBS=-lz -EXELDFLAGS=-bind_at_load -L$(CPP_PLATFORM_HOME)/lib $(COVERAGE) -Wl,-rpath,@loader_path/../lib -Wl,-headerpad_max_install_names -UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/lib -OBJECT_FILE_EXT=.o -DYNAMIC_LIB_EXT=.dylib -DYNAMIC_LIB_DIR=lib -STATIC_LIB_EXT=.a -SHELL_SCRIPT_EXT=.sh -UT_TMP_DIR=/tmp/$(LOGNAME) +EXELDFLAGS=-bind_at_load -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) $(COVERAGE) -Wl,-rpath,@loader_path/../lib -Wl,-headerpad_max_install_names +UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) +PLIST_FILE=$(OBJS_DIR)/Info.plist +PLIST_FILE_LDFLAGS=-Wl,-sectcreate,__TEXT,__info_plist,$(PLIST_FILE) LIB_ML_API=-lMlApi LIB_ML_CORE=-lMlCore LIB_ML_VER=-lMlVer diff --git a/mk/macosx.mk b/mk/macosx.mk index eecd5c8b7d..306c4fac61 100644 --- a/mk/macosx.mk +++ b/mk/macosx.mk @@ -7,6 +7,8 @@ OS=MacOSX CPP_PLATFORM_HOME=$(CPP_DISTRIBUTION_HOME)/platform/darwin-x86_64 +ML_APP_NAME=controller +APP_CONTENTS=$(ML_APP_NAME).app/Contents CC=clang CXX=clang++ -std=c++11 -stdlib=libc++ @@ -33,6 +35,14 @@ COMP_OUT_FLAG=-o ANALYZE_OUT_FLAG=-o LINK_OUT_FLAG=-o DEP_REFORMAT=sed 's,\($*\)\.o[ :]*,$(OBJS_DIR)\/\1.o $@ : ,g' +OBJECT_FILE_EXT=.o +EXE_DIR=$(APP_CONTENTS)/MacOS +DYNAMIC_LIB_EXT=.dylib +DYNAMIC_LIB_DIR=$(APP_CONTENTS)/lib +STATIC_LIB_EXT=.a +SHELL_SCRIPT_EXT=.sh +UT_TMP_DIR=/tmp/$(LOGNAME) +RESOURCES_DIR=$(APP_CONTENTS)/Resources LOCALLIBS= NETLIBS= BOOSTVER=1_65_1 @@ -55,19 +65,15 @@ XMLLIBS=-lxml2 JAVANATIVEINCLUDES=-I`/usr/libexec/java_home`/include JAVANATIVELDFLAGS=-L`/usr/libexec/java_home`/jre/lib/server JAVANATIVELIBS=-ljvm -ML_VERSION_NUM=$(shell cat $(CPP_SRC_HOME)/gradle.properties | grep '^elasticsearchVersion' | awk -F= '{ print $$2 }' | xargs echo | sed 's/-.*//') -DYNAMICLIBLDFLAGS=-current_version $(ML_VERSION_NUM) -compatibility_version $(ML_VERSION_NUM) -dynamiclib -Wl,-dead_strip_dylibs $(COVERAGE) -Wl,-install_name,@rpath/$(notdir $(TARGET)) -L$(CPP_PLATFORM_HOME)/lib -Wl,-rpath,@loader_path/. -Wl,-headerpad_max_install_names +ML_VERSION_NUM:=$(shell cat $(CPP_SRC_HOME)/gradle.properties | grep '^elasticsearchVersion' | awk -F= '{ print $$2 }' | xargs echo | sed 's/-.*//') +DYNAMICLIBLDFLAGS=-current_version $(ML_VERSION_NUM) -compatibility_version $(ML_VERSION_NUM) -dynamiclib -Wl,-dead_strip_dylibs $(COVERAGE) -Wl,-install_name,@rpath/$(notdir $(TARGET)) -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) -Wl,-rpath,@loader_path/. -Wl,-headerpad_max_install_names CPPUNITLIBS=-lcppunit LOG4CXXLIBS=-llog4cxx ZLIBLIBS=-lz -EXELDFLAGS=-bind_at_load -L$(CPP_PLATFORM_HOME)/lib $(COVERAGE) -Wl,-rpath,@loader_path/../lib -Wl,-headerpad_max_install_names -UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/lib -OBJECT_FILE_EXT=.o -DYNAMIC_LIB_EXT=.dylib -DYNAMIC_LIB_DIR=lib -STATIC_LIB_EXT=.a -SHELL_SCRIPT_EXT=.sh -UT_TMP_DIR=/tmp/$(LOGNAME) +EXELDFLAGS=-bind_at_load -L$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) $(COVERAGE) -Wl,-rpath,@loader_path/../lib -Wl,-headerpad_max_install_names +UTLDFLAGS=$(EXELDFLAGS) -Wl,-rpath,$(CPP_PLATFORM_HOME)/$(DYNAMIC_LIB_DIR) +PLIST_FILE=$(OBJS_DIR)/Info.plist +PLIST_FILE_LDFLAGS=-Wl,-sectcreate,__TEXT,__info_plist,$(PLIST_FILE) LIB_ML_API=-lMlApi LIB_ML_CORE=-lMlCore LIB_ML_VER=-lMlVer diff --git a/mk/make_info_plist.sh b/mk/make_info_plist.sh new file mode 100755 index 0000000000..79b0676ed0 --- /dev/null +++ b/mk/make_info_plist.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +ML_VERSION_NUM=`cat $CPP_SRC_HOME/gradle.properties | grep '^elasticsearchVersion' | awk -F= '{ print $2 }' | xargs echo | sed 's/-.*//'` +ML_APP_NAME=$1 + +cat < + + + + CFBundleDevelopmentRegion + English + CFBundlePackageType + APPL + CFBundleIdentifier + co.elastic.ml-cpp.$ML_APP_NAME + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $ML_APP_NAME + CFBundleDisplayName + $ML_APP_NAME + CFBundleVersion + $ML_VERSION_NUM +EOF + +if [ "x$2" = xtrue ] ; then + cat <CFBundleExecutable + $ML_APP_NAME +EOF +fi + +cat < + +EOF diff --git a/mk/rules.mk b/mk/rules.mk index fe7e390c7c..e4d0f36eed 100644 --- a/mk/rules.mk +++ b/mk/rules.mk @@ -36,7 +36,7 @@ OS_SRCS=$(PLATFORM_SRCS) endif OBJS:=$(OBJS) $(patsubst %.cc, $(OBJS_DIR)/%$(OBJECT_FILE_EXT), $(SRCS)) -ANALYZEOBJS:=$(ANALYZEOBJS) $(patsubst %.cc, $(OBJS_DIR)/%.plist, $(SRCS)) +ANALYZEOBJS:=$(ANALYZEOBJS) $(patsubst %.cc, $(OBJS_DIR)/%.xml, $(SRCS)) # define MAKE_PREFIX_SRC_PATH to prefix source file names with their path # leave undefined for normal behaviour @@ -47,7 +47,10 @@ $(OBJS_DIR)/%$(OBJECT_FILE_EXT): %.cc $(OBJS_DIR)/%$(OBJECT_FILE_EXT): %.c $(CC) -c $(COMP_OUT_FLAG)$@ $(CFLAGS) $(PICFLAGS) $(PDB_FLAGS) $(CPPFLAGS) $(if $(MAKE_PREFIX_SRC_PATH), $(shell pwd)/)$< -$(OBJS_DIR)/%.plist: %.cc +$(OBJS_DIR)/%.plist: $(CPP_SRC_HOME)/gradle.properties $(CPP_SRC_HOME)/mk/make_info_plist.sh + $(CPP_SRC_HOME)/mk/make_info_plist.sh "$(ML_APP_NAME)" false > $@ + +$(OBJS_DIR)/%.xml: %.cc $(CXX) $(ANALYZE_OUT_FLAG)$@ $(ANALYZEFLAGS) $(filter-out -DNDEBUG, $(CPPFLAGS)) $(if $(MAKE_PREFIX_SRC_PATH), $(shell pwd)/)$< # JOB_NAME will be set for builds kicked off by Jenkins, where dependency diff --git a/mk/staticlib.mk b/mk/staticlib.mk index 8e2658a88a..489b95f59b 100644 --- a/mk/staticlib.mk +++ b/mk/staticlib.mk @@ -33,5 +33,5 @@ install: build: $(TARGET) clean: - $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb + $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.xml $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb +$(CLEAN_CMDS) diff --git a/mk/stdapp.mk b/mk/stdapp.mk index 93cfc802b0..f17449c619 100644 --- a/mk/stdapp.mk +++ b/mk/stdapp.mk @@ -11,12 +11,12 @@ PICFLAGS=$(PLATPIEFLAGS) LIBS:=$(LOCALLIBS) $(LIB_ML_VER) $(LIB_ML_SECCOMP) $(LIBS) ifndef INSTALL_DIR -INSTALL_DIR=$(CPP_PLATFORM_HOME)/bin +INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(EXE_DIR) endif ifndef CONF_INSTALL_DIR ifdef TARGET_CONF -CONF_INSTALL_DIR=$(CPP_DISTRIBUTION_HOME)/resources +CONF_INSTALL_DIR=$(CPP_PLATFORM_HOME)/$(RESOURCES_DIR) endif endif @@ -28,8 +28,8 @@ ifdef TARGET_CONF #CONF_INSTALL_CMD=$(MKDIR) $(CONF_INSTALL_DIR); $(INSTALL) $(TARGET_CONF) $(CONF_INSTALL_DIR) endif -$(TARGET): $(OBJS) $(RESOURCE_FILE) - $(CXX) $(LINK_OUT_FLAG)$@ $(PDB_FLAGS) $(OBJS) $(RESOURCE_FILE) $(LDFLAGS) $(LIBS) +$(TARGET): $(OBJS) $(RESOURCE_FILE) $(PLIST_FILE) + $(CXX) $(LINK_OUT_FLAG)$@ $(PDB_FLAGS) $(OBJS) $(RESOURCE_FILE) $(LDFLAGS) $(PLIST_FILE_LDFLAGS) $(LIBS) test: +$(TEST_CMDS) @@ -58,7 +58,7 @@ build: $(TARGET) $(MAKE) -f $(filter-out %.mk %.d,$(MAKEFILE_LIST)) install clean: - $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp + $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.xml $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp +$(CLEAN_CMDS) $(RMDIR) results diff --git a/mk/stdcpptest.mk b/mk/stdcpptest.mk index 8119344256..e7e563651e 100644 --- a/mk/stdcpptest.mk +++ b/mk/stdcpptest.mk @@ -24,7 +24,7 @@ $(TARGET): $(OBJS) $(RESOURCE_FILE) build: $(TARGET) clean: - $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp cppunit_results.xml + $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.xml $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp cppunit_results.xml $(RMDIR) results $(RMDIR) data diff --git a/mk/stddevapp.mk b/mk/stddevapp.mk index 76994b635c..d351b4f731 100644 --- a/mk/stddevapp.mk +++ b/mk/stddevapp.mk @@ -12,8 +12,8 @@ LDFLAGS:=$(UTLDFLAGS) $(LDFLAGS) $(LIB_PATH) $(ML_VER_LDFLAGS) PICFLAGS=$(PLATPIEFLAGS) LIBS:=$(LOCALLIBS) $(LIB_ML_VER) $(LIBS) -$(TARGET): $(OBJS) $(RESOURCE_FILE) - $(CXX) $(LINK_OUT_FLAG)$@ $(PDB_FLAGS) $(OBJS) $(RESOURCE_FILE) $(LDFLAGS) $(LIBS) +$(TARGET): $(OBJS) $(RESOURCE_FILE) $(PLIST_FILE) + $(CXX) $(LINK_OUT_FLAG)$@ $(PDB_FLAGS) $(OBJS) $(RESOURCE_FILE) $(LDFLAGS) $(PLIST_FILE_LDFLAGS) $(LIBS) test: +$(TEST_CMDS) @@ -38,7 +38,7 @@ build: $(TARGET) $(MAKE) -f $(filter-out %.mk %.d,$(MAKEFILE_LIST)) install clean: - $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp + $(RM) $(OBJS_DIR)/*$(OBJECT_FILE_EXT) $(OBJS_DIR)/*.d* $(OBJS_DIR)/*.plist $(OBJS_DIR)/*.xml $(OBJS_DIR)/*.res $(APP_CLEAN) core core.* $(TARGET) $(basename $(TARGET)).pdb $(basename $(TARGET)).map $(basename $(TARGET)).exp +$(CLEAN_CMDS) $(RMDIR) results diff --git a/mk/windows.mk b/mk/windows.mk index a6d785e2f5..1e16b61eb0 100644 --- a/mk/windows.mk +++ b/mk/windows.mk @@ -56,6 +56,18 @@ AR_OUT_FLAG=-OUT: # do then we'll rebuild everything from scratch DEP_FILTER= 2>/dev/null | egrep "^.line .*(\\.h|$<)" | tr -s '\\\\' '/' | awk -F'"' '{ print $$2 }' | egrep -i -v "usr.local|$(LOCAL_DRIVE)..progra" | sed 's~/[a-z]*/\.\./~/~g' | sort -f -u | sort -t. -k2 | tr '\r\n\t' ' ' | sed 's/ / /g' | sed 's/^ //' | sed 's/ $$//' DEP_REFORMAT=sed 's,$<,$(basename $@)$(OBJECT_FILE_EXT) $@ : $<,' +OBJECT_FILE_EXT=.obj +EXE_EXT=.exe +EXE_DIR=bin +DYNAMIC_LIB_EXT=.dll +DYNAMIC_LIB_DIR=bin +IMPORT_LIB_DIR=lib +RESOURCE_FILE=$(OBJS_DIR)/ml.res +STATIC_LIB_EXT=.lib +SHELL_SCRIPT_EXT=.bat +# This temp directory assumes we're running in a Unix-like shell such as Git bash +UT_TMP_DIR=/tmp +RESOURCES_DIR=resources LOCALLIBS=AdvAPI32.lib shell32.lib Version.lib NETLIBS=WS2_32.lib BOOSTVER=1_65_1 @@ -83,16 +95,6 @@ ZLIBLIBS=zdll.lib STRPTIMELIBS=strptime.lib EXELDFLAGS=-nologo -Zi $(CRT_OPT) -link -MAP -OPT:REF -SUBSYSTEM:CONSOLE,6.1 -STACK:0x800000 -INCREMENTAL:NO -LIBPATH:$(CPP_PLATFORM_HOME)/$(IMPORT_LIB_DIR) UTLDFLAGS=$(EXELDFLAGS) -OBJECT_FILE_EXT=.obj -DYNAMIC_LIB_EXT=.dll -DYNAMIC_LIB_DIR=bin -IMPORT_LIB_DIR=lib -RESOURCE_FILE=$(OBJS_DIR)/ml.res -STATIC_LIB_EXT=.lib -SHELL_SCRIPT_EXT=.bat -# This temp directory assumes we're running in a Unix-like shell such as Git bash -UT_TMP_DIR=/tmp -EXE_EXT=.exe INSTALL=cp CP=cp RC=rc -nologo diff --git a/set_env.sh b/set_env.sh index cce2110062..f2e4cdaf99 100755 --- a/set_env.sh +++ b/set_env.sh @@ -23,26 +23,19 @@ export CPP_SRC_HOME=`cd "$MY_DIR" && pwd` case `uname` in Darwin) - SIMPLE_PLATFORM=macosx + SIMPLE_PLATFORM=macos BUNDLE_PLATFORM=darwin-x86_64 ;; Linux) - if ldd --version 2>&1 | grep musl > /dev/null ; then - SIMPLE_PLATFORM=linux-musl - BUNDLE_PLATFORM=linux-musl-x86_64 + SIMPLE_PLATFORM=linux + if [ -z "$CPP_CROSS_COMPILE" ] ; then + BUNDLE_PLATFORM=linux-x86_64 + elif [ "$CPP_CROSS_COMPILE" = macosx ] ; then + BUNDLE_PLATFORM=darwin-x86_64 else - SIMPLE_PLATFORM=linux - if [ -z "$CPP_CROSS_COMPILE" ] ; then - BUNDLE_PLATFORM=linux-x86_64 - else - if [ "$CPP_CROSS_COMPILE" = macosx ] ; then - BUNDLE_PLATFORM=darwin-x86_64 - else - echo "Cannot cross compile to $CPP_CROSS_COMPILE" - exit 1 - fi - fi + echo "Cannot cross compile to $CPP_CROSS_COMPILE" + exit 1 fi ;; @@ -102,7 +95,7 @@ case $SIMPLE_PLATFORM in PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin ;; - macosx) + macos) PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin ;; @@ -159,7 +152,7 @@ case $SIMPLE_PLATFORM in MAKE=`which make` ;; - macosx|windows) + macos|windows) MAKE=`which gnumake` ;;