A makefile is actually a script for the 'make' utility and is not specific to any processor (GNU make atleast), neither has it got anything to do with CMSIS. You can, in fact, build nothing and simply create a folder using 'make' and 'recipies' written in the makefile. This is the user manual for GNU make for some background.
For the compiler commands again, you'll have to endure the GCC manual. It mentions the options that you need to enter for specifying the processor, optimization etc. For example, in the makefile recipe below:
build/%.o: source/%.c | build
@echo " *** Building $@"
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -fsigned-char -ffreestanding -nostartfiles -Og -g3 -fno-move-loop-invariants -fdata-sections -ffunction-sections -I"include" -std=gnu11 -c -o $@ $^
@echo " *** $@ built."
it tells the 'make' utility that for making a file build\%.o, you'll need a file named source\%.c and the 'recipe' or method to do so is to run the arm-none-eabi-gcc compiler with the options specified in that line. The meaning of each compiler option is mentioned in the GCC manual. For example,
-mcpu=cortex-m4 specifies the ARM cortex m4 processor. The stm32f103 would perhaps need
As Arsenal said, a makefile cannot be used to specify frequency, memory size etc. While the frequency is configured in the application code, the memory size etc. would appear in the linker script used by the GNU linker 'ld'. Here is a reference to the linker manual. In fact, one of the options for the GNU compiler is -T"linker.ld" which specifies the linker file to be used. I found this blog post useful when I was trying to do something similar.