#-------------------------------------------------------------------------
# Copyright 2006 Kyle Turner.
#
# License is hereby granted to use this software and distribute it
# freely, as long as this copyright notice is retained and modifications
# are clearly marked.
#
# ALL WARRANTIES ARE HEREBY DISCLAIMED.
#
# $Id: //guest/kyle_turner/perforce/resolve/Makefile#1 $
#-------------------------------------------------------------------------
#
# GNUMakefile to build P4 API based applications on Linux and Windows.
#
# Usage: make P4API=<p4dir>
#
# Common modifications:
#
# P4API - Set to path where you have extracted the p4api for
# the platform.
#
# OS - Currently this file supports Linux/g++ and Windows/.Net
# with a very simplistic use of "uname". This may need
# some modifications depending on the operating system
# you are running.
#
# CPP - Modify for you compiler. On windows you will need to
# add several directories to your PATH environment
# variable so the linker finds the correct libraries.
#
#-------------------------------------------------------------------------
TARGET := resolve
SOURCES := \
help.cpp \
p4api.cpp \
resolve.cpp
P4API := ../p4api
P4LIBS := libclient librpc libsupp
OS := $(shell uname)
#-------------------------------------------------------------------------
# LINUX
#-------------------------------------------------------------------------
ifeq ($(OS), Linux)
OBJS := $(SOURCES:.cpp=.o)
CPP := $(shell if [ -e /usr/bin/g++32 ]; then echo g++32; else echo g++; fi)
CPPFLAGS := -pedantic -W -Wall \
-Winline -Wformat -Wshadow -Wno-long-long \
-Dconst_char="const char"
P4LIBS := $(foreach L,$(P4LIBS),$(P4API)/$L.a)
SYSLIBS :=
LINK = $(CPP) -o $@ $(OBJS) $(P4LIBS) $(SYSLIBS)
%.o: %.cpp
$(CPP) -c $(CPPFLAGS) -I $(P4API) $<
#-------------------------------------------------------------------------
# WINDOWS
#-------------------------------------------------------------------------
else
TARGET := $(TARGET).exe
OBJS := $(SOURCES:.cpp=.obj)
CPP := cl.exe
CPPFLAGS := /DOS_NT /MT /DCASE_INSENSITIVE /nologo
P4API := $(subst /,\\,$(P4API))
P4LIBS := $(foreach L,$(P4LIBS),$(P4API)\\$L.lib)
SYSLIBS := oldnames.lib \
kernel32.lib \
wsock32.lib \
advapi32.lib
LINK = $(CPP) -o $@ $(OBJS) /link $(P4LIBS) $(SYSLIBS)
%.obj: %.cpp
$(CPP) -c $(CPPFLAGS) /I$(P4API) $<
endif
#-------------------------------------------------------------------------
# TARGETS
#-------------------------------------------------------------------------
.PHONY: default clean
default: $(TARGET)
$(TARGET): $(OBJS)
$(LINK)
clean:
-$(RM) $(TARGET) $(OBJS)
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 5435 | Kyle Turner |
Initial version of "p4 resolve" extensions using C++ P4API. Extensions allow users to give more weight to the external merge program specified by the environment variable $P4MERGE. See README.txt for more information. |