1############################################################################ 2# File: makefile 3# 4# Purpose: Makefile for the UNIXem project, for the Open Watcom C/C++ 1.7 5# compiler, on Win32 6# 7# Created: 15th Feburary 2005 8# Updated: 12th August 2010 9# 10############################################################################ 11 12 13############################################################################ 14# Symbols 15 16######################################## 17# Project & compiler version 18 19COMP_TAG = ow17 20ARCH_TAG = 21OS_TAG = 22PROJ_TAG = unixem 23PROJ_VER_MAJOR = 1 24PROJ_TAG_VER = $(PROJ_TAG).$(PROJ_VER_MAJOR) 25 26PROJ_MAKEFILE_NAME = makefile 27 28######################################## 29# Testing verbosity 30 31TEST_VERBOSITY = 2 32 33######################################## 34# Directories 35 36PROJ_BASE_DIR = ..\.. 37PROJ_BIN_DIR = $(PROJ_BASE_DIR)\bin 38PROJ_INCLUDE_DIR = $(PROJ_BASE_DIR)\include 39PROJ_LIB_DIR = $(PROJ_BASE_DIR)\lib 40PROJ_OBJ_DIR = . 41PROJ_SRC_DIR = $(PROJ_BASE_DIR)\src 42PROJ_EXAMPLES_DIR = $(PROJ_BASE_DIR)\examples 43PROJ_SAMPLES_DIR = $(PROJ_BASE_DIR)\samples 44PROJ_TEST_ROOT_DIR = $(PROJ_BASE_DIR)\test 45PROJ_TEST_COMPONENT_DIR = $(PROJ_TEST_ROOT_DIR)\component 46PROJ_TEST_SCRATCH_DIR = $(PROJ_TEST_ROOT_DIR)\scratch 47PROJ_TEST_UNIT_DIR = $(PROJ_TEST_ROOT_DIR)\unit 48 49######################################## 50# tools 51 52CC = wcc386 53CPPC = wpp386 54AR = wlib 55LD = wcl386 56RM = del /f 57CP = copy 58RC = rc 59 60# Includes 61 62INCLUDES_LEADER = 63 64PROJ_INCLUDE = -I$(PROJ_INCLUDE_DIR) 65 66ENV_INCLUDES = 67 68COMMON_INCLUDES = 69 70CC_INCLUDES_BASE=\ 71$(INCLUDES_LEADER)\ 72$(PROJ_INCLUDE)\ 73-I"$(STLSOFT)\include"\ 74$(COMMON_INCLUDES)\ 75$(ENV_INCLUDES)\ 76 \ 77 78CC_INCLUDES =\ 79$(CC_INCLUDES_BASE)\ 80 \ 81 82CPPC_INCLUDES_BASE=\ 83$(INCLUDES_LEADER)\ 84$(PROJ_INCLUDE)\ 85-I"$(STLSOFT)\include"\ 86$(COMMON_INCLUDES)\ 87$(ENV_INCLUDES)\ 88 \ 89 90CPPC_INCLUDES=\ 91$(CPPC_INCLUDES_BASE)\ 92 \ 93 94 95# Lib 96 97LIBS_LEADER = 98 99# lib paths 100 101ENV_LIBPATHS = 102COMMON_LIBPATHS = 103 104 105 106LIBPATHS=\ 107 $(LIBS_LEADER)\ 108 $(COMMON_LIBPATHS)\ 109 $(ENV_LIBPATHS)\ 110\ 111 112 113# lib names 114 115TARGET_LIB_ST_D = 116TARGET_LIB_ST_R = 117 118# #defines 119 120COMMON_DEFS = -DWIN32 121 122CUSTOM_DEFS = 123 124CC_CUSTOM_DEFS = $(CUSTOM_DEFS) 125 126CPPC_CUSTOM_DEFS = $(CUSTOM_DEFS) 127 128CC_DEFS = $(COMMON_DEFS) $(CC_CUSTOM_DEFS) 129 130CPPC_DEFS = $(COMMON_DEFS) $(CPPC_CUSTOM_DEFS) 131 132# CC flags 133 134CC_F_NOLOGO = -zq 135CC_F_COMPILE_ONLY = 136CC_F_WARNING_MAX = -w=9 137CC_F_WARNING_ERR = -we 138CC_F_WARNINGS_LIMIT = 139CC_F_MINIMUM_SIZE = 140#CC_F_MAXIMUM_SPEED = 141CC_APP_F_WARNING_MAX = $(CC_F_WARNING_MAX) 142CC_APP_F_WARNING_ERR = $(CC_F_WARNING_ERR) 143 144# CPPC flags 145 146CPPC_F_NOLOGO = -zq 147CPPC_F_COMPILE_ONLY = 148CPPC_F_WARNING_MAX = -w=9 149CPPC_F_WARNING_ERR = -we 150CPPC_F_WARNINGS_LIMIT = 151CPPC_F_MINIMUM_SIZE = 152#CPPC_F_MAXIMUM_SPEED = 153CPPC_F_EXCEPTIONS = -xs 154CPPC_F_NO_EXCEPTIONS = 155CPPC_F_WITH_EXCEPTIONS = 156CPPC_F_RTTI = -xr 157CPPC_APP_F_WARNING_MAX = $(CPPC_F_WARNING_MAX) 158CPPC_APP_F_WARNING_ERR = $(CPPC_F_WARNING_ERR) 159 160 161 162CC_TOOL_FLAGS = 163 164CPPC_TOOL_FLAGS = 165 166 167 168CC_FLAGS =\ 169 $(CC_TOOL_FLAGS)\ 170 $(CC_F_NOLOGO)\ 171 $(CC_F_COMPILE_ONLY)\ 172 $(CC_F_WARNING_MAX)\ 173 $(CC_F_WARNING_ERR)\ 174 $(CC_F_WARNINGS_LIMIT)\ 175 $(CC_F_MINIMUM_SIZE)\ 176 \ 177 178CPPC_FLAGS=\ 179 $(CPPC_TOOL_FLAGS)\ 180 $(CPPC_F_NOLOGO)\ 181 $(CPPC_F_COMPILE_ONLY)\ 182 $(CPPC_F_WARNING_MAX)\ 183 $(CPPC_F_WARNING_ERR)\ 184 $(CPPC_F_WARNINGS_LIMIT)\ 185 $(CPPC_F_MINIMUM_SIZE)\ 186 $(CPPC_F_EXCEPTIONS)\ 187 $(CPPC_F_RTTI)\ 188 \ 189 190 191 192# Arguments (= flags + defines + includes) 193 194CC_ARGS_ST_D = $(CC_FLAGS) $(CC_DEFS) $(CC_INCLUDES) 195CC_ARGS_ST_R = $(CC_FLAGS) $(CC_DEFS) $(CC_INCLUDES) 196 197AR_ARGS = -q -c 198 199LD_ARGS = -zq $(COMMON_LIB) 200 201############################################################################ 202# Targets 203 204TARGET_LIB_ST_D = $(PROJ_LIB_DIR)\$(PROJ_TAG_VER).$(COMP_TAG)$(OS_TAG)$(ARCH_TAG).debug.lib 205TARGET_LIB_UN_ST_D = $(PROJ_LIB_DIR)\$(PROJ_TAG).$(COMP_TAG)$(OS_TAG)$(ARCH_TAG).debug.lib 206TARGET_LIB_ST_R = $(PROJ_LIB_DIR)\$(PROJ_TAG_VER).$(COMP_TAG)$(OS_TAG)$(ARCH_TAG).lib 207TARGET_LIB_UN_ST_R = $(PROJ_LIB_DIR)\$(PROJ_TAG).$(COMP_TAG)$(OS_TAG)$(ARCH_TAG).lib 208 209 210 211TARGETS = \ 212 $(TARGET_LIB_ST_D)\ 213 $(TARGET_LIB_UN_ST_D)\ 214 $(TARGET_LIB_ST_R)\ 215 $(TARGET_LIB_UN_ST_R)\ 216 \ 217 218OBJ_PROJ_atomic__ST_D = $(PROJ_OBJ_DIR)\atomic.debug.obj 219OBJ_PROJ_dirent__ST_D = $(PROJ_OBJ_DIR)\dirent.debug.obj 220OBJ_PROJ_dlfcn__ST_D = $(PROJ_OBJ_DIR)\dlfcn.debug.obj 221OBJ_PROJ_glob__ST_D = $(PROJ_OBJ_DIR)\glob.debug.obj 222OBJ_PROJ_hostname__ST_D = $(PROJ_OBJ_DIR)\hostname.debug.obj 223OBJ_PROJ_mmap__ST_D = $(PROJ_OBJ_DIR)\mmap.debug.obj 224OBJ_PROJ_resource__ST_D = $(PROJ_OBJ_DIR)\resource.debug.obj 225OBJ_PROJ_setenv__ST_D = $(PROJ_OBJ_DIR)\setenv.debug.obj 226OBJ_PROJ_time__ST_D = $(PROJ_OBJ_DIR)\time.debug.obj 227OBJ_PROJ_uio__ST_D = $(PROJ_OBJ_DIR)\uio.debug.obj 228OBJ_PROJ_unistd__ST_D = $(PROJ_OBJ_DIR)\unistd.debug.obj 229OBJ_PROJ_internal_util__ST_D = $(PROJ_OBJ_DIR)\internal.util.debug.obj 230 231OBJ_PROJ_ST_D = \ 232 $(OBJ_PROJ_atomic__ST_D)\ 233 $(OBJ_PROJ_dirent__ST_D)\ 234 $(OBJ_PROJ_dlfcn__ST_D)\ 235 $(OBJ_PROJ_glob__ST_D)\ 236 $(OBJ_PROJ_hostname__ST_D)\ 237 $(OBJ_PROJ_mmap__ST_D)\ 238 $(OBJ_PROJ_resource__ST_D)\ 239 $(OBJ_PROJ_setenv__ST_D)\ 240 $(OBJ_PROJ_time__ST_D)\ 241 $(OBJ_PROJ_uio__ST_D)\ 242 $(OBJ_PROJ_unistd__ST_D)\ 243 $(OBJ_PROJ_internal_util__ST_D)\ 244 \ 245 246OBJ_PROJ_ST_D_P = \ 247 +$(OBJ_PROJ_atomic__ST_D)\ 248 +$(OBJ_PROJ_dirent__ST_D)\ 249 +$(OBJ_PROJ_dlfcn__ST_D)\ 250 +$(OBJ_PROJ_glob__ST_D)\ 251 +$(OBJ_PROJ_hostname__ST_D)\ 252 +$(OBJ_PROJ_mmap__ST_D)\ 253 +$(OBJ_PROJ_resource__ST_D)\ 254 +$(OBJ_PROJ_setenv__ST_D)\ 255 +$(OBJ_PROJ_time__ST_D)\ 256 +$(OBJ_PROJ_uio__ST_D)\ 257 +$(OBJ_PROJ_unistd__ST_D)\ 258 +$(OBJ_PROJ_internal_util__ST_D)\ 259 \ 260 261 262OBJ_PROJ_atomic__ST_R = $(PROJ_OBJ_DIR)\atomic.obj 263OBJ_PROJ_dirent__ST_R = $(PROJ_OBJ_DIR)\dirent.obj 264OBJ_PROJ_dlfcn__ST_R = $(PROJ_OBJ_DIR)\dlfcn.obj 265OBJ_PROJ_glob__ST_R = $(PROJ_OBJ_DIR)\glob.obj 266OBJ_PROJ_hostname__ST_R = $(PROJ_OBJ_DIR)\hostname.obj 267OBJ_PROJ_mmap__ST_R = $(PROJ_OBJ_DIR)\mmap.obj 268OBJ_PROJ_resource__ST_R = $(PROJ_OBJ_DIR)\resource.obj 269OBJ_PROJ_setenv__ST_R = $(PROJ_OBJ_DIR)\setenv.obj 270OBJ_PROJ_time__ST_R = $(PROJ_OBJ_DIR)\time.obj 271OBJ_PROJ_uio__ST_R = $(PROJ_OBJ_DIR)\uio.obj 272OBJ_PROJ_unistd__ST_R = $(PROJ_OBJ_DIR)\unistd.obj 273OBJ_PROJ_internal_util__ST_R = $(PROJ_OBJ_DIR)\internal.util.obj 274 275OBJ_PROJ_ST_R = \ 276 $(OBJ_PROJ_atomic__ST_R)\ 277 $(OBJ_PROJ_dirent__ST_R)\ 278 $(OBJ_PROJ_dlfcn__ST_R)\ 279 $(OBJ_PROJ_glob__ST_R)\ 280 $(OBJ_PROJ_hostname__ST_R)\ 281 $(OBJ_PROJ_mmap__ST_R)\ 282 $(OBJ_PROJ_resource__ST_R)\ 283 $(OBJ_PROJ_setenv__ST_R)\ 284 $(OBJ_PROJ_time__ST_R)\ 285 $(OBJ_PROJ_uio__ST_R)\ 286 $(OBJ_PROJ_unistd__ST_R)\ 287 $(OBJ_PROJ_internal_util__ST_R)\ 288 \ 289 290OBJ_PROJ_ST_R_P = \ 291 +$(OBJ_PROJ_atomic__ST_R)\ 292 +$(OBJ_PROJ_dirent__ST_R)\ 293 +$(OBJ_PROJ_dlfcn__ST_R)\ 294 +$(OBJ_PROJ_glob__ST_R)\ 295 +$(OBJ_PROJ_hostname__ST_R)\ 296 +$(OBJ_PROJ_mmap__ST_R)\ 297 +$(OBJ_PROJ_resource__ST_R)\ 298 +$(OBJ_PROJ_setenv__ST_R)\ 299 +$(OBJ_PROJ_time__ST_R)\ 300 +$(OBJ_PROJ_uio__ST_R)\ 301 +$(OBJ_PROJ_unistd__ST_R)\ 302 +$(OBJ_PROJ_internal_util__ST_R)\ 303 \ 304 305 306OBJS = \ 307 $(OBJ_PROJ_ST_D)\ 308 $(OBJ_PROJ_ST_R)\ 309 \ 310 311all: target 312 313usage: 314 @echo "make [usage | clean | all | test | target] - default is 'all'" 315 316clean: 317 @-$(RM) $(TARGET_LIB_ST_D) 318 @-$(RM) $(TARGET_LIB_UN_ST_D) 319 @-$(RM) $(TARGET_LIB_ST_R) 320 @-$(RM) $(TARGET_LIB_UN_ST_R) 321 @-$(RM) $(OBJ_PROJ_ST_D) 322 @-$(RM) $(OBJ_PROJ_ST_R) 323 324 325# targets 326 327target: check.lib.dir $(TARGETS) 328 329compile.libs.core: $(OBJS) 330 331compile.libs: compile.libs.core 332 333compile: compile.libs 334 335build.libs.core: $(TARGETS) 336 337build.libs: build.libs.core 338 339build: build.libs 340 341check.lib.dir: 342 @-if not exist $(PROJ_LIB_DIR)\NUL mkdir $(PROJ_LIB_DIR) 343 344check.bin.dir: 345 @-if not exist $(PROJ_BIN_DIR)\NUL mkdir $(PROJ_BIN_DIR) 346 347 348test_: 349# $(TARGET_TEST_C_ST_D) --unittest 350# $(TARGET_TEST_C_ST_R) --unittest 351 352test: target test_ 353 354 355# build targets 356 357# library 358 359 360$(TARGET_LIB_UN_ST_D): $(TARGET_LIB_ST_D) 361 @$(CP) $(TARGET_LIB_ST_D) $@ 362 363$(TARGET_LIB_ST_D): $(OBJ_PROJ_ST_D) makefile 364 @-if not exist $(B64_LIB_DIR)\NUL mkdir $(B64_LIB_DIR) 365 @-$(RM) $(TARGET_LIB_ST_D) 366 $(AR) $(AR_ARGS) $@ $(OBJ_PROJ_ST_D_P) 367 368$(OBJ_PROJ_atomic__ST_D): $(PROJ_SRC_DIR)\atomic.c $(PROJ_INCLUDE_DIR)\asm\atomic.h makefile 369 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\atomic.c 370$(OBJ_PROJ_dirent__ST_D): $(PROJ_SRC_DIR)\dirent.c $(PROJ_INCLUDE_DIR)\dirent.h makefile 371 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\dirent.c 372$(OBJ_PROJ_dlfcn__ST_D): $(PROJ_SRC_DIR)\dlfcn.c $(PROJ_INCLUDE_DIR)\dlfcn.h makefile 373 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\dlfcn.c 374$(OBJ_PROJ_glob__ST_D): $(PROJ_SRC_DIR)\glob.c $(PROJ_INCLUDE_DIR)\glob.h makefile 375 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\glob.c 376$(OBJ_PROJ_hostname__ST_D): $(PROJ_SRC_DIR)\hostname.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 377 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\hostname.c 378$(OBJ_PROJ_mmap__ST_D): $(PROJ_SRC_DIR)\mmap.c $(PROJ_INCLUDE_DIR)\sys\mman.h makefile 379 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\mmap.c 380$(OBJ_PROJ_resource__ST_D): $(PROJ_SRC_DIR)\resource.c $(PROJ_INCLUDE_DIR)\sys\resource.h makefile 381 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\resource.c 382$(OBJ_PROJ_setenv__ST_D): $(PROJ_SRC_DIR)\setenv.c $(PROJ_INCLUDE_DIR)\unixem\setenv.h makefile 383 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\setenv.c 384$(OBJ_PROJ_time__ST_D): $(PROJ_SRC_DIR)\time.c $(PROJ_INCLUDE_DIR)\sys\time.h makefile 385 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\time.c 386$(OBJ_PROJ_uio__ST_D): $(PROJ_SRC_DIR)\uio.c $(PROJ_INCLUDE_DIR)\sys\uio.h makefile 387 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\uio.c 388$(OBJ_PROJ_unistd__ST_D): $(PROJ_SRC_DIR)\unistd.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 389 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\unistd.c 390$(OBJ_PROJ_internal_util__ST_D): $(PROJ_SRC_DIR)\internal\util.c $(PROJ_INCLUDE_DIR)\unixem\internal\util.h makefile 391 $(CC) $(CC_ARGS_ST_D) -fo=$@ $(PROJ_SRC_DIR)\internal\util.c 392 393 394 395$(TARGET_LIB_UN_ST_R): $(TARGET_LIB_ST_R) 396 @$(CP) $(TARGET_LIB_ST_R) $@ 397 398$(TARGET_LIB_ST_R): $(OBJ_PROJ_ST_R) makefile 399 @-if not exist $(B64_LIB_DIR)\NUL mkdir $(B64_LIB_DIR) 400 @-$(RM) $(TARGET_LIB_ST_R) 401 $(AR) $(AR_ARGS) $@ $(OBJ_PROJ_ST_R_P) 402 403$(OBJ_PROJ_atomic__ST_R): $(PROJ_SRC_DIR)\atomic.c $(PROJ_INCLUDE_DIR)\asm\atomic.h makefile 404 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\atomic.c 405$(OBJ_PROJ_dirent__ST_R): $(PROJ_SRC_DIR)\dirent.c $(PROJ_INCLUDE_DIR)\dirent.h makefile 406 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\dirent.c 407$(OBJ_PROJ_dlfcn__ST_R): $(PROJ_SRC_DIR)\dlfcn.c $(PROJ_INCLUDE_DIR)\dlfcn.h makefile 408 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\dlfcn.c 409$(OBJ_PROJ_glob__ST_R): $(PROJ_SRC_DIR)\glob.c $(PROJ_INCLUDE_DIR)\glob.h makefile 410 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\glob.c 411$(OBJ_PROJ_hostname__ST_R): $(PROJ_SRC_DIR)\hostname.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 412 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\hostname.c 413$(OBJ_PROJ_mmap__ST_R): $(PROJ_SRC_DIR)\mmap.c $(PROJ_INCLUDE_DIR)\sys\mman.h makefile 414 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\mmap.c 415$(OBJ_PROJ_resource__ST_R): $(PROJ_SRC_DIR)\resource.c $(PROJ_INCLUDE_DIR)\sys\resource.h makefile 416 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\resource.c 417$(OBJ_PROJ_setenv__ST_R): $(PROJ_SRC_DIR)\setenv.c $(PROJ_INCLUDE_DIR)\unixem\setenv.h makefile 418 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\setenv.c 419$(OBJ_PROJ_time__ST_R): $(PROJ_SRC_DIR)\time.c $(PROJ_INCLUDE_DIR)\sys\time.h makefile 420 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\time.c 421$(OBJ_PROJ_uio__ST_R): $(PROJ_SRC_DIR)\uio.c $(PROJ_INCLUDE_DIR)\sys\uio.h makefile 422 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\uio.c 423$(OBJ_PROJ_unistd__ST_R): $(PROJ_SRC_DIR)\unistd.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 424 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\unistd.c 425$(OBJ_PROJ_internal_util__ST_R): $(PROJ_SRC_DIR)\internal\util.c $(PROJ_INCLUDE_DIR)\unixem\internal\util.h makefile 426 $(CC) $(CC_ARGS_ST_R) -fo=$@ $(PROJ_SRC_DIR)\internal\util.c 427 428 429 430############################################################################ 431