osxcross/wrapper/Makefile
Alexey Brodkin 1900351515 Fix building on CentOS 7.x
With C++14 the following error happens on CentOS 7.x:
==================================
$ clang++ -std=c++1y -Wall -Wextra -pedantic -Wno-missing-field-initializers \
          -I. -O2 -DOSXCROSS_VERSION="\"1.2\"" -DOSXCROSS_TARGET="\"darwin14\"" \
          -DOSXCROSS_OSX_VERSION_MIN="\"10.6\"" -DOSXCROSS_LINKER_VERSION="\"530\"" \
          -DOSXCROSS_LIBLTO_PATH="\"/usr/lib64/llvm\"" \
          -DOSXCROSS_BUILD_DIR="\"/osxcross/build\""  -isystem quirks/include \
          -c -o target.o target.cpp
In file included from target.cpp:24:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/iostream:39:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/ostream:38:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/ios:42:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/bits/ios_base.h:41:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/bits/locale_classes.h:40:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/string:52:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/bits/basic_string.h:2815:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/ext/string_conversions.h:43:
/usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/cstdio:120:11: error: no member named 'gets' in the global namespace
  using ::gets;
        ~~^
1 error generated.
==================================

That's a known issue with older C++ headers, see https://bugs.llvm.org/show_bug.cgi?id=30277

With C++11 we then get another problem:
==================================
$ clang++ -std=c++0x -Wall -Wextra -pedantic -Wno-missing-field-initializers \
          -I. -O2 -DOSXCROSS_VERSION="\"1.2\"" -DOSXCROSS_TARGET="\"darwin14\"" \
          -DOSXCROSS_OSX_VERSION_MIN="\"10.6\"" -DOSXCROSS_LINKER_VERSION="\"530\"" \
          -DOSXCROSS_LIBLTO_PATH="\"/usr/lib64/llvm\"" \
          -DOSXCROSS_BUILD_DIR="\"/osxcross/build\""  -isystem quirks/include \
          -c -o programs/osxcross-conf.o programs/osxcross-conf.cpp

programs/osxcross-conf.cpp:50:49: error: 'auto' not allowed in lambda parameter
  static auto print = [](const char *var, const auto &val) {
                                                ^~~~
programs/osxcross-conf.cpp:50:55: warning: unused parameter 'val' [-Wunused-parameter]
  static auto print = [](const char *var, const auto &val) {
                                                      ^
programs/osxcross-conf.cpp:54:3: error: no matching function for call to object of type '<lambda at programs/osxcross-conf.cpp:50:23>'
  print("VERSION", getOSXCrossVersion());
==================================

That last issue requires a move from a lambda to more ugly
template solution. But in the end we get all built!
2020-07-12 16:36:52 +03:00

81 lines
1.8 KiB
Makefile

PLATFORM ?= $(shell uname -s)
OPTIMIZE ?= 2
LTO ?= 0
VERSION ?= unknown
TARGET ?= darwin12
OSX_VERSION_MIN ?= 10.5
LINKER_VERSION ?= 134.9
LIBLTO_PATH ?=
ADDITIONAL_CXXFLAGS ?=
override CXXFLAGS=-std=c++0x -Wall -Wextra
override CXXFLAGS+=-Wno-missing-field-initializers
override CXXFLAGS+=-I. -O$(OPTIMIZE)
ifeq ($(LTO), 1)
override CXXFLAGS+=-flto
endif
ifeq ($(OCDEBUG), 1)
override CXXFLAGS+=-g
endif
override CXXFLAGS+=-DOSXCROSS_VERSION="\"$(VERSION)\""
override CXXFLAGS+=-DOSXCROSS_TARGET="\"$(TARGET)\""
override CXXFLAGS+=-DOSXCROSS_OSX_VERSION_MIN="\"$(OSX_VERSION_MIN)\""
override CXXFLAGS+=-DOSXCROSS_LINKER_VERSION="\"$(LINKER_VERSION)\""
override CXXFLAGS+=-DOSXCROSS_LIBLTO_PATH="\"$(LIBLTO_PATH)\""
override CXXFLAGS+=-DOSXCROSS_BUILD_DIR="\"$(BUILD_DIR)\""
override CXXFLAGS+= $(ADDITIONAL_CXXFLAGS)
ifneq (,$(findstring FreeBSD, $(PLATFORM)))
override LDFLAGS+=-lutil
else ifneq (,$(findstring Darwin, $(PLATFORM)))
override CXXFLAGS+=-Wno-deprecated
override LDFLAGS+=-framework CoreServices -Wno-deprecated
else ifneq (,$(findstring CYGWIN, $(PLATFORM)))
# -std=gnu++0x doesn't work, so work around...
override CXXFLAGS+=-U__STRICT_ANSI__
else
ifeq (,$(findstring Windows, $(PLATFORM)))
ifeq (,$(findstring OpenBSD, $(PLATFORM)))
override LDFLAGS+=-lrt
endif
endif
endif
BIN=wrapper
SRCS= \
main.cpp \
tools.cpp \
target.cpp \
programs/osxcross-version.cpp \
programs/osxcross-env.cpp \
programs/osxcross-conf.cpp \
programs/osxcross-cmp.cpp \
programs/osxcross-man.cpp \
programs/sw_vers.cpp \
programs/pkg-config.cpp \
programs/xcrun.cpp \
programs/xcodebuild.cpp \
programs/dsymutil.cpp
OBJS=$(subst .cpp,.o,$(SRCS))
all: wrapper
wrapper: $(OBJS)
$(CXX) $(CXXFLAGS) -o wrapper $(OBJS) $(LDFLAGS)
.PHONY: clean
clean:
rm -f $(BIN) $(OBJS)
-include $(SRCS:cpp=d)