00001 
#############################################################################
00002 
#
00003 
# This is the first phase of building keyboard layouts
00004 
#
00005 
# For each *.txt layout definition (eg: kbdbe.txt kbdbtr.txt etc.):
00006 
#  - make the ..\tmp\* directory
00007 
#  - generate "sources", "makefile" and "makefile.inc" files in ..\tmp\*
00008 
#
00009 
# Also generate the ..\tmp\dirs files
00010 
#
00011 
# THIS FILE IS INCLUDED BY ..\us_kbd\makefile.inc
00012 
#
00013 
#############################################################################
00014 
00015 
#
00016 
# Layout names (eg: kbdbe)
00017 
#
00018 
TARGETNAMES=$(SOURCES:.c=)
00019 
00020 
#
00021 
# Directories in which layout will be built (eg: ..\tmp\kbdbe)
00022 
#
00023 
TARGETDIRS=$(TARGETNAMES:kbd=..\tmp\kbd)
00024 
00025 
#
00026 
# "sources" files used by BUILD to compile layouts (eg: kbdbe\sources)
00027 
#
00028 
TARGETSOURCEFILES=$(SOURCES:.c=\sources)
00029 
00030 
#############################################################################
00031 
#
00032 
# Build all
00033 
# builds the "dirs" file that steers the compile and link phase
00034 
#
00035 
#############################################################################
00036 
all: always_build_dirs $(TARGETSOURCEFILES:kbd=..\tmp\kbd)
00037 
00038 
#
00039 
# build -clean does this
00040 
#
00041 
clean:
00042     delnode /q ..\tmp\*
00043 
00044 
#
00045 
# Build the DIRS file in ..\tmp
00046 
# do this always
00047 
#
00048 
always_build_dirs: ..\tmp\dirs
00049     type << > ..\tmp\dirs
00050 DIRS=\
00051 $(TARGETNAMES)
00052 <<
00053 
00054 
00055 
#
00056 
# If the "sources" or (this) "makefile.inc" file in this directory have
00057 
# changed, make the TARGETDIRS out of date (by deleting)
00058 
#
00059 
..\tmp\dirs: ..\all_kbds\sources ..\us_kbd\sources makefile.inc
00060     -md ..\tmp
00061     type << > ..\tmp\dirs
00062 DIRS=\
00063 $(TARGETNAMES)
00064 <<
00065     delnode /q ..\tmp\kbd*
00066 
00067 
#
00068 
# Dependencies to make sure the "sources" files are built
00069 
# (eg: ..\tmp\kbdbe\sources: ..\tmp\kbdbe)
00070 
#
00071 
$(TARGETSOURCEFILES:kbd=..\tmp\kbd): $$(@
D)
00072 
00073 
00074 
#
00075 
# build the SOURCES, MAKEFILE and MAKEFILE.INC in each ..\tmp\kbd*
00076 
#   The target of this rule is a directory, which is a problem, since the
00077 
#   timestamp of these can only change if the directory is deleted and
00078 
#   recreated: hence the delnode /q ..\tmp\kbd* line is the ..\tmp\dirs
00079 
#   rule (above).  This deletes the _objects.mac files so you have to run
00080 
#   build twice is either the sources or makefile.inc files are updated.
00081 
#   To get around this by changing the
00082 
#
00083 
$(TARGETDIRS): sources ..\all_kbds\makefile.inc
00084     -md $@
00085     copy ..\all_kbds\makefile.tpl $@\makefile
00086     type << > $@\makefile.inc
00087 $(@B).c $(@B).h $(@B).rc $(@B).def: ..\..\all_kbds\$(@B).txt
00088     kbdtool ..\..\all_kbds\$(@B).txt
00089 <<
00090     type << > $@\sources._xx
00091 ^!
IF 0
00092 
Copyright (c) 1995  Microsoft Corporation
00093 ^!ENDIF
00094 
00095 NOLINK=
00096 MAJORCOMP=user
00097 MINORCOMP=$(@B)
00098 TARGETNAME=$(@B)
00099 TARGETPATH=obj
00100 TARGETTYPE=DYNLINK
00101 TARGETLIBS=
00102 INCLUDES=..\..\..\inc
00103 SOURCES=$(@B).c $(@B).rc
00104 C_DEFINES=
00105 UMTYPE=nt
00106 UMTEST=
00107 UMAPPL=
00108 UMBASE=0x1000000
00109 UMLIBS=
00110 ^!
if $$(IA64)
00111 SECTION_ALIGNMENT=0x4000
00112 LINKER_FLAGS = -merge:.edata=.data -merge:.srdata=.data -merge:.text=.data -merge:.bss=.data -section:.data,re
00113 ^!
else
00114 LINKER_FLAGS = -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data -merge:.bss=.data -section:.data,re
00115 ^!endif
00116 
00117 NTTARGETFILE0=$(@B).h $(@B).rc $(@B).def
00118 << 
00119     sed 
"s/^\^//" $@\sources._xx > $@\sources
00120     del /f $@\sources._xx