blob: 4382efaac1e7bd01cd5e95937fb59eff5cd7ea9d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
//-----------------------------------------------------------------------------
// SOURCE_DLL_WIN32_BASE.VPC
//
// Base Settings for all Source(TM) Projects
//-----------------------------------------------------------------------------
$Include "$SRCDIR\vpc_scripts\version.vpc"
$Macro NOAPPENDPLATSUBDIR "1" [!$WIN64]
$MacroRequired "PLATSUBDIR"
$MacroRequired "SRCDIR"
$MacroRequired "OUTBINNAME" "$PROJECTNAME"
$MacroRequired "OUTBINDIR"
// These are convenient for adjusting directory paths based on platform
// but they must be used without absolute consistency to avoid dependency
// problems. It appears that if VPC compares $LIBPUBLIC to $SRCDIR\lib\public
// it will decide that they are not equal, even if the *value* of $LIBPUBLIC
// is $SRCDIR\lib\public. These macros can safely be used in copy commands
// and other areas that VPC doesn't use for dependency tracking.
$Macro LIBPUBLIC "$SRCDIR\lib\public"
$Macro LIBCOMMON "$SRCDIR\lib\common"
// Fix up directories for targets like win64
$Macro OUTBINDIR "$OUTBINDIR$PLATSUBDIR" [!$NOAPPENDPLATSUBDIR && !$NOMODIFYOUTBINDIR]
$Macro LIBPUBLIC "$LIBPUBLIC$PLATSUBDIR" [!$NOAPPENDPLATSUBDIR]
$Macro LIBCOMMON "$LIBCOMMON$PLATSUBDIR" [!$NOAPPENDPLATSUBDIR]
$Include "$SRCDIR\vpc_scripts\loadaddress.vpc"
$Include "$SRCDIR\vpc_scripts\source_dll_win32_debug.vpc"
$Include "$SRCDIR\vpc_scripts\source_dll_win32_release.vpc"
$Include "$SRCDIR\vpc_scripts\source_win32_base.vpc"
$IgnoreRedundancyWarning "ON"
$Linux
{
-$File "$SRCDIR\lib\public\tier0.lib"
$file "$SRCDIR\linux\tier0_i686.so"
-$File "$SRCDIR\lib\public\vstdlib.lib" [!$WIN64]
-$File "$SRCDIR\lib\public\$PLATFORM\vstdlib.lib" [$WIN64]
$file "$SRCDIR\linux\vstdlib_i686.so"
}
// Common Configuration
$Configuration
{
$General [$VS2010]
{
$TargetName "$OUTBINNAME"
}
$PreBuildEvent
{
$CommandLine "if EXIST $OUTBINDIR\$(TargetFileName) for /f $QUOTEdelims=$QUOTE %%A in ('attrib $QUOTE$OUTBINDIR\$(TargetFileName)$QUOTE') do set valveTmpIsReadOnly=$QUOTE%%A$QUOTE" "\n" \
"set valveTmpIsReadOnlyLetter=%valveTmpIsReadOnly:~6,1%" "\n" \
"if $QUOTE%valveTmpIsReadOnlyLetter%$QUOTE==$QUOTER$QUOTE del /q $QUOTE$(TargetDir)$QUOTE$(TargetFileName)" "\n" \
"$CRCCHECK" [!$SOURCESDK]
}
$PostBuildEvent [!$ANALYZE]
{
$CommandLine "if not exist $QUOTE$OUTBINDIR$QUOTE mkdir $QUOTE$OUTBINDIR$QUOTE" "\n"
$CommandLine "$BASE" "call $SRCDIR\vpc_scripts\valve_p4_edit.cmd $QUOTE$OUTBINDIR\$(TargetFileName)$QUOTE $SRCDIR" "\n" [!$SOURCESDK]
$CommandLine "$BASE" "copy $QUOTE$(TargetDir)$QUOTE$(TargetFileName) $QUOTE$OUTBINDIR\$(TargetFileName)$QUOTE" "\n" \
"if ERRORLEVEL 1 goto BuildEventFailed" "\n" \
"if exist $QUOTE$(TargetDir)$QUOTE$(TargetName).map copy $QUOTE$(TargetDir)$QUOTE$(TargetName).map $OUTBINDIR\$(TargetName).map" "\n"
$CommandLine "$BASE" "call $SRCDIR\vpc_scripts\valve_p4_edit.cmd $OUTBINDIR\$(TargetName).pdb $SRCDIR" "\n" [!$SOURCESDK]
$CommandLine "$BASE" "copy $QUOTE$(TargetDir)$QUOTE$(TargetName).pdb $OUTBINDIR\$(TargetName).pdb" "\n" \
"if ERRORLEVEL 1 goto BuildEventFailed" "\n" \
"goto BuildEventOK" "\n" \
":BuildEventFailed" "\n" \
"echo *** ERROR! PostBuildStep FAILED for $(ProjectName)! EXE or DLL is probably running. ***" "\n" \
"del /q $QUOTE$(TargetDir)$QUOTE$(TargetFileName)" "\n" \
"exit 1" "\n" \
":BuildEventOK" "\n"
$CommandLine "$BASE" "\n" \
"call $SRCDIR\devtools\bin\vsign.bat -sign $OUTBINDIR\$(TargetFileName)" "\n" [$RETAIL && !$SOURCESDK]
$CommandLine "$BASE" "\n" \
"call $SRCDIR\devtools\bin\vsign.bat -signvalve $OUTBINDIR\$(TargetFileName)" "\n" [!$RETAIL && !$SOURCESDK]
$Description "Publishing to $OUTBINDIR"
$ExcludedFromBuild "No"
}
$Linker
{
// Suppress this warning using the undocumented /ignore linker switch
// schemalib.lib(schemaclassinfo.obj) : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
$AdditionalOptions "$BASE /ignore:4221"
$AdditionalDependencies "%(AdditionalDependencies)" [$VS2010]
$TargetMachine "MachineX86 (/MACHINE:X86)" [$WIN32]
$TargetMachine "MachineX64 (/MACHINE:X64)" [$WIN64]
// This option is from the devil. Basically, it causes the link inputs
// to vary depending on what is in the solution. This is anathema
// to the way that we use projects and solutions here at Valve.
// It also exposes a bug in VS2005 causing files to be recompiled/linked
// even if nothing changed.
$LinkLibraryDependencies "false"
}
}
// Skeleton Project - All derived projects get this as a starting base
$Project
{
$Folder "Source Files"
{
$File "$SRCDIR\public\tier0\memoverride.cpp"
{
$Configuration
{
$Compiler
{
$Create/UsePrecompiledHeader "Not Using Precompiled Headers"
}
}
}
// Implement __imp__EncodePointer and __imp__DecodePointer so that we can run on XP SP1
// when building with VS 2010.
$File "$SRCDIR\public\tier0\pointeroverride.asm" [$WIN32 && $VS2010]
{
$Configuration
{
$CustomBuildStep
{
// General
$CommandLine "$QUOTE$(VCInstallDir)bin\ml.exe$QUOTE /safeseh /c /Cp /Zi /Fo$QUOTE$(IntDir)\$(InputName).obj$QUOTE $QUOTE$(InputPath)$QUOTE"
$Description "Compiling pointeroverride.asm"
$Outputs "$(IntDir)\$(InputName).obj"
}
}
}
$File "$SRCDIR\common\debug_dll_check.cpp" [!$SOURCESDK]
{
$Configuration
{
$Compiler
{
$Create/UsePrecompiledHeader "Not Using Precompiled Headers"
}
}
}
}
$Folder "Link Libraries"
{
$DynamicFile "$SRCDIR\lib\public\tier0.lib" [!$WIN64]
$DynamicFile "$SRCDIR\lib\public\tier1.lib" [!$WIN64]
$DynamicFile "$SRCDIR\lib\public\vstdlib.lib" [!$WIN64]
$DynamicFile "$SRCDIR\lib\public\$PLATFORM\tier0.lib" [$WIN64]
$DynamicFile "$SRCDIR\lib\public\$PLATFORM\tier1.lib" [$WIN64]
$DynamicFile "$SRCDIR\lib\public\$PLATFORM\vstdlib.lib" [$WIN64]
}
}
|