# CONFIG.darwinCommon.darwinCommon
#
# $Revision-Id$
# This file is maintained by the build community.
#
# Common definitions for darwin builds
# Sites may override these definitions in CONFIG_SITE.darwinCommon.darwinCommon
#-------------------------------------------------------

# Include definitions common to all Unix targets
include $(CONFIG)/os/CONFIG.Common.UnixCommon

# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon

#
# Set OS-specific information
#
OS_CLASS = Darwin

#
# Build architecture flags
#   For Darwin, ARCH_CLASS may be empty, or may contain a list of CPU
#   architectures which must be valid arguments to the -arch options
#   for the cc and ld commands.
#   ARCH_CLASS is defined in a CONFIG_SITE file which is not loaded
#   until after this file.
#
ARCH_DEP_FLAGS = $(addprefix -arch ,$(ARCH_CLASS))
ARCH_DEP_CFLAGS += $(ARCH_DEP_FLAGS)
ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)

#
# Special flags for Darwin
#   No common blocks (as required when using shared libraries)
#
OP_SYS_CFLAGS += -fno-common

#
# Don't try to use precompiled headers when converting sequencer files
#
CPPSNCFLAGS += -no-cpp-precomp

#
# Darwin os definition
#
OP_SYS_CPPFLAGS += -Ddarwin

#
# Always compile in debugging symbol table information
#
OPT_CFLAGS_YES += -g
OPT_CXXFLAGS_YES += -g

#
# The following two definitions enable the use of DarwinPorts packages.
#
OP_SYS_INCLUDES += -I/opt/local/include
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
OP_SYS_LDFLAGS +=  $(addprefix -L,$(dir $(firstword $(wildcard /opt/local/lib/*))))

#
# The following two definitions enable the use of Fink packages.
#
OP_SYS_INCLUDES += -I/sw/include
# dir/firstword/wildcard used to avoid warning -L: directory name (...) does not exist
OP_SYS_LDFLAGS +=  $(addprefix -L,$(dir $(firstword $(wildcard /sw/lib/*))))

#
# Libraries for command-line editing.
#
LDLIBS_READLINE = -lreadline

#
# Command-line input support
#
COMMANDLINE_LIBRARY=READLINE

GNU_DIR = /usr

CC = $(GNU_BIN)/cc
CCC = $(GNU_BIN)/c++

#
# Darwin shared libraries
#
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
       -install_name $(shell perl $(TOOLS)/fullPathName.pl $(INSTALL_LIB))/$@ \
       -compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
       -current_version $(SHRLIB_VERSION)
SHRLIB_SUFFIX = .$(SHRLIB_VERSION).dylib

LOADABLE_SHRLIB_LDFLAGS = -bundle -flat_namespace -undefined suppress

#
# Position-independent code is the default on Darwin.
#
CODE_CFLAGS = 
CODE_CXXFLAGS = 

#
# Add support for Objective-C source
#
vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
%.o: %.m
	$(COMPILE.c) -c $<

#
# Header dependency file generation
#
# Use GNU compiler flags when ARCH_CLASS is a single arch value
# otherwise use perl script command
SINGLE_ARCH=$(filter 1,$(words $(ARCH_CLASS)))
HDEPENDS_CFLAGS = $(if $(SINGLE_ARCH),$(HDEPENDS_CFLAGS_$(HDEPENDS)))
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),CFLAGS,CMD)

#--------------------------------------------------
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.darwinCommon.darwinCommon
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).darwinCommon
