Browse Source

Makefile: define CFLAGS directly in place of CUDD_XCFLAGS

In the top-level makefile, CFLAGS is defined in terms of CUDD_XCFLAGS on
every OS and architecture; the only difference between them is that
CFLAGS incorporates the value of OPTIMISE, whereas CUDD_XCFLAGS doesn't.
This is because the CUDD makefile draws a distinction between
"machine-independent flags" (ICFLAGS) and "machine-dependent flags"
(XCFLAGS), and the optimisation level is a machine-independent flag. The
same is true of DEBUG (-g) and WARNINGS (-Ox), but for some reason they
aren't treated the same way as OPTIMISE.

Rather than defining CFLAGS in terms of CUDD_XCFLAGS, do the following:

* define CFLAGS directly;
* remove CUDD_XCFLAGS;
* define ICFLAGS and XCFLAGS in the CUDD-related targets in terms of the
  relevant flags in CFLAGS - i.e., extract the values (if any) of DEBUG,
  OPTIMISE and WARNINGS from CFLAGS and pass them to the CUDD makefile
  as ICFLAGS, and whatever's left as XCFLAGS.

This will also help to standardise the compiler flags used across all
the libraries (e.g., currently CUDD is compiled with -g but nothing else
is).

The use of $(filter-out) means that weird things might happen if DEBUG,
OPTIMISE or WARNINGS ever contain % symbols, but this (hopefully) isn't
likely...
accumulation-v4.7
Chris Novakovic 7 years ago
committed by Dave Parker
parent
commit
02ef2ff1ef
  1. 68
      prism/Makefile

68
prism/Makefile

@ -150,19 +150,23 @@ export CC CXX LD JAVAC JAVACC
# Flags etc. # # Flags etc. #
############## ##############
# Tell compiler to generate debug information?
# (WARNING: must not contain a % symbol!)
DEBUG = DEBUG =
#DEBUG = -g #DEBUG = -g
# Compiler optimisation level:
# (WARNING: must not contain a % symbol!)
OPTIMISE = -O3 OPTIMISE = -O3
#OPTIMISE = #OPTIMISE =
# warnings we'd like to get
# Compiler warnings to enable:
# (WARNING: must not contain a % symbol!)
WARNINGS = -Wformat WARNINGS = -Wformat
# Flags for compilation/linking # Flags for compilation/linking
# Flags to generate shared libraries # Flags to generate shared libraries
# Executable/library naming conventions # Executable/library naming conventions
# Option to pass to CUDD makefile
# Suffix for binary distribution directory # Suffix for binary distribution directory
# Place to look for (JNI) headers # Place to look for (JNI) headers
# (requires GNU make for conditional evaluation) # (requires GNU make for conditional evaluation)
@ -171,25 +175,22 @@ WARNINGS = -Wformat
ifeq ($(OSTYPE),linux) ifeq ($(OSTYPE),linux)
ifeq ($(ARCH),amd64) ifeq ($(ARCH),amd64)
# Position Independent Code required on AMD64/Itanium # Position Independent Code required on AMD64/Itanium
CUDD_XCFLAGS = -m64 -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -m64 -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS)
BINDISTSUFFIX = linux64 BINDISTSUFFIX = linux64
else else
ifeq ($(ARCH),ia64) ifeq ($(ARCH),ia64)
# Position Independent Code required on AMD64/Itanium # Position Independent Code required on AMD64/Itanium
# Note: We omit the -m64 flag from here since it seems to be unsupported by gcc on IA64 # Note: We omit the -m64 flag from here since it seems to be unsupported by gcc on IA64
CUDD_XCFLAGS = -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS)
BINDISTSUFFIX = linux64 BINDISTSUFFIX = linux64
else else
CUDD_XCFLAGS = -m32 -malign-double -DHAVE_IEEE_754 -DBSD $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -m32 -malign-double -DHAVE_IEEE_754 -DBSD $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS)
BINDISTSUFFIX = linux32 BINDISTSUFFIX = linux32
endif endif
endif endif
@ -205,10 +206,9 @@ ifeq ($(OSTYPE),linux)
endif endif
# Solaris # Solaris
ifeq ($(OSTYPE),solaris) ifeq ($(OSTYPE),solaris)
CUDD_XCFLAGS = -mcpu=ultrasparc -DHAVE_IEEE_754 -DUNIX100 -DEPD_BIG_ENDIAN $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -mcpu=ultrasparc -DHAVE_IEEE_754 -DUNIX100 -DEPD_BIG_ENDIAN $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS)
BINDISTSUFFIX = solaris BINDISTSUFFIX = solaris
BIN_TARGETS=prism.linux xprism.linux BIN_TARGETS=prism.linux xprism.linux
JFLAGS = -encoding UTF8 JFLAGS = -encoding UTF8
@ -222,18 +222,16 @@ endif
# Cygwin # Cygwin
ifeq ($(OSTYPE),cygwin) ifeq ($(OSTYPE),cygwin)
ifeq ($(ARCH),x86_64) ifeq ($(ARCH),x86_64)
CUDD_XCFLAGS = -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=268435456 -DHAVE_SYS_RESOURCE_H=0 -DHAVE_SYS_WAIT_H=0 -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=4 $(DEBUG) $(WARNINGS) -static-libgcc -static-libstdc++
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=268435456 -DHAVE_SYS_RESOURCE_H=0 -DHAVE_SYS_WAIT_H=0 -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=4 $(DEBUG) $(OPTIMISE) $(WARNINGS) -static-libgcc -static-libstdc++
# need -DWIN32 for lpsolve (WIN32 is only defined by mingw/gcc without --std=c++11) # need -DWIN32 for lpsolve (WIN32 is only defined by mingw/gcc without --std=c++11)
CXXFLAGS = --std=c++11 -DWIN32 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE) -Wl,--add-stdcall-alias -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive
CXXFLAGS = --std=c++11 -DWIN32 $(CFLAGS)
LDFLAGS = $(CFLAGS) -Wl,--add-stdcall-alias -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive
BINDISTSUFFIX = win64 BINDISTSUFFIX = win64
else else
CUDD_XCFLAGS = -march=i686 -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=268435456 -DHAVE_SYS_RESOURCE_H=0 -DHAVE_SYS_WAIT_H=0 $(DEBUG) $(WARNINGS) -static-libgcc -static-libstdc++
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CFLAGS = -march=i686 -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=268435456 -DHAVE_SYS_RESOURCE_H=0 -DHAVE_SYS_WAIT_H=0 $(DEBUG) $(OPTIMISE) $(WARNINGS) -static-libgcc -static-libstdc++
# need -DWIN32 for lpsolve (WIN32 is only defined by mingw/gcc without --std=c++11) # need -DWIN32 for lpsolve (WIN32 is only defined by mingw/gcc without --std=c++11)
CXXFLAGS = --std=c++11 -DWIN32 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE) -Wl,--add-stdcall-alias -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive
CXXFLAGS = --std=c++11 -DWIN32 $(CFLAGS)
LDFLAGS = $(CFLAGS) -Wl,--add-stdcall-alias -Wl,-Bstatic,--whole-archive -lpthread -Wl,-Bdynamic,--no-whole-archive
BINDISTSUFFIX = win32 BINDISTSUFFIX = win32
endif endif
BIN_TARGETS=prism.cygwin xprism.linux prism.bat.win xprism.bat.win BIN_TARGETS=prism.cygwin xprism.linux prism.bat.win xprism.bat.win
@ -249,17 +247,15 @@ endif
# Darwin # Darwin
ifeq ($(OSTYPE),darwin) ifeq ($(OSTYPE),darwin)
ifeq ($(ARCH),x86_64) ifeq ($(ARCH),x86_64)
CUDD_XCFLAGS = -arch x86_64 -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 -fno-common $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE) -Wl,-search_paths_first
CFLAGS = -arch x86_64 -fPIC -DPIC -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 -fno-common $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS) -Wl,-search_paths_first
BINDISTSUFFIX = osx64 BINDISTSUFFIX = osx64
BIN_TARGETS=prism.darwin64 xprism.linux BIN_TARGETS=prism.darwin64 xprism.linux
else else
CUDD_XCFLAGS = -arch i386 -DHAVE_IEEE_754 -DBSD -fno-common $(DEBUG) $(WARNINGS)
CFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE)
CXXFLAGS = --std=c++11 $(CUDD_XCFLAGS) $(OPTIMISE)
LDFLAGS = $(CUDD_XCFLAGS) $(OPTIMISE) -Wl,-search_paths_first
CFLAGS = -arch i386 -DHAVE_IEEE_754 -DBSD -fno-common $(DEBUG) $(OPTIMISE) $(WARNINGS)
CXXFLAGS = --std=c++11 $(CFLAGS)
LDFLAGS = $(CFLAGS) -Wl,-search_paths_first
BINDISTSUFFIX = osx32 BINDISTSUFFIX = osx32
BIN_TARGETS=prism.darwin32 xprism.linux BIN_TARGETS=prism.darwin32 xprism.linux
endif endif
@ -328,7 +324,7 @@ cuddpackage: checks
@(if [ ! -h $(CUDD_DIR) ]; then \ @(if [ ! -h $(CUDD_DIR) ]; then \
echo Making cudd ...; \ echo Making cudd ...; \
cd $(CUDD_DIR) && \ cd $(CUDD_DIR) && \
$(MAKE) XCFLAGS="$(CUDD_XCFLAGS)"; \
$(MAKE) ICFLAGS="$(DEBUG) $(OPTIMISE) $(WARNINGS)" XCFLAGS="$(filter-out $(DEBUG) $(OPTIMISE) $(WARNINGS),$(CFLAGS))"; \
else \ else \
echo Skipping cudd make since it is a symlink...; \ echo Skipping cudd make since it is a symlink...; \
fi) fi)
@ -337,7 +333,7 @@ cuddpackage: checks
cuddpackageforce: checks cuddpackageforce: checks
@echo Making cudd ...; \ @echo Making cudd ...; \
cd $(CUDD_DIR) && \ cd $(CUDD_DIR) && \
$(MAKE) XCFLAGS="$(CUDD_XCFLAGS)";
$(MAKE) ICFLAGS="$(DEBUG) $(OPTIMISE) $(WARNINGS)" XCFLAGS="$(filter-out $(DEBUG) $(OPTIMISE) $(WARNINGS),$(CFLAGS))"
# Use this to force a rebuild (with javacc) of the main parser # Use this to force a rebuild (with javacc) of the main parser
parser: parser:

Loading…
Cancel
Save