diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2012-05-02 08:06:02 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2012-05-02 08:06:02 -0700 |
commit | c3e638087673f0f4b7a751685a97b7830a8d9a18 (patch) | |
tree | dfc366ef00d9df26f09931e959fbeb100931ccc4 /src/Makefile | |
parent | 6c04ca8c874a7407154520f8e78698b6e27206e7 (diff) |
302.07302.07
Diffstat (limited to 'src/Makefile')
-rw-r--r-- | src/Makefile | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..c7e79b3 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,174 @@ +# +# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix +# and Linux systems. +# +# Copyright (C) 2008-2012 NVIDIA Corporation. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms and conditions of the GNU General Public License, +# version 2, as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses>. +# + + +############################################################################## +# include common variables and functions +############################################################################## + +UTILS_MK_DIR ?= .. + +include $(UTILS_MK_DIR)/utils.mk + + +############################################################################## +# The calling Makefile may export any of the following variables; we +# assign default values if they are not exported by the caller +############################################################################## + +ifndef X_LDFLAGS + ifeq ($(TARGET_OS)-$(TARGET_ARCH),Linux-x86_64) + X_LDFLAGS = -L/usr/X11R6/lib64 + else + X_LDFLAGS = -L/usr/X11R6/lib + endif +endif + +X_CFLAGS ?= + +GL_INCLUDE_PATH ?= /usr/include + +PKG_CONFIG ?= pkg-config + +ifndef GTK_CFLAGS + GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-2.0) +endif + +ifndef GTK_LDFLAGS + GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0) +endif + + +############################################################################## +# The XF86Config-parser, libXNVCtrl, and common-utils directories may +# be in one of two places: either elsewhere in the driver source tree +# when building nvidia-settings as part of the NVIDIA driver build (in +# which case, XNVCTRL_DIR, XNVCTRL_ARCHIVE, XCONFIG_PARSER_DIR and +# COMMON_UTILS_DIR should be defined by the calling makefile), or +# directly in the source directory when building from the +# nvidia-settings source tarball (in which case, the below conditional +# assignments should be used) +############################################################################## + +XNVCTRL_DIR ?= libXNVCtrl +XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a +XCONFIG_PARSER_DIR ?= XF86Config-parser +COMMON_UTILS_DIR ?= common-utils + +############################################################################## +# assign variables +############################################################################## + +NVIDIA_SETTINGS = $(OUTPUTDIR)/nvidia-settings + +NVIDIA_SETTINGS_PROGRAM_NAME = "nvidia-settings" + +NVIDIA_SETTINGS_VERSION := $(NVIDIA_VERSION) + +CFLAGS += $(X_CFLAGS) + +ifeq ($(TARGET_OS),SunOS) + LDFLAGS += -Wl,-rpath=/usr/X11R6/lib +endif + +LDFLAGS += $(X_LDFLAGS) + +# Some older Linux distributions do not have the dynamic library +# libXxf86vm.so, though some newer Linux distributions do not have the +# static library libXxf86vm.a. Statically link against libXxf86vm +# when building nvidia-settings within the NVIDIA driver build, but +# dynamically link against libXxf86vm in the public builds. +ifdef NV_LINK_LIBXXF86VM_STATICALLY + LIBS += -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic +else + LIBS += -lXxf86vm +endif + +# Preferably, we would use pkg-config's "--libs-only-l" and +# "--libs-only-L" options to get separate GTK_LDFLAGS and GTK_LIBS, +# appending them to LDFLAGS and LIBS, respectively. However, the +# pkg-config(1) man page cautions: +# +# [...] Note that the union of "--libs-only-l" and +# "--libs-only-L" may be smaller than "--libs", due to flags such +# as -rdynamic. +# +# So append all of GTK_LDFLAGS to LIBS, so that LIBS can go after +# $(OBJECTS) on the link commandline, causing libraries for linking to +# be named after the objects that depend on those libraries (needed +# for "--as-needed" linker behavior). +LIBS += -lX11 -lXext -lm $(LIBDL_LIBS) $(GTK_LDFLAGS) + +# Include all the source lists; dist-files.mk will define NVIDIA_SETTINGS_SRC +include src.mk +SRC += $(NVIDIA_SETTINGS_SRC) + +include $(XCONFIG_PARSER_DIR)/src.mk +SRC += $(addprefix $(XCONFIG_PARSER_DIR)/,$(XCONFIG_PARSER_SRC)) + +include $(COMMON_UTILS_DIR)/src.mk +SRC += $(addprefix $(COMMON_UTILS_DIR)/,$(COMMON_UTILS_SRC)) + +SRC += $(STAMP_C) + +OBJS = $(call BUILD_OBJECT_LIST,$(SRC)) + +CFLAGS += -I . +CFLAGS += -I image_data +CFLAGS += -I $(XNVCTRL_DIR) +CFLAGS += -I $(XCONFIG_PARSER_DIR)/.. +CFLAGS += -I libXNVCtrlAttributes +CFLAGS += -I xpm_data +CFLAGS += -I gtk+-2.x +CFLAGS += -I $(COMMON_UTILS_DIR) +CFLAGS += -I $(OUTPUTDIR) +CFLAGS += -DPROGRAM_NAME=\"nvidia-setttings\" + +$(call BUILD_OBJECT_LIST,$(GTK_SRC)): CFLAGS += $(GTK_CFLAGS) + + +############################################################################## +# build rules +############################################################################## + +.PNONY: all install NVIDIA_SETTINGS_install clean clobber + +all: $(NVIDIA_SETTINGS) + +install: NVIDIA_SETTINGS_install + +NVIDIA_SETTINGS_install: $(NVIDIA_SETTINGS) + $(MKDIR) $(BINDIR) + $(INSTALL) $(INSTALL_BIN_ARGS) $< $(BINDIR)/$(notdir $<) + +$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE) + $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) -o $@ $(OBJS) \ + $(XNVCTRL_ARCHIVE) $(LIBS) + $(call quiet_cmd,STRIP_CMD) $@ + +# define the rule to build each object file +$(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,CC,$(src)))) + +# define the rule to generate $(STAMP_C) +$(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME))) + +clean clobber: + rm -rf $(NVIDIA_SETTINGS) *~ $(STAMP_C) \ + $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d + |