mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
make/Makefile, defs-cpp.mk, platform.mk: Generalize MinGW build machinery (a bit)
This commit takes the MinGW cross compilation further into the direction of being a more general framework for cross compilation. Changed some variable names that are too specialized, notably MinGW tool chain directories, compilers, utilities. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
59da607e12
commit
bf9bb79246
3 changed files with 81 additions and 88 deletions
150
make/defs-cpp.mk
150
make/defs-cpp.mk
|
|
@ -3,17 +3,17 @@ CREATE_DEVEL ?= true
|
|||
#COMPILER_SUITE ?= clang
|
||||
COMPILER_SUITE ?= gcc
|
||||
|
||||
ifeq ($(ARCH),$(ARCH_32))
|
||||
ifeq ($(TARGET_ARCH),$(ARCH_32))
|
||||
PROJECT_CFLAGS += -m32
|
||||
PROJECT_CPPFLAGS += -m32
|
||||
PROJECT_LDFLAGS += -m32
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),armv7hl)
|
||||
ifeq ($(TARGET_ARCH),armv7hl)
|
||||
PROJECT_CFLAGS += -fPIC
|
||||
PROJECT_CPPFLAGS += -fPIC
|
||||
PROJECT_LDFLAGS +=
|
||||
else ifeq ($(ARCH),aarch64)
|
||||
else ifeq ($(TARGET_ARCH),aarch64)
|
||||
PROJECT_CFLAGS += -fPIC
|
||||
PROJECT_CPPFLAGS += -fPIC
|
||||
PROJECT_LDFLAGS +=
|
||||
|
|
@ -68,42 +68,56 @@ ifeq ($(USE_VERSION_MACROS),true)
|
|||
BUILD_CPPFLAGS += -DVERSION=$(HEX_VERSION) -DVERSION_STR=\"$(VERSION)\"
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),mingw)
|
||||
ifneq ($(wildcard /usr/bin/i686-w64-mingw32-gcc),)
|
||||
PROJECT_CFLAGS += -D_WINDOWS
|
||||
PROJECT_CPPFLAGS += -D_WINDOWS
|
||||
TC_SYS_ROOT ?= /usr/i686-w64-mingw32/sys-root/mingw
|
||||
CROSS_TOOL_DIR ?=
|
||||
CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/usr/bin/i686-w64-mingw32-
|
||||
PROJECT_LDFLAGS += -L$(TC_SYS_ROOT)/lib
|
||||
PROJECT_CFLAGS += -I$(TC_SYS_ROOT)/include
|
||||
PROJECT_CPPFLAGS += -I$(TC_SYS_ROOT)/include
|
||||
else
|
||||
CROSS_TOOL_DIR ?= /opt/cross-tools
|
||||
CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32-
|
||||
endif
|
||||
GCC ?= $(CROSS_TOOL_BIN_PREFIX)gcc
|
||||
GPP ?= $(CROSS_TOOL_BIN_PREFIX)g++
|
||||
LD ?= $(CROSS_TOOL_BIN_PREFIX)ld
|
||||
CLANG ?= $(CROSS_TOOL_BIN_PREFIX)clang
|
||||
CLANGPP ?= $(CROSS_TOOL_BIN_PREFIX)clang++
|
||||
STRIP ?= $(CROSS_TOOL_BIN_PREFIX)strip
|
||||
RANLIB ?= $(CROSS_TOOL_BIN_PREFIX)ranlib
|
||||
AR ?= $(CROSS_TOOL_BIN_PREFIX)ar
|
||||
WINDRES ?= $(CROSS_TOOL_BIN_PREFIX)windres
|
||||
BUILD_LDFLAGS += -lws2_32
|
||||
USE_GFILTER ?= false
|
||||
MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE
|
||||
else
|
||||
GCC ?= gcc
|
||||
GPP ?= g++
|
||||
LD ?= ld
|
||||
CLANG ?= clang
|
||||
CLANGPP ?= clang++
|
||||
STRIP ?= strip
|
||||
RANLIB ?= ranlib
|
||||
AR ?= ar
|
||||
endif # ifeq ($(TARGET),mingw)
|
||||
# ----- tool chain
|
||||
|
||||
ifneq ($(TARGET_TRIPLET),$(HOST_TRIPLET)) # we're cross-compiling
|
||||
|
||||
TC_BIN_PREFIX = $(TARGET_TRIPLET)-
|
||||
TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET)
|
||||
PROJECT_LDFLAGS += -L$(TC_SYS_ROOT)/lib
|
||||
PROJECT_CFLAGS += -I$(TC_SYS_ROOT)/include
|
||||
PROJECT_CPPFLAGS += -I$(TC_SYS_ROOT)/include
|
||||
|
||||
ifeq ($(TARGET),mingw)
|
||||
|
||||
ifneq ($(wildcard $(TC_BIN_PREFIX)gcc),)
|
||||
PROJECT_CFLAGS += -D_WINDOWS
|
||||
PROJECT_CPPFLAGS += -D_WINDOWS
|
||||
TC_SYS_ROOT ?= /usr/$(TARGET_TRIPLET)/sys-root/mingw
|
||||
CROSS_TOOL_DIR ?=
|
||||
else
|
||||
CROSS_TOOL_DIR ?= /opt/cross-tools
|
||||
TC_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32-
|
||||
endif
|
||||
WINDRES ?= $(TC_BIN_PREFIX)windres
|
||||
BUILD_LDFLAGS += -lws2_32
|
||||
USE_GFILTER ?= false
|
||||
MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE
|
||||
endif # ifeq ($(TARGET),mingw)
|
||||
|
||||
else # we're not cross-compiling
|
||||
|
||||
TC_SYS_ROOT ?= /usr
|
||||
LIBFLAGS += -ldl -lpthread
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_ARCH),x86_64)
|
||||
BUILD_CFLAGS += -fPIC
|
||||
BUILD_CPPFLAGS += -fPIC
|
||||
LIBFLAGS +=
|
||||
endif
|
||||
|
||||
GCC ?= $(TC_BIN_PREFIX)gcc
|
||||
GPP ?= $(TC_BIN_PREFIX)g++
|
||||
CPP ?= $(GPP)
|
||||
LD ?= $(TC_BIN_PREFIX)ld
|
||||
CLANG ?= $(TC_BIN_PREFIX)clang
|
||||
CLANGPP ?= $(TC_BIN_PREFIX)clang++
|
||||
STRIP ?= $(TC_BIN_PREFIX)strip
|
||||
RANLIB ?= $(TC_BIN_PREFIX)ranlib
|
||||
AR ?= $(TC_BIN_PREFIX)ar
|
||||
PKG_CONFIG ?= $(TC_BIN_PREFIX)pkg-config
|
||||
|
||||
# compiler and linker
|
||||
# gcc
|
||||
|
|
@ -199,18 +213,10 @@ endif
|
|||
|
||||
LPPFLAGS += -lstdc++
|
||||
|
||||
ifeq ($(ARCH),x86_64)
|
||||
ifneq ($(TARGET),mingw)
|
||||
BUILD_CFLAGS += -fPIC
|
||||
BUILD_CPPFLAGS+= -fPIC
|
||||
LIBFLAGS +=
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(GCC_MAJOR),2)
|
||||
LPPFLAGS += -lm
|
||||
BUILD_CFLAGS += -I/usr/local/include
|
||||
BUILD_CPPFLAGS += -I/usr/local/include
|
||||
LPPFLAGS += -lm
|
||||
BUILD_CFLAGS += -I/usr/local/include
|
||||
BUILD_CPPFLAGS += -I/usr/local/include
|
||||
else
|
||||
ifeq ($(GCC_MAJOR),3)
|
||||
ifeq ($(GCC_MINOR),3)
|
||||
|
|
@ -221,10 +227,10 @@ else
|
|||
endif
|
||||
|
||||
ifeq ($(TARGET),mingw)
|
||||
BUILD_CFLAGS += -DWIN32
|
||||
BUILD_CPPFLAGS += -DWIN32
|
||||
# see https://stackoverflow.com/questions/4492799
|
||||
BUILD_LDFLAGS += -fstack-protector
|
||||
BUILD_CFLAGS += -DWIN32
|
||||
BUILD_CPPFLAGS += -DWIN32
|
||||
# see https://stackoverflow.com/questions/4492799
|
||||
BUILD_LDFLAGS += -fstack-protector
|
||||
endif
|
||||
|
||||
ifeq ($(LIBTYPE),shared)
|
||||
|
|
@ -242,8 +248,6 @@ ifeq ($(LOG_THREAD_NAMES), true)
|
|||
BUILD_CPPFLAGS+= -DSLOG_THREAD_NAMES
|
||||
endif
|
||||
|
||||
CPP ?= g++
|
||||
|
||||
# ----- standard features, switched on with USE_XXX = true
|
||||
|
||||
#include $(MODDIR)/make/lib-deps.mk
|
||||
|
|
@ -273,14 +277,14 @@ endif
|
|||
|
||||
ifneq ($(filter jw-build,$(PREREQ_BUILD)),)
|
||||
ifeq ($(TARGET),mingw)
|
||||
JW_BUILD_LDFLAGS += -lglib-2.0 -lws2_32 -lstdc++
|
||||
JW_BUILD_LDFLAGS += -lglib-2.0 -lws2_32 -lstdc++
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(USE_SYSTEMD),true)
|
||||
BUILD_CFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd)
|
||||
BUILD_CPPFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd)
|
||||
BUILD_LDFLAGS += $(shell pkg-config --libs libsystemd)
|
||||
BUILD_CFLAGS += -D_USE_SYSTEMD_ $(shell $(PKG_CONFIG) --cflags libsystemd)
|
||||
BUILD_CPPFLAGS += -D_USE_SYSTEMD_ $(shell $(PKG_CONFIG) --cflags libsystemd)
|
||||
BUILD_LDFLAGS += $(shell $(PKG_CONFIG) --libs libsystemd)
|
||||
endif
|
||||
|
||||
ifeq ($(USE_TIMER),true)
|
||||
|
|
@ -399,11 +403,9 @@ ifeq ($(CC),$(GCC))
|
|||
-fno-tree-loop-optimize \
|
||||
-fno-early-inlining \
|
||||
-fno-default-inline
|
||||
else
|
||||
ifeq ($(CC),$(CLANG))
|
||||
BUILD_CFLAGS += -Werror
|
||||
BUILD_CPPFLAGS += -Werror
|
||||
endif
|
||||
else ifeq ($(CC),$(CLANG))
|
||||
BUILD_CFLAGS += -Werror
|
||||
BUILD_CPPFLAGS += -Werror
|
||||
endif
|
||||
|
||||
ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true)
|
||||
|
|
@ -475,21 +477,9 @@ ifeq ($(USE_FFTW),true)
|
|||
endif
|
||||
|
||||
ifeq ($(USE_GLIB),true)
|
||||
ifneq ($(TARGET),mingw)
|
||||
PROJECT_CFLAGS += $(shell pkg-config --cflags glib-2.0)
|
||||
PROJECT_CPPFLAGS += $(shell pkg-config --cflags glib-2.0)
|
||||
LIBFLAGS += $(shell pkg-config --libs glib-2.0)
|
||||
LIBFLAGS += -ldl -lpthread
|
||||
else
|
||||
ifneq ($(wildcard $(CROSS_TOOL_DIR)/include/glib-2.0),)
|
||||
INCLUDE += -I$(CROSS_TOOL_DIR)/include/glib-2.0 -I$(CROSS_TOOL_DIR)/lib/glib-2.0/include
|
||||
LIBFLAGS += -lglib-2.0
|
||||
else
|
||||
PROJECT_CFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0)
|
||||
PROJECT_CPPFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0)
|
||||
LIBFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --libs glib-2.0)
|
||||
endif
|
||||
endif
|
||||
PROJECT_CFLAGS += $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
||||
PROJECT_CPPFLAGS += $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
||||
LIBFLAGS += $(shell $(PKG_CONFIG) --libs glib-2.0)
|
||||
endif
|
||||
|
||||
ifeq ($(CC),$(CLANG))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue