1############################################################################ 2# File: makefile 3# 4# Purpose: Makefile for the UNIXem project, for the GCC 3.3 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 = gcc33 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 = gcc 53CPPC = g++ 54AR = ar 55LD = g++ 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 = 135CC_F_COMPILE_ONLY = -c 136CC_F_WARNING_MAX = -Wall -pedantic -Wno-long-long 137CC_F_WARNING_ERR = -Werror 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 = 147CPPC_F_COMPILE_ONLY = -c 148CPPC_F_WARNING_MAX = -Wall -pedantic -Wno-long-long 149CPPC_F_WARNING_ERR = -Werror 150CPPC_F_WARNINGS_LIMIT = 151CPPC_F_MINIMUM_SIZE = 152#CPPC_F_MAXIMUM_SPEED = 153CPPC_F_EXCEPTIONS = 154CPPC_F_NO_EXCEPTIONS = 155CPPC_F_WITH_EXCEPTIONS = 156CPPC_F_RTTI = 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 = -D_DEBUG -UNDEBUG $(CC_FLAGS) $(CC_DEFS) $(CC_INCLUDES) 195CC_ARGS_ST_R = -DNDEBUG -U_DEBUG $(CC_FLAGS) $(CC_DEFS) $(CC_INCLUDES) 196 197AR_ARGS = 198 199LD_ARGS = $(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_atomic__ST_R = $(PROJ_OBJ_DIR)\atomic.obj 247OBJ_PROJ_dirent__ST_R = $(PROJ_OBJ_DIR)\dirent.obj 248OBJ_PROJ_dlfcn__ST_R = $(PROJ_OBJ_DIR)\dlfcn.obj 249OBJ_PROJ_glob__ST_R = $(PROJ_OBJ_DIR)\glob.obj 250OBJ_PROJ_hostname__ST_R = $(PROJ_OBJ_DIR)\hostname.obj 251OBJ_PROJ_mmap__ST_R = $(PROJ_OBJ_DIR)\mmap.obj 252OBJ_PROJ_resource__ST_R = $(PROJ_OBJ_DIR)\resource.obj 253OBJ_PROJ_setenv__ST_R = $(PROJ_OBJ_DIR)\setenv.obj 254OBJ_PROJ_time__ST_R = $(PROJ_OBJ_DIR)\time.obj 255OBJ_PROJ_uio__ST_R = $(PROJ_OBJ_DIR)\uio.obj 256OBJ_PROJ_unistd__ST_R = $(PROJ_OBJ_DIR)\unistd.obj 257OBJ_PROJ_internal_util__ST_R = $(PROJ_OBJ_DIR)\internal.util.obj 258 259OBJ_PROJ_ST_R = \ 260 $(OBJ_PROJ_atomic__ST_R)\ 261 $(OBJ_PROJ_dirent__ST_R)\ 262 $(OBJ_PROJ_dlfcn__ST_R)\ 263 $(OBJ_PROJ_glob__ST_R)\ 264 $(OBJ_PROJ_hostname__ST_R)\ 265 $(OBJ_PROJ_mmap__ST_R)\ 266 $(OBJ_PROJ_resource__ST_R)\ 267 $(OBJ_PROJ_setenv__ST_R)\ 268 $(OBJ_PROJ_time__ST_R)\ 269 $(OBJ_PROJ_uio__ST_R)\ 270 $(OBJ_PROJ_unistd__ST_R)\ 271 $(OBJ_PROJ_internal_util__ST_R)\ 272 \ 273 274OBJS = \ 275 $(OBJ_PROJ_ST_D)\ 276 $(OBJ_PROJ_ST_R)\ 277 \ 278 279all: target 280 281usage: 282 @echo "make [usage | clean | all | test | target] - default is 'all'" 283 284clean: 285 @-$(RM) $(TARGET_LIB_ST_D) 286 @-$(RM) $(TARGET_LIB_UN_ST_D) 287 @-$(RM) $(TARGET_LIB_ST_R) 288 @-$(RM) $(TARGET_LIB_UN_ST_R) 289 @-$(RM) $(OBJ_PROJ_ST_D) 290 @-$(RM) $(OBJ_PROJ_ST_R) 291 292 293# targets 294 295target: check.lib.dir $(TARGETS) 296 297compile.libs.core: $(OBJS) 298 299compile.libs: compile.libs.core 300 301compile: compile.libs 302 303build.libs.core: $(TARGETS) 304 305build.libs: build.libs.core 306 307build: build.libs 308 309check.lib.dir: 310 @-if not exist $(PROJ_LIB_DIR)\NUL mkdir $(PROJ_LIB_DIR) 311 312check.bin.dir: 313 @-if not exist $(PROJ_BIN_DIR)\NUL mkdir $(PROJ_BIN_DIR) 314 315 316test_: 317# $(TARGET_TEST_C_ST_D) --unittest 318# $(TARGET_TEST_C_ST_R) --unittest 319 320test: target test_ 321 322 323# build targets 324 325# library 326 327 328$(TARGET_LIB_UN_ST_D): $(TARGET_LIB_ST_D) 329 @$(CP) $(TARGET_LIB_ST_D) $@ 330 331$(TARGET_LIB_ST_D): $(OBJ_PROJ_ST_D) makefile 332 @-if not exist $(B64_LIB_DIR)\NUL mkdir $(B64_LIB_DIR) 333 $(AR) $(AR_ARGS) -r $@ $(OBJ_PROJ_ST_D) 334 335$(OBJ_PROJ_atomic__ST_D): $(PROJ_SRC_DIR)\atomic.c $(PROJ_INCLUDE_DIR)\asm\atomic.h makefile 336 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\atomic.c 337$(OBJ_PROJ_dirent__ST_D): $(PROJ_SRC_DIR)\dirent.c $(PROJ_INCLUDE_DIR)\dirent.h makefile 338 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\dirent.c 339$(OBJ_PROJ_dlfcn__ST_D): $(PROJ_SRC_DIR)\dlfcn.c $(PROJ_INCLUDE_DIR)\dlfcn.h makefile 340 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\dlfcn.c 341$(OBJ_PROJ_glob__ST_D): $(PROJ_SRC_DIR)\glob.c $(PROJ_INCLUDE_DIR)\glob.h makefile 342 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\glob.c 343$(OBJ_PROJ_hostname__ST_D): $(PROJ_SRC_DIR)\hostname.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 344 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\hostname.c 345$(OBJ_PROJ_mmap__ST_D): $(PROJ_SRC_DIR)\mmap.c $(PROJ_INCLUDE_DIR)\sys\mman.h makefile 346 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\mmap.c 347$(OBJ_PROJ_resource__ST_D): $(PROJ_SRC_DIR)\resource.c $(PROJ_INCLUDE_DIR)\sys\resource.h makefile 348 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\resource.c 349$(OBJ_PROJ_setenv__ST_D): $(PROJ_SRC_DIR)\setenv.c $(PROJ_INCLUDE_DIR)\unixem\setenv.h makefile 350 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\setenv.c 351$(OBJ_PROJ_time__ST_D): $(PROJ_SRC_DIR)\time.c $(PROJ_INCLUDE_DIR)\sys\time.h makefile 352 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\time.c 353$(OBJ_PROJ_uio__ST_D): $(PROJ_SRC_DIR)\uio.c $(PROJ_INCLUDE_DIR)\sys\uio.h makefile 354 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\uio.c 355$(OBJ_PROJ_unistd__ST_D): $(PROJ_SRC_DIR)\unistd.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 356 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\unistd.c 357$(OBJ_PROJ_internal_util__ST_D): $(PROJ_SRC_DIR)\internal\util.c $(PROJ_INCLUDE_DIR)\unixem\internal\util.h makefile 358 $(CC) $(CC_ARGS_ST_D) -o $@ $(PROJ_SRC_DIR)\internal\util.c 359 360 361 362$(TARGET_LIB_UN_ST_R): $(TARGET_LIB_ST_R) 363 @$(CP) $(TARGET_LIB_ST_R) $@ 364 365$(TARGET_LIB_ST_R): $(OBJ_PROJ_ST_R) makefile 366 @-if not exist $(B64_LIB_DIR)\NUL mkdir $(B64_LIB_DIR) 367 $(AR) $(AR_ARGS) -r $@ $(OBJ_PROJ_ST_R) 368 369$(OBJ_PROJ_atomic__ST_R): $(PROJ_SRC_DIR)\atomic.c $(PROJ_INCLUDE_DIR)\asm\atomic.h makefile 370 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\atomic.c 371$(OBJ_PROJ_dirent__ST_R): $(PROJ_SRC_DIR)\dirent.c $(PROJ_INCLUDE_DIR)\dirent.h makefile 372 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\dirent.c 373$(OBJ_PROJ_dlfcn__ST_R): $(PROJ_SRC_DIR)\dlfcn.c $(PROJ_INCLUDE_DIR)\dlfcn.h makefile 374 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\dlfcn.c 375$(OBJ_PROJ_glob__ST_R): $(PROJ_SRC_DIR)\glob.c $(PROJ_INCLUDE_DIR)\glob.h makefile 376 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\glob.c 377$(OBJ_PROJ_hostname__ST_R): $(PROJ_SRC_DIR)\hostname.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 378 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\hostname.c 379$(OBJ_PROJ_mmap__ST_R): $(PROJ_SRC_DIR)\mmap.c $(PROJ_INCLUDE_DIR)\sys\mman.h makefile 380 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\mmap.c 381$(OBJ_PROJ_resource__ST_R): $(PROJ_SRC_DIR)\resource.c $(PROJ_INCLUDE_DIR)\sys\resource.h makefile 382 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\resource.c 383$(OBJ_PROJ_setenv__ST_R): $(PROJ_SRC_DIR)\setenv.c $(PROJ_INCLUDE_DIR)\unixem\setenv.h makefile 384 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\setenv.c 385$(OBJ_PROJ_time__ST_R): $(PROJ_SRC_DIR)\time.c $(PROJ_INCLUDE_DIR)\sys\time.h makefile 386 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\time.c 387$(OBJ_PROJ_uio__ST_R): $(PROJ_SRC_DIR)\uio.c $(PROJ_INCLUDE_DIR)\sys\uio.h makefile 388 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\uio.c 389$(OBJ_PROJ_unistd__ST_R): $(PROJ_SRC_DIR)\unistd.c $(PROJ_INCLUDE_DIR)\unistd.h makefile 390 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\unistd.c 391$(OBJ_PROJ_internal_util__ST_R): $(PROJ_SRC_DIR)\internal\util.c $(PROJ_INCLUDE_DIR)\unixem\internal\util.h makefile 392 $(CC) $(CC_ARGS_ST_R) -o $@ $(PROJ_SRC_DIR)\internal\util.c 393 394 395 396############################################################################ 397