]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libtest/build/msvc_gnumake/makefile
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libtest / build / msvc_gnumake / makefile
1 ##### paths #####
2 BINDIR := ..\..\bin
3 INCDIR := ..\..\inc
4 OBJDIR := ..\..\obj
5 SRCDIR := ..\..\src
6
7 ##### misc #####
8 QUIETLY := 1>nul 2>nul
9 NULL := 
10 SPACE := $(NULL) # TRD : with a trailing space
11
12 ##### sources, objects and libraries #####
13 BINNAME    := libtest
14 LIB_BINARY := $(BINDIR)\$(BINNAME).lib
15 DLL_BINARY := $(BINDIR)\$(BINNAME).dll
16 SRCDIRS    := libtest_misc libtest_porting_abstraction_layer libtest_results libtest_test libtest_tests libtest_testsuite libtest_threadset
17 SOURCES    := libtest_misc_determine_erg.c libtest_misc_globals.c libtest_misc_memory_helpers.c libtest_misc_pal_helpers.c libtest_misc_query.c \
18               libtest_porting_abstraction_layer_free.c libtest_porting_abstraction_layer_get_full_logical_processor_set.c libtest_porting_abstraction_layer_malloc.c \
19               libtest_results_cleanup.c libtest_results_get_result.c libtest_results_init.c libtest_results_put_result.c \
20               libtest_test_cleanup.c libtest_test_init.c libtest_test_run.c \
21               libtest_tests_btree_addonly_unbalanced_alignment.c libtest_tests_btree_addonly_unbalanced_random_adds_fail.c libtest_tests_btree_addonly_unbalanced_random_adds_fail_and_overwrite.c libtest_tests_btree_addonly_unbalanced_random_adds_overwrite.c \
22               libtest_tests_freelist_alignment.c libtest_tests_freelist_ea_popping.c libtest_tests_freelist_ea_popping_and_pushing.c libtest_tests_freelist_ea_pushing.c libtest_tests_freelist_ea_rapid_popping_and_pushing.c libtest_tests_freelist_without_ea_popping.c libtest_tests_freelist_without_ea_popping_and_pushing.c libtest_tests_freelist_without_ea_pushing.c libtest_tests_freelist_without_ea_rapid_popping_and_pushing.c \
23               libtest_tests_hash_addonly_alignment.c libtest_tests_hash_addonly_iterate.c libtest_tests_hash_addonly_random_adds_fail.c libtest_tests_hash_addonly_fail_and_overwrite.c libtest_tests_hash_addonly_random_adds_overwrite.c \
24               libtest_tests_list_addonly_singlylinked_ordered_alignment.c libtest_tests_list_addonly_singlylinked_ordered_new_ordered.c libtest_tests_list_addonly_singlylinked_ordered_new_ordered_with_cursor.c \
25               libtest_tests_list_addonly_singlylinked_unordered_alignment.c libtest_tests_list_addonly_singlylinked_unordered_new_after.c libtest_tests_list_addonly_singlylinked_unordered_new_end.c libtest_tests_list_addonly_singlylinked_unordered_new_start.c \
26               libtest_tests_porting_abstraction_layer_atomic_add.c libtest_tests_porting_abstraction_layer_atomic_cas.c libtest_tests_porting_abstraction_layer_atomic_dwcas.c libtest_tests_porting_abstraction_layer_atomic_exchange.c \
27               libtest_tests_prng_alignment.c libtest_tests_prng_generate.c \
28               libtest_tests_queue_bounded_manyproducer_manyconsumer_alignment.c libtest_tests_queue_bounded_manyproducer_manyconsumer_count.c libtest_tests_queue_bounded_manyproducer_manyconsumer_enqueuing.c libtest_tests_queue_bounded_manyproducer_manyconsumer_dequeuing.c libtest_tests_queue_bounded_manyproducer_manyconsumer_enqueuing_and_dequeuing.c libtest_tests_queue_bounded_manyproducer_manyconsumer_rapid_enqueuing_and_dequeuing.c \
29               libtest_tests_queue_bounded_singleproducer_singleconsumer_dequeuing.c libtest_tests_queue_bounded_singleproducer_singleconsumer_enqueuing.c libtest_tests_queue_bounded_singleproducer_singleconsumer_enqueuing_and_dequeuing.c \
30               libtest_tests_queue_unbounded_manyproducer_manyconsumer_alignment.c libtest_tests_queue_unbounded_manyproducer_manyconsumer_dequeuing.c libtest_tests_queue_unbounded_manyproducer_manyconsumer_enqueuing.c libtest_tests_queue_unbounded_manyproducer_manyconsumer_enqueuing_and_dequeuing.c libtest_tests_queue_unbounded_manyproducer_manyconsumer_enqueuing_with_malloc_and_dequeuing_with_free.c libtest_tests_queue_unbounded_manyproducer_manyconsumer_rapid_enqueuing_and_dequeuing.c \
31               libtest_tests_ringbuffer_reading.c libtest_tests_ringbuffer_reading_and_writing.c libtest_tests_ringbuffer_writing.c \
32               libtest_tests_stack_alignment.c libtest_tests_stack_popping.c libtest_tests_stack_popping_and_pushing.c libtest_tests_stack_pushing.c libtest_tests_stack_rapid_popping_and_pushing.c \
33               libtest_testsuite_cleanup.c libtest_testsuite_init.c libtest_testsuite_run.c \
34               libtest_threadset_add.c libtest_threadset_cleanup.c libtest_threadset_init.c libtest_threadset_operations.c
35 OBJECTS    := $(patsubst %.c,$(OBJDIR)/%.obj,$(notdir $(SOURCES)))
36 SYSLIBS    := kernel32.lib
37 USRLIBS    := ..\..\..\..\liblfds710\bin\liblfds710.lib ..\..\..\libshared\bin\libshared.lib
38
39 ##### default paths fix up #####
40 INCDIRS := $(patsubst %,%;,$(INCDIR))
41 INCLUDE += $(subst $(SPACE),,$(INCDIRS))
42
43 ##### tools #####
44 CC                    := cl
45 CFLAGS_MANDATORY      := /c "/Fd$(BINDIR)\$(BINNAME).pdb" /wd 4068
46 CFLAGS_OPTIONAL       := /DWIN32_LEAN_AND_MEAN /DUNICODE /D_UNICODE /nologo /W4 /WX
47 CFLAGS_MANDATORY_DBG  := /Od /Gm /Zi /D_DEBUG
48 CFLAGS_MANDATORY_REL  := /Ox /DNDEBUG
49
50 AR                    := lib
51 ARFLAGS               :=
52 ARFLAGS_MANDATORY     := /subsystem:console
53 ARFLAGS_OPTIONAL      := /nologo /wx /verbose
54
55 LD                    := link
56 LDFLAGS_MANDATORY     := /def:$(BINNAME).def /dll /nodefaultlib /subsystem:console
57 LDFLAGS_OPTIONAL      := /nologo /nxcompat /wx
58 LDFLAGS_MANDATORY_DBG := /debug "/pdb:$(BINDIR)\$(BINNAME).pdb"
59 LDFLAGS_MANDATORY_REL := /incremental:no
60
61 ##### variants #####
62 ifeq ($(MAKECMDGOALS),) # TRD : default to debug lib
63   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MTd
64   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
65   CLIB              := libcmtd.lib
66 endif
67
68 ifeq ($(MAKECMDGOALS),libdbg)
69   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MTd
70   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
71   CLIB              := libcmtd.lib
72 endif
73
74 ifeq ($(MAKECMDGOALS),librel)
75   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_REL) /MT
76   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_REL)
77   CLIB              := libcmt.lib
78 endif
79
80 ifeq ($(MAKECMDGOALS),dlldbg)
81   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_DBG) /MDd
82   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_DBG)
83   CLIB              := msvcrtd.lib
84 endif
85
86 ifeq ($(MAKECMDGOALS),dllrel)
87   CFLAGS_MANDATORY  += $(CFLAGS_MANDATORY_REL) /MD
88   LDFLAGS_MANDATORY += $(LDFLAGS_MANDATORY_REL)
89   CLIB              := msvcrt.lib
90 endif
91
92 ##### search paths #####
93 vpath %.c $(patsubst %,$(SRCDIR)/%;,$(SRCDIRS))
94
95 ##### implicit rules #####
96 $(OBJDIR)/%.obj : %.c
97         $(CC) $(CFLAGS_OPTIONAL) $(CFLAGS) $(CFLAGS_MANDATORY) "/Fo$@" $<
98
99 ##### explicit rules #####
100 $(LIB_BINARY) : $(OBJECTS)
101         $(AR) $(ARFLAGS_OPTIONAL) $(ARFLAGS) $(ARFLAGS_MANDATORY) $(OBJECTS) /out:$(LIB_BINARY)
102
103 $(DLL_BINARY) : $(OBJECTS)
104         $(LD) $(LDFLAGS_OPTIONAL) $(LDFLAGS) $(LDFLAGS_MANDATORY) $(CLIB) $(SYSLIBS) $(USRLIBS) $(OBJECTS) /out:$(DLL_BINARY)
105
106 ##### phony #####
107 .PHONY : clean librel libdbg dllrel dlldbg
108
109 clean : 
110         @erase /Q $(BINDIR)\$(BINNAME).* $(OBJDIR)\*.obj $(QUIETLY)
111
112 dllrel : $(DLL_BINARY)
113 dlldbg : $(DLL_BINARY)
114
115 librel : $(LIB_BINARY)
116 libdbg : $(LIB_BINARY)
117
118 ##### notes #####
119 # /wd 4068 : turn off "unknown pragma" warning
120